TDD란?
TDD란?
TDD(Test-Driven Development)는 소프트웨어 개발 방법론 중 하나로, 코드를 작성하기 전에 테스트 코드를 먼저 작성하는 개발 방식을 의미합니다. TDD는 소프트웨어의 품질을 높이고 버그를 최소화하기 위해 사용됩니다.
TDD 방식
1.테스트 작성 (Test):먼저 개발하려는 기능 또는 모듈에 대한 테스트 케이스를 작성합니다.이 테스트 케이스는 해당 기능이나 모듈이 어떤 동작을 해야 하는지를 명확하게 정의합니다.
2.실패하는 테스트 실행 (Red):작성한 테스트 케이스를 실행하면 당연히 실패할 것입니다. 왜냐하면 아직 해당 기능이나 모듈이 구현되지 않았기 때문입니다.
3.코드 작성 (Green):테스트 케이스를 통과시키기 위해 최소한의 코드를 작성합니다.목표는 테스트 케이스를 성공시키는 코드를 작성하는 것입니다.
4.테스트 통과 확인 (Refactor):코드가 작성되었으면 작성한 코드가 테스트를 성공적으로 통과하는지 확인합니다.필요한 경우 코드를 리팩토링하여 가독성과 유지 보수성을 개선할 수 있습니다.
TDD의 장점
1.버그 최소화: 테스트를 먼저 작성하므로 코드 작성 전에 버그를 발견하고 수정할 수 있습니다.
2.설계 개선: 테스트 케이스 작성 시 코드의 인터페이스와 기능을 명확하게 설계해야 하므로 코드의 구조와 설계가 개선될 수 있습니다.
3.문서화 효과: 테스트 케이스는 코드 동작의 예시를 제공하므로 문서화 역할을 하며, 새로운 개발자들이 코드를 이해하기 쉬워집니다.
4.자신감 부여: 작은 단계로 문제를 해결하면서 성공 경험을 쌓아 개발자의 자신감을 높일 수 있습니다.
TDD의 단점
1.생산성의 저하 : 처음부터 2개의 코드를 짜야하고 테스트를 하면서 고쳐나가야 하기 때문에 개발 시간이 일반적인 개발 방식에 비해 10~30% 정도로 늘어납니다.
2.구조에 얽매임 : 실제 코드가 중요함에도 테스트 원칙 때문에 쉽게 넘어가지 못하는 경우가 있을 수 있습니다.
TDD의 구조
- Given : 시나리오 진행에 필요한 값을 설정, 테스트의 상태를 설정하는 것입니다.
- When : 시나리오 진행 필요조건 명시, 테스트하고자 하는 행동을 하는 것입니다.
- Then : 시나리오를 완료했을 때 보장해야 하는 결과를 명시, 예상되는 변화를 설명하는 것입니다.