TDD
: Test Driven Development
- 테스트 주도 개발
- 반복 테스트를 이용한 소프트웨어 방법론
- 자동화된 테스트 코드를 작성한 후 테스트를 통과하기 위한 코드를 개발하는 방식의 개발 방식
TDD를 이용한 개발방법
- 항상 실패하는 테스트를 먼저 작성 (RED)
- 테스트가 통과하는 프로덕션 코드를 작성 (GREEN)
- 테스트가 통과하면 프로덕션 코드를 리펙토링 (REFACTOR)
TDD의 효과
- 코드가 프로그래머의 손을 벗어나기 전에 빠르게 피드백을 받을 수 있다
- 작성한 코드의 불안정성을 개선하여 생산성을 높일 수 있다
- 프로그래머의 오버 코딩을 방지한다
- 테스트 코드를 작성하는 과정에서 히스토리가 남아, 과거 의사결정을 쉽게 상기할 수 있다
테스트 기법의 종류
1. 수동 테스트
- 인수 테스트
- 회사에서는 보통 QA라고 부르는 테스트 전문 담당자들이 UI를 활용해 기능을 검증한다
- 사람이 검증하기 때문에 사용자와 가까운 관점에서 테스트를 한다
- 기능이 동작하기 위한 전체 코드가 준비되어야 한다
- 실행 비용이 높고 결과의 변동이 크다
2. 테스트 자동화
- 사람이 직접 테스트하지 않고, 어떤 기능을 검증하는 코드를 작성하는 방식
- 실행 비용이 낮고 결과의 신뢰도가 높다
- 테스트 코드의 작성 및 관리가 프로그래머의 역량에 달려있다
3. 인수 테스트
- 주로 클라이언트가 의뢰한 소프트웨어를 최종적으로 사용할 수 있는 수준인지 점검하는 테스트
- 배치된 시스템을 대상으로 검증
- 전체 시스템 이상 여부 신뢰도가 높다
- 높은 비용 (작성비용 / 관리비용 / 실행비용)
4. 단위 테스트
- 시스템의 일부(하위 시스템)를 대상으로 기능을 검증하는 테스트
- 비용이 상대적으로 낮은 편이다
- 단위 안에서 버그가 있음을 상대적으로 자세히 알 수 있다
- 단위 테스트에서는 문제가 없더라도, 전체 시스템이 유기적으로 연결되었을 때 오류가 날 수도 있다
References
📌 INCoDOM
'Computer Science > Concept' 카테고리의 다른 글
Debugging(디버깅)이란? (0) | 2021.01.12 |
---|---|
프로그래밍 언어에서 Error의 종류. Syntax와 Semantics의 차이 (0) | 2020.11.22 |