자동화 테스트의 안정성은 안정적인 CI/CD와 자동화에 대한 신뢰의 중요한 측면입니다.
문제 역사
처음에는 자동화 테스트를 수동으로 실행했으며, 불안정성이 큰 문제는 아니었습니다. 테스트 수가 증가하고 파이프라인에 통합되면서 Flaky 테스트(가끔 이유 없이 실패하는 테스트)의 출현은 큰 문제가 되었습니다.
문제
Flaky 테스트는 다음과 같은 문제를 일으킵니다:
해결책
도움이 되는 방법:
기다림 사용 예시:
WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "result")) )
주요 특징:
대량 재시도가 flaky 테스트 문제를 해결할 수 있을까요?
아니요, 이는 일시적인 "구멍을 막는 것"일 뿐입니다. 원인을 제거하지 않고 기존 문제를 가리는 것뿐입니다.
부하로 인한 실패를 피하기 위해 자동화 테스트를 밤에만 실행할 수 있나요?
밤에 실행한다고 해서 불안정성이 제거되지는 않으며, 확률만 줄어들 뿐입니다; 문제는 남아 있으며, 원인을 해결해야 합니다.
모든 flaky 테스트를 즉시 삭제해야 할까요?
아니요. 문제를 로컬화하고 수정해보는 것이 더 좋습니다 — 안정적으로 만들 수 없거나 구식의 테스트인 경우에만 삭제해야 합니다.
팀은 지속적으로 플래키했던 테스트들을 대량 재시도로 대처했습니다. 그 결과 "녹색" 테스트의 목록은 늘어났지만, 자동화 테스트의 품질은 향상되지 않았습니다 — 버그가 발견되지 않았습니다.
장점:
단점:
팀은 정리되지 않은 데이터, UI 지연, 네트워크 오류와 같은 체계적인 flaky 원인을 발견하고 설명했습니다. 아키텍처를 수정하고 적절한 대기를 추가하며 환경을 설정하니 불안정한 테스트의 수가 급격히 감소했습니다.
장점:
단점: