TDD 방법론 (Test Driven Development, 테스트 주도 개발)


TDD 방법론 (Test Driven Development, 테스트 주도 개발) TDD 개념과 방법론 기존의 전통적인 개발 방법론과의 장단점 그리고 TDD 예제에 대해서 설명드립니다. TDD를 기반으로 개발하기 위한 세부적인 절차가 중요한데 함께 설명드리도록 하겠습니다.

TDD 개념

TDD(Test Driven Development)는 테스트 주도 개발을 의미하는 것으로 개발을 할 때 테스트 케이스를 함께 개발하면서 개발 하는 것입니다. 먼저 기존의 전통적인 일반적인 개발 방법은 아래와 같습니다.

TDD 방법론

일반적으로 요구 사항을 기반으로 모듈등을 설계하여 개발합니다. 그 뒤에 모듈이 제대로 개발되었는지 테스트를 하게 됩니다.

개발된 코드를 테스트하기 위해서는 예상되는 기댓값과 비교 하거나 테스트 모듈을 추가로 개발하여 테스트 할 수 있습니다.

하지만 TTD를 기반으로 개발을 하는 과정에서는 다음 과정을 거쳐서 개발하게 됩니다.

TDD 방법론
(출처 : 위키피디아)

TDD를 기반으로 개발할 경우 가장 먼저 모든 기능을 구현하는 것이 아니라, 최소한의 기능을 먼저 구현합니다. 예를 들어 함수의 프로토타입 형태 등으로 구현합니다.

그리고 테스트 케이스가 실행되도록 구현 후 실행합니다. 기능이 구현되지 않았기에 테스트 케이스를 실행하면 당연히 테스트 케이스는 실패되게 됩니다.

다음으로 실제 기능을 구현 후 테스트 케이스가 통과 되는 것을 확인합니다. TDD 개발방법에서 가장 중요한 것이 기능 구현이 제일 마지막입니다.

기능 구현을 제일 마지막에 하여 테스트 케이스가 통과 되는 것을 확인하면 개발에 흥미를 유지 시킬 수 있기 때문입니다. 그 뒤에 필요하면 개발된 코드를 기반으로 리펙토링(Refactoring) 과정을 진행합니다.

TDD 방법론 장단점

TDD방법론의 가장큰 장점은 코드를 안정적이게 개발할 수 있다는 점이 있습니다. 각각의 코드의 기능에 맞는 테스트케이스가 존재하므로, 코드가 수정되거나 리펙토링을 할 때에 버그 또는 오류의 가능성을 낮춰주게 됩니다.

그리고 실패 된 테스트케이스에서 기능을 구현하여, 테스트 케이스가 통과 될 경우 개발을 더욱 재밌게 할 수 있습니다.

하지만 TDD 방법론의 가장 큰 단점은 테스트 케이스 개발에 소요되는 시간으로 개발 시간이 늘어난 다는 점입니다.

TDD 예제

TDD를 기반으로 개발하는 방법 절차는 최소한의 코드 작성, 테스트 케이스 작성, 테스트 확인, 기능 구현, 테스트 확인 입니다. Python 언어에서 유닛테스트 개방법과 TDD 기반으로 예제는 아래의 글을 참고해 주시기 바랍니다.

Python unittest 사용법

( 본문 인용시 출처를 밝혀 주시면 감사하겠습니다.)