Code

[단위 테스트] 4-2. 좋은 단위 테스트의 4대 요소: 이상적인 테스트

noahkim_ 2025. 1. 24. 00:02

블라디미르 코리코프 님의 "단위 테스트" 책을 정리한 포스팅입니다.


3. 이상적인 테스트를 찾아서

테스트의 가치

  • 좋은 단위 테스트의 4대 특성을 곱하여 얻은 결과
  • 추정치이며, 테스트 스위트에 테스트를 계속 둘지 여부를 결정할 수 있음
    • 임계치를 충족하는 테스트만 두어, 책임을 적절하게 맡도록 해야 함
  • 소수의 가치있는 테스트가 평범한 테스트보다 프로젝트 성장에 훨씬 더 효과적

 

이상적인 테스트를 만들 수 있는가?

  • 이상적인 테스트는 네 가지 특성 모두에서 최대 점수를 받는 테스트

 

모두 만점의 점수를 얻는 테스트는 불가능함
  • 회귀 방지, 리팩터링 내성, 빠른 피드백은 상호 배타적이기 때문
  • 셋중 하나를 희생해야 나머지 둘을 최대로 할 수 있음

 

다른 특성에 집중하려고 하나의 특성을 버릴 수 없음
  • 곱셈 규칙으로 인해 가치가 0으로 가까워짐
  • 빠른 피드백 희생: 엔드 투 엔드 테스트
  • 리팩터링 내성 희생: 깨지기 쉬운 테스트
  • 회귀 방지 희생: 간단한 테스트

 

리팩터링 내성을 포기할 수 없음
  • 테스트가 리팩터링 내성을 갖느냐의 여부는 이진 선택이기 때문
  • 그러나 회귀 방지와 빠른 피드백에 대한 지표는 조절 가능함

 

4. 대중적인 테스트 자동화 개념 살펴보기

테스트 피라미드 분해

테스트 스위트에서 테스트 유형 간의 일정한 비율을 일컫는 개념
  • 넓을 수록 보편적 (빈도수 높음)
  • 높을 수록 사용자 경험에 가깝게 흉내냄

 

일반적으로 피라미드 형태를 유지해야 함 
  • 엔드 투 엔드 테스트가 가장 적고, 단위 테스트가 가장 많으며, 통합 테스트는 중간 어딘가에 있어야 함

 

블랙박스 테스트와 화이트박스 테스트 간의 선택

블랙박스 테스트
  • 시스템의 내부 구조를 몰라도 시스템의 기능을 검사할 수 있는 테스트 방법
  • 명세와 요구사항 중심 (무엇을 해야 하는 가)
  • 리팩토링 내성에 강함

 

화이트박스 테스트
  • 애플리케이션의 내부 작업을 검증
  • 소스코드 중심 (어떻게 하는 가)
  • 회귀 방지에 도움
    • 테스트 분석시 사용됨
  • 리팩토링 내성이 약함