피드로 돌아가기
Flaky Tests You Can't Fix With Better Selectors
Dev.toDev.to
DevOps

Idempotency와 Data Lifecycle 관리로 Flaky Test 근본 원인 제거

Flaky Tests You Can't Fix With Better Selectors

Dmitry2026년 6월 2일11intermediate

Context

UI Selector 최적화만으로는 해결 불가능한 API 및 데이터 계층의 간헐적 테스트 실패 발생. 네트워크 재시도에 따른 중복 데이터 생성과 Mock 데이터의 실제 API 명세 불일치로 인한 신뢰성 저하가 핵심 병목으로 작용.

Technical Solution

  • 네트워크 불안정성으로 인한 중복 리소스 생성 방지를 위해 Request Method, URL, Body 기반의 X-Idempotency-Key 헤더 도입
  • Browser 내부 요청만 가로채는 page.route의 한계를 극복하고자 Server-to-Server 통합 테스트 시 WireMock 활용
  • API 명세 불일치로 인한 'False Positive' 결과 방지를 위해 실제 API 계약을 검증하는 Contract Test 체계 구축
  • afterEach 기반의 불완전한 데이터 삭제 방식을 대체하여 Database 레벨의 TTL(Time To Live) 및 전역 Cleanup Queue 설계
  • 네트워크 에러로 인한 무한 루프 방지를 위해 route.abort 대신 명시적 HTTP 응답을 반환하는 route.fulfill 사용

1. POST 요청 시 중복 생성 방지를 위한 Idempotency Key 적용 여부 확인

2. UI Mocking 도구의 인터셉트 범위(Browser vs Server-side) 구분 및 적절한 도구 선택

3. 테스트 데이터 정리 전략을 Client-side(afterEach)에서 Server-side(TTL, pg_cron)로 전환 검토

4. Mock 데이터의 신뢰성 확보를 위한 Contract Test 도입 검토

원문 읽기