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
- 기존의 개발방식을 바꿔야함
- 구조에 얽매임
참고)
TDD(Test-Driven-Development) 방법론 - CLIPSOFT
작성자 : 강성웅 부장 TDD(Test-Driven-Development) 방법론에 대하여… - TDD가 무엇 일까? TDD란 Test Driven Development의 약자로 ‘테스트 주도 개발’이라고 한다. 테스트 주도 개발(TDD)은 설계 이후
clipsoft.co.kr
[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
'CS지식 > 개발 상식' 카테고리의 다른 글
[CS 지식 - 개발 상식] Ajax & axios & fetch (0) | 2023.01.12 |
---|---|
[CS 지식 - 개발 상식] Web Server와 WAS의 차이 (0) | 2023.01.12 |
[CS 지식 - 개발상식] 함수형 프로그래밍 (0) | 2023.01.11 |
[CS 지식 - 개발 상식] MSA(Micro Service Architecture) (0) | 2023.01.11 |
[CS지식 - 개발 상식] 클린코드 (0) | 2023.01.10 |