Lección de cubierta de código: rama, declaración, decisión, FSM

Tabla de contenidos

¿Cuál es la portada del Código?

Una cobertura de código es una medida que describe hasta qué punto se ha probado el código fuente del programa. Es un tipo de prueba de caja blanca que detecta áreas de programa que no realizan un conjunto de casos de prueba. También crea varios casos de prueba para aumentar la cobertura y determinar la medición cuantitativa de la cobertura del código.

En la mayoría de los casos, el sistema de cobertura de códigos recopila información sobre el programa actual. Esto también se combina con la información del código fuente para generar un informe bajo la cubierta del código del conjunto de pruebas.

En este tutorial, aprenderá:

¿Por qué utilizar Code Cover?

A continuación, se incluyen algunas razones clave para utilizar la cobertura de código:

  • Te ayuda a medir la efectividad de la implementación de las pruebas.
  • Proporciona medición cuantitativa.
  • Define hasta qué punto se ha probado el código fuente.

Métodos de cobertura de código

Los siguientes son los principales métodos de cobertura de código

  • Cubierta de declaración
  • Cobertura de decisiones
  • Cubierta de rama
  • Cubiertas de palanca
  • Cobertura FSM

Cubierta de declaración es una técnica de prueba de caja blanca en la que todas las declaraciones ejecutables en el código fuente se ejecutan al menos una vez. Se utiliza para calcular el número de declaraciones en el código fuente completo. El propósito principal de la cobertura de declaraciones es rastrear todas las rutas, líneas y declaraciones posibles en el código fuente.

La cobertura de la declaración se utiliza para derivar un caso basado en la estructura del código que se está probando.

I Prueba de caja blanca, el probador se centra en cómo funciona el software. Es decir, el probador se centrará en el funcionamiento interno del código fuente en gráficos de flujo controlados o diagramas de flujo.

Generalmente en cualquier software, si nos fijamos en el código fuente, habrá una amplia gama de elementos como operadores, funciones, doblado, manejadores excepcionales, etc. Según la entrada en el programa, es posible que no se ejecuten algunas sentencias de código. El propósito de la cubierta de la Declaración es cubrir todas las rutas, líneas y declaraciones posibles en el código.

Entendemos esto con un ejemplo, cómo calcular la cobertura del estado de cuenta.

Caso para calcular la cobertura del estado de cuenta para el código fuente dado. Estamos tomando dos casos diferentes aquí para verificar el porcentaje de cobertura del estado de cuenta para cada caso.

Código fuente:

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 

Caso 1:

Si A = 3, B = 9

Las declaraciones marcadas según la historia son las declaraciones marcadas en amarillo.

Número de declaraciones ejecutadas = 5, Número total de declaraciones = 7

Cobertura de la declaración: 5/7 = 71%

De manera similar veremos el caso 2,

Caso 2:

Si A = -3, B = -9

Las declaraciones marcadas según la historia son las declaraciones marcadas en amarillo.

Número de sentencias de ejecución = 6

Número total de declaraciones = 7

Cobertura de la declaración: 6/7 = 85%

Pero en general, si ve, todas las declaraciones están cubiertas por 2Dakota del Norte casos tomados en cuenta. Entonces podemos concluir que la cobertura general de declaraciones es del 100%.

¿Qué cubre la cubierta de declaración?

  1. Declaraciones no utilizadas
  2. Código muerto
  3. Ramas no utilizadas
  4. Declaraciones faltantes

Cobertura de decisiones Es una técnica de prueba de caja blanca que informa resultados verdaderos o falsos de cada expresión booleana del código fuente. El propósito de la prueba de cobertura de decisiones es cubrir y validar todo el código fuente accesible comprobando y asegurando que cada rama de cada punto de decisión potencial se ejecute al menos una vez.

En esta portada, las expresiones a veces son complicadas. Por tanto, es muy difícil conseguir una cobertura del 100%. Es por eso que existen muchos métodos diferentes para informar esta métrica. Todos estos métodos se centran en cubrir las combinaciones más importantes. Es muy similar a la cobertura de decisiones, pero ofrece una mayor sensibilidad al control de flujo.

