지식을 전해주는 책과 지혜를 전해주는 책이 있는데, 이 책은 지식보다는 지혜를 전해주는 것에 초점을 맞춘책이다. 테스트를 그저 버그의 예방을 위해서 작성하는 경우가 많지만, 이 책은 한걸음 더 나아가서 테스트를 작성하면서 어떻게 소프트웨어의 설계를 점진적으로 개선해 나갈 수 있는지에 대해서 알아본다.
나는 아직 까지는 개발 하면서 테스트가 주는 이점 보다는 테스트 작성에 대한 부담을 많이 가지고 있다. 왜냐하면 처음에는 간단하게 시작되지만, 어플리케이션이 커지고 복잡해지면서 동시에 같이 양이 많아지고 복잡성과 유지보수 때문에 고민을 많이 하게 되기 때문이다. 테스트를 만들면서 설계를 단순히 하게되는 경험도 몇번은 있었지만, 테스트를 어떻게 효과적으로 잘 만들수 있는가에 대한 고민을 참 많이 했던것 같다.
이 책은 테스트를 어떻게 하면 효과적으로 잘 만들수 있는 지에 대해 어려가지 많은 조언들을 해준다. 그 중에 몇가지를 한번 살펴보자.
"100% 코드 커버리지 달성이 중요한게 아니다."
"테스트를 작성해서 얻게 되는 가장 큰 수확은 테스트 자체가 아니다. 작성 과정에서 얻는 깨달음이다."
"같은 테스트 클래스에 속한 테스트 메서드 까지도 순서를 가정하면 안 된다."
"스텁은 질문하고 Mock은 행동한다."
"테스트에서는 != 나 == 등의 비교문을 사용하는 단언문을 발견하면 주저하지 말고 추상화 수준이 적절한지 되짚어 보라."
"절대 실패하지 않는 테스트는 가치가 없다."