stringtranslate.com

Herramientas de cobertura de código Java

Las herramientas de cobertura de código Java son de dos tipos: en primer lugar, las herramientas que añaden instrucciones al código fuente de Java y requieren su recompilación. En segundo lugar, las herramientas que instrumentan el bytecode , ya sea antes o durante la ejecución. El objetivo es averiguar qué partes del código se prueban registrando las líneas de código ejecutadas al ejecutar una prueba.

JaCoCo

JaCoCo es un conjunto de herramientas de código abierto para medir y generar informes sobre la cobertura del código Java . JaCoCo se distribuye bajo los términos de la Licencia Pública de Eclipse . Fue desarrollado como reemplazo de EMMA, [1] bajo el paraguas del complemento EclEmma para Eclipse.

Características

JaCoCo ofrece instrucciones, cobertura de líneas y sucursales.

A diferencia de Atlassian Clover y OpenClover, que requieren instrumentar el código fuente, JaCoCo puede instrumentar el bytecode de Java utilizando dos enfoques diferentes:

Y se puede configurar para almacenar los datos recopilados en un archivo o enviarlos a través de TCP. Los archivos de múltiples ejecuciones o partes de código se pueden fusionar fácilmente. [3] A diferencia de Cobertura y EMMA, es totalmente compatible con 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, Java 19 y Java 20.

Herramientas que utilizan o incluyen JaCoCo


Código de Procedimiento Civil

JCov es una herramienta que se ha desarrollado y utilizado con Sun JDK (y posteriormente Oracle JDK) desde el comienzo de Java: desde la versión 1.1. JCov es capaz de medir y generar informes sobre la cobertura del código Java . JCov se distribuye bajo los términos de la Licencia Pública General de GNU (versión 2, con la excepción Classpath). JCov se convirtió en código abierto como parte del proyecto de herramientas de código OpenJDK en 2014.

Características

JCov es capaz de informar los siguientes tipos de cobertura de código:

JCov implementa dos formas diferentes de guardar los datos recopilados:

JCov funciona instrumentando el código de bytes de Java utilizando dos enfoques diferentes:

JCov tiene algunas características más distintivas que incluyen, entre otras:

Herramientas que utilizan JCov

Clover abierto

OpenClover es un sucesor gratuito y de código abierto de Atlassian Clover, creado como una bifurcación del código base de Clover publicado por Atlassian en 2017. Contiene todas las características del Clover original (la edición para servidores). El proyecto OpenClover está dirigido por desarrolladores que mantuvieron Clover entre 2012 y 2017. [15]

OpenClover utiliza la técnica de instrumentación de código fuente y maneja lenguajes Java, Groovy y AspectJ . Algunas de sus características incluyen: control preciso sobre el alcance de la medición de cobertura, optimización de pruebas e informes sofisticados.

OpenClover se integra con Ant , Maven , Gradle , Grails , Eclipse , IntelliJ IDEA , Bamboo , Jenkins , Hudson , Griffon , SonarQube y AspectJ.

Agente de cobertura de código IntelliJ IDEA

IntelliJ IDEA Code Coverage Agent es una herramienta de cobertura de código integrada en IntelliJ IDEA IDE y en el servidor TeamCity CI. Admite la cobertura de sucursales y el seguimiento de la cobertura por prueba.

Testwell CTC++ para Java

Testwell CTC++ es una herramienta de cobertura de código para C , C++ , Java y C# . El desarrollo de esta herramienta comenzó en 1989 en Testwell en Finlandia. Desde 2013, el soporte y el desarrollo han sido continuados por Verifysoft Technology, una empresa de Offenburg , Alemania . Testwell CTC++ analiza todos los niveles de cobertura de código hasta la cobertura de condición/decisión modificada y la cobertura de múltiples condiciones. [16] La herramienta funciona con todos los compiladores . [17]

Herramientas históricas notables

Trébol

Clover es una utilidad de análisis de cobertura de código Java adquirida y desarrollada por Atlassian . En abril de 2017, Atlassian anunció el fin de la vida útil de Clover y, al mismo tiempo, lo convirtió en código abierto bajo la licencia Apache 2.0.

Clover utiliza una técnica de instrumentación de código fuente (a diferencia de Cobertura y JaCoCo, que utilizan instrumentación de código de bytes), que tiene sus ventajas (como la capacidad de recopilar métricas de código) y desventajas (es necesaria la recompilación de las fuentes). [18] Algunas de sus características incluyen informes históricos, un gran control sobre el proceso de recopilación de cobertura, un conjunto de herramientas de línea de comandos y API para la integración heredada y más.

Clover también permite reducir el tiempo de prueba al ejecutar únicamente las pruebas que cubren el código de la aplicación que se modificó desde la compilación anterior. Esto se denomina optimización de pruebas [19] y puede generar grandes reducciones en la cantidad de tiempo que se pasa esperando que se completen las pruebas automatizadas.

Clover viene con una serie de integraciones desarrolladas tanto por Atlassian (Ant, Maven, Grails, Eclipse, IDEA, Bamboo) como por la comunidad de código abierto (Gradle, Griffon, Jenkins, Hudson, Sonar).

En abril de 2017, Atlassian anunció que ya no lanzaría nuevas versiones de Clover después de la versión 4.1.2, y su código se puso a disposición como software de código abierto alojado en Bitbucket . [20] [21]

Cobertura

Cobertura es una herramienta de código abierto para medir la cobertura de código. Lo hace instrumentando el código de bytes. Fue el predecesor de JaCoCo.

EMMA

EMMA es un conjunto de herramientas de código abierto para medir y generar informes sobre la cobertura del código Java . EMMA se distribuye bajo los términos de la Licencia Pública Común v1.0.

EMMA no se encuentra actualmente en desarrollo activo; la última versión estable se publicó a mediados de 2005. Como reemplazo, se desarrolló JaCoCo. [22] EMMA funciona envolviendo cada línea de código y cada condición con un indicador, que se establece cuando se ejecuta esa línea. [23]

Características

Serenidad

Serenity es una herramienta de código abierto que crea pruebas de aceptación de software más automatizadas en menos tiempo. Mide y genera informes sobre la cobertura del código Java . También genera informes fáciles de entender que describen lo que hace la aplicación y cómo funciona, incluidas las pruebas que se ejecutaron y los requisitos que se cumplieron. Funciona con las herramientas Selenium WebDriver, Appium y BDD.

Se miden las métricas de código más importantes, como la complejidad ciclométrica , la estabilidad, la abstracción y la distancia desde el código principal. Los datos del informe se almacenan en una base de datos de objetos y se ponen a disposición a través de Jenkins/Hudson. La interfaz replica visualmente la interfaz de Eclipse IDE.

Serenity mejora dinámicamente el código de bytes, lo que hace innecesario un paso posterior a la compilación. Se admiten proyectos Ant y Maven. La configuración se realiza en xml. Un ejemplo de Ant sería:

<!-- Propiedades del sistema Serenity. --> <sysproperty key= "included.packages" value= "your.package.name.here" /> <sysproperty key= "included.adapters" value= "cobertura,complejidad,dependencia" /> <!-- Línea de comandos de la JVM de Serenity. --> <jvmarg line= "-javaagent:serenity/serenity.jar" />        

Y un ejemplo de configuración de Maven sería:

<propiedades> <paquetes.incluidos> -Dpaquetes.incluidos=el.nombre.de.su.paquete.aquí </paquetes.incluidos> <adaptadores.incluidos> -Dpaquetes.incluidos=cobertura,complejidad,dependencia </adaptadores.incluidos> </propiedades> <argLine> -javaagent:serenity/serenity.jar  -Xms512m  -Xmx1024m  ${paquetes.incluidos}  ${adaptadores.incluidos} </argLine>

Para obtener un ejemplo completo de una configuración, consulte la wiki de Jenkins en https://wiki.jenkins-ci.org/display/JENKINS/Serenity+Plugin.

Se admiten esclavos de Jenkins, así como proyectos multimódulo de Maven.

Referencias

  1. ^ Misión de JaCoCo
  2. ^ Patroklos Papapetrou (19 de diciembre de 2012). "Comparación de herramientas de cobertura de código (JaCoCo, Cobertura, Emma) en Sonar". Only Software matters (Solo el software importa ) . Consultado el 3 de marzo de 2013 .
  3. ^ "Medición de la cobertura mediante pruebas de integración con Sonar: actualización". Archivado desde el original el 23 de febrero de 2013. Consultado el 1 de marzo de 2013 .
  4. ^ ab "Cobertura de código". Ayuda web de IntelliJ IDEA 12.0 . JetBrains. Archivado desde el original el 26 de abril de 2013. Consultado el 3 de marzo de 2013 .
  5. ^ EclEmma, ​​complemento de cobertura de código de Eclipse
  6. ^ Complemento JaCoCo de Jenkins
  7. ^ "Soporte de NetBeans JaCoCo". Archivado desde el original el 2012-05-31 . Consultado el 2013-02-22 .
  8. ^ Complemento JaCoCo de Gradle
  9. ^ Gulati y Sharma 2017, págs. 99-103, Capítulo §6 Herramientas de integración - Herramientas de compilación - Gradle.
  10. ^ Complemento Maven JaCoCo
  11. ^ Gulati y Sharma 2017, pág. 115, Capítulo §6 Herramientas de integración - Herramientas de compilación - Extensión Maven.
  12. ^ Integración de JaCoCo en Visual Studio Team Services
  13. ^ Integración de JaCoCo en TeamCity
  14. ^ La herramienta STAMP DSpot utiliza Jacoco como selector de pruebas (considerado como una aptitud) para seleccionar pruebas que aumentan la cobertura y tienen una ruta de ejecución única
  15. ^ OpenClover - Acerca de nosotros
  16. ^ Testwell CTC++ admite todos los niveles de cobertura
  17. ^ Testwell CTC++ admite todos los compiladores
  18. ^ "¿Por qué Clover utiliza instrumentación de código fuente?"
  19. ^ Optimización de pruebas
  20. ^ "Atlassian Clover ahora es de código abierto". atlassian.com . 11 de abril de 2017.
  21. ^ "atlassian/clover". bitbucket.org .
  22. ^ Archivos de cobertura de código EMMA en SourceForge.net
  23. ^ Experto en Spring MVC y Web Flow; por Seth Ladd, Darren Davison, Steven Devijver, Colin Yates, pág. 289

Citas

Enlaces externos