TDD 테스트 주도 개발

Test Driven Development

  • 반복 테스트를 이용한 소프트웨어 방법론
  • 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현
  • 짧은 개발 주기의 반복에 의존하는 개발 프로세스

보통 개발 방식은 ‘요구사항 분석 → 설계 → 개발 → 테스트 → 배포이다.

테스트 코드를 작성한 뒤에 실제 코드를 작성한다. 디자인(설계) 단계에서 프로그래밍 목적을 반드시 미리 정의해야만 하고, 무엇보다 테스트해야 할지 미리 정의(테스트 케이스 작성)해야만 한다. 테스트 코드를 작성하는 도중 발생하는 예외 사항(버그 및 수정사항)은 테스트 케이스에 추가하고 설계를 개선한다.

 

 

 

TDD 개발 장점

  • TDD는 코드의 재사용 보장을 명시하므로 TDD를 통한 소프트웨어 개발 시 기능 별 철저한 모듈화가 이루어지고 종속성과 의존성이 낮은 모듈로 조합된 소프트웨어 개발을 가능하게 한다. 모듈을 추가하거나 제거해도 소프트웨어 전체 구조에 영향을 미치치 않게 된다.
  • 재설계 시간 단축
  • 디버깅 시간 단축
  • 테스트 문서 대체 가능
  • 추가 구현 용이

 

 

 

TDD 개발 단점

  • 생산성 저하 (개발시간이 늘어난다.)

 

 

 

pytest-django

python에서 TDD를 할 수 있는 라이브러리 : pytest

django에서 TDD 할 수 있는 플러그인 : pytest-django

  1. pip install pytest-django
  2. pytest 설정
  3. Configuring Django settings — pytest-django documentation
  4. django helper
    • mark
    Django helpers — pytest-django documentation
    • fixture
    Django helpers — pytest-django documentation