테스트 오케스트레이션: What, Why, and How?

2022. 12. 6. 19:08프로그래밍

728x90

https://www.javacodegeeks.com/2022/10/test-orchestration-what-why-and-how.html

 

Test Orchestration: What, Why, and How? - Java Code Geeks - 2022

Automated testing strengthens the continuous testing cycle by reducing human intervention, thereby reducing error frequency. Test scripts, scalable &

www.javacodegeeks.com

 

 

자동 테스트는 사람의 개입을 줄여 오류 빈도를 줄임으로써 지속적인 테스트 주기를 강화시킵니다.

 

테스트 스크립트, 확장 가능하고 신뢰할 수 있는 테스트 인프라 및 효율적인 테스트 데이터는 자동화된 테스트의 주요 구성 요소이며 이후 지속적 테스트 주기의 중심이 되었습니다.

 

비동기식 진행(Asynchronous progression)은 자동화 테스트의 일반적인 특징이며 특히 종단 간 테스트 프로세스 중에 사용됩니다. 효과적이긴 하지만 연속 테스트 주기에 대한 전체 가시성을 제공하지는 않습니다. 지속적인 테스트에서 기업의 78%가 가장 큰 문제로 가시성을 언급한다는 것은 이 가시성을 제공 할 테스트 프레임워크가 필요하다는 것입니다. 이 타의 추종을 불허하는 통찰력과 완벽한 가시성은 테스트 오케스트레이션을 통해 제공됩니다.

DevOps가 동전이라면 테스트 자동화와 테스트 오케스트레이션이 동전의 양면이 될 것입니다. 테스트 오케스트레이션을 통해 러너 환경에서 자동화된 테스트를 그룹화하고 지능적으로 배포할 수 있습니다. 소프트웨어를 지속적으로 제공(즉, 지속적 제공)이 가능하도록 CI 파이프라인은 테스트 오케스트레이션으로 보다 부드럽게 작동 합니다. 이 테스트 오케스트레이션 자습서에서는 테스트 오케스트레이션의 세부 사항을 살펴봅니다.

그럼 시작해 볼까요…

 

테스트 오케스트레이션이란 무엇일까요?

테스트 오케스트레이션은 자동화된 테스트를 실행 할 순서로 배열하여 효율적인 모니터링 및 테스트 실행을 가능하게 하는 것입니다.

지속적인 테스트가 성공하려면 자동화만으로는 충분하지 않습니다. 

자동화된 테스트는 self-sufficiency(자급자족성)과 민첩성을 유지하면서 능률적으로 진행되어야 합니다.

 

테스트 오케스트레이션의 도움을 받아서, 우리의 테스트 상태에 대한 완전한 그림을 제공하는 자동화된 형태로 많은 운영/개발 환경에서 테스트를 지속적으로 실행 할 수 있습니다.

 

소프트웨어는 각 개발 주기 후에 다양한 테스트를 거칩니다. 

여기에는 더 나은 테스트 커버리지를 위한 단위 테스트 및 기타 많은 자동화 된 테스트들이 포함되게 됩니다.

 

하지만 여전히 관련 입력 데이터를 필요로 하고 적절한 시간에 활성화되어야 합니다. 테스트 오케스트레이션은 이러한 모든 독립적으로 자동화된 테스트들을 순차적 실행 순서로 통합하여 테스트 주기를 지능적으로 만듭니다.

 

효과적인 테스트 오케스트레이션 시스템의 구성 요소는 무엇입니까?

 

"오케스트레이션 요소들이 개선되어 감에 따라 조직은 릴리스 관리, 요구 사항, 설계, 빌드, 테스트 및 배포를 통합하는 연결된 생태계로 향해 나아가는 노력과 작업을 원할 것입니다." — Capgemini 연속 테스트 보고서.

 

테스트 오케스트레이션이 자동화 테스트 프레임워크의 초석이라는 사실에도 불구하고 자체 구성 요소도 포함하고 있습니다. 철저하게 조정된 파이프라인에는 다음 요소들이 포함되어야 할 것입니다:

 

최적화된 지속적 전달 파이프라인

