-
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