La cobertura de código es una medida de cuántas líneas / bloques / arcos de su código se ejecutan mientras se ejecutan las pruebas automatizadas.
La cobertura de código se recopila mediante el uso de una herramienta especializada para instrumentar los binarios para agregar llamadas de rastreo y ejecutar un conjunto completo de pruebas automatizadas contra el producto instrumentado. Una buena herramienta le dará no solo el porcentaje del código que se ejecuta, sino que también le permitirá profundizar en los datos y ver exactamente qué líneas de código se ejecutaron durante una prueba en particular.
Nuestro equipo utiliza Magellan , un conjunto interno de herramientas de cobertura de código. Si usted es una tienda .NET, Visual Studio tiene herramientas integradas para recopilar la cobertura del código. También puede rodar algunas herramientas personalizadas, como se describe en este artículo .
Si usted es una tienda de C ++, Intel tiene algunas herramientas que se ejecutan para Windows y Linux, aunque no las he usado. También he oído que existe la herramienta gcov para GCC, pero no sé nada al respecto y no puedo darle un enlace.
En cuanto a cómo lo usamos, la cobertura del código es uno de nuestros criterios de salida para cada hito. En realidad, tenemos tres métricas de cobertura de código: cobertura de pruebas unitarias (del equipo de desarrollo), pruebas de escenario (del equipo de prueba) y cobertura combinada.
Por cierto, aunque la cobertura del código es una buena métrica de la cantidad de pruebas que está haciendo, no es necesariamente una buena métrica de qué tan bien está probando su producto. Hay otras métricas que debe usar junto con la cobertura del código para garantizar la calidad.
La cobertura del código básicamente prueba que cuánto de su código está cubierto bajo las pruebas. Por lo tanto, si tiene una cobertura de código del 90%, significa que hay un 10% de código que no está cubierto por las pruebas. Sé que podría estar pensando que el 90% del código está cubierto, pero debe mirar desde un ángulo diferente. ¿Qué te detiene para obtener una cobertura del 100% del código?
Un buen ejemplo será este:
Ahora, en el código anterior hay dos caminos / ramas. Si siempre está presionando la rama "SÍ", entonces no está cubriendo la otra parte y se mostrará en los resultados de la Cobertura del Código. Esto es bueno porque ahora sabes lo que no está cubierto y puedes escribir una prueba para cubrir la parte más. Si no hubo cobertura de código, entonces estás sentado en una bomba de tiempo para explotar.
NCover es una buena herramienta para medir la cobertura del código.
fuente
Solo recuerde, tener una "cobertura de código del 100%" no significa que todo se pruebe por completo, aunque significa que se prueba cada línea de código, no significa que se prueben en todas las situaciones (comunes).
Usaría la cobertura de código para resaltar bits de código para los que probablemente debería escribir pruebas. Por ejemplo, si la herramienta de cobertura de código que muestra myImportantFunction () no se ejecuta mientras se ejecutan mis pruebas unitarias actuales, probablemente deberían mejorarse.
Básicamente, el 100% de cobertura de código no significa que su código sea perfecto. Úselo como guía para escribir pruebas más completas (unitarias).
fuente
x
y regresóx/x
y ejecutó la prueba usando my_func (2), tendría una cobertura del 100% (ya que se habrá ejecutado el código de la función) pero se ha perdido un gran problema cuando 0 es el parámetro. Es decir, no ha probado todos los escenarios necesarios incluso con una cobertura del 100%.Complementando algunos puntos a muchas de las respuestas anteriores:
La cobertura del código significa qué tan bien su conjunto de prueba está cubriendo su código fuente. es decir, en qué medida el código fuente está cubierto por el conjunto de casos de prueba.
Como se mencionó en las respuestas anteriores, hay varios criterios de cobertura, como rutas, condiciones, funciones, declaraciones, etc. Sin embargo, los criterios adicionales que se deben cubrir son
Nota: El análisis de código estático encontrará si hay algún código inalcanzable o código colgado, es decir, código no cubierto por ninguna otra llamada de función. Y también otra cobertura estática. Incluso si el análisis de código estático informa que el 100% del código está cubierto, no proporciona informes sobre su conjunto de prueba si se prueba toda la cobertura de código posible.
fuente
La cobertura del código se ha explicado bien en las respuestas anteriores. Entonces esta es más una respuesta a la segunda parte de la pregunta.
Hemos utilizado tres herramientas para determinar la cobertura del código.
Utilizamos estas herramientas para
fuente
La cobertura del código es simplemente una medida del código que se prueba. Hay una variedad de criterios de cobertura que se pueden medir, pero generalmente son las diversas rutas, condiciones, funciones y declaraciones dentro de un programa las que componen la cobertura total. La métrica de cobertura del código es solo un porcentaje de las pruebas que ejecutan cada uno de estos criterios de cobertura.
En cuanto a cómo hago para realizar un seguimiento de la cobertura de la prueba de unidad en mis proyectos, utilizo herramientas de análisis de código estático para realizar un seguimiento.
fuente
Para Perl está el excelente módulo Devel :: Cover que uso regularmente en mis módulos.
Si la compilación y la instalación son administradas por Module :: Build, simplemente puede ejecutar
./Build testcover
para obtener un buen sitio HTML que le indica la cobertura por sub, línea y condición, con bonitos colores que facilitan ver qué ruta de código no se ha cubierto.fuente
En las respuestas anteriores, la cobertura del código se ha explicado bien. Solo estoy agregando algunos conocimientos relacionados con las herramientas si está trabajando en plataformas
iOS
yOSX
, Xcode proporciona la posibilidad de probar y monitorear la cobertura del código.Enlaces de referencia:
https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/07-code_coverage.html
https://medium.com/zendesk-engineering/code-coverage-and-xcode-6b2fb8756a51
Ambos son enlaces útiles para aprender y explorar la cobertura de código con Xcode.
fuente
Para PHP deberías echar un vistazo al Github de Sebastian Bergmann
https://github.com/sebastianbergmann/php-code-coverage
fuente