본문 바로가기
테스트코드

[단위테스트 1장] 단위테스트의 목표

by pius712 2023. 7. 2.

소프트웨어 프로젝트의 지속 가능한 성장을 가능하게 하는 것

  • 지속적인 정리와 리팩터링 등과 같이 적절한 관리를 하지 않고 방치하면 시스템이 점점 더 복잡해지고 무질서해진다
  • 테스트가 있다면 이런 문제를 막을 수 있다

→ 좋은 단위 테스트를 작성하는 것이 중요하다.

단위 테스트를 작성하는 것은 일종의 투자이고, 최대한의 이득을 얻을 수 있도록 노력해야 한다.

테스트 코드도 코드베이스의 일부이고, 좋은 테스트와 좋지 않은 테스트는 취향이나 선호도의 문제가 아니다. 단위테스트는 프로젝트의 성패를 가르는 중대한 문제이고, 잘못된 테스트 작성은 결국 프로젝트가 진행됨에 따라, 프로젝트의 성패를 좌우할 수 있다.

 

출처: https://colinsalmcorner.com/why-you-absolutely-need-to-unit-test/

커버리지 지표

커버리지 지표는 좋은 부정지표이자, 나쁜 긍정지표이다.

  • 커버리지가 낮으면, 개선이 필요하다.
  • 커버리지가 높다고, 좋은 코드는 아니다.

커버리지 지표를 만드는 방법에는 아래와 같은 것들이 있다.

  • 코드 커버리지
코드 커버리지(테스트 커버리지) = 실행 코드 라인 수 / 전체 라인 수
  • 브랜치 커버리지
분기 커버리지 = 통과 분기 / 전체 분기 수

커버리지에 집착하지 말자.

커버리지 100% 와 같은 커버리지 지표에 집중하게 되면, 좋은 테스트 코드보다는 지표에 집중하게 되어, 커버리지를 채우기 위한 방식의 코드를 작성하게 될 가능성이 높다.

예를들어, 당장에 코드 커버리지로 지표를 만드는 경우, if ~ else 브랜치를 3항 연산자로 바꾸기만 해도 커버리지가 올라가게 된다.

성공적인 테스트를 만드는 방법

좋은 테스트 코드인지 아닌지를 자동으로 확인할 수 있는 방법은 없고, 개인이 이를 직접 판단해야한다. 그렇다면, 좋은 테스트 코드란 무엇인가?

  1. 개발 주기에 통합되어있어야한다.
    1. 하나의 개발 프로세스로 개발시 지속적으로 실행을 하고 확인할 수 있어야함. 예를들어, CI 환경에서 테스트 자동화를 하는 것이 될 수 있다.
  2. 코드베이스에서 가장 중요한 부분을 테스트한다
    1. 애플리케이션에서 가장 중요한 부분은 비즈니스 로직(도메인 모델)이 있는 부분이다. 그렇기 때문에, 도메인 모델을 다른 부분과 이를 적절히 분리해야한다.
  3. 최소한의 유지비로 최대한의 가치를 만들어야한다.
    1. 좋은 테스트가 무엇인지 식별할 수 있어야함
    2. 좋은 테스트를 작성할 수 있어야함.

'테스트코드' 카테고리의 다른 글

[단위테스트 2장] 단위 테스트란 무엇인가  (0) 2023.07.02