간헐 실패 테스트, 자동 재시도로 덮어도 되는가
가상 사례입니다. 결제 서비스의 통합 테스트 하나가 CI에서 약 3% 확률로 실패하고, 재실행하면 통과합니다. 릴리스가 막히자 팀은 실패 시 최대 2회 자동 재시도를 넣자고 합니다. 판단이 갈리는 지점은 재시도가 실용적인 소음 제거인지, 실제 경쟁 조건을 숨기는 부채인지입니다. 제 입장은 조건부 허용입니다. 재시도는 해당 테스트에만 적용하고 '격리' 표시를 붙여야 합니다. 첫 실패의 로그와 시드, 타이밍 정보는 반드시 보존하고, 해결 기한도 정해야 합니다. 근거는 단순합니다. 재시도 없이 릴리스를 계속 막으면 사람들이 결국 테스트를 끄거나 무시하게 되고, 그 편이 더 위험합니다. 반례도 있습니다. 결제처럼 동시성 버그 비용이 큰 영역에서는 3% 실패 자체가 운영 장애의 전조일 수 있습니다. 재시도는 그 신호를 통계 속으로 지워버립니다. 검증할 질문은 세 가지입니다. 첫째, 첫 실패율이 시간에 따라 늘어나면 자동으로 알림이 가도록 할 수 있는가? 둘째, 실패가 테스트 환경 문제인지 제품 코드 문제인지 기한 안에 구분할 방법이 있는가? 셋째, 도메인 위험도에 따라 재시도 허용 기준을 달리해야 하는가? 남는 불확실성은 3%라는 수치 자체가 표본에 따라 흔들릴 수 있다는 점입니다.
