Java 코드 적용 범위 도구
Java code coverage toolsJava 코드 커버리지툴은 두 가지 타입으로 구성되어 있습니다.첫 번째 타입은 Java 소스 코드에 스테이트먼트를 추가하고 재컴파일을 필요로 하는 툴입니다.둘째, 실행 전 또는 실행 중에 바이트 코드를 계측하는 도구입니다.테스트 실행 시 실행되는 코드 행을 등록하여 코드 중 어떤 부분이 테스트되는지 확인하는 것이 목표입니다.
JCOV
| 개발자 | 레오니드 아르보조프, 알렉산더 페트로프, 블라디미르 제너럴로프, 세르게이 추쿤체프, 올레그 울리안킨, 그레고리 슈투크, 파벨 오즈디힌, 콘스탄틴 보브로프스키, 로버트 필드, 알렉산더 쿠즈민, 레오니드 메스니크, 세르게이 보로디, 티토프레이 |
|---|---|
| 안정된 릴리스 | 3.0 / 2014년 9월 , 전( |
| 유형 | 코드 커버리지 |
| 면허증. | GPL v2(Classpath 예외 포함) |
| 웹 사이트 | wiki |
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일, 전( |
| 유형 | 코드 커버리지 |
| 면허증. | EPL |
| 웹 사이트 | www |
JaCoCo는 Java 코드 적용 범위를 측정하고 보고하기 위한 오픈 소스 툴킷입니다.JaCoCo는 Eclipse Public License 조건에 따라 배포됩니다.이클립스용 EclEmma 플러그인의 산하에 [1]Emma를 대체하기 위해 개발되었습니다.
특징들
JaCoCo는 지침, 라인 및 지점을 제공합니다.
소스 코드를 계측해야 하는 Atlassian Clover 및 OpenClover와 달리 JaCoCo는 두 가지 다른 접근 방식을 사용하여 Java 바이트 코드를 계측할 수 있습니다.
또한 수집된 데이터를 파일에 저장하거나 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를 사용하거나 포함하는 도구
- SonarQube JaCoCo 플러그인 - 코드 품질 관리 플랫폼 SonarQube 내의 커버리지 분석 기본값 중 하나
- Ecl Emma Eclipse(소프트웨어) 코드 커버리지 플러그인(구 EMA[5] 기반)
- Jenkins JaCo 플러그인[6]
- Netbeans JaCoCo[7] 지원
- v11[4] 이후 IntelliJ IDEA
- Gradle JaCoCo[8] 플러그인
- Visual Studio 팀 서비스[9]
- 팀시티[10]
- 스탬프([11]https://www.stamp-project.eu/)
OpenClover
| 개발자 | 마렉 파르피아노비치, 그제고르츠 르완도프스키 |
|---|---|
| 안정된 릴리스 | 4.4.1 / 2019년 10월 , 전( |
| 유형 | 코드 커버리지 |
| 면허증. | Apache 라이센스 2.0 |
| 웹 사이트 | openclover |
OpenClover는 Atlassian이 2017년에 발행한 Clober 코드 베이스의 포크로 작성된 Atlassian Clober의 무료 오픈 소스 후속 제품이다.오리지널 클로버(서버 에디션)의 모든 기능이 포함되어 있습니다.OpenClover 프로젝트는 2012-2017년에 [12]Clover를 유지 보수한 개발자들이 주도하고 있습니다.
OpenClover는 소스 코드 계측 기술을 사용하며 Java, Groovy 및 AspectJ 언어를 처리합니다.일부 기능에는 커버리지 측정 범위에 대한 정밀 제어, 테스트 최적화 및 정교한 보고서가 포함됩니다.
OpenClover는 Ant, Maven, Gradle, Grails, Eclipse, IntelliJ IDEA, Bampoo, Jenkins, Hudson, Griffon, SonarQube 및 AspectJ와 통합됩니다.
코베르투라
| 개발자 | 스티븐 크리스토 |
|---|---|
| 안정된 릴리스 | 2.1.1 / 2015년 2월 , 전( |
| 저장소 | github |
| 유형 | 코드 커버리지 |
| 면허증. | GPL 2.0 |
| 웹 사이트 | cobertura |
Cobertura는 코드 커버리지를 측정하기 위한 오픈 소스 도구입니다.이는 바이트 코드를 계측함으로써 이루어집니다.
평온
| 개발자 | 마이클 콕 |
|---|---|
| 안정된 릴리스 | 1.0 / 2013년 12월 , 전( |
| 유형 | 코드 커버리지 |
| 면허증. | Apache 소프트웨어 라이센스 버전 2.0 |
| 웹 사이트 | wiki |
Serenity는 Java 코드 적용 범위를 측정하고 보고하기 위한 오픈 소스 툴킷입니다.커버리지뿐만 아니라 사이클로메트릭 복잡도, 안정성, 추상성 및 메인과의 거리 등 주요 코드 메트릭이 측정됩니다.보고서 데이터는 객체 데이터베이스에 유지되며 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++
| 개발자 | 소프트웨어 테크놀로지 검증 |
|---|---|
| 안정된 릴리스 | 8.0 / 2016년 6월 , 전( |
| 유형 | 코드 커버리지 |
| 면허증. | 독자 사양 |
| 웹 사이트 | verifysoft |
Testwell CTC++는 C, C++, Java 및 C#용 코드 커버리지 도구입니다.이 도구의 개발은 1989년 핀란드의 테스트웰에서 시작되었습니다.2013년부터는 독일 오펜부르크의 Verifysoft Technology에 의해 지원 및 개발이 계속되고 있습니다.수정된 조건/판정 범위 및 멀티컨디션 [13]범위까지의 모든 코드 범위 레벨에 대해 테스트웰 CTC++ 분석을 실시합니다.이 도구는 모든 [14]컴파일러에서 동작합니다.
IntelliJ IDEA 코드 커버리지 에이전트
| 개발자 | 제트브레인 |
|---|---|
| 유형 | 코드 커버리지 |
| 면허증. | 아파치 2.0 |
| 웹 사이트 | github |
IntelliJ IDEA Code Coverage Agent는 IntelliJ IDEA 및 TeamCity CI 서버에 통합된 코드 커버리지 도구입니다.브랜치 커버리지 및 테스트별 커버리지 추적을 지원합니다.
주목할 만한 이력 도구
클로버
| 개발자 | 아틀라시안 |
|---|---|
| 안정된 릴리스 | 4.1.2 / 2016년 10월 , 전( 10월 11일 |
| 유형 | 코드 커버리지 |
| 면허증. | 아파치 2.0 |
| 웹 사이트 | atlassian |
Clover는 Atlassian이 구입하여 개발한 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월 , 전( 5월 13일 |
| 저장소 | sourceforge |
| 유형 | 코드 커버리지 |
| 면허증. | 공통 공중 사용 허가서 |
| 웹 사이트 | 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도 마찬가지)에서 작동합니다.
레퍼런스
- ^ 자코코 미션
- ^ Patroklos Papapetrou (19 December 2012). "Code Coverage Tools (JaCoCo, Cobertura, Emma) Comparison in Sonar". Only Software matters. Retrieved 3 March 2013.
- ^ Sonar와의 통합 테스트를 통한 적용 범위 측정 – 갱신
- ^ a b "Code Coverage". IntelliJ IDEA 12.0 Web Help. JetBrains. Archived from the original on 26 April 2013. Retrieved 3 March 2013.
- ^ EclEmma, Eclipse 코드 적용 범위 플러그인
- ^ Jenkins JaCo 플러그인
- ^ NetBeans JaCoCo 지원
- ^ Gradle JaCoCo 플러그인
- ^ Visual Studio 팀 서비스에 JaCoCo 통합
- ^ JaCoCo의 TeamCity 통합
- ^ Jacoco는 STAMP DSpot 툴에 의해 커버리지를 늘리고 고유한 실행 경로를 갖는 테스트를 선택하기 위한 테스트 셀렉터(피트니스로 표시됨)로 사용됩니다.
- ^ OpenClover - 델에 대해서
- ^ Testwell CTC++는 모든 커버리지 레벨 지원
- ^ Testwell CTC++는 모든 컴파일러 지원
- ^ "클로버는 왜 소스코드 계측기를 사용하는가?"
- ^ 테스트 최적화
- ^ "Atlassian Clover is now open source". atlassian.com. 11 April 2017.
- ^ "atlassian/clover". bitbucket.org.
- ^ SourceForge.net의 EMA 코드 적용 범위 파일
- ^ Spring MVC 및 Web Flow 전문가: Seth Ladd, Darren Davison, Steven Devizver, Colin Yates, 페이지 289
외부 링크
- OpenClover, Clover, Cobertura, JaCoCo, JCOV, CodeCover 및 PIT 비교
- 자코코 vs 클로버 2
- JaCoCo는 지점 서비스 범위를 지원하므로 Sonar 2.2에서 코드 서비스 도구를 선택하십시오.
- Visual Studio 팀 서비스를 사용한 Java 응용 프로그램 테스트