![테스트 주도 개발 (Test Driven Developing)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcMnwGE%2FbtsHnr9a3FW%2FB3OmV1zYx9KUXijgDrlkak%2Fimg.jpg)
![HYUNJZZANG](https://tistory1.daumcdn.net/tistory/3136792/skin/images/main_img.gif)
테스트 주도 개발 (Test Driven Developing)PROGRAMMING/00. 관련 용어2024. 5. 10. 13:25
Table of Contents
반응형
★KEYWORD★
반복 테스트를 이용한 소프트웨어 방법론 / 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현 / 단순한 설계를 중요시함
테스트 주도 개발 (TDD)
테스트 주도 개발(Test-driven development TDD) 은 매우 짧은 개발 사이클을 반복하는 소프트웨어 개발 프로세스 중 하나이다. 개발자는 먼저 요구사항을 검증하는 자동화된 테스트 케이스를 작성한다. 그런 후에, 그 테스트 케이스를 통과하기 위한 최소한의 코드를 생성한다. 마지막으로 작성한 코드를 표준에 맞도록 리팩터링 한다. 이 기법을 개발했거나 '재발견' 한 것으로 인정되는 Kent Beck은 2003년에 TDD가 단순한 설계를 장려하고 자신감을 불어넣어 준다고 말하였다.
➡️ TDD와 일반적인 개발 방식의 가장 큰 차이점은 테스트 코드를 작성한 뒤에 실제 코드를 작성한다는 점이다.
디자인 (설계) 단계에서 프로그래밍 목적을 반드시 미리 정의해야만 하고, 또 무엇을 테스트해야 할지 미리 정의 (테스트 케이스 작성) 해야만 한다.
👍 테스트 주도 개발(TTD) 의 장점
1. 객체 지향적인 코드 개발
- 테스트 코드를 먼저 작성한다면 좀 더 명확한 기능과 구조를 설계할 수 있다.
- 각각의 함수를 정의할 때 각각의 기능들에 대해서 철저히 구조화시켜 코드를 작성할 수 있게 된다.
2. 설계 수정 시간의 단축
- 테스트 코드를 먼저 작성하기 때문에 최초 설계 안을 만족시키며 입출력 구조와 기능의 정의를 명확히 하게 되므로 설계의 구조적 문제를 바로 찾아내게 된다.
3. 디버깅 시간의 단축
- 기본적으로 단위 테스트 기반의 테스트 코드를 작성하기 때문에 추후 문제가 발생하였을 때 각각의 모듈별로 테스트를 진행해 보면 문제의 지점을 쉽게 찾아낼 수 있다. (TTD 개발이 아니라면 특정 버그를 찾기 위해 모든 영역의 코드를 살펴봐야 할 것이다)
4. 유지 보수의 용이성
- 항상 그 테스트 요소들이 사용자 관점으로 정의되고 진행되기 때문에 입력과 출력의 흐름이 명확해지고 추후 구조의 변경 및 소스 수정 시 구조를 쉽게 파악하고 빠른 수정이 가능하다.
- 재사용 테스트도 쉽게 가능해진다.
5. 테스트 문서의 대체 가능
- 테스팅을 자동화 시킴과 동시에 보다 정확한 테스트 근거를 산출할 수 있다.
👎 테스트 주도 개발(TTD) 의 단점
생산력의 저하
- 처음부터 2개의 코드를 짜야하고, 중간에 테스트를 하면서 고쳐나가야 하기 때문에 개발 시간이 일반적인 개발 방식에 비해 대략 10~30% 로 늘어난다.
출처 및 참고 : 위키백과, https://wooaoe.tistory.com/33
반응형
![HYUNJZZANG](https://tistory1.daumcdn.net/tistory/3136792/skin/images/main_img.gif)
@HYUNJZZANG :: HyunZzang
HyunZzang의 프로그래밍 공간 / 함께 공부해요!!
도움이 되셨다면 "좋아요❤️" 또는 "구독👍🏻" 부탁드립니다 :)