Code Herramienta de cobertura: Pruebas de sentencias, bifurcaciones y decisiones

โšก Resumen inteligente

Code La cobertura es una medida de caja blanca que informa el grado en que el cรณdigo fuente ha sido ejercitado por un conjunto de pruebas,ping Los equipos localizan sentencias, ramificaciones, condiciones y rutas no probadas que pueden contener defectos ocultos.

  • ๐ŸŽฏ Definiciรณn: Code La cobertura cuantifica quรฉ porcentaje del cรณdigo fuente ejecutan realmente tus pruebas.
  • ๐Ÿ“Š Mรฉtodos: Existen cinco mรฉtodos: cobertura de sentencias, de decisiones, de bifurcaciones, de condiciones y de mรกquinas de estados finitos.
  • ๐Ÿงฉ Declaraciรณn vs. Sucursal: La cobertura de estados de cuenta verifica las lรญneas, mientras que la cobertura de sucursales verifica el resultado de cada decisiรณn.
  • ๐Ÿ‡ง๐Ÿ‡ท Code vs Funcional: Code Medidas de cobertura ejercitadas sobre el cรณdigo; medidas de cobertura funcional cubiertas sobre los requisitos.
  • ๐Ÿ› ๏ธ Herramientas: Cobertura, OpenCloverEMMA y Sonar automatizan la mediciรณn de la cobertura.
  • ๐Ÿค– Asistencia de IA: Las herramientas de IA generan pruebas y detectan automรกticamente las brechas de cobertura no probadas y de alto riesgo.

Code Tutorial de cobertura

ยฟQuรฉ es Code ยฟCobertura?

Code cobertura es una medida que describe el grado en que se ha probado el cรณdigo fuente de un programa. Es una forma de pruebas de caja blanca Este mรฉtodo identifica las รกreas de un programa que no han sido probadas por un conjunto de casos de prueba. Ademรกs, ayuda a crear casos de prueba adicionales para aumentar la cobertura y determinar una medida cuantitativa de la cobertura del cรณdigo.

En la mayorรญa de los casos, un sistema de cobertura de cรณdigo recopila informaciรณn sobre el programa en ejecuciรณn. Luego, combina esa informaciรณn con la del cรณdigo fuente para generar un informe sobre la cobertura de cรณdigo del conjunto de pruebas.

Por quรฉ usar Code ยฟPruebas de cobertura?

Estas son algunas de las razones principales para utilizar la cobertura de cรณdigo:

  • Ayuda a medir la eficiencia de la implementaciรณn de las pruebas.
  • Ofrece una mediciรณn cuantitativa de las pruebas.
  • Define el grado en que se ha probado el cรณdigo fuente.

Code Mรฉtodos de cobertura

Los siguientes son los principales mรฉtodos de cobertura de cรณdigo:

  • Cobertura de estados de cuenta
  • Cobertura de decisiones
  • Cobertura de sucursales
  • TogglCobertura
  • Cobertura MEV

Cobertura de estados de cuenta

Cobertura de estados de cuenta Es una tรฉcnica de prueba de caja blanca en la que todas las instrucciones ejecutables del cรณdigo fuente se ejecutan al menos una vez. Se utiliza para calcular el nรบmero de instrucciones ejecutadas en el cรณdigo fuente. El objetivo principal de la cobertura de instrucciones es abarcar todas las rutas, lรญneas e instrucciones posibles del cรณdigo fuente.

La cobertura de sentencias se utiliza para derivar escenarios basados โ€‹โ€‹en la estructura del cรณdigo que se estรก probando.

Cobertura de estados de cuenta

En las pruebas de caja blanca, el evaluador se concentra en cรณmo funciona el software. En otras palabras, se centra en el funcionamiento interno del cรณdigo fuente, especรญficamente en los diagramas de flujo o grรกficos de control.

Generalmente en cualquier software, si miras el cรณdigo fuente, habrรก una amplia variedad de elementos como operadores, funciones, bucles, etc.ping, manejadores de excepciones, etc. Segรบn la entrada del programa, algunas instrucciones de cรณdigo podrรญan no ejecutarse. El objetivo de la cobertura de instrucciones es cubrir todas las rutas, lรญneas e instrucciones posibles en el cรณdigo.

