포스트

TDD

TDD

정의

  • 테스트 주도 개발(Test Driven Development)이라는 의미를 가짐
  • 반복 테스트를 이용한 소프트웨어 방법론으로 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복 구현
  • 짧은 개발 주기의 반복에 의존하는 개발 프로세스
  • 애자일 방법론 중 하나인 eXtream Programming(XP)의 ‘Test-First’ 개념에 기반을 둔 단순한 설계

    Agile이란?

    • 애자일은 신속한 반복 작업을 통해 실제 작동 가능한 소프트웨어를 개발하여 지속적으로 제공하기 위한 소프트웨어 개발 방식
      • 대표적으로 XP, 스크럼이 있다.
        • XP » 프레임워크 미포함
        • 스크럼  » 프레임워크 포함

    XP란?

    • 요구사항에 유연하게 대응하기 위해 고객 참여와 개발 과정의 반복을 극대화 하여 개발 생산성을 향상시키는 방법

    단위테스트(Unit Test)

    • 모듈이나 컴포넌트에 초점을 맞춰 테스트 하는 것

    통합테스트(Integration Test)

    • 단위 테스트가 끝난 모듈을 통합하는 과정에서 발생하는 오류 및 결함을 찾는 테스트 기법

일반 적인 개발 방식과 TDD의 차이점

  • 가장 큰 차이점은 테스트 코드를 작성한 뒤에 실제 코드를 작성

    일반적인 개발 방식

    • 요구사항 분석 -> 설계 -> 개발 -> 테스트 -> 배포

    TDD 개발 방식

    • 요구사항 분석 -> 설계 -> 테스트 코드 작성 -> (디자인 수정) -> 개발 -> (리팩토링) -> 배포

TDD의 장점

  1. 코드의 유지보수가 용이해진다
    • 테스트하기 쉬운 코드는 자연히 품질이 높아지므로 다시 읽기도 편하다.
    • 또한 테스트가 있으면 안심하고 코드를 리팩토링할 수 있다.
  2. 프로그래밍 시간이 단축된다
    • 프로그래밍에서 제일 긴 시간을 차지하는 디버깅 시간을 줄일 수 있다.
  3. 뛰어난 프로그램 소스코드 기록
    • 추후 다른 개발자가 봤을 때 이해하기 쉽다.

TDD의 단점

  • TDD 개발 경험이 없을 때 적용하기가 힘들다

xUnit

  • 다양한 언어를 지원하는 단위 테스트 프레임워크

JUnit

  • Java 단위 테스트 프레임워크
  • TDD의 대표적인 Tool

출처

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.