Ejemplo de cobertura de decisiones

Considere el siguiente código:

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

Caso 1:

El valor de 2 es

Se ejecutará el código resaltado en amarillo. Este es el resultado «No» de la decisión si se marca (a> 5).

Cobertura de decisiones = 50%

Caso 2:

El valor es 6

Se ejecutará el código resaltado en amarillo. Este es el resultado «Sí» de la decisión si se marca (a> 5).

Cobertura de decisiones = 50%

Caso de prueba Valor A. Producción Cobertura de decisiones
1 2 2 50%
2 6 18 50%

Cubierta de rama es un método de prueba de caja blanca en el que se prueban todos los resultados de un módulo de código (declaración o bucle). El propósito de la cobertura de sucursales es garantizar que todas las condiciones de decisión de cada sucursal se ejecuten al menos una vez. Ayuda a medir fracciones de partes independientes de código e identificar secciones que no tienen ramas.

Por ejemplo, si los resultados son binarios, debe probar los resultados de Verdadero y Falso.

Fórmula para calcular la cobertura de sucursales:

Ejemplo de cubierta de rama

Para conocer la cobertura de sucursales, consideremos el mismo ejemplo que usamos anteriormente.

Considere el siguiente código

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

Branch Cover también considerará una rama incondicional

Caso de prueba Valor A. Producción Cobertura de decisiones Cubierta de rama
1 2 2 50% 33%
2 6 18 50% 67%

Beneficios de la cobertura de sucursales:

Las pruebas de cobertura de sucursales tienen las siguientes ventajas:

  • Te permite validar todas las ramas en el código.
  • Ayuda a garantizar que ninguna rama dé lugar a anomalías en el funcionamiento del programa.
  • El método de cobertura de sucursales elimina los problemas que ocurren debido a las pruebas de cobertura de declaraciones.
  • Le permite encontrar aquellas áreas que no han sido probadas por otros métodos de prueba.
  • Le permite obtener una medición cuantitativa de la cobertura del código.
  • La cobertura de la rama ignora las ramas dentro de las expresiones booleanas

Cobertura condicional o cobertura de expresión es un método de prueba utilizado para probar y evaluar las variables o sub-expresiones en la declaración condicional. El propósito de la cobertura de condiciones es verificar los resultados individuales para cada condición lógica. La cobertura de condiciones proporciona una mayor sensibilidad al flujo de control que la cobertura de decisiones. En esta portada, solo se consideran expresiones con óperas lógicas.

Por ejemplo, si una expresión tiene operaciones booleanas como AND, OR, XOR, lo que indica todas las posibilidades.

La cobertura de afecciones no garantiza la cobertura total de las decisiones.

Fórmula de cobertura de citas:

Ejemplo:

Para la expresión anterior, tenemos 4 combinaciones posibles

Considere la siguiente entrada

X = 3

Y = 4

