본문 바로가기

CS지식/개발 상식

[CS 지식 - 개발상식] TDD의미 및 장점

1. TDD(Test Driven Development)란?

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

 

2. TDD 개발주기

  • Red : 실패하는 테스트코드를 먼저 작성
  • Green : 테스트 코드를 성공시키기 위한 실제 코드 작성
  • Blue : 중복코드 제거, 일반화등의 리팩토링 수행

→ 실패하는 테스트 코드를 작성할 때까지 실제코드를 작성하지 않는것
     실패하는 테스트를 통과할 정도의 최소 실제코드를 작성해야함

→ 이를 통해, 실제 코드를 명확하게 정의함으로써 불필요한 설계를 피할 수 있고 , 정확한 요구사항에 집중 할 수 있음

3.  일반 개발 방식 vs TDD 개발 방식

3-1. 일반적인 개발(소프트웨어 개발 5단계)

  • 요구사항 분석 → 설계 → 개발 → 테스트 → 배포
  • 단점 : 인수테스트를 함 → 문제를 발견해도 정확한 원인 진단 어려움
                개발을 느리게 하는 잠재적 위험 존재
               작은 부분의 기능 수정에도 모든 부분을 테스트해야 하므로 전체적인 버그 검출이 어려워짐

3-2. TDD개발

  • 테스트 코드를 작성한 뒤에 실제 코드를 작성
  • 디자인(설계)단계에서 프로그래밍 목적을 반드시 미리 정의 → 무엇을 테스트해야 할지(테스트 케이스작성)을 해야함
  • 테스트 코드를 작성하는 도중에 발생하는 예외사항
    → 테스트 케이스에 추가하고 설계를 개선
    → 이후 테스트가 통과된 코드만을 코드 개발 단계에서 실제 코드로 작성
  • 대표적인 예 : JUnit(Java 단위 테스트 프레임워크), CUnit(C언어), CppUnit(C++), PyUnit(Python)등

 

 

4. TDD 장점 & 효과

  • 재설계 시간 단축 : 테스트 코드를 먼저 작성하는 과정에서 무엇을 해야하는지 명확하게 정의하고 실제 코드를 작성하게됨
  • 객체지향적 코드 작성 : 기능 별 모듈화로 재사용성이 높아짐
  • 디버깅 시간 단축 
  • 추가 구현 용이 
  • 기능단위 테스트 → 빠른 피드백 가능

 

5. TDD단점

  • 생산성 저하 : SI프로젝트의 경우 품질보다는 납기일 준수가 중요하기 때문에 TDD방식을 사용x
  • 기존의 개발방식을 바꿔야함
  • 구조에 얽매임

 

참고)

CLIPSOFT

 

TDD(Test-Driven-Development) 방법론 - CLIPSOFT

작성자 : 강성웅 부장   TDD(Test-Driven-Development) 방법론에 대하여…     - TDD가 무엇 일까? TDD란 Test Driven Development의 약자로 ‘테스트 주도 개발’이라고 한다. 테스트 주도 개발(TDD)은 설계 이후

clipsoft.co.kr

[JS] TDD (velog.io)

 

[JS] TDD

기존 개발 프로세스와 달리 실제 코드를 작성하기 전에 테스트 케이스를 먼저 작성하여 개발자가 무엇을 해야 하는지를 명확히 한다.설계 단계에서 프로그램의 목적과 무엇을 테스트할지 미리

velog.io

[TEST] 📚 TDD 방법론 (테스트 주도 개발) - 알기 쉽게 정리 (tistory.com)

 

[TEST] 📚 TDD 방법론 (테스트 주도 개발) - 알기 쉽게 정리

TDD(Test Driven Development) 란? TDD란 Test Driven Development의 약자로 '테스트 주도 개발'이라고 한다. 반복 테스트를 이용한 소프트웨어 방법론으로, 작은 단위의 테스트 케이스를 작성하고 이를 통과하는

inpa.tistory.com

 

[개발상식] #2. TDD의 의미와 장점 :: 개발일기🌷 (tistory.com)

 

[개발상식] #2. TDD의 의미와 장점

1. TDD (Test Driven Development) 란? TDD는 '테스트 주도 개발'로 작은 단위의 테스트 코드를 작성해 프로그램이 잘못되었음을 증명하고, 이를 수정하면서 목표에 부합하는 코드를 추가하는 단계를 반복

beatitudo31.tistory.com