[테스트 마스터하기#4] 좋은 단위 테스트

YoungHo-Cha·2022년 5월 27일
1

Testing

목록 보기
4/7

본 내용은 Unit Testing - 블라디미르 코리코프 도서를 읽고 정리한 내용입니다.

이번엔 좋은 단위 테스트를 구성하는 4대 요소에 대해서 공부하자!

좋은 단위 테스트의 4대 요소

4대 요소는 다음과 같다.

  • 회귀 방지
  • 리팩터링 내성
  • 빠른 피드백
  • 유지 보수성

이제 하나씩 자세히 살펴보자!

회귀 방지

회귀는 소프트웨어 버그이다. 코드를 수정한 후 기능이 의도한 대로 작동하지 않는 경우다.

❗️ 코드베이스가 커질수록 잠재적인 버그에 더 많이 노출된다. 그렇기 때문에 회귀에 대해 효과적인 보호를 개발하는 것이 중요하다. 이러한 보호가 없다면 프로젝트가 오랫동안 성장할 수 없으며 점점 더 많은 버그가 쌓일 것이다.

✅ 회귀 방지 지표에 대한 테스트 점수를 평가하려면 다음 사항을 고려하자.

  1. 테스트 중에 실행되는 코드의 양
  2. 코드 복잡도
  3. 코드의 도메인 유의성

리팩토링 내성

제품 코드에 리팩토링을 수행했을 때, 테스트는 실패해서는 안된다.

❗️ 실제로 제품 코드를 리팩토링하고 수행했을 시 정상 수행되고 테스트가 실패하는 경우가 존재한다. 이럴 경우 거짓 양성(false positive)라고 한다.

✅ 리팩토링 내성이란 "거짓 양성"이 없어야 한다.

거짓 양성의 원인

테스트를 구현 세부 사항에 초점을 맞추었기 때문이다.

예를 들면, 메서드의 순서를 검증할 경우 리팩토링을 많이 수행하면 결과가 똑같이 나와도 테스트가 깨질 수도 있다.

그래서 "구현 세부 사항"에 대한 테스트 보다는 "결과"에 대한 테스트가 필요하다.

빠른 피드백

빠른 피드백은 단위 테스트의 필수 속성이다. 테스트 속도가 빠를수록 테스트 스위트에서 더 많은 테스트를 수행할 수 있고 더 자주 실행할 수 있다.

테스트가 빠르게 실행되면 코드에 결함이 생기자마자 버그에 대해 경고하기 시작할 정도로 피드백 루프를 대폭 줄여서, 버그를 수정하는 비용을 거의 0 까지 줄일 수 있다.

유지 보수성

유지 보수성은 다음 두 가지의 주요 요소로 구성된다.

  1. 테스트가 얼마나 이해하기 어려운가
    • 테스트의 크기와 관련이 있다. 작은 테스트는 필요할 때 병경하는 것도 쉽다.
  2. 테스트가 얼마나 실행하기 여러운가
    • 테스트가 프로세스 외부 종속성으로 작동하면, 데이터베이스 서버를 재부팅하고 네트워크 연결 문제를 해결하는 등 의존성을 상시 운영하는 데 시간을 들여야 한다.

참고

  • 도서 Unit Testing - 블라디미르 코리코프
profile
관심많은 영호입니다. 궁금한 거 있으시면 다음 익명 카톡으로 말씀해주시면 가능한 도와드리겠습니다! https://open.kakao.com/o/sE6T84kf

0개의 댓글