TDD란?
테스트 주도 개발(Test Driven Development)의 약자로 테스트를 먼저 하고 구현을 나중에 하는 것을 의미한다.
모든 조건에 만족하는 테스트를 먼저 진행하고, 조건에 만족하지 않는 테스트를 단계적으로 진행하면서 실패하는 테스트를 점진적으로 성공시켜 나간다.
테스트 실행 결과가 failed
인 테스트 케이스를 지속적으로 그리고 단계적으로 수정하며, 테스트 케이스 실행 결과가 passed
가 되도록 만든다.
테스트가 passed
될 만큼의 코드만 우선 작성한다.
실패하는 테스트 -> 실패하는 테스트를 성공할 만큼의 기능 구현 -> 성공하는 테스트 -> 리팩토링 -> 실패하는 테스트와 성공하는 테스트 확인
의 흐름을 반복한다.
테스트를 통과할 만큼의 기능만을 구현하므로 한번에 너무 많은 기능을 구현하지 않아도 된다.
테스트 코드가 추가되면서 작은 범위부터 검증하며 검증하는 범위가 넓어질수록 기능 구현도 점진적으로 완성되어 간다.
리팩토링을 진행하는 범위가 적으므로 리팩토링의 비용이 상대적으로 적다.
꾸준한 리팩토링으로 코드 품질을 높일 수 있다.
코드가 수정되는 경우, 테스트를 진행하여 수정 결과를 빠르게 피드백받을 수 있다.