TDD

테스트 주도 개발(Test-driven development TDD)은 매우 짧은 개발 사이클을 반복하는 소프트웨어 개발 프로세스

  • 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 소프트웨어를 구현한다.

  • 방법
    • 바라는 향상 또는 새로운 함수를 정의하는 (초기적 결함을 점검하는) 자동화된 테스트 케이스를 작성한다. 그런 후에, 그 케이스를 통과하기 위한 최소한의 양의 코드를 생성한다. 그리고 마지막으로 그 새 코드를 표준에 맞도록 리팩토링
  • TDD의 세가지 법칙
    • Failing Test가 있을때만 프로덕션코드에 작성하라
    • 실패를 나타내는데 충분한 테스트만 작성하라.
    • 테스트가 성공하는 만큼만의 코드를 작성하라

TDD 장단점

  • TDD 장점
    • 작업과 동시에 테스트를 진행함으로써 실시간으로 오류 상황을 파악하여 시스템 결함을 방지
    • 짧은 개발 주기를 통해 고객의 요구사항을 빠르게 수용하거나 피드백을 줄 수 있고 현재 진행 상황을 쉽게 파악
    • 자동화 도구를 이용해 TDD의 테스트케이스를 단위테스트로 사용이 가능 테스트 자동화 도구는 Junit(Java), CppUnit(C/C++), NUnit(.NET) 등이 있음
    • 디버깅타임이 줄어듬
    • TDD의 3가지 법칙을 잘 따르면 설계문서를 얻을 수 있다.(low level design Document이다.)
  • TDD 단점
    • 기존의 개발프로세스에 테스트케이스 설계까지 추가되므로 생산성이 떨어지고 코드 생산 비용이 높아짐
    • 어떻게 테스트를 할 것이며, 프로젝트 성격에 따른 테스트 프레임워크 선택 등 여러 부분에 대한 고려가 필요

TDD 잘하는 방법?

???? okky 세미나 내용 정리

### TDD 참고

참고1 참고2 참고3 참고4