워크 플로로 설명하는 것은 TDD 의 정신 이 아닙니다 .
아마존에 대한 켄트 벡스 (Kent Becks) 책의 개요는 다음과 같이 말합니다.
테스트 중심 개발은 응용 프로그램 개발에 대한 두려움을 없애기위한 것입니다.어떤 두려움은 건강하지만 (종종 프로그래머에게 "주의해야한다"는 양심으로 여겨지지만) 저자는 두려움의 부산물에는 건설적인 비판을 흡수 할 수없는 잠정적, 심술쟁이 및 의사 소통이없는 프로그래머가 포함된다고 생각합니다. 프로그래밍 팀이 TDD를 구매하면 즉시 긍정적 인 결과를 보게됩니다. 그들은 자신의 직무와 관련된 두려움을 제거하고, 직면 한 어려운 도전에 대처할 수있는 능력을 갖추고 있습니다. TDD는 잠정적 인 특성을 제거하고, 프로그래머에게 의사 소통을 가르치며, 팀원들이 비판을 받도록 장려합니다. 그러나 저자조차도 심술이 개별적으로 해결되어야한다는 것을 인정합니다! 요컨대, TDD의 전제는 코드를 지속적으로 테스트하고 리팩토링해야한다는 것입니다.
실용 TDD
공식적인 자동화 테스트, 특히 모든 클래스의 모든 방법을 테스트하는 것은 안티 패턴만큼이나 나쁘지 않으며 아무 것도 테스트하지 않습니다. 가질 균형이 있습니다. 모든 setXXX/getXXX
방법에 대해 단위 테스트를 작성하고 있습니까 ?
또한 테스트는 시간과 비용을 절약하는 데 도움이 될 수 있지만 개발하는 데 시간과 비용이 들며 코드이므로 유지 관리하는 데 시간과 비용이 든다는 것을 잊지 마십시오. 만약 그들이 유지 보수 부족으로 위축된다면 그들은 이익 이상의 책임이됩니다.
이와 같은 모든 것과 마찬가지로, 자신 외에는 누구도 정의 할 수없는 균형 이 있습니다. 어떤 교리이든 어느 쪽이든 더 정확할 것입니다.
좋은 척도는 비즈니스 로직에 중요하고 변화하는 요구 사항에 따라 자주 수정해야하는 코드입니다. 이러한 것들에는 자동화 된 공식 테스트가 필요하며 이는 큰 투자 수익입니다.
이런 식으로 작동하는 많은 전문 상점을 찾기 위해 매우 압박을 받게 될 것입니다. 단순한 연기 테스트를 수행 한 후에는 절대 변하지 않는 모든 실질적인 목적으로 돈을 테스트하는 데 돈을 쓰는 것이 사업 적으로 의미가 없습니다. .getXXX/.setXXX
방법에 대한 공식적인 자동화 된 단위 테스트를 작성 하는 것이 완전한 시간 낭비의 주요 예입니다.
프로그램 테스트가 버그의 존재를 설득력있게 보여줄 수는 있지만, 그 부재를 보여줄 수는 없다고 지적 된 지 20 년이 지났습니다. 이 잘 알려진 발언을 솔직하게 인용 한 후, 소프트웨어 엔지니어는 요크의 연금술사처럼 계속해서 그의 크리 소 코믹스 정화를 개선 한 테스트 전략을 계속 수정합니다.
- Edsger W. Djikstra . (1988 년에 작성되었으므로 현재 4.5 년에 가깝습니다.)
이 답변 도 참조하십시오 .