TDD
TDD란?
- TDD란 Test Driven Development의 약자로 '테스트 주도 개발'이라고 한다. 반복 테스트를 이용한 소프트웨어 방법론으로, 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현한다.
- 위 그림은 TDD 개발주기를 표현한 것이다.
- 실패하는 테스트 코드(Failing Test)를 작성한다.
- 테스트 코드를 성공시키기 위한 코드(Test Pass)를 작성한다.
- 중복 코드 제거, 일반화 등의 리팩토링(Refactor)을 수행한다.
-
디자인(설계) 단계에서 프로그래밍 목적을 반드시 미리 정의해야만 하고, 또 무엇을 테스트해야 할지 미리 정의(테스트 케이스 작성)해야만 한다.
-
테스트 코드를 작성하는 도중에 발생하는 예외 사항(버그, 수정사항)들은 테스트 케이스에 추가하고 설계를 개선한다.
-
이후 테스트가 통과된 코드만을 코드 개발 단계에서 실제 코드로 작성한다.
TDD에서 중요한 개념이 무엇인지?
TDD의 목표는 작동하는 깨끗한 코드(Clean code that works(중복이 없고 명확한 코드))를 작성하는 것이다.
- TDD는 TDD Cycle이라는 반복적인 주기가 발생한다.
Clean code that works의 실현은 TDD Cycle 중 RGR 주기의 리펙토링 통해 이루어진다.
이 과정에서 테스트 코드는 중복 제거가 이루어지는데 여기서 중복 제거는 단순한 코드의 중복 제거를 넘어서 반복적인 기능을 하나의 클래스(또는 인터페이스)로 묶는 과정을 뜻하기도 한다. 즉 구조가 재설계 되기도 하는데 이러한 결과에서 우리는 TDD가 코드뿐만이 아닌 Clean Architecture를 실현하는 개발 방법론으로 사용할 수 있다는 점을 알 수 있다.
또한, 반복적인 자동화된 검증 과정을 통해 개발자에게 코드에 대해 신뢰를 하게 해줄뿐더러 더 나아가 소프트웨어의 버그 발생률을 감소시키고 품질 향상에 도움을 준다.
참고자료
TDD(Test-Driven-Development) 방법론에 대해서
선택이 아닌 필수 TDD