플레이키 테스트는 코드 변경 없이 외부 요인 때문에 통과하거나 실패할 수 있는 테스트입니다. 이들은 자동화에 대한 신뢰를 저하시킬 뿐만 아니라 CI/CD 프로세스를 어렵게 만듭니다.
질문의 역사: 플레이키 테스트에 대한 긴장은 대규모 E2E, 통합 및 UI 테스트의 출현과 함께 발생했습니다. 이 때 환경과 의존 서비스의 안정성이 보장되지 않았습니다. 처음에는 이러한 실패들을 무시하거나 "수동으로 재실행"했습니다.
문제:
해결책:
자동 재실행을 위한 코드 예시:
import pytest @pytest.mark.flaky(reruns=3, reruns_delay=2) def test_random_fail(): ... # 테스트 코드
주요 특징:
플레이키 테스트는 항상 인프라 문제인가요?
아니요, 플레이키는 비즈니스 로직 오류, 코드 경쟁 상태, 비동기성 또는 시간 관련 문제로 인해 발생할 수 있습니다.
실패한 테스트를 단순히 재실행하는 것으로 충분한가요?
아니요, 재실행은 문제를 숨기는 것일 뿐입니다. 원인을 찾아서 해결해야 합니다.
모든 불안정한 테스트를 삭제하는 것이 좋나요?
아니요, 그들은 일시적으로 격리하고 원인을 수정해야 하며, 단순히 영구적으로 제외해서는 안 됩니다.
프로젝트에서 플레이키 테스트는 단순히 레이블만 붙이고 더 이상 손대지 않았습니다. 그 문제는 "해결할 수 없는 문제"라고 여겼습니다.
장점:
단점:
각 불안정한 테스트에 대해 자동 재실행과 불안정성에 대한 내부 관리를 도입했습니다. 정기적으로 원인에 대한 공동 리뷰를 실시하고 버그를 누적되면서 수정했습니다.
장점:
단점: