지난 20년간 단위 테스트의 중요성을 강조하여 많은 기업들에서 단위 테스트를 작성하고 있다. 이 책에서 말하고 싶은 것은 단위 테스트의 중요성은 인지하여 작성을 하고 있는데
어떻게하면 좋은 단위 테스트를 작성 할 수 있을까? 어떤게 좋은 단위 테스트일 것인가? 를 고민하고 이야기 하고자 한다.
다른 책에서는 단위 테스트의 중요성 그리고 기본적인 사용법을 다룬다면 그 이후의 사용 및 학습은 독자에게 맡기는데 이 책에서는 그 이후를 다루고 있다.
프로젝트의 초기에는 진척사항이나 진행 속도가 빠르다. 하지만 시간이 지날수록 기존의 코드에 각종 기능들으 추가되면서 새로운 기능을 추가하기 어려운 상황이 온다.
이를 흔히 소프트웨어 엔트로피라고 지칭한다. 소프트웨어 엔트로피의 증가는 막을 수는 없지만 늦출수는 있고 엔트로피의 증가 추세를 낮출수있다.
지속적인 정리, 리팩터링 등과 같은 적절한 관리를 함으로써 늦출수있다.
리팩터링, 지속적인 정리를 하다가 잘못 건드리면 새로운 오류나 버그가 발생하는데 이를 모르고 시간이 지나게 되면 어디서부터 잘못됬는지 알수가 없다.
이는 안정적인 버전으로 회귀가 힘들다는 것을 의미하는데 단위 테스트가 이를 도와주는 안전망 역할을 할 수 있다.
단위 테스트를 사용하여 리팩토링, 코드 정리 후에도 기존 기능이 잘 동작하는지 확인하는데 도움이된다.
하지만 단위 테스트는 초반에 노력(추가적인 코드의 작성)이 필요하다. 그러나 프로젝트 후반에도 지속적으로 성장 할 수 있도록 하므로 장기적으로 초반에 작성하는데 소요된 비용을 충분히 메울 수 있다.
그럼 좋은 단위 테스트는 어떤것일까? 좋은 테스트 코드 달콤한 단위 테스트 코드를 테스트 스위트라고 칭하는것 같다.
테스트 코드를 수치화하는 것을 테스트 커버리지 라고 칭한다. 그럼 테스트 커버리지 수치가 높으면 좋은 테스트 코드인것일까?
꼭 그렇지많은 않다. 그래서 좋은 테스트 코드를 평가하기 위한 지표로 테스트 커버리지 수치로 설정하고 이에 초점을 맞추게되면 불필요한 테스트 코드가 증가하고
오히려 악영향을 끼칠수있다.
그럼 테스트 스위트인 코드는 어떤 코드가 있을까?? 어떤게 좋은 테스트 코드인것일까? 이 책에서는 성공적인 테스트 스위트에는 3가지 특징이 있다고 기술한다.
개발 주기에 통합돼 있다.
코드베이스에서 가장 중요한 부분만을 대상으로 한다.
최소한의 유지비로 최대의 가치를 끌어내낟.
단위 테스트는 소프트웨어가 지속적으로 성장 가능하게 하는것이다.