Entendamos esto con un ejemplo de cรณmo calcular la cobertura de sentencias. Aquรญ tomaremos dos escenarios diferentes para verificar el porcentaje de cobertura de sentencias para cada uno.

Fuente Code:

Prints (int a, int b) {                       ------------  Printsum is a function
    int result = a + b;
    If (result > 0)
        Print ("Positive", result)
    Else
        Print ("Negative", result)
    }                                        -----------   End of the source code

Escenario 1: Si A = 3, B = 9

Escenario de cobertura de la declaraciรณn 1

Las instrucciones marcadas en amarillo son las que se ejecutan segรบn el escenario. Nรบmero de instrucciones ejecutadas = 5, Nรบmero total de instrucciones = 7, por lo que la cobertura de instrucciones = 5/7 = 71%.

Escenario 2: Si A = -3, B = -9

Escenario de cobertura de la declaraciรณn 2

Las instrucciones marcadas en amarillo son las que se ejecutan segรบn el escenario. Nรบmero de instrucciones ejecutadas = 6, Nรบmero total de instrucciones = 7, por lo que la cobertura de instrucciones = 6/7 = 85%.

En general, como se puede observar, todas las afirmaciones estรกn cubiertas por ambos escenarios. Por lo tanto, podemos concluir que la cobertura global de las afirmaciones es del 100 %.

ยฟQuรฉ cubre la Cobertura del Estado de Cuenta?

  1. Declaraciones no utilizadas
  2. Muertos Code
  3. Ramas no utilizadas
  4. Declaraciones faltantes

Pruebas de cobertura de decisiones

Cobertura de decisiones Es una tรฉcnica de prueba de caja blanca que informa los resultados verdaderos o falsos de cada expresiรณn booleana en el cรณdigo fuente. El objetivo de las pruebas de cobertura de decisiones es cubrir y validar todo el cรณdigo fuente accesible, verificando que cada rama de cada posible punto de decisiรณn se ejecute al menos una vez.

En este tipo de cobertura, las expresiones pueden volverse complejas, lo que dificulta alcanzar una cobertura del 100 %. Por ello, se utilizan diversos mรฉtodos para informar sobre esta mรฉtrica. Estos mรฉtodos priorizan las combinaciones mรกs crรญticas. Si bien es similar a la cobertura de ramas, ofrece mayor sensibilidad al flujo de control.

Pruebas de cobertura de decisiones

Ejemplo de cobertura de decisiones

Considere el siguiente cรณdigo:

Demo(int a) {
    If (a > 5)
        a = a * 3
    Print (a)
    }

Escenario 1: El valor de a es 2. El resultado โ€œNoโ€ de la decisiรณn Si (a>5) estรก marcado, entonces la Cobertura de Decisiรณn = 50%.

Escenario 2: El valor de a es 6. El resultado โ€œSรญโ€ de la decisiรณn Si (a>5) estรก marcado, por lo que la Cobertura de la Decisiรณn = 50%.

Caso de prueba Valor de A Resultado Cobertura de decisiones
1 2 2 50%
2 6 18 50%

Pruebas de cobertura de sucursales

Cobertura de sucursales Es un mรฉtodo de prueba de caja blanca en el que se prueba cada resultado de un mรณdulo de cรณdigo (sentencia o bucle). El objetivo de la cobertura de ramas es asegurar que cada condiciรณn de decisiรณn de cada rama se ejecute al menos una vez. Ayuda a medir fracciones de segmentos de cรณdigo independientes y a encontrar secciones que no tienen ramas.

Por ejemplo, si los resultados son binarios, es necesario probar los resultados Verdaderos y Falso.

La fรณrmula para calcular la cobertura de sucursales:

Fรณrmula de cobertura de sucursales

Ejemplo de cobertura de sucursales

Para aprender sobre la cobertura de ramas, considere el mismo ejemplo utilizado anteriormente. La cobertura de ramas tambiรฉn considerarรก la rama incondicional.

