TDD 방법론 (Test Driven Development)

혜인·2022년 7월 28일
0

TDD?

  • Test Driven Development 테스트 주도 개발
  • 작은 단위 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계 반복
  • XP(eXtream Programming) 개념에 기반을 둠

    XP : 미래 예측 최대한 하지 않고, 지속적으로 프로토타입을 완성하는 애자일 방법론 중 하나
    추가 요구사항이 생겨도 실시간 반영

TDD 개발주기

  • 실패하는 테스트 코드를 먼저 작성

  • 테스트 코드를 성공시키기 위한 실제 코드를 작성

  • 중복 코드 제거, 일반화 등 리팩토링 수행

  • 실패하는 테스트를 통과할 정도의 최소 실제 코드 작성이 원칙

  • 실제코드에 요구사항을 명확히 정의해서 불필요한 설계 피할 수 있다.

일반 개발 vs TDD

일반개발

  • 분석 > 설계 > 개발 > 테스트 > 배포
  • 요구사항이 명확하지 않을 수 있다.
  • 처음부터 완벽한 설계는 어려움
  • 소스 코드 품질 저하 위험
  • 테스트 비용 증가
  • 재사용 어렵고, 관리 어려워서 유지보수 어렵게 만듬
  • 모든 부분 테스트해야해서 전체적 버그 검출 어려움

TDD

TDD

  • 테스트 코드를 작성한 뒤에 실제코드를 작성함
  • 예외사항은 테스트 케이스에 추가하고 설계 개선
  • 테스트 통과된 코드만 코드 개발때 실제 코드로 작성
  • 소스코드 간결해짐
  • 테스트케이스 작성으로 설계 개선되서 재설계 시간 절감

TDD 장점

  • 자연스럽게 모듈화가 된다. --> 튼튼한 객체지향적 코드
  • 재설계 시간 단축
  • 디버깅 시간 단축
  • 테스트 문서 대체 가능
  • 추가 구현 용이

TDD 단점

  • 생산성 저하
  • 일반적 개발 방식 보다 시간이 10~30프로 증가
  • 본인의 개발방식을 바꿔야함

JUnit

  • Java 단위 테스트 프레임워크
  • xUnit 다른 언어 단위테스트 프레임워크 ..
    ( ex .. Python (PUnit) C언어 ( CUnit) )
        

0개의 댓글