수동 개입 없이 운영 환경에 코드를 배포하는 것을 CD(Continuous Delivery)라고 합니다.

소프트웨어 업데이트를 고객에게 배포하기 전에 개발자는 지속적인 배포을 사용하여 다양한 테스트를 자동화하여 변경 사항들의 다양한 요소를 검증합니다. API 테스트, 사용자 인터페이스 테스트 및 제품과 관련된 기타 테스트가 자동으로 실행됩니다.

 

CD 중에 코드는 CI(지속적 통합) 파이프라인에 작성되며 코드가 특정 테스트를 통과하는 즉시 리포지토리에 버전 지정이 됩니다. 100% 가용성을 갖춘 단일 에코시스템에 테스트 및 모니터링이 통합된 지속적 배포 파이프라인은 테스트 오케스트레이션 프레임워크의 요구 사항입니다.

 

적응형 테스트 스크립트

특히 대규모 프로젝트의 경우 자동화 되어있는 테스트 케이스(사례)들에 대한 테스트 스크립트를 유지 관리하는 것이 큰 부담입니다.

 

기능이 변경 될 때마다 관련 테스트 케이스(사례)도 일부(및/또는 주요) 변경을 겪을 수 있습니다. 영향을 받는 테스트 케이스(사례)를 찾는 것, 해당 케이스(사례)를 변경하는 것, 그리고 다시 확인하는 작업들은 어렵고 오류가 발생하기 쉬운 절차입니다.

 

테스트 오케스트레이션 파이프라인의 테스트 스크립트는 기능, 도구 또는 사용자 인터페이스(UI)의 모든 변경 사항에 적응할 수 있어야 합니다. 테스트 오케스트레이션의 목표는 테스트 실행에 대한 통제력을 강화하는 것이기 때문입니다.

 

실시간 테스트 데이터 생성

테스트 데이터 생성은 자동화된 테스트에 있어 중요한 과제입니다.

 

테스트 스크립트 실행은 테스트 데이터가 특정 상태에 있을 것으로 예상합니다. 예를 들어 종단 간 테스트에서 테스트는 종속적일 수 있으며 서로 다른 테스트 시나리오를 나타내는 여러 스크립트가 동일한 데이터에 동시에 액세스해야 할 수 있습니다.

 

각 각의 스크립트가 데이터를 각각이 액세스하고 수정해 버리면 데이터가 영향을 받을 것이며, 또 다른 스크립트에서는 테스트 실패로 이어질 수 있습니다.

 

효과적인 테스트 데이터 생성 기술은 필요에 따라 호환 테스트 데이터를 제공하여 이러한 가능성을 제거할 수 있습니다. 테스트는 독립적으로 실행되며 각각에 대해 개인화된 데이터가 있는 독립 실행형 시나리오로 진행됩니다.

 

자동화된 코드 복원력

 

세계 품질 보고서 응답자의 약 2/3에 따르면 기업은 자동화 테스트를 생성하는 데 필요한 도구와 충분한 시간이 있기 때문에 자동화가 충분하다고 생각합니다. 그러나 응답자들에 따르면 평균적으로 테스트의 15%만이 자동화되었고 기업의 3%만이 테스트의 20% 이상을 자동화했다는 것입니다.

 

잘 구현된 자동화의 향상된 탄력성 덕분으로 만약 릴리스 후보가 실패한다고해도, 코드 베이스가 이전 버전으로 신속하게 복원될 수 있습니다. 결과적으로 테스트에 소요되는 시간이 줄어들고 더 많은 소프트웨어를 다루며 더 나은 문제 식별이 가능하고 피드백이 더 빨라집니다.

 

지속적인 모니터링

 

지속적인 모니터링은 소프트웨어 개발 주기 및 아키텍처의 표준에 대한 위험을 탐지하는 기술입니다. 소프트웨어의 불일치를 찾는 데 사용할 수 있으며 연속 제어 모니터링 또는 CCM이라고도 합니다. 지속적인 모니터링은 SDLC의 성능, 사용자 경험 및 투명성을 향상시킵니다.

 

