블라디미르 코리코프 님의 "단위 테스트" 책을 정리한 포스팅입니다.
3. 이상적인 테스트를 찾아서
테스트의 가치
- 좋은 단위 테스트의 4대 특성을 곱하여 얻은 결과
- 추정치이며, 테스트 스위트에 테스트를 계속 둘지 여부를 결정할 수 있음
- 임계치를 충족하는 테스트만 두어, 책임을 적절하게 맡도록 해야 함
- 소수의 가치있는 테스트가 평범한 테스트보다 프로젝트 성장에 훨씬 더 효과적
이상적인 테스트를 만들 수 있는가?
- 이상적인 테스트는 네 가지 특성 모두에서 최대 점수를 받는 테스트
모두 만점의 점수를 얻는 테스트는 불가능함
- 회귀 방지, 리팩터링 내성, 빠른 피드백은 상호 배타적이기 때문
- 셋중 하나를 희생해야 나머지 둘을 최대로 할 수 있음
다른 특성에 집중하려고 하나의 특성을 버릴 수 없음
- 곱셈 규칙으로 인해 가치가 0으로 가까워짐
- 빠른 피드백 희생: 엔드 투 엔드 테스트
- 리팩터링 내성 희생: 깨지기 쉬운 테스트
- 회귀 방지 희생: 간단한 테스트
리팩터링 내성을 포기할 수 없음
- 테스트가 리팩터링 내성을 갖느냐의 여부는 이진 선택이기 때문
- 그러나 회귀 방지와 빠른 피드백에 대한 지표는 조절 가능함
4. 대중적인 테스트 자동화 개념 살펴보기
테스트 피라미드 분해
테스트 스위트에서 테스트 유형 간의 일정한 비율을 일컫는 개념
- 넓을 수록 보편적 (빈도수 높음)
- 높을 수록 사용자 경험에 가깝게 흉내냄
일반적으로 피라미드 형태를 유지해야 함
- 엔드 투 엔드 테스트가 가장 적고, 단위 테스트가 가장 많으며, 통합 테스트는 중간 어딘가에 있어야 함
블랙박스 테스트와 화이트박스 테스트 간의 선택
블랙박스 테스트
- 시스템의 내부 구조를 몰라도 시스템의 기능을 검사할 수 있는 테스트 방법
- 명세와 요구사항 중심 (무엇을 해야 하는 가)
- 리팩토링 내성에 강함
화이트박스 테스트
- 애플리케이션의 내부 작업을 검증
- 소스코드 중심 (어떻게 하는 가)
- 회귀 방지에 도움
- 테스트 분석시 사용됨
- 리팩토링 내성이 약함
'Code' 카테고리의 다른 글
[단위 테스트] 5-2. 목과 테스트 취약성: 통신 (0) | 2025.01.24 |
---|---|
[단위 테스트] 5-1. 목과 테스트 취약성: 목 (0) | 2025.01.24 |
[단위 테스트] 4-1. 좋은 단위 테스트의 4대 요소: 4대 요소 (0) | 2025.01.19 |
[단위 테스트] 3. 단위 테스트 구조 (0) | 2025.01.07 |
[단위 테스트] 2-2. 단위 테스트란 무엇인가: 런던파와 고전파 (1) | 2025.01.07 |