TDD는 Test Driven Development의 약자로서 테스트 주도 개발이라고 부른다.
반복 테스트를 이용하는 소프트웨어 방법론이며, 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현한다.
이미지 출처 : https://hanamon.kr/tdd%EB%9E%80-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%A3%BC%EB%8F%84-%EA%B0%9C%EB%B0%9C/
TDD 개발에서 중요한 점은 RED 단계의 실패하는 테스트 코드를 먼저 작성하기 전까지는 실제 코드를 작성하지 않는것이며 최소한의 실제 코드를 작성해야한다.
코드가 내 손을 벗어나기 전에 빠르게 피드백 받을 수 있다.
TDD를 사용하면 기능 단위로 테스트를 하기 때문에 코드가 모두 완성되기 전에 피드백을 받는 것이 가능하다.
작성한 코드가 가지는 불안정성을 개선하여 생산성을 높일 수 있다.
TDD를 사용하면 코드가 내 손을 떠나서 사용자에게 도달하기 전에 문제가 없는지 먼저 진단 받을 수 있으므로 불안정성과 불확실성을 해소해준다.
프로그래머의 오버 엔지니어링을 방지한다.
TDD의 원칙 중 하나는 테스트를 통과하기 위한 최소한의 코드만 작성하고 개선하는 것이고 기능 단위로 테스트를 진행하기 때문에 문제가 발견되지 않은 코드에 영향을 줄 수 있는 오버코딩은 하지 않는다.
디버깅 시간을 단축할 수 있다.
TDD의 경우 자동화된 유닛테스팅을 전재하므로 특정 버그를 쉽게 찾을 수 있다.
재설계 시간을 단축 할 수 있다.
테스트 시나리오를 작성하면서 다양한 예외사항에 대해 생각해볼 수 있으므로 개발 중 설계가 변경되는 일을 방지할 수 있다.
이미지 출처 : https://media.fastcampus.co.kr/knowledge/dev/tdd/
단위 테스트 작성 -> 단위 테스트 실행 -> 운영 코드 작성 -> 단위 테스트 실행 -> 설계 개선(리팩토링) -> 단위 테스트
위의 실행을 반복한다.
참고한 사이트 :
https://media.fastcampus.co.kr/knowledge/dev/tdd/
https://inpa.tistory.com/entry/QA-%F0%9F%93%9A-TDD-%EB%B0%A9%EB%B2%95%EB%A1%A0-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%A3%BC%EB%8F%84-%EA%B0%9C%EB%B0%9C