애플리케이션의 가동 시간, 보안, 성능 및 로그 시간을 포함하여 애플리케이션에 대한 정보는 지속적인 모니터링을 통해 제공됩니다. 프로그램이 얼마나 효과적으로 작동하는지 이해하기 위해 보고서는 주로 통계 및 그래프를 사용하여 생성됩니다. 실시간으로 문제를 감지하기 위해 중단 없이 실행되는 서비스의 중단 없는 유효성 검사 및 상태 확인이 포함된 지속적인 모니터링 파이프라인은 테스트 오케스트레이션 프레임워크의 성공에 핵심입니다.

 

테스트 오케스트레이션의 사용 사례

 

유지보수 팀은 테스트 데이터 관리, 지속적인 모니터링 및 출력 분석과 같은 테스트의 보다 복잡한 구성 요소에 더 집중할 수 있는 테스트 오케스트레이션을 사용하여 위험 기반 전략을 취할 수 있습니다. 유지보수 다음과 같은 경우 테스트를 오케스트레이션할 수 있습니다:

 

업그레이드 테스트

특정 소프트웨어 버전은 여러 이전 버전에서 업그레이드(여러 경로를 통해)될 수 있습니다. 고품질을 위해서는 각 업그레이드를 테스트하는 것이 필수입니다. 테스트 오케스트레이션을 통해 다양한 업그레이드 경로와 여러 실행 환경에서 소프트웨어 릴리스를 지능적으로 테스트할 수 있습니다.

 

전문 테스트

테스트 오케스트레이션은 유지보수 팀이 보안 테스트와 같은 특수 테스트에 사용할 수 있는 프레임워크입니다. 오케스트레이션을 통해 보안 테스트가 지능적으로 간소화되면 소프트웨어의 보안 취약점이 측정된 방식으로 발견됩니다.

 

종단 간 테스트

테스트 오케스트레이션을 사용하면 정량화할 수 있는 결과를 생성하기 위해 차례로 실행되는 수많은 API 조합 및 서비스를 포함하는 복잡한 테스트 시나리오를 테스트할 수 있습니다.

 

테스트 오케스트레이션의 이점은 무엇일까요?

비동기식으로 엔트로피를 일으키고 TTM을 높이고 개발 속도를 늦추며 개발자의 의욕을 떨어뜨리는 기타 문제를 일으키는  자동화된 테스트. 

이러한 문제는 다음과 같은 다양한 이점을 제공하는 테스트 오케스트레이션을 통해 제거됩니다:

 

릴리스 주기에 대한 더 나은 가시성

테스트 오케스트레이션의 중요성은 아무리 강조해도 지나치지 않습니다. 기업의 78% 이상이 테스트 에코시스템에 대한 가시성을 확보하는 것이 지속적인 테스트 중 가장 어려운 일이라고 보고했습니다.

 

소프트웨어 릴리스 주기에 대한 가시성은 초기에 병목 현상을 식별하고 해결하여 소프트웨어 품질을 개선하고 시장 출시 시간을 단축할 수 있기 때문에 필수적입니다. DevOps 팀은 테스트 오케스트레이션을 통해 얻은 입력 및 출력 데이터를 KPI(핵심 성과 지표)로 변환할 수 있습니다. 그런 다음 소프트웨어 팀은 이러한 KPI를 사용하여 역할을 할당하고 다음 작업 과정을 결정할 수 있습니다. 예를 들어 비디오 보고서는 소프트웨어의 품질 등급을 방해하는 모든 버그를 식별하고 해결할 수 있습니다.

 

테스트 오케스트레이션에 의해 생성된 보고서 및 아티팩트를 사용하여 테스트 활동 및 이와 관련된 결정을 지원할 수 있습니다. 이러한 아티팩트는 지속적인 전달 파이프라인에서 품질 게이트 역할을 할 수 있는 공통 벤치마크 또는 기준을 설정하는 데에도 사용할 수 있습니다.

 

더 빠른 순환 피드백 

