불안정한 테스트란?

불안정한 테스트는 코드나 테스트 자체에 변경 사항이 없음에도 통과와 실패를 모두 반환하는 테스트입니다.

이처럼 불안정한 테스트 결과가 나오는 원인은 다양합니다. 예를 들어, 환경 일관성이 부족하거나 여러 테스트를 실행할 때 새로운 테스트 데이터를 공급하지 않은 경우 혹은 시간이나 시간대 문제, 테스트 실행 순서의 종속성 등이 있습니다.

불안정한 테스트는 CI/CD 파이프라인을 지연시키고 테스트 프로세스의 신뢰도를 저해하므로 문제가 됩니다. 불안정한 테스트 결과는 신뢰할 수 없으므로 테스트 실행 결과가 성공적인 경우 코드에 버그가 없다는 것을 확신하기 어려우며, 테스트가 실패한 경우 이슈를 재현하여 수정하는 데 시간을 할애해야 하는지도 확신할 수 없습니다.

불안정한 테스트를 찾아내려면 여러 테스트 실행의 결과를 비교해야 합니다. 이 분석 과정을 수동으로 수행하는 데 많은 시간이 소요되지만 다행히 많은 CI 서버는 불안정한 테스트를 자동으로 탐지합니다.

불안정한 테스트를 찾는 것은 테스트를 관리하는 첫 단계입니다. 문제의 범위를 파악하면 문제 해결의 우선순위를 정할 수 있습니다. 신뢰도가 떨어지는 테스트 결과를 자동화된 테스트 보고서에 포함하지 않도록 자동화된 테스트 중에는 불안정한 테스트는 끄는 것이 좋습니다.