flaky test를 재시도로 숨기지 않고 추적하는 CI 방법
변수 입력3개
무엇을 해결하나
간헐 실패를 무조건 rerun해 녹색으로 만드는 대신 실패율, seed, 환경, 소유자를 기록해 격리와 수정을 관리할 때 사용합니다.
준비할 정보
- 실제 적용할 환경과 대상 범위를 먼저 적습니다.
- 현재 상태와 기대 결과를 숫자나 예시로 준비합니다.
- 운영 데이터, 개인정보, secret은 제거하거나 안전한 placeholder로 바꿉니다.
- 변경 작업이라면 승인자, backup, rollback 가능 여부를 확인합니다.
복사해서 쓰는 명령어
# 실패 정보 보존 예시
{{TEST_COMMAND}} --reporter={{REPORTER}} --outputFile=test-results.json
gh run view {{RUN_ID}} --log-failed
# 기록할 필드: test name, commit, runner, attempt, random seed, duration, error signature
# 제한된 재시도 결과도 원 시도와 함께 artifact로 저장실행 순서
- placeholder를 실제 환경 정보로 바꾸되 secret 값은 입력하지 않습니다.
- 먼저 조회와 미리보기로 대상 범위, 권한, 현재 상태를 확인합니다.
- 결과가 예상과 맞을 때만 가장 작은 단위로 실행하거나 초안을 생성합니다.
- 변경 전후의 수치와 화면을 같은 조건에서 비교해 기록합니다.
- 이상이 있으면 작업을 넓히지 말고 중단 조건과 rollback 절차를 따릅니다.
결과 확인
같은 commit과 seed로 반복해 실패율을 측정하고 시간, 병렬성, 네트워크 의존성을 하나씩 통제합니다. quarantine에는 owner와 만료일을 붙입니다.
검수 결과에는 확인한 사실, 아직 확인하지 못한 가정, 다음 행동을 분리해서 남깁니다. 다른 사람이 같은 입력으로 재현할 수 있도록 환경과 확인 시각도 함께 기록하면 좋습니다.
주의사항
전체 suite를 성공할 때까지 재실행하지 않습니다. flaky test를 영구 skip하거나 임계치를 낮출 때는 실제 회귀를 놓칠 위험과 복구 일정을 공개합니다.
AI가 만든 설명과 명령은 초안입니다. 실제 제품 버전과 조직 정책, 공식 문서를 대조하고 영향이 있는 작업은 dev나 격리 환경에서 먼저 검증하세요.
댓글 0개
아직 댓글이 없습니다.