비동기 테스트 실행은 무엇보다도 많은 오류, 테스트 실패 및 느린 순환 피드백를 초래합니다. 이로 인해 개발자 동기 부여가 감소하고 보고서에 따르면 개발자 동기 부여가 소프트웨어 릴리스 지연의 41%를 차지한다고 합니다. 이것은 테스트 오케스트레이션이 도움이 되는 개발 팀이 민첩하고 동기를 부여해야 할 필요성을 강조합니다.

 

테스트 오케스트레이션은 테스트 주기에서 수동 개입을 줄여 오류 가능성을 낮추고 피드백을 가속화합니다. 이는 소프트웨어 테스트 수명 주기 자체 지속성을 제공하여 실행 실패를 줄입니다.

 

조기에 실패하고 쉽게 수정

 

제공 주기 초기에 테스트 사례가 실패하면 문제를 해결하는 것이 훨씬 더 간단하고 덜 복잡합니다.

 

shift-left adoption을 증가시킵니다.

연구에 따르면 새로운 빌드가 그 어느 때보다 빠르게 진행되고 있으며 기업의 31%가 매일 새로운 빌드를 개발한다고 밝혔습니다. 이러한 새 빌드의 홍수는 릴리스 주기의 향상된 유연성을 반영하는 동시에 자동화된 테스트의 양과 부하가 증가했음을 나타냅니다. 따라서 테스트 오케스트레이션은 이제 그 어느 때보다 중요합니다.

Shift-Left 테스트 접근 방식의 근본적인 근거인 테스트에 대한 "빌드하면서 테스트" 접근 방식은 테스트 및 오류 빈도의 예상 증가치를 고려한다면 결과적으로 필요합니다. 테스트가 더 빠르게 진행되고 테스트가 조정될 때 소프트웨어 개발의 왼쪽 이동 방법의 목표가 더 빨리 달성됩니다.

 

테스트 오케스트레이션은 지속적 배포의 성숙을 끌어 냅니다.

 

DevOps의 초석인 지속적 배포는 자동화를 기반으로 합니다. 자동화는 소프트웨어 개발에 관련된 모든 당사자를 위한 단일 정보 소스 생성을 용이하게 하여 커뮤니케이션 및 팀워크 속도를 높입니다.

 

테스트 오케스트레이션은 테스트 자동화에서 얻을 수 있는 이점을 극대화합니다. 결과적으로 테스트 오케스트레이션을 CI/CD 파이프라인에 통합하면 CI/CD 구현의 주요 목표를 달성할 수 있습니다.

 

클라우드에서 지속적인 테스트 오케스트레이션 및 실행을 지원합니다. 

지금 LambdaTest를 사용해 보십시오!

 

효율적 테스트 오케스트레이션 프레임워크는 어떻게 구성할까요?

 

테스트 오케스트레이션이 제공하는 놀라운 이점에도 불구하고 어려움이 없는 것은 아닙니다. 테스트 오케스트레이션 프레임워크를 준비할 때 다음 팁을 따라 보십시오:

 

올바른 도구 선택

 

테스트 오케스트레이션을 위한 프레임워크를 만드는 첫 번째 단계는 도구를 선택하는 것입니다.

효율적으로 조정되는 각 파이프라인 구성 요소에 적합한 특정 도구들이 존재 합니다. 지속적인 테스트의 다른 부분과 마찬가지로 도구 선택의 성배는 오케스트레이션 목표에 가장 적합한 도구와 의사 결정에 필요한 형식으로 필요한 데이터를 제공하는 도구를 선택하는 것입니다.

 

예를 들어, 전자 상거래 회사의 조정 목표는 소프트웨어의 카트 선택 및 주문 기능에 대한 비디오 분석을 요구할 수 있습니다.

 

그것은 어려울 일이 될 것이며 회사가 차트 및 양적 데이터의 형태로 테스트 보고서를 독점적으로 제공하는 오케스트레이션 도구를 선택한다면 테스트 오케스트레이션의 막대한 ROI를 인식하지 못할 수도 있습니다.

 

수동 개입 없이 올바른 도구가 테스트 결과의 정확도에 영향을 미칠 수 있습니다. 

합성 또는 실시간 데이터를 생성하는 데 필요한 도구는 성능 테스트용 데이터를 생성하고 로드하는 데 필요한 도구와 다릅니다. 또한 파이프라인의 요구 사항에 따라 작동하는 도구 없이 적응형 테스트 스크립트를 작성하고 테스트 오케스트레이션 파이프라인에 추가할 수 있습니다.

 

통합 문제를 방지하여 릴리스 주기를 강화하므로 CI/CD 파이프라인과 호환되는 도구를 선택하십시오. 테스트 조정에 소요되는 시간을 줄이려면 자동 시퀀싱, 상태 및 동적 테스트 검색, 지능형 테스트 재시도와 같은 스마트 워크플로우 기능이 있는 도구를 사용하는 것이 필수적입니다. Linux 컨테이너, macOS 등 여러 환경에서 작동할 수 있는 도구도 중요합니다.

 

측정 가능한 목적 설정

목적의 명확성은 모든 테스트 오케스트레이션 프레임워크의 성공에 기본입니다. 모든 팀이 함께 작업하여 특정 결과를 향한 모든 순서 단계를 목표로 삼는 것이 더 쉬워집니다. 의도한 전체 결과인 피드백의 더 나은 품질과 속도 외에 테스트 오케스트레이션의 다양한 이점이 있습니다.

 

예를 들어 테스트 오케스트레이션 파이프라인은 각 제품 릴리스 전에 실행되고 다양한 로드에서 UI 테스트를 실행하도록 구성할 수 있습니다. 더 큰 출력을 위해 애플리케이션을 구성하는 방법에 대한 성능 데이터 및 제안이 예상되는 결과 중 하나입니다. 테스트 오케스트레이션의 목표는 해당 방향으로 계획되고 달성되는 테스트 자동화의 범위를 결정하는 데 도움이 됩니다.

 

테스트 오케스트레이션을 사용한 엔드 투 엔드 테스트

HyperExecute는 가장 빠른 종단 간 Selenium 테스트를 허용하는 LambdaTest의 지능형 테스트 오케스트레이션 플랫폼입니다. 가능한 최고의 속도, 테스트 오케스트레이션 및 통합 실행 로그를 갖춘 테스트 인프라 제공을 통해 HyperExecute를 통해 소프트웨어의 TTM을 줄일 수 있습니다. 따라서 코드를 테스트하고 훨씬 더 빠르게 문제를 해결할 수 있습니다.

 

또한 LambdaTest YouTube 채널을 구독하고 Selenium 테스트, Cypress E2E 테스트, CI/CD 등에 대한 최신 자습서로 업데이트를 받을 수 있습니다.

 

YAML 파일은 HyperExecute를 구성하는 데 사용됩니다. 앞서 언급한 모든 오케스트레이션 구성 요소를 단일 실행 환경으로 결합하여 전체 오케스트레이션 파이프라인을 간소화합니다. 

HyperExecute를 특정화하는 네 가지 특징이 있습니다:

 

여러 오케스트레이션 메커니즘 지원

 

HyperExecute는 매트릭스 기반 빌드 멀티플렉싱 및 스마트 자동 테스트 분할을 비롯한 여러 오케스트레이션 메커니즘을 지원합니다. 스마트 자동 테스트 분할을 사용하여 병렬 테스트를 오케스트레이션하고 사용자 정의할 수 있습니다. YAML 파일의 테스트 검색 구성 요소를 사용하면 파이프라인에서 특정 테스트를 검색하고 지정된 테스트에 출력을 제공하도록 HyperExecute에 지시할 수 있습니다. 동시 테스트 실행 빌드를 수정할 수도 있습니다.

 

가능한 모든 조합의 매트릭스를 구축함으로써 매트릭스 기반 구축 멀티플렉싱을 통해 사용자는 다양한 시나리오, 설정 및 환경에서 단일 명령을 실행할 수 있습니다. 회귀 테스트는 적용 범위를 개선하고 탄력적인 코드베이스를 생성하므로 가장 큰 이점이 있습니다.

 

테스트 자동 재정렬

테스트 실행 실패의 경우 기존 오케스트레이션 플랫폼에서 동기식 테스트 실행이 중단됩니다. 이를 위해서는 테스트 순서를 수동으로 재정렬하고 재구성해야 합니다.

 

