전공공부/소프트웨어 설계 (Software Design)

[소프트웨어 설계] TDD

jooona 2022. 2. 9. 15:01
반응형

TDD는 Test Driven Development의 약자로, 직역하면 테스트 주도 개발입니다. 소프트웨어 개발 방법론 중 하나로, 테스트 케이스를 작성하고, 이 테스트 케이스를 통과하는 코드를 개발하는 방식입니다.

 

일반적인 개발 프로세스는 설계 -> 개발 -> 테스트의 형태로 이루어집니다. 이 경우 테스트 중에 오류가 발생했을 때, 전체 프로그램을 확인해야 하며, 설계 변경 등의 이유로 작은 기능을 수정하더라도 전체 코드가 잘 작동하는지 확인해야 합니다. 당연히 유지보수에도 어려움이 있겠죠.

 

이를 개선하고자 작은 기능부터 테스트를 거치면서 개발을 진행하자는 방식이 바로 TDD입니다. 이 TDD의 개발순서, 장장점, 단점에 대해 하나씩 알아보겠습니다.

 

TDD 개발 순서

 

 

1. 설계 단계에서 개발 목적을 정의하고, 테스트 케이스를 작성한다.

2. 테스트 케이스를 통과하는 테스트 코드를 작성한다. 만약 예외 사항이 있다면 다시 설계 단계로 돌아가 테스트 케이스를 추가하고 설계를 수정, 개선한다.

3. 테스트 케이스를 통과하는 테스트 코드가 완성되었다면, 실제 코드에 반영한다.

4. 작성한 코드를 리팩토링한다.

 

TDD의 장점

1. 객체 지향적인 코드 개발

 - TDD로 개발을 진행할 경우 철저한 모듈화가 이루어지기 때문에 결합도를 낮추는데 도움이 됩니다. 이 덕분에 시스템 유지보수를 용이하게 할 수 있으며, 문제가 발생하였을 때 디버깅 시간 역시 단축할 수 있습니다.

 

2. 설계 수정 시간의 단축

 - 테스트 코드 작성과 설계 수정의 반복을 통해 설계 단계를 더 탄탄하게 만들 수 있습니다. 특히 설계의 구조적 문제를 더 쉽게, 초기에 찾아낼 수 있습니다.

 

3. 개발 과정이 남는다.

 - 테스트 코드, 테스트 케이스를 작성하는 과정에서 히스토리를 남길 수 있습니다.

 

TDD의 단점

단점은 명확합니다. 테스트 코드와 실제 개발에 적용할 코드, 2개 버전의 코드를 짜야하며, 중간중간 테스트를 하며 수정해야 하기 때문에 개발 시간이 늘어나게 됩니다.

 

 

반응형