Caso de prueba Valor de A Resultado Cobertura de decisiones Cobertura de sucursales
1 2 2 50% 33%
2 6 18 50% 67%

Ventajas de la cobertura de Sucursales:

  • Permite validar todas las ramas del cรณdigo.
  • Ayuda a garantizar que ninguna bifurcaciรณn provoque ninguna anomalรญa en el funcionamiento del programa.
  • Elimina los problemas que surgen debido a las pruebas de cobertura de sentencias.
  • Permite encontrar รกreas que no han sido analizadas mediante otros mรฉtodos de prueba.
  • Permite obtener una medida cuantitativa de la cobertura del cรณdigo.
  • La cobertura de ramas ignora las ramas dentro de las expresiones booleanas.

Prueba de cobertura de condiciรณn

Cobertura de condiciรณnLa cobertura de expresiones es un mรฉtodo de prueba que se utiliza para evaluar las variables o subexpresiones en una instrucciรณn condicional. Su objetivo es verificar los resultados individuales de cada condiciรณn lรณgica. La cobertura de condiciones ofrece mayor sensibilidad al flujo de control que la cobertura de decisiones. En este mรฉtodo, solo se consideran expresiones con operandos lรณgicos.

Por ejemplo, si una expresiรณn incluye operaciones booleanas como AND, OR o XOR, esto indica el total de posibilidades. La cobertura de condiciones no garantiza una cobertura completa de decisiones.

La fรณrmula para calcular la Cobertura de Condiciรณn:

Fรณrmula de cobertura de la condiciรณn

Para una expresiรณn con dos operandos, hay cuatro combinaciones posibles: TT, FF, TF y FT. Considere la entrada X=3, Y=4 (x b) FALSO, lo que da una cobertura de condiciรณn de 1/4 = 25%.

Cobertura de mรกquina de estados finitos

La cobertura mediante mรกquinas de estados finitos es, sin duda, el mรฉtodo de cobertura de cรณdigo mรกs complejo. Esto se debe a que se basa en el comportamiento del diseรฑo. En este mรฉtodo, es necesario observar cuรกntas veces se visitan o transitan estados especรญficos. Tambiรฉn se verifica cuรกntas secuencias se incluyen en una mรกquina de estados finitos.

ยฟQuรฉ tipo de Code Cobertura para elegir

Esta es sin duda la respuesta mรกs difรญcil de dar. Para seleccionar un mรฉtodo de cobertura, el evaluador debe comprobar si:

  • El cรณdigo que se estรก probando tiene uno o varios defectos no detectados,
  • costo de la posible sanciรณn,
  • costo de la reputaciรณn perdida,
  • costo de las ventas perdidas, y asรญ sucesivamente.

Cuanto mayor sea la probabilidad de que los defectos causen costosas fallas de producciรณn, mรกs severo serรก el nivel de cobertura que deberรก elegir.

Code Cobertura vs. Cobertura funcional

Code Global Cobertura funcional
Indica quรฉ tan bien se ha probado el cรณdigo fuente en su banco de pruebas. Mide quรฉ tan bien se ha cubierto la funcionalidad del diseรฑo en su banco de pruebas.
Nunca utiliza una especificaciรณn de diseรฑo. Utiliza una especificaciรณn de diseรฑo.
Realizado por desarrolladores. Realizado por los evaluadores.

Code Herramientas de cobertura

Aquรญ tienes una lista de herramientas importantes para la cobertura de cรณdigo:

