TDD
TDD
정의
- 테스트 주도 개발(Test Driven Development)이라는 의미를 가짐
- 반복 테스트를 이용한 소프트웨어 방법론으로 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복 구현
- 짧은 개발 주기의 반복에 의존하는 개발 프로세스
- 애자일 방법론 중 하나인 eXtream Programming(XP)의 ‘Test-First’ 개념에 기반을 둔 단순한 설계
Agile이란?
- 애자일은 신속한 반복 작업을 통해 실제 작동 가능한 소프트웨어를 개발하여 지속적으로 제공하기 위한 소프트웨어 개발 방식
- 대표적으로 XP, 스크럼이 있다.
- XP » 프레임워크 미포함
- 스크럼 » 프레임워크 포함
- 대표적으로 XP, 스크럼이 있다.
XP란?
- 요구사항에 유연하게 대응하기 위해 고객 참여와 개발 과정의 반복을 극대화 하여 개발 생산성을 향상시키는 방법
단위테스트(Unit Test)
- 모듈이나 컴포넌트에 초점을 맞춰 테스트 하는 것
통합테스트(Integration Test)
- 단위 테스트가 끝난 모듈을 통합하는 과정에서 발생하는 오류 및 결함을 찾는 테스트 기법
- 애자일은 신속한 반복 작업을 통해 실제 작동 가능한 소프트웨어를 개발하여 지속적으로 제공하기 위한 소프트웨어 개발 방식
일반 적인 개발 방식과 TDD의 차이점
- 가장 큰 차이점은 테스트 코드를 작성한 뒤에 실제 코드를 작성
일반적인 개발 방식
- 요구사항 분석 -> 설계 -> 개발 -> 테스트 -> 배포
TDD 개발 방식
- 요구사항 분석 -> 설계 -> 테스트 코드 작성 -> (디자인 수정) -> 개발 -> (리팩토링) -> 배포
TDD의 장점
- 코드의 유지보수가 용이해진다
- 테스트하기 쉬운 코드는 자연히 품질이 높아지므로 다시 읽기도 편하다.
- 또한 테스트가 있으면 안심하고 코드를 리팩토링할 수 있다.
- 프로그래밍 시간이 단축된다
- 프로그래밍에서 제일 긴 시간을 차지하는 디버깅 시간을 줄일 수 있다.
- 뛰어난 프로그램 소스코드 기록
- 추후 다른 개발자가 봤을 때 이해하기 쉽다.
TDD의 단점
- TDD 개발 경험이 없을 때 적용하기가 힘들다
xUnit
- 다양한 언어를 지원하는 단위 테스트 프레임워크
JUnit
- Java 단위 테스트 프레임워크
- TDD의 대표적인 Tool
출처
- 나무위키
- 메타버스 교수님 강의
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.