그러나 HyperExecute는 테스트 실패를 감지하고 자동으로 테스트를 재정렬하며 실패가 발생하는 즉시 기록합니다. 이는 이전에 효율적인 테스트 오케스트레이션에 중요한 것으로 언급된 HyperExecute의 자체 지속 가능성 및 빠른 피드백 보고에 대한 증거를 제공합니다.

 

명령줄 인터페이스

테스트 실행 속도를 높이는 다양한 기타 유용한 기능을 제공하는 것 외에도 HyperExecute CLI는 HyperExecute와 통신하고 HyperExecute에서 테스트를 실행하는 명령줄 클라이언트입니다. HyperExecute CLI를 사용하여 테스트를 트리거하려면 테스트가 실행되는 플랫폼(또는 OS)용 HyperExecute CLI 바이너리를 얻어야 합니다.

 

HyperExecute CLI에서 제공하는 많은 명령줄 플래그를 사용하여 HyperExecute 환경을 개인화할 수 있습니다. 컴퓨터에 HyperExecute CLI를 설치한 후 여러 기능을 사용할 수 있습니다. 예를 들어 hyperexecute.exe —help 명령을 사용하여 다양한 플래그를 검사할 수 있습니다. CLI를 사용하여 아티팩트를 생성하고 다운로드할 수도 있습니다.

 

프레임워크 및 언어 지원

 

여러 언어 및 프레임워크에서 HyperExecute를 사용하여 Selenium 테스트를 오케스트레이션할 수 있습니다. 예를 들어 JUnit, Java 및 더 많은 언어를 사용하면 테스트 스크립트 및 시퀀스 테스트를 만들 수 있습니다.

 

로그 통합

레거시 테스트 클라우드에서 터미널과 테스트 실행 로그를 융합하는 것은 ETL 골칫거리입니다. 테스트 명령 실행의 터미널 로그와 포괄적인 테스트 실행 로그를 모두 포함하는 HyperExecute를 사용하여 단일 자동화 대시보드 보기를 받습니다. 사용자 친화적인 단일 대시보드에는 터미널 로그, 테스트 실행 비디오, 네트워크 로그, 명령, 예외 등을 포함한 모든 테스트 실행 데이터가 포함되어 있습니다.

 

자동 보고서 생성

모든 테스트 실행 데이터를 단일 위치에서 사용할 수 있기 때문에 HyperExecute를 사용하면 개발자와 테스터가 각 빌드 실행에 대해 생성된 통찰력 있는 자동 보고서를 통해 단일 플랫폼에서 빌드 품질을 검사할 수 있습니다. 따라서 복잡한 보고 프레임워크를 개발하고 여러 소스에서 데이터를 수집할 필요가 없습니다.

 

결론

기업의 55%는 일반적으로 필요한 것보다 훨씬 더 많은 테스트 사례가 발생하고 겹치는 부분이 많다고 주장합니다. 테스트가 비즈니스 요구 사항이 아닌 일반적인 허영 메트릭에 따라 모델링되기 때문입니다. 결과적으로 기업은 테스트를 조정하여 지속적인 테스트 주기에 대한 완전한 가시성을 제공하고 CT 주기의 중복을 줄이며 비즈니스 요구 사항에 따라 비즈니스 의사 결정 및 테스트 사례를 기반으로 할 수 있습니다.

 

테스트 오케스트레이션에 대한 이 블로그에서는 테스트 오케스트레이션 파이프라인의 세부 사항을 살펴보고 HyperExecute 테스트 오케스트레이션 그리드가 프로세스를 재구상하는 데 어떻게 도움이 되는지 살펴보았습니다.

 

이상.

 

728x90

'프로그래밍' 카테고리의 다른 글

뮤텍스, 세마포어 그리고 끔찍한 헤어스타일 사이  (0) 2022.12.10
데이터 사이언스을 위한 C/C++  (1) 2022.12.08
세가지 점근적 분석법  (0) 2022.12.05
DS Algorithm  (1) 2022.12.01
데이터 구조-소개  (0) 2022.11.30