회귀는 소프트웨어 버그다. 즉, 코드를 수정한 후 기능이 의도한 대로 작동하지 않는 경우이다.
회귀 방지 지표에 대한 테스트 점수가 얼마나 잘 나오는지 평가하려면 다음 사항을 고려해야 한다.
단순한 코드를 테스트하는 것은 가치가 거의 없다. 단순한 코드의 예로 다음과 같이 속성 한 줄이 있다.
data class User(val name: String)
좋은 단위 테스트의 두 번째 특성은 리팩터링 내성이다. 이는 테스트를 “빨간색(실패)”로 바꾸지 않고 애플리케이션 코드를 리팩터링 할 수 있는지에 대한 척도이다.
이런 상황을 상상해보자. 새로운 기능을 개발했고 잘 작동한다. 기능이 제 역할을 하고 있으며, 모든 테스트가 통과했다. 이제 코드를 깨끗하게 정리하려고 리팩터링을 조금 한 뒤, 살짝 고치면 이전 보다 코드가 더 좋아 보인다고 생각한다. 단, 테스트가 실패하고 있다는 것만 빼면 말이다. 리팩터링으로 정확히 무엇이 문제인지 살펴봤지만, 알고 보니 아무것도 고장나지 않았다. 기능은 예전과 같이 완벽하게 작동한다. 문제는 베이스 코드를 수정하면 테스트가 빨간색으로 바뀌게끔 작성됐다는 것이다.