(X

CIERTO

La cobertura de la condición es ¼ = 25%

A = 3

B = 4

(a> b)

FALSO

Cubierta de máquina de estado terminada

La cobertura limitada de máquinas de estado es sin duda el tipo más complejo de cobertura de código. Esto se debe a que actúa sobre el comportamiento del diseño. En este modo de cobertura, debe observar cuántos estados específicos de tiempo se visitan y cuáles se transfieren. También comprueba cuántas secuencias se incluyen en una máquina de estado limitada.

Qué tipo de código de cobertura elegir

Sin duda, esta es la respuesta más difícil de dar. Para seleccionar un método de recubrimiento, el probador debe verificar que el

  • hay fallas únicas o múltiples que no se encuentran en el código bajo prueba
  • el costo de la posible penalización
  • costo de la reputación perdida
  • costo de ventas perdidas, etc.

Cuanto mayor sea la probabilidad de que costosas fallas de producción resulten en defectos, más estricto será el nivel de cobertura que debe elegir.

Cobertura de código frente a cobertura funcional

Cobertura de código Cobertura funcional
La cubierta del código le dice qué tan bien su banco de pruebas realizó el código fuente. La cobertura funcional mide qué tan bien su banco de pruebas ha cubierto la funcionalidad del diseño.
Nunca use una especificación de diseño Utilice la especificación de diseño
Hecho por desarrolladores Hecho por probadores

Herramientas de cubierta de código

Aquí hay una lista de herramientas importantes para la cobertura del código:

Nombre de la herramienta Suelte
Cobertura Es una herramienta de cobertura de código fuente abierto. Mide la cobertura de la prueba ingresando un código y analizando las líneas de código que están en funcionamiento y no se ejecutan cuando se ejecuta la suite de pruebas.
Trébol Clover reduce el tiempo de prueba simplemente ejecutando las pruebas que cubren el código de la aplicación modificado con respecto a la compilación anterior.
DevPartner DevPartner permite a los desarrolladores analizar el código Java para determinar la calidad y complejidad del código.
Emma EMMA admite la cobertura de clase, método, línea y bloque base, archivo fuente agregado, niveles de clase y método.
Kalistick Kalistick es una aplicación de terceros que analiza los códigos con diferentes perspectivas.
CoView y CoAnt El software de codificación es una herramienta de codificación de código para métricas, pseudo-creación de objetos, competencia de código, cobertura de ruta y rama, etc.
Bullseye hacer C ++ BulseyeCoverage es una herramienta de cobertura de código para C ++ y C.
Sonar Sonar es una herramienta de codificación de código abierto que le ayuda a gestionar la calidad del código.

Beneficios de usar la cobertura de código

  • Medición cuantitativa útil de la cobertura del código
  • Le permite crear casos de prueba adicionales para aumentar la cobertura
  • Le permite encontrar áreas de programa que no realizan un conjunto de casos de prueba.

Las desventajas de usar la cobertura de código

  • Incluso cuando no se implementa ninguna característica específica en el diseño, la cobertura del código sigue reportando una cobertura del 100%.
  • No es posible determinar si hemos probado todos los valores posibles de una característica con la ayuda de una cubierta de código.
  • La cobertura del código tampoco le dice cuánto y qué tan bien cubrió su lógica
  • Cuando la función especificada no se ha implementado o no está incluida en la especificación, las técnicas basadas en estructura no pueden detectar ese problema.

Resumen

  • Una cobertura de código es una medida que describe hasta qué punto se ha probado el código fuente del programa.
  • Te ayuda a medir la efectividad de las pruebas.
  • Los cinco modos de Cobertura de código son 1.) Cubierta de declaración 2.) Cubierta de cita 3) Cubierta de sucursal 4) Cubierta de palanca 5) Cubierta de FSM
  • La cobertura de declaraciones implica ejecutar todas las declaraciones ejecutables en el código fuente al menos una vez
  • La cobertura de decisiones informa resultados verdaderos o falsos de cada expresión booleana
  • En la cubierta de la sucursal, se prueban todos los resultados de un módulo de código
  • Condicional revelará cómo se evalúan las variables o subexpresiones en el enunciado condicional
  • La cobertura limitada de máquinas de estado es sin duda el tipo más complejo de cobertura de código.
  • Para seleccionar un método de cobertura, el evaluador debe tener en cuenta el costo de la posible penalización, pérdida de reputación, pérdida de ventas, etc. Verificar.
  • La cubierta del código le dice qué tan bien su banco de pruebas realizó el código fuente y una cubierta funcional mide qué tan bien se cubrió la funcionalidad del diseño.
  • Cobertura, JTest, Clover, Emma, ​​Kalistick son algunas herramientas importantes de envoltura de código
  • La cobertura de código le permite crear casos de prueba adicionales para aumentar la cobertura
  • La cobertura de código no le ayuda a determinar si hemos probado todos los valores potenciales asociados con una función.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Salir de la versión móvil