-
TDD(Test-Driven-Development, 테스트 주도 개발)기술 이야기/TDD 2020. 10. 20. 15:53반응형
TDD란 무엇인가
- Tset-Driven-Development => 테스트 주도 개발
- 짧은 개발 사이클에 의존하는 개발 프로세스
- 새로운 기능에 대한 자동화된 테스트케이스 작성 ~> 테스트를 통과하는 간단한 코드 작성
- 테스트 종류
- 단위 테스트 Unit test : 소프트웨어의 최소단위, 보통 함수를 가리킴
- 통합 테스트 Integration test : 단위 기능이 합쳐진 기능에 대한 테스트
- 시스템 테스트 System test : 위 내용보다 더 큰 개념, 전체 시스템에 대한 동작 테스트
- 인수 테스트 Acceptance Test : 고객이 ok할 수 있는지 판단하기 위한 테스트
TDD의 장단점
- 장점
- 객체지향적인 코드 개발
- 명확한 기능과 구조를 설계할 수 있음
- 코드 재사용성을 보장하면서 코드를 작성하게 됨
- 설계 수정 시간 단축
- 설계를 만족시키기 위해 테스트 코드를 작성 ~> 설계의 구조적 문제 발견
- 개발에 들어가기 전에 설계를 수정할 수 있음 (비용 절감)
- 디버깅 시간 단축
- 각 모듈별로 테스트를 진행 ~> point를 쉽게 찾게된다.
- 단위 테스트를 진행하기 때문에, 분할된 영역만 수정하면 됨
- 유지보수 용이
- 테스트는 사용자 관점에서 정의되고 진행 ~> 입력과 출력의 흐름 명확해짐
- 구조 변경 및 소스 수정 시, 구조를 쉽게 파악하고 빠르게 수정
- ~> 리팩토링 속도가 향상되고 코드 퀄리티가 상승
- 객체지향적인 코드 개발
- 단점
- 테스트 코드를 짜야하기 때문에 작업량이 늘어남 ~> 빠른 생산이 필요한 개발에 부적합
- 어떤 부분을 어떻게 테스트할지, 어떤 프레임워크가 서비스에 부합할지 고려하고 선택하는데 시간이 걸린다. 또한, 새로운 분야에 대한 학습이 필요하기 때문에 러닝커브가 높다. ~> 팀 전체가 테스트에 익숙한 상태에서 TDD를 해야 효과를 볼 수 있음
- TDD는 100%의 무결성과 케이스 적용 범위를 보장하지 않음
반응형'기술 이야기 > TDD' 카테고리의 다른 글
프로젝트를 TDD로 진행하며 느낀 TDD 경험담 (0) 2020.12.19