목록으로
'언젠가 읽기' 컨텐츠는 논문이나 영문 컨텐츠 등 언젠가 읽으려고 즐겨찾기 하고선 읽지 않고 계속 미룰만한 컨텐츠를 읽고 요약하거나 소개합니다.

TDD의 장점

언젠가 읽기
2025. 2. 18. AM 11:30:20

TDD는 엣지 케이스에 대한 테스트 작성을 장려합니다

TDD(Test-Driven Development)는 테스트를 작성함으로써 코드의 엣지 케이스(예외적인 상황)에 대한 처리를 장려합니다. 예를 들어, 코드의 한 줄을 주석 처리했을 때 모든 테스트가 여전히 통과된다면 문제가 있는 것입니다. 이는 개발자가 현재 작성된 테스트를 통과시키기 위해 필요한 최소한의 코드만 작성했음을 의미합니다. 새로운 엣지 케이스를 처리하고자 할 때는 먼저 해당 케이스에 대한 테스트를 작성해야 합니다. 그러나 TDD가 모든 문제를 해결해주지는 않으며, 개발자가 엣지 케이스를 먼저 인지해야 한다는 어려움이 있습니다. 또한, 개발자들이 TDD를 철저히 준수하도록 하는 것도 도전 과제입니다.

TDD는 외주 구현 시 가드레일로 사용될 수 있습니다

TDD는 코드의 구현을 외부 개발자에게 맡길 때 유용하게 사용될 수 있습니다. 단순한 문서로는 요구사항을 완벽히 전달하기 어렵지만, 테스트는 인터페이스의 형태와 사용되는 데이터 타입을 명확히 규정합니다. 이를 통해 외부 개발자가 구현을 맡더라도 일관된 품질과 요구사항을 충족시킬 수 있습니다.

테스트를 미리 작성함으로써 반복적인 수동 테스트를 줄입니다

TDD를 사용하면 테스트를 사전에 작성하여 개발 과정 중에 빠르게 테스트 스위트를 실행할 수 있습니다. 전통적인 개발 방식에서는 구현 중에 수동으로 테스트를 반복 실행해야 하지만, TDD를 통해 자동화된 테스트로 시간과 노력을 절약할 수 있습니다. 이는 특히 여러 가지 경우를 수동으로 테스트하는 것이 번거로운 경우에 유용합니다.

TDD는 테스트 작성에 익숙하지 않은 사람들을 훈련하는 데 사용될 수 있습니다

TDD는 테스트 작성에 익숙하지 않은 개발자들에게 좋은 테스트 습관을 기르는 데 도움을 줄 수 있습니다. 이는 마치 자전거의 보조 바퀴처럼, 처음에는 어렵겠지만 점차 좋은 테스트 작성을 자연스럽게 배우게 합니다. 그러나 이를 성공적으로 적용하기 위해서는 개발자들이 개선하려는 진정한 의지와 적절한 교육, 지원이 필요합니다. 그렇지 않으면 초기에는 좋지 않은 테스트를 작성한 후 다시 기존의 방식으로 돌아갈 수 있습니다.

TDD는 API/클래스/함수 구조가 확립되었을 때 가장 효과적입니다

TDD는 주로 세 가지 종류의 프로그래밍 작업에 유용합니다:

  • Greenfield: 새로운 프로젝트를 처음부터 개발할 때
  • Brownfield: 기존 프로젝트에 새로운 기능을 추가할 때
  • Maintenance: 버그 수정, 코드 리팩토링, 성능 개선 등을 할 때

특히 API나 클래스, 함수의 구조가 명확하게 정립된 상태에서는 TDD가 더욱 효과적으로 작동합니다. 구조가 확립되어 있으면 테스트를 통해 각 구성 요소의 올바른 동작을 보장할 수 있기 때문입니다.

함께 읽으면 좋은 참고 자료

  • "Test Driven Development: By Example" by Kent Beck
  • "Growing Object-Oriented Software, Guided by Tests" by Steve Freeman and Nat Pryce
  • "Clean Code: A Handbook of Agile Software Craftsmanship" by Robert C. Martin

[출처] What TDD is good for