ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1. 단위 테스트의 목표
    개발 도서/Unit Testing 2024. 6. 1. 19:33

    1.1 단위 테스트의 현황 : 테스트는 프로젝트가 크고, 오래 진행될 수록 나타나는 엔트로피(무질서)를 제어하는 안전망 역할을 한다. 사실상 일회성으로 사용하는 프로젝트가 아니라면 필수적인 요소로 자리잡았다.

    1.2 단위 테스트의 목표 : 이제는 단위 테스트를 해야하는가 -> 더 좋은 단위 테스트란 어떤 것인가로 논제가 변화하고 있다. 좋은 단위 테스트 스위트란 개발 속도를 지키면서 침체 단계에 빠지지 않게 한다.

     

    *  테스트 스위트 : 테스트의 집합


    1.3 테스트 스위트 품질을 위한 커버리지 지표 

    1.3.1 코드 커버리지 : 코드의 라인 수를 기준으로, 테스트 영역 / 제품 코드 를 통해 나온 결과를 뜻한다. 이 수치는 많은 곳에서 의미있는 지표로 쓰이고 있으나, 절대적으로 신뢰해도 좋을 지표는 아니다. 예제 코드를 통해 이 지표의 함정과 빈틈을 소개했다.

    1.3.2 분기 커버리지 : 코드 커버리지 보다는 인사이트가 좋은 테스트 지표이나, 이 또한 절대적인 신뢰를 할 수는 없다. 그 이유는 아래와 같다.
    1. 결과에 대한 검증이 지표에 포함되지 않는다.
    - 분기에 대한 테스트의 영역만이 지표에 포함되기 때문에, 그 결과를 검증하지 않더라도 커버리지에 포함되어 버린다.
    2. 외부 라이브러리에 의한 분기를 테스트할 수 없다.
    - Java의 Integer.parseInt() 를 예로 들자면, 해당 함수에는 "1", "정수가아님", "", null 등의 다양한 분기점이 존재하지만, 한 줄의 코드를 검증했다는 것으로 분기 커버리지는 100%로 측정되는 문제가 발생한다.

    1.3.4 커버리지 목표 : 커버리지는 좋은 부정 지표(단위 테스트를 할 수 없는 코드는 품질이 좋지 않음)이지만, 나쁜 긍정 지표(테스트를 할 수 있다고 품질을 보증하지는 않음)이다.
    커버리지 또한 마찬가지이다. 커버리지가 낮다는 것(~60%)은 문제 징후이지만, 커버리지가 높다고 해서(70%~) 테스트 스위트의 품질이 좋은 것은 아니다.

    때문에 특정 커버리지를 목표로 테스트를 진행하는 것은 잘못된 것이다.
    성공적인 테스트 스위트는 다음과 같은 특징을 갖는다.
    - 개발 주기에 통합되어 있다.
    - 코드베이스 중 가장 중요한 부분만을 대상으로 한다.
    - 최소한의 유지비로 최대의 가치를 끌어낸다.
    이 책은 좋은 테스트와 좋지 않은 테스트를 식별하는 방법과, 좋은 테스트로 리팩토링 하는 방법이 포함되어 있다.


    '개발 도서 > Unit Testing' 카테고리의 다른 글

    6. 단위 테스트 스타일  (0) 2024.06.18
    5. 목과 테스트의 취약성  (0) 2024.06.17
    4. 좋은 단위 테스트의 4대 요소  (0) 2024.06.14
    3. 단위 테스트 구조  (0) 2024.06.04
    2. 단위 테스트란 무엇인가  (0) 2024.06.03
Designed by Tistory.