ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 지속적 통합(CI)에 자동화 테스트를 효율적으로 적용시킬 수 있을까?
    테스팅 관련/자동화 2021. 3. 7. 00:26

     

    https://www.pagerduty.com/resources/learn/what-is-continuous-integration/

     

    이상적인 지속적 통합은,

    코드가 빌드되면 모든 자동화 테스트가 수행되어 '소프트웨어가 잘 작동하는지'와 '코드 변경에 의해 문제가 생기지 않았는지'를 확인한다

     

     

    위 조건에 부합하기 어렵게 만드는 지속적 통합의 2가지 목적이 있다

     1. CI 프로세스는 빠른 피드백을 얻기 위해 자주 수행되어야 한다

     2. 매 빌드마다 전체 코드를 검증해야한다

     

     

    자동화 테스트 설계, 구현, 유지에 있어서 깊은 주의가 필요하며,

    하루에 여러번 실행되는 CI 프로세스에 모든 자동화 테스트를 수행하기에는 너무 오래 걸릴 수가 있다

     

     

    이러한 문제점에 대한 여러 해결책들을 알아보도록 하자

     

     

    https://www.softwaretestinghelp.com/risk-management-during-test-planning-risk-based-testing/

    1. 리스크 기반 테스트(RBT) 접근법을 적용하여, '기본 & 중요 테스트'를 우선 순위로 지정하고 항상 수행

    • 리스크 기반 테스트는 제품의 특성(features), 모듈, 기능(functionalities)에 대한 테스트 우선 순위 지정 원리를 사용한다. 우선 순위는 특성 또는 기능의 실패 가능성 리스크와 고객에게 미치는 영향도에 기반하여 지정할 수 있다.
    • 참고 <품질 리스크 식별 및 분석>

     

     

    2. 여러 유형의 CI 사이클에 사용하기 위한 다양한 테스트 구성을 허용

    • 매일 수행하는 빌드 & 테스트: 우선 순위에 따른 '기본 테스트'만 수행
    • 야간 수행 CI 프로세스: pre-production 환경이 요구되지 않는 (많은 또는 모든) '기능 테스트' 수행
    • 릴리스 전: pre-prodction 환경이 요구되는 전체 기능, 비기능 테스트 수행

     

     

     

    https://martinfowler.com/bliki/TestPyramid.html

    3. UI 테스트 양을 줄여 테스트 실행 속도 ↑

    • End-to-End UI 테스트 케이스는 많은 시간이 소모
    • 유닛 테스트나 통합 테스트는 시간이 적게 소모됨
    • API, 커맨드라인, 데이터 레이어, 서비스 레이어, (UI 레벨이 아닌) 비즈니스 로직 테스트 등의 양을 늘리기

     

     

    4. 코드 변경에 영향을 받는 테스트만 선택 및 실행

    • 영향도 분석과 같은 방법을 이용해 수행할 테스트 케이스 지정
    • 테스트 실행이 자주 일어나며, 모든 테스트 케이스를 실행하기 어려운 CI 프로세스에서 사용
    • 중요한 리그레션 결함을 놓칠 수 있음

     

     

    5. 여러 환경에서 '똑같은 사이즈로 나누어진 테스트 스위트' 병렬 실행

    • CircleCI (지속적통합 솔루션) 이용하여 병렬 테스트 수행 가능
    • Knapsack Pro와 같은 툴 이용 - 병렬 CI 노드에 테스트 자동 분할 및 실행

     

     

     

    출처: ISTQB-CTAL-ATT Syllabus

Designed by Tistory.