Code

[단위 테스트] 4-1. 좋은 단위 테스트의 4대 요소: 4대 요소

noahkim_ 2025. 1. 19. 03:29

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


1. 좋은 단위 테스트의 4대 요소 자세히 살펴보기

회귀 방지

회귀
  • 소프트웨어 버그
  • 코드를 수정한 후, 기능이 의도한 대로 작동하지 않는 경우를 의미함
  • 코드는 책임이며, 작성할수록 더욱 많은 버그에 노출됨
  • 프로그램이 커질수록 코드가 늘어나므로 회귀를 방지하는 것이 중요

 

테스트 점수
  • 테스트 코드 양
  • 코드 복잡도
  • 코드의 도메인 유의성

 

리팩터링 내성

  • 애플리케이션 코드를 리팩토링하더라도 관련 테스트가 제대로 동작하는지를 의미함

 

거짓 양성
  • 허위 경보
    • 실제로 기능은 잘 동작하지만, 테스트는 실패라 하는 경우
  • 영향
    • 코드 문제에 대응하는 능력이 떨어지고 희석됨
    • 리팩토링이 줄어즘
  • 원인
    • 일반적으로 코드를 리팩토링할 때 발생함
    • 테스트 대상 시스템이 구현 세부 사항이 많이 결합할수록 더 많이 생김
  • 해결방법
    • 구현 세부 사항에서 테스트 분리하기
    • 최종 사용자의 관점에서 최종 결과를 검증하는지 확인

 

빠른 피드백

  • 단위 테스트의 필수 속성
  • 빠를수록 테스트 스위트에서 더 많은 테스트를 수행할 수 있음
  • 버그 수정 비용이 매우 줄어듬

 

유지 보수성

  • 테스트의 유지비를 평가

 

얼마나 이해하기 어려운가
  • 코드 라인이 적을 수록 읽기 쉬움

 

얼마나 실행하기 어려운가
  • 테스트가 외부 종속성으로 작동하면 의존성을 운영하는 시간이 들게 됨

 

 

2. 회귀 방지와 리팩터링 내성의 본질적인 관계

테스트 정확도 극대화

테스트 정확도
  • 테스트 정확도를 향상시키는 방법
    • 신호를 증가시키기(버그를 찾는 테스트)
    • 소음을 줄이기(허위 경보)

 

거짓 음성
  • 테스트가 기능 고장을 잡아내지 못하는 경우
  • 회귀방지가 도움이 됨

 

거짓 양성
  • 테스트가 기능 고장을 거짓으로 잡아낸 경우
  • 리팩토링 내성이 도움이 됨
    • 초기에는 별로 중요하지 않음
    • 리팩토링 할 일이 없기 때문