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 참고