Nombre de la herramienta Mareas Ideales para Lecciones
Cobertura Una herramienta de cรณdigo abierto para medir la cobertura de cรณdigo. Mide la cobertura de las pruebas instrumentando una base de cรณdigo y analizando quรฉ lรญneas de cรณdigo se ejecutan y cuรกles no cuando se ejecuta el conjunto de pruebas.
Trรฉbol Trรฉbol (OpenClover) tambiรฉn reduce el tiempo de prueba al ejecutar รบnicamente las pruebas que cubren el cรณdigo de la aplicaciรณn modificado desde la compilaciรณn anterior.
DevPartner DevPartner permite a los desarrolladores analizar Java cรณdigo para la calidad y complejidad del cรณdigo.
Emma EMMA admite la cobertura de clases, mรฉtodos, lรญneas y bloques bรกsicos, agregada a nivel de archivo fuente, clase y mรฉtodo.
Kalistick Kalistick es una aplicaciรณn de terceros que analiza el cรณdigo desde diferentes perspectivas.
CoView y CoAnt Una herramienta de cobertura de cรณdigo para mรฉtricas, creaciรณn de objetos simulados, comprobaciรณn del cรณdigo, cobertura de rutas y ramas, y mucho mรกs.
Diana para C++ BullseyeCoverage es una herramienta de cobertura de cรณdigo para C++ y C.
Sonar Sonar es una herramienta de cobertura de cรณdigo abierta que te ayuda a gestionar la calidad del cรณdigo.

Ventajas y desventajas de usar Code Global

Ventajas Desventajas
Resulta รบtil para evaluar una medida cuantitativa de la cobertura del cรณdigo. Incluso cuando una caracterรญstica especรญfica no estรก implementada en el diseรฑo, la cobertura de cรณdigo sigue mostrando una cobertura del 100%.
Permite crear casos de prueba adicionales para aumentar la cobertura. No es posible determinar si se probaron todos los valores posibles de una caracterรญstica utilizando la cobertura de cรณdigo.
Permite encontrar las รกreas de un programa que no han sido probadas por un conjunto de casos de prueba. Code La cobertura no indica cuรกnto ni con quรฉ eficacia has cubierto tu lรณgica.

Preguntas Frecuentes

Muchos equipos se fijan como objetivo prรกctico un 70-80%. Alcanzar el 100% rara vez resulta rentable. Es mejor centrarse en la lรณgica crรญtica y de alto riesgo que en perseguir un รบnico porcentaje en todo el cรณdigo.

No. La cobertura total demuestra que se ejecutรณ cada lรญnea, no que se validaron todas las entradas, valores o requisitos. Los errores lรณgicos y las funcionalidades faltantes pueden pasar desapercibidos, por lo que la cobertura complementa, en lugar de reemplazar, un buen diseรฑo de pruebas.

Code La cobertura mide cuรกnto cรณdigo fuente se ejecuta durante las pruebas. La cobertura de pruebas es mรกs amplia, tracevaluar quรฉ tan bien las pruebas abordan los requisitos, las caracterรญsticas y los riesgos. Code La cobertura es uno de los factores que influyen en la cobertura general de las pruebas.

No. Se puede alcanzar una cobertura de sentencias del 100% dejando ramas sin probar, como por ejemplo una ruta else faltante. La cobertura de ramas (decisiones) es mรกs sรณlida porque engloba la cobertura de sentencias y prueba todos los resultados posibles.

La IA analiza el cรณdigo fuente y las pruebas existentes para identificar rutas no probadas y de alto riesgo, y luego sugiere o genera nuevos casos. El aprendizaje automรกtico tambiรฉn prioriza quรฉ pruebas ejecutar, acortando la retroalimentaciรณn mientras mantieneping alta cobertura.

Sรญ. Herramientas de IA como Diffblue Cover analizan el cรณdigo y escriben de forma autรณnoma pruebas unitarias para la lรณgica no cubierta. Se centran en ramas y condiciones de riesgo, lo que aumenta la cobertura con mucho menos esfuerzo manual.

OpenClover Mide la cobertura de sentencias, ramas y mรฉtodos, y recopila mรกs de 20 mรฉtricas. Cobertura, EMMA y JaCoCo son otras opciones gratuitas ampliamente utilizadas para Java de proyectos.

La cobertura de condiciones/decisiones modificada exige que cada condiciรณn en una decisiรณn afecte de forma independiente al resultado. Es mรกs estricta que la cobertura de ramas y es obligatoria para el software crรญtico para la seguridad, como la aviรณnica, segรบn la norma DO-178C.

Resumir este post con: