본문 바로가기
개발/Test

TDD(Test Driven Development)

by Devsong26 2018. 1. 23.

TDD는 Test Driven Development의 약자로써, 테스트 주도 개발을 의미이며

XP(eXtreme Programming)라는 애자일 기반의 개발 방법론이다. 

 

전통적인 개발 프로세스의 경우 설계-> 코드 작성-> 테스트의 순서를 가진다. 

하지만 TDD의 경우 테스트가 핵심이다.

 

전통적인 개발 프로세스와는 달리 설계 -> 테스트 -> 코드 작성의 순으로 진행이 되며 테스트 코드는 최소한의 코드만을 작성하여 진행하면서 고도화를 시킨다. 

 

전통적인 개발 프로세스의 경우는 아래와 같다. 

 

개발 절차대로 개발을 진행하면 단점은 아래와 같다.

1. 고객이 개발자에게 요구사항을 전달할 때 추상적인 요구사항이 포함되면 개발하는 사람 입장에서는 잘못 이해할 수 있고, 그 결과 산출물이 고객의 요구사항과 달라질 수 있다. 

2. 설계 시간과 비용이 많이 들어간다.

3. 요구사항은 도중에 변경이 될 수도 있기에 프로세스 초기의 요구사항을 분석 후 디자인이 짜여진 상황이라면 요구사항을 다시 분석한 후 다시 디자인을 고안해야 한다.

4. 1,2,3의 이유로 개발일정이 딜레이 되면서 마감기한도 연기될 수 있다. 

 

이러한 이유로 전통적인 개발 프로세스와는 다른 애자일과 같은 소프트웨어 개발론이 등장하게 되었고 TDD 개발론도 등장하게 됐다. 

 

TDD의 장점은

- 테스트 코드 자체가 하나의 문서가 된다. 

- 전통적인 개발 프로세스의 비해 개발 시간이 단축된다. 

 

전통적인 개발 프로세스와의 차이점

전통적인 개발 프로세스의 경우 코드의 양이 많아진 후에 테스트를 진행하게 되는 경우 모듈간의 관계나 의존성등이 복잡하게 얽혀 있어서 단위 테스트를 진행하기 쉽지 않고 테스트 결과를 확인 후 수정을 하게 되면 다른 모듈에도 영향을 미칠 수 있다. 

하지만 TDD의 경우 테스트를 통해 코드를 작성하기 때문에 소스가 방대해져도 테스트하는데 문제가 없다. 

 

 

출처

https://ko.wikipedia.org/wiki/%EC%95%A0%EC%9E%90%EC%9D%BC_%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4_%EA%B0%9C%EB%B0%9C

https://namu.wiki/w/%ED%85%8C%EC%8A%A4%ED%8A%B8%20%EC%A3%BC%EB%8F%84%20%EA%B0%9C%EB%B0%9C?from=TDD

 

'개발 > Test' 카테고리의 다른 글

JUnit Test code setup  (0) 2023.11.13
과연 TDD를 제대로 알고 있는 걸까?  (0) 2022.03.27
Service, Controller 테스트  (0) 2018.08.05
JUnit  (0) 2018.01.27
JUnit - initializationError 해결하기  (6) 2017.12.09