본 내용은 Unit Testing - 블라디미르 코리코프 도서를 읽고 정리한 내용입니다.
이번엔 좋은 단위 테스트를 구성하는 4대 요소에 대해서 공부하자!
4대 요소는 다음과 같다.
이제 하나씩 자세히 살펴보자!
회귀는 소프트웨어 버그이다. 코드를 수정한 후 기능이 의도한 대로 작동하지 않는 경우다.
❗️ 코드베이스가 커질수록 잠재적인 버그에 더 많이 노출된다. 그렇기 때문에 회귀에 대해 효과적인 보호를 개발하는 것이 중요하다. 이러한 보호가 없다면 프로젝트가 오랫동안 성장할 수 없으며 점점 더 많은 버그가 쌓일 것이다.
✅ 회귀 방지 지표에 대한 테스트 점수를 평가하려면 다음 사항을 고려하자.
제품 코드에 리팩토링을 수행했을 때, 테스트는 실패해서는 안된다.
❗️ 실제로 제품 코드를 리팩토링하고 수행했을 시 정상 수행되고 테스트가 실패하는 경우가 존재한다. 이럴 경우 거짓 양성(false positive)라고 한다.
✅ 리팩토링 내성이란 "거짓 양성"이 없어야 한다.
테스트를 구현 세부 사항에 초점을 맞추었기 때문이다.
예를 들면, 메서드의 순서를 검증할 경우 리팩토링을 많이 수행하면 결과가 똑같이 나와도 테스트가 깨질 수도 있다.
그래서 "구현 세부 사항"에 대한 테스트 보다는 "결과"에 대한 테스트가 필요하다.
빠른 피드백은 단위 테스트의 필수 속성이다. 테스트 속도가 빠를수록 테스트 스위트에서 더 많은 테스트를 수행할 수 있고 더 자주 실행할 수 있다.
테스트가 빠르게 실행되면 코드에 결함이 생기자마자 버그에 대해 경고하기 시작할 정도로 피드백 루프를 대폭 줄여서, 버그를 수정하는 비용을 거의 0 까지 줄일 수 있다.
유지 보수성은 다음 두 가지의 주요 요소로 구성된다.