포스트

jUnit과 Mockito를 이용한 단위테스트 기초 5일차

jUnit과 Mockito를 이용한 단위테스트 기초 5일차

Test Coverage

테스트 커버러지

  • 단위테스트 또는 통합테스트 수행 시 테스트코드가 테스트 대상 시스템에 대하여 얼마나 점검되었는지 판단
  • 테스트코드가 테스트 대상의 로직들에 대하여 커버하는지 테스트 커버러지 비율로서 확인

테스트 커버러지 척도

  • 테스트 커버러지 분석중 가장 논란이 많은 부분이 테스트 코드의 최종 커버러지 비율
  • 단순한 수치적 비율을 놓고 이야기하게 되면 고객은 테스트 대상 시스템이 충분히 테스트 되지 않았다고 오해하게 됨
  • 테스트 커버러지에 대한 정책을 결정할 때는 중요한 모듈을 선정하고 ValueObject1 또는 Utility 와 같은 클래스를 제외한 상태에서 비율을 정의해야 함
  • 테스트 커버러지를 도입 시에는 업무상 중요도를 판단하여 테스트 대상 컴포넌트의 범위와 목표 커버리지를 정의하고 이해당사자들의 동의를 받는 것이 중요2

Test Coverage 툴의 원리

  • Code Coverage 툴의 주요 기능은 실행 중에 대한 code 라인이 수행되었는지를 검증하는 것
  • 이를 위해 Coverage 툴은 class의 각 실행 라인에 Code Coverage 툴로 log-in하는 logic을 추가
  • 기존의 class에 Coverage 분석을 위한 code를 추가하는 작업을 Instrument라고 함

Test Coverage

  • 정적 기법 : 어플리케이션이 수행되기 이전에 source code나 compile이 완료되어 있는 class 파일을Instrument하여 Instrumented class들을 만든 후 그것을 수행하는 방식
  • 동적 기법 : 원본 Class를 가지고 어플리케이션을 수행하여 runtime시에 class가 loading되는 순간에 class에 Instrumentation을 하는 방식
  • 동적 기법은 runtime에서 Code Instrumentation을 하는 부하가 발생하기 때문에, Instrumentation 양이 압도적으로 많은 Code Coverage 툴의 경우에는 정적 Instrumentation방식이 좀 더 유리
  • EMMA는 동적, 정적 Instrumentation을 모두 지원
  • 유사한 Coverage Tool인 Cobertura는 정적 Instrumentation만 지원

Emma

  • Emma 는 Java Code Coverage Tool로서 Open Source 임
  • EclEmma는 Emma 기반의 이클립스 Plug-in 프로그램
  • 코드 커버러지 분석결과는 자바 소스 편집기에서 확인가능
  • 테스트 케이스를 통해 소스의 각 라인 별로 호출여부를 확인할 수 있으며 점검결과 통계를 조회할 수 있음

Emma 설치

  • Code Coverage를 확인하기 위하여 이클립스 IDE에 EclEmma Plug-in을 설치
  • Plug-in을 설치하기 위하여 Eclipse Marketplace 에 접속

Test Coverage

  • Eclipse Marketplace 의 Find 창에서 eclemma 를 입력 후 검색을 실행
  • EclEmma Java Code Coverage가 검색되면 install 버튼을 실행하여 해당 Plug-in을 설치

Test Coverage

  • 설치할 항목을 체크한 후 Confirm 버튼을 실행
  • 라이선스에 동의하고 Finish 를 실행하며 설치가 시작

Test Coverage

  • 설치가 완료되고 이클립스를 재시작하면 EclEmma 를 사용하여 Code Coverage를 분석할 수 있음

Test Coverage

  • 테스트하고자 하는 프로젝트의 coverage As 메뉴를 선택하고 Junit Test를 실행
  • Coverage 탭의 실행결과를 확인

Test Coverage

  1. VO는 단순한 getter, setter로 구성되어 있어, 테스트 커버러지 비율을 높히기 위해 테스트 케이스를 만든것을 비효율적임 ↩︎

  2. 컴포넌의 중요 로직을 대상으로 한정해야 단위 테스트를 성공할 수 있다. 커버러지 100%가 목표인 것은 배꼽이 배보다 큰 상황임 ↩︎

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.