Cobertura

DEVELOPMENT 2008/08/12 10:53
참고 사이트 : http://cobertura.sourceforge.net/

수행 중에 어느 정도 코드를 사용했는지를 분석해주는 Tool로서 코드 수행 여부 조사를 위해서 html형태로 report를 산출하며 이는 브라우저를 통해서 확인 가능합니다. Cobertura가 정적 방식으로 코드 instrument를 사용하기 때문에 코드 분석 수행을 위해 WAS에 deploy된 Application를 undeploy 한 후에 컴파일을 통하여 Conde를 instrument하고 테스트를 수행 한 후에 WAS 종료시 결과를 지정 폴더에 저장하고 instrument를 제거하는 과정을 다시 거친 후에 WAS를 기동합니다.

- 제품 설치
① 제품 다운로드
② 원하는 폴더에 압축 해제
③ WAS 기동 파일에 Cobertura.ser파일명 및 위치 지정
     [{Domain.home}/bin/startWebLogic.bin]

%JAVA_HOME%\bin\java %JAVA_VM% %MEM_ARGS% %JAVA_OPTIONS% -Dnet.sourceforge.cobertura.datafile=E:\DEVELOP\report\sony\coverage\cobertura.ser -Dweblogic.Name=%SERVER_NAME% -Djava.security.policy=%WL_HOME%\server\lib\weblogic.policy %PROXY_SETTINGS% %SERVER_CLASS%


Ant에 수행 스크립트 작성

<target name="instrument" >
<echo> Coverage intrumentation </echo>
<!-- overwrite instrumented code -->
<cobertura-instrument todir="${stage.dir}/WEB-INF/classes"
 datafile="${coverage.dir}/cobertura.ser" >
 <includeClasses regex="com.jboss.*"/>
 <includeClasses regex="test.jboss.*"/>
 <instrumentationClasspath>
  <pathelement location="${stage.dir}"/>
 </instrumentationClasspath>
</cobertura-instrument>
</target>

<!-- Generate coverage analysis report -->
<target name="coverageReport">
<cobertura-report
 format="html"
 destdir="${coverage.dir}"
 datafile="${coverage.dir}/cobertura.ser"
>
 <fileset dir="${src.dir}" >
  <include name="**/*.java"/>
 </fileset>
 <fileset dir="${test.src.dir}" >
   <include name="**/*.java"/>
 </fileset>
</cobertura-report>
 <cobertura-report
  format="xml"
  destdir="${coverage.dir}"
  datafile="${coverage.dir}/cobertura.ser"
 >
  <fileset dir="${src.dir}" >
   <include name="**/*.java"/>
  </fileset>
  <fileset dir="${test.src.dir}" >
   <include name="**/*.java"/>
  </fileset>
 </cobertura-report>
</target>

Code 대한 분석 리포트는 다음과 같은 형태로 출력됩니다.

 프로그램 구조에 따라 전체 테스트율에 대한 목표를 정해서 최대한 코드가 테스트 할 수 있도록 해야 합니다. 하지만 그 비율이 100%가 되기에는 현실적인 어려움이 많습니다. 반드시 수행하는 부분에 대한 선정이 필요하고 이를 바탕으로 Cobertura 설정 파일을 적절히 이용하여 분석 대상에서 제외 class등을 선정하는 방식 등을 통해서 최대 60%이상의 수행 목표가 이루어 질 수 있도록 합니다.

사용자 삽입 이미지




 

크리에이티브 커먼즈 라이센스
Creative Commons License
2008/08/12 10:53 2008/08/12 10:53
http://www.javapattern.info/trackback/135