Java 코드 적용 범위 도구

Java code coverage tools

Java 코드 커버리지툴은 두 가지 타입으로 구성되어 있습니다.첫 번째 타입은 Java 소스 코드에 스테이트먼트를 추가하고 재컴파일을 필요로 하는 툴입니다.둘째, 실행 전 또는 실행 중에 바이트 코드를 계측하는 도구입니다.테스트 실행 시 실행되는 코드 행을 등록하여 코드 중 어떤 부분이 테스트되는지 확인하는 것이 목표입니다.

JCOV

JCOV
개발자레오니드 아르보조프, 알렉산더 페트로프, 블라디미르 제너럴로프, 세르게이 추쿤체프, 올레그 울리안킨, 그레고리 슈투크, 파벨 오즈디힌, 콘스탄틴 보브로프스키, 로버트 필드, 알렉산더 쿠즈민, 레오니드 메스니크, 세르게이 보로디, 티토프레이
안정된 릴리스
3.0 / 2014년 9월 1일, 7년 전(2014-09-01)
유형코드 커버리지
면허증.GPL v2(Classpath 예외 포함)
웹 사이트wiki.openjdk.java.net/display/CodeTools/jcov

JCov는 Java의 초기 버전 1.1부터 Sun JDK(및 이후 Oracle JDK)와 함께 개발 및 사용된 도구입니다.JCov는 Java 코드 커버리지를 측정하고 보고할 수 있습니다.JCOv는 GNU Public License(Classpath 예외 포함 버전 2)의 조건에 따라 배포됩니다.JCOv는 2014년 OpenJDK 코드 툴 프로젝트의 일환으로 오픈 소스가 되었습니다.

특징들

JCOv는 다음 유형의 코드를 보고할 수 있습니다.

  • 블록 커버리지
  • 회선 커버리지
  • 브런치 커버리지
  • 메서드 적용 범위

JCov는 수집된 데이터를 저장하는 두 가지 방법을 구현합니다.

  • 파일 시스템상의 파일로
  • 서버(일명 '네트워크 그랩버')

JCOv는 두 가지 다른 방법을 사용하여 Java 바이트 코드를 계측함으로써 작동합니다.

  • 테스트한 코드를 변경하기 위해 먼저 실행되는 정적 계측
  • Java 에이전트를 통해 즉시 실행되는 동적 인스트루먼테이션

JCOv에는 다음과 같은 몇 가지 특징이 있습니다.

  • 필드 커버리지
  • 추상 API 적용 범위
  • 직접/간접 적용 범위
  • 테스트별 커버리지 정보(일명.k.a)."테스트 스케일")
  • 커스텀 필터링 및/또는 커버리지 데이터 마이닝 구현이 가능한 퍼블릭 API 및 SPI

JCOv를 사용한 도구

  • Oracle JDK(SE 및 ME)
  • JCK(Java 호환성 키트)
  • 다양한 Java SE 및 Java ME TCK
  • Java FX SDK
  • Java FX 장면 빌더

자코코

자코코
개발자마르크 호프만, 브록 야니차크, 에브게니 만드리코프, 미르코 프리데하겐
안정된 릴리스
0.8.8 / 2022년 4월 5일, 3개월 전(2022-04-05)
유형코드 커버리지
면허증.EPL
웹 사이트www.jacoco.org/jacoco

JaCoCoJava 코드 적용 범위를 측정하고 보고하기 위한 오픈 소스 툴킷입니다.JaCoCo는 Eclipse Public License 조건에 따라 배포됩니다.이클립스용 EclEmma 플러그인의 산하에 [1]Emma를 대체하기 위해 개발되었습니다.

특징들

JaCoCo는 지침, 라인 및 지점을 제공합니다.

소스 코드를 계측해야 하는 Atlassian Clover 및 OpenClover와 달리 JaCoCo는 두 가지 다른 접근 방식을 사용하여 Java 바이트 코드를 계측할 수 있습니다.

  • Java[2] 에이전트와 함께 코드를 실행하면서 JCOv on the fly와 같은 기능을 제공합니다.
  • 실행 전 CoberturaJCOv와 같은 기능(오프라인)

또한 수집된 데이터를 파일에 저장하거나 TCP를 통해 전송하도록 구성할 수 있습니다.여러 실행 또는 코드 부분의 파일을 [3]쉽게 병합할 수 있습니다.Cobertura EMA와는 달리 Java 7, Java 8,[4] Java 9, Java 10, Java 11, Java 12, Java 13, Java 14, Java 15, Java 16, Java 17 및 Java 18을 완전히 지원합니다.

JaCoCo를 사용하거나 포함하는 도구

OpenClover

OpenClover
개발자마렉 파르피아노비치, 그제고르츠 르완도프스키
안정된 릴리스
4.4.1 / 2019년 10월 11일, 2년 전(2019-10-11)
유형코드 커버리지
면허증.Apache 라이센스 2.0
웹 사이트openclover.org

OpenClover는 Atlassian이 2017년에 발행한 Clober 코드 베이스의 포크로 작성된 Atlassian Clober의 무료 오픈 소스 후속 제품이다.오리지널 클로버(서버 에디션)의 모든 기능이 포함되어 있습니다.OpenClover 프로젝트는 2012-2017년에 [12]Clover를 유지 보수한 개발자들이 주도하고 있습니다.

OpenClover는 소스 코드 계측 기술을 사용하며 Java, GroovyAspectJ 언어를 처리합니다.일부 기능에는 커버리지 측정 범위에 대한 정밀 제어, 테스트 최적화 및 정교한 보고서가 포함됩니다.

OpenClover는 Ant, Maven, Gradle, Grails, Eclipse, IntelliJ IDEA, Bampoo, Jenkins, Hudson, Griffon, SonarQube 및 AspectJ와 통합됩니다.

코베르투라

코베르투라
개발자스티븐 크리스토
안정된 릴리스
2.1.1 / 2015년 2월 26일, 7년 전(2015-02-26)
저장소github.com/cobertura/cobertura
유형코드 커버리지
면허증.GPL 2.0
웹 사이트cobertura.github.io/cobertura/

Cobertura는 코드 커버리지를 측정하기 위한 오픈 소스 도구입니다.이는 바이트 코드를 계측함으로써 이루어집니다.

평온

평온
개발자마이클 콕
안정된 릴리스
1.0 / 2013년 12월 8일, 8년 전(2013-12-08)
유형코드 커버리지
면허증.Apache 소프트웨어 라이센스 버전 2.0
웹 사이트wiki.jenkins-ci.org/display/JENKINS/Serenity+Plugin

SerenityJava 코드 적용 범위를 측정하고 보고하기 위한 오픈 소스 툴킷입니다.커버리지뿐만 아니라 사이클로메트릭 복잡도, 안정성, 추상성 및 메인과의 거리 등 주요 코드 메트릭이 측정됩니다.보고서 데이터는 객체 데이터베이스에 유지되며 Jenkins/Hudson을 통해 사용할 수 있습니다.인터페이스는 Eclipse IDE 인터페이스를 시각적으로 복제합니다.

세레니티는 바이트 코드를 동적으로 확장하여 컴파일 후 단계를 불필요하게 만듭니다.Ant 및 Maven 프로젝트가 지원됩니다.설정은 xml로 이루어집니다.Ant의 예는 다음과 같습니다.

<!-- Serenity 시스템 속성. --> <프로퍼티 키="190.disples" 값="your.package.name.여기" /> <프로퍼티 키="190.disples" 값="구조, 복잡성, 의존성" /> <!-- Serenity JVM 명령줄. --> <jvmarg> line="-sublicagent: consibility/consibility.jar" /> 

Maven 의 설정 예는 다음과 같습니다.

<>properties>, <, included.packages>, -Dincluded.packages=your.package.name.here<, /included.packages>,<>included.adapters>, -Dincluded.adapters=coverage,complexity,dependency<, /included.adapters>,<>/properties>,>argLine>,-javaagent:serenity/serenity.jar -Xms512m -Xmx1024m달러{included.packages}달러{included.adapters}<, /ar.gLine>.

설정의 완전한 예에 대해서는, https://wiki.jenkins-ci.org/display/JENKINS/Serenity+Plugin 의 Jenkins Wiki 를 참조해 주세요.

Jenkins 슬레이브 및 Maven 멀티 모듈프로젝트가 지원됩니다.

Java용 테스트웰 CTC++

테스트웰 CTC++
개발자소프트웨어 테크놀로지 검증
안정된 릴리스
8.0 / 2016년 6월 30일, 6년 전(2016-06-30)
유형코드 커버리지
면허증.독자 사양
웹 사이트verifysoft.com/en_ctcpp.html

Testwell CTC++는 C, C++, Java 및 C# 코드 커버리지 도구입니다.이 도구의 개발은 1989년 핀란드의 테스트웰에서 시작되었습니다.2013년부터는 독일 오펜부르크의 Verifysoft Technology에 의해 지원 및 개발이 계속되고 있습니다.수정된 조건/판정 범위 및 멀티컨디션 [13]범위까지의 모든 코드 범위 레벨에 대해 테스트웰 CTC++ 분석을 실시합니다.이 도구는 모든 [14]컴파일러에서 동작합니다.

IntelliJ IDEA 코드 커버리지 에이전트

IntelliJ IDEA 코드 커버리지 에이전트
개발자제트브레인
유형코드 커버리지
면허증.아파치 2.0
웹 사이트github.com/JetBrains/intellij-coverage

IntelliJ IDEA Code Coverage Agent는 IntelliJ IDEA 및 TeamCity CI 서버에 통합된 코드 커버리지 도구입니다.브랜치 커버리지 및 테스트별 커버리지 추적을 지원합니다.

주목할 만한 이력 도구

클로버

클로버
개발자아틀라시안
안정된 릴리스
4.1.2 / 2016년 10월 11일, 5년 전(2016년 10월 11일)
유형코드 커버리지
면허증.아파치 2.0
웹 사이트atlassian.com

CloverAtlassian이 구입하여 개발한 Java 코드 커버리지 분석 유틸리티입니다.Atlassian은 2017년 4월 Clover의 단종과 동시에 Apache 2.0 라이선스로 오픈소스를 발표했다.

Clover는 소스 코드 계측 기술을 사용합니다(바이트 코드 계측을 사용하는 Cobertura 및 JaCoCo와 달리). 장점(코드 메트릭 수집 기능 등)과 단점(소스 재컴파일 필요).[15]그 기능에는 이력 보고서 작성, 커버리지 수집 프로세스의 대폭적인 제어, 레거시 통합을 위한 명령줄 도구 세트 및 API 등이 있습니다.

또한 클로버는 이전 빌드 이후 변경된 애플리케이션 코드를 포함하는 테스트만 실행함으로써 테스트 시간을 단축할 수 있습니다.이것은 테스트 최적화라고[16] 불리며, 자동 테스트가 완료될 때까지 대기하는 시간이 크게 단축될 수 있습니다.

Clover는 Atlassian(Ant, Maven, Grails, Eclipse, IDEA, Bampoo)과 오픈 소스 커뮤니티(Gradle, Griffon, Jenkins, Hudson, Sonar)에 의해 개발된 수많은 통합 기능을 제공합니다.

2017년 4월, 아틀라시안은 4.1.2 버전 이후 클로버의 새로운 버전을 더 이상 출시하지 않겠다고 발표하였고, 이 코드는 비트버킷에서 [17][18]호스팅되는 오픈 소스 소프트웨어로 제공되었다.

엠마.

엠마.
개발자블라드 루브초프
안정된 릴리스
2.1 / 2005년 5월 13일, 17년 전(2005년 5월 13일)
저장소sourceforge.net/projects/emma/
유형코드 커버리지
면허증.공통 공중 사용 허가서
웹 사이트ema.sourceforge.그물

EMMA는 Java 코드 적용 범위를 측정하고 보고하기 위한 오픈 소스 툴킷입니다.EMA는 Common Public License v1.0의 조건에 따라 배포됩니다.

EMMA는 현재 개발 중이 아닙니다.마지막 안정적인 릴리스는 2005년 중반에 이루어졌습니다.그 대신 JaCoCo가 [19]개발되었습니다.EMA는 각 코드 행과 각 조건을 플래그로 감싸서 동작합니다.플래그는 해당 행이 [20]실행될 때 설정됩니다.

특징들

  • 오프라인(로드 전) 또는 즉시(계기 애플리케이션 클래스 로더 사용) 커버리지를 위한 계측기 클래스.
  • 지원되는 커버리지 유형: 클래스, 메서드, 회선, 기본 블록.EMA는 단일 소스 코드 행이 부분적으로만 적용되는 경우를 검출할 수 있습니다.
  • 커버리지 통계는 메서드, 클래스, 패키지 및 "모든 클래스" 수준에서 집계됩니다.
  • 출력 보고서 유형: 일반 텍스트, HTML, XML. 모든 보고서 유형은 사용자가 제어하는 상세 깊이까지 드릴다운을 지원합니다.HTML 리포트는 소스 코드 링크를 지원합니다.
  • 출력 보고서에서는 커버리지레벨이 사용자가 지정한 임계값을 밑도는 항목을 강조 표시할 수 있습니다.
  • 다른 계측 또는 테스트 실행에서 얻은 탐지 범위 데이터를 병합할 수 있습니다.
  • 커버리지 데이터를 리모트로 덤프 또는 리셋 할 수 있습니다.JVM을 종료하지 않아도 됩니다.
  • 는 소스 코드에 액세스할 필요가 없으며 입력 클래스에서 사용할 수 있는 디버깅 정보의 양이 감소하여 정상적으로 저하됩니다.
  • can instrument personal.class파일 또는 전체.jars(필요한 경우)효율적인 커버리지 서브셋필터링도 가능합니다.
  • Makefile과 ANT 빌드 통합은 동등한 기반에서 지원됩니다.
  • 추가된 계측의 런타임 오버헤드는 작고(5-20%) 바이트 코드 계측기 자체는 매우 빠릅니다(대부분 파일 I/O 속도에 의해 제한됨).메모리 오버헤드는 Java 클래스당 수백 바이트입니다.
  • EMMA는 100% 순수 Java이며 외부 라이브러리에 의존하지 않으며 모든 Java 2 JVM(1.2.x도 마찬가지)에서 작동합니다.

레퍼런스

  1. ^ 자코코 미션
  2. ^ Patroklos Papapetrou (19 December 2012). "Code Coverage Tools (JaCoCo, Cobertura, Emma) Comparison in Sonar". Only Software matters. Retrieved 3 March 2013.
  3. ^ Sonar와의 통합 테스트를 통한 적용 범위 측정 – 갱신
  4. ^ a b "Code Coverage". IntelliJ IDEA 12.0 Web Help. JetBrains. Archived from the original on 26 April 2013. Retrieved 3 March 2013.
  5. ^ EclEmma, Eclipse 코드 적용 범위 플러그인
  6. ^ Jenkins JaCo 플러그인
  7. ^ NetBeans JaCoCo 지원
  8. ^ Gradle JaCoCo 플러그인
  9. ^ Visual Studio 팀 서비스에 JaCoCo 통합
  10. ^ JaCoCo의 TeamCity 통합
  11. ^ Jacoco는 STAMP DSpot 툴에 의해 커버리지를 늘리고 고유한 실행 경로를 갖는 테스트를 선택하기 위한 테스트 셀렉터(피트니스로 표시됨)로 사용됩니다.
  12. ^ OpenClover - 델에 대해서
  13. ^ Testwell CTC++는 모든 커버리지 레벨 지원
  14. ^ Testwell CTC++는 모든 컴파일러 지원
  15. ^ "클로버는 왜 소스코드 계측기를 사용하는가?"
  16. ^ 테스트 최적화
  17. ^ "Atlassian Clover is now open source". atlassian.com. 11 April 2017.
  18. ^ "atlassian/clover". bitbucket.org.
  19. ^ SourceForge.net의 EMA 코드 적용 범위 파일
  20. ^ Spring MVC 및 Web Flow 전문가: Seth Ladd, Darren Davison, Steven Devizver, Colin Yates, 페이지 289

외부 링크