**불안정한 테스트(flaky test)**는 코드 변경 없이 일관되지 않게 통과하거나 실패하는 테스트입니다 — 같은 코드에서 때로는 통과하고 때로는 실패합니다. 테스트 스위트에 대한 신뢰를 침식하므로 심각한 문제입니다. 그 원인과 해결책을 이해하는 것이 중요합니다.
flaky test란 무엇이며 왜 해로운가
FLAKY 테스트는 같은 코드에서 일관되지 않은 결과를 냄(때로 통과, 때로 실패):
→ 해로움: 신뢰 침식 — 사람들이 실패를 무시하기 시작 ("아, 그냥 flaky야") →
진짜 실패도 놓치게 됨
→ 거짓 경보/재실행에 시간 낭비; CI 깨짐; 전체 스위트에 대한 자신감 감소
→ flaky 테스트가 모든 테스트를 불신하게 만든다면, 테스트가 없는 것보다 나쁘다.
흔한 원인
✗ 타이밍 / async → 경쟁 조건; async 작업을 제대로 기다리지 않음 (UI/E2E 테스트의
최대 원인); 임의의 sleep
✗ 순서 의존 → 테스트가 서로에/공유된 가변 상태에 의존
✗ 외부 의존성 → 실제 네트워크/서비스 (네트워크 끊김, 레이트 리밋, 다운타임)
✗ 비결정성 → 시간/날짜, 무작위성, 타임존, 로케일
✗ 테스트 환경 → 남은 상태, 정리되지 않은 데이터, 동시성/병렬성 문제
