테스트 코드를 작성하면 우리가 개발한 코드들에 대해 수시로 빠르게 검증
을 받을 수 있으며, 기능을 수정하거나 리팩토링을 할 때에도 검증
을 받으므로 안정성을 확보
할 수 있다는 장점이 있다.
하지만 그것보다 큰 장점으로 개발 및 테스팅에 대한 시간과 비용을 절감
할 수 있다는 점에 주목해야 한다.
우리는 개발이 끝난 뒤에 문제가 없는지 확인하기 위해 애플리케이션을 실행하고, 직접 수동 (통합) 테스트를 진행해야 한다.
단위 테스트를 작성하지 않은 코드들은 테스트를 작성하지 않은 코드들 보다 버그가 잠재되어 있을 확률이 높은데, 문제는 직접 테스트 하는 비용이 너무 크다는 것이다.
그 이유는 통합 테스트를 위해서는 캐시, 데이터베이스 등 외부 컴포넌트들과 연결 등 부가적인 시간이 필요하기 때문이다.
📌 Fast
📌 Independent
📌 Repeatable
📌 Self-Validating
📌 Timely
즉, 위의 내용을 압축하여 정리하면 좋은 테스트는 빠르게 독립적으로 어느 환경에서든 실행이 가능하고 검증할 수 있어야 한다는 것
이다. 만약 테스트를 실행하는 비용이 크다면 그럴 바에는 통합테스트를 하는게 더 나을 수도 있다.
그리고 우리는 위의 5가지 규칙 중에서 Timely에 주목해야 할 필요가 있다.
테스트 코드를 작성하는 시점에 대한 이야기인데, CleanCode에서는 테스트 코드를 실제 코드를 구현하기 직전에 구현하라고 설명하고 있다.
즉, 테스트 코드를 먼저 작성하라는 것이다.
우리는 왜 테스트 코드를 먼저 작성해야 하고, 어떻게 테스트 코드를 먼저 작성할 수 있는지에 대해 알아야 한다.
테스트 코드를 먼저 작성하는 개발 방법론은 테스트 주도 개발(Test-Driven Development, TDD)
로 많이 불린다. 우리는 프로덕션 코드 보다 테스트 코드를 먼저 작성해야 하는데, 그 이유는 다음과 같다.
깔끔한 코드
를 작성할 수 있다.장기적으로 개발 비용을 절감
할 수 있다.깔끔한 코드를 작성
하는 것이다.출처