Test Coverage
테스트 커버러지
- 단위테스트 또는 통합테스트 수행 시 테스트코드가 테스트 대상 시스템에 대하여 얼마나 점검되었는지 판단
- 테스트코드가 테스트 대상의 로직들에 대하여 커버하는지 테스트 커버러지 비율로서 확인
테스트 커버러지 척도
- 테스트 커버러지 분석중 가장 논란이 많은 부분이 테스트 코드의 최종 커버러지 비율
- 단순한 수치적 비율을 놓고 이야기하게 되면 고객은 테스트 대상 시스템이 충분히 테스트 되지 않았다고 오해하게 됨
- 테스트 커버러지에 대한 정책을 결정할 때는 중요한 모듈을 선정하고 ValueObject1 또는 Utility 와 같은 클래스를 제외한 상태에서 비율을 정의해야 함
- 테스트 커버러지를 도입 시에는 업무상 중요도를 판단하여 테스트 대상 컴포넌트의 범위와 목표 커버리지를 정의하고 이해당사자들의 동의를 받는 것이 중요2
Test Coverage 툴의 원리
- Code Coverage 툴의 주요 기능은 실행 중에 대한 code 라인이 수행되었는지를 검증하는 것
- 이를 위해 Coverage 툴은 class의 각 실행 라인에 Code Coverage 툴로 log-in하는 logic을 추가
- 기존의 class에 Coverage 분석을 위한 code를 추가하는 작업을 Instrument라고 함
- 정적 기법 : 어플리케이션이 수행되기 이전에 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 에 접속
- Eclipse Marketplace 의 Find 창에서 eclemma 를 입력 후 검색을 실행
- EclEmma Java Code Coverage가 검색되면 install 버튼을 실행하여 해당 Plug-in을 설치
- 설치할 항목을 체크한 후 Confirm 버튼을 실행
- 라이선스에 동의하고 Finish 를 실행하며 설치가 시작
- 설치가 완료되고 이클립스를 재시작하면 EclEmma 를 사용하여 Code Coverage를 분석할 수 있음
- 테스트하고자 하는 프로젝트의 coverage As 메뉴를 선택하고 Junit Test를 실행
- Coverage 탭의 실행결과를 확인