-
TDD 실천법과 도구 - TDD ( Test Driven Development )Knowledge/TDD 2019. 10. 15. 16:02반응형
이 포스팅은 아래 링크에서 확인할 수 있는 "TDD 실천법과 도구" 책을 읽고 정리한 내용입니다.
- TDD의 정의
TDD는 제품 코드를 작성하기 전에 테스트 코드를 먼저 만드는 것이다
- TDD의 목표
잘 동작하는 깔끔한 코드를 만들기 위해 사용한다
- 개발에 있어 TDD의 위치
개발에 있어 TDD는 개발자가 처음으로 수행하는 메소드 단위 테스트다
- TDD의 진행 방식
진행할 수 있는 방법은 두가지다.
case 1. 구현 대상 클래스의 외형에 해당하는 메소드들을 먼저 만들고 테스트 케이스를 일괄적으로 만드는 방식
case 2. 테스트 케이스를 하나씩 추가해나가면서 구현 클래스를 점진적으로 만드는 방식
둘 중 어느 것이 특별히 좋다고 하긴 어려우나 대부분의 TDD 책에서 권장하는 건 2의 방식이다
후자의 방식은 크게 세단계의 과정을 거친다.
1. 질문 ( 테스트 코드 작성을 통해 시스템에 질문한다 - 테스트 수행 결과는 실패 )
- 하나의 테스트 케이스는 하나의 기능만 테스트 해야 한다. 하나의 테스트 케이스는 하나의 메소드로 표현한다.
2. 응답 ( 테스트를 통과하는 코드를 작성해 질문에 대답한다 - 테스트 성공 )
3. 정제 ( 아이디어를 통합하고, 불필요한 것은 제거하고, 모호한 것은 명확히 하며 대답을 정제한다 )
위의 과정을 주기적으로 반복한다
이 때 반드시 따르길 권장하는 원칙은 아래와 같다.
1. 실패하는 테스트를 작성하기 전에는 절대로 제품 코드를 작성하지 않는다
2. 실패하는 테스트 코드를 한 번에 하나 이상 작성하지 않는다.
3. 현재 실패하고 있는 테스트를 통과하기에 충분한 정도를 넘어서는 제품 코드를 작성하지 않는다.
- TDD의 장점
TDD는 개발자가 목표를 세워 개발을 진행해나가고, 설계에 대해 지속적으로 고민할 수 있게 도와준다. 또한 그 와중에 정형화된 형태의 테스트 케이스들을 작성함으로써 테스트 과정을 자동화하고, 테스트의 수행 결과와 개발의 목표 달성 여부를 즉각적으 로 알 수 있게 된다. 그리고 개발 완료 시점 이후로도 TDD의 부산물인 자동화된 단위 테스트 케이스를 이용한 지속적인 테스트가 가능해진다. 결과적으로 TDD는 개발에 좀 더 집중할 수 있게 도와주고, 프로그램의 안정성에 크게 기여한다
이 장의 실습 코드는 아래 링크에서 확인 가능합니다
반응형'Knowledge > TDD' 카테고리의 다른 글
TDD 실천법과 도구 - JUnit과 Hamcrest ( + Junit 5 ) (0) 2019.10.16