오류를 재현하고 로그에서 패턴을 찾아 원인을 좁히는 결
테스트 프로그램 실습에서 간헐적으로 실패하는 테스트 케이스를 디버깅하는 과제를 받았습니다. 처음에는 재실행하면 통과하기도 해서 무시했는데 5번 중 2번꼴로 실패한다는 걸 로그를 모으면서 파악했습니다. 로그를 보니 실패 케이스에서만 타임아웃 직전에 특정 레지스터 폴링이 반복되는 패턴이 있었습니다. 폴링 간격을 조정했더니 실패가 없어졌지만, 근본 원인을 파악하려고 장비 응답 시간 분포를 추가로 측정했습니다.
응답 시간이 90번째 백분위에서 타임아웃 임계값을 초과한다는 걸 확인하고 임계값을 조정했습니다. 간헐 오류는 재현 조건을 잡는 것이 해결의 절반이라는 걸 그때 배웠습니다. 지금도 디버깅은 로그 수집부터 시작합니다.