TDD란?
TDD란 Test Driven Development의 약자로 ‘테스트 주도 개발’이라고 한다.
반복 테스트를 이용한 소프트웨어 방법론으로 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현한다.
짧은 개발 주기의 반복에 의존하는 개발 프로세스이며, 애자일 방법론 중 하나인 eXtream Programming(XP)의 ‘Test-First’ 개념에 기반을 둔 단순한 설계를 중요시한다.
이 기법을 개발했거나 ‘재발견’한 것으로 인정되는 Kent Beck은 2003년 TDD가 단순한 설계를 장려하고 자신감을 불어넣어 준다고 말하였다.
단위 테스트(unit Test)란?
말 그대로 한 단위(일반적으로 class)만을 테스트하는 것이다.
TDD 개발주기
위 그림은 TDD의 개발주기를 표현한 것이다.
- { Red } 단계에서는 실패하는 테스트 코드를 먼저 작성한다.
- { Green } 단계에서는 테스트 코드를 성공시키기 위한 실제 코드를 작성한다.
- { Blue } 단계에서는 중복 코드 제거, 일반화 등의 리팩토링을 수행한다.
중요한 것은 실패하는 테스트 코드를 작성할 때까지 실제 코드를 작성하지 않는 것과, 실패하는 테스트를 통과할 정도의 최소 실제 코드를 작성해야하는 것이다. 이를 통해 실제 코드에 대해 기대되는 바를 보다 명확하게 정의 함으로써 불필요한 설계를 피할 수 있고, 정확한 요구 사항에 집중할 수 있다.
TDD 개발 방식
TDD와 일반적인 개발 방식의 가장 큰 차이점은 테스트 코드를 작성한 뒤에 실제 코드를 작성한다는 것이다.
디자인(설계) 단계에서 프로그래밍 목적을 반드시 미리 정의해야만 하고, 무엇보다 테스트해야 할지 미리 정의(테스트 케이스 작성)해야만 한다.
테스트 코드를 작성하는 도중 발생하는 예외 사항(버그 및 수정사항)은 테스트 케이스에 추가하고 설계를 개선한다.
이후 테스트가 통과된 코드만을 코드 개발 단계에서 실제 코드로 작성한다.
이러한 반복적인 단계가 진행되면서 자연스럽게 코드의 버그가 줄어들고 소스코드는 간결해진다.
또한 테스트 케이스 작성으로 인해 자연스럽게 설계가 개선됨으로 재설계 시간이 절감된다.
'Etc' 카테고리의 다른 글
[JS] 0 나누기 0 nan (0) | 2025.02.09 |
---|---|
시퀀스 채번 이슈로 인한 장애 (1) | 2025.02.01 |
Mock 이란? (0) | 2025.01.19 |
JVM이 스택 기반 VM인 이유가 무엇일까? (0) | 2025.01.19 |
웹훅이란? (0) | 2025.01.12 |