No mencionas tu herramienta de prueba. Muchos tienen funciones de "combinación" que le permiten agregar los resultados de múltiples ejecuciones o suites. Si desea una métrica de cobertura agregada, explore la función de combinación en su herramienta de cobertura.
Ahora, ¿podemos hablar sobre el elefante en la habitación?
No hay cuchara. Y no hay un "porcentaje de cobertura total". Al menos, no es simple.
El porcentaje de cobertura es una métrica fácilmente comprendida presentada para ayudar a comprender el alcance, la profundidad y el rango de los conjuntos de pruebas. Pero como cualquier punto de referencia simple, es muy fácil convertirse en objetivo fijo en este valor como una especie de talismán mágico de "prueba completa".
Digamos que ha alcanzado la gloria de "100% de cobertura de prueba". ¡Hurra! Pero ¿qué significa eso? El 100% de las líneas de código se prueban, ¿verdad? Entonces, ¿qué pasa con esta línea?
launch_missile = launch_authorized and launch_cmd_given else previous_launch_status
"Cubrir" esa línea significa algo, pero no mucho, porque hay una variedad de condiciones que son True
o False
con cierta probabilidad, pero es poco probable que haya probado todas las combinaciones de esas condiciones. Incluso si esa línea está cubierta una docena de veces, si una de las condiciones es relativamente poco común, no ha estado a punto de probar todos los resultados reales que podrían ocurrir en la práctica. Para aclarar eso, un ejemplo más sintético:
engage_laser = (laser_armed and safety_disengaged) or random.random() < 0.0000003
¿Cuántas veces tendrías que cubrir esa línea para probarla exhaustivamente? ¿Cuántas veces tendrías que cubrirlo para probarlo en combinación con todas las demás variables del programa (con sus propias probabilidades, posiblemente igualmente raras)?
No estoy diciendo que las métricas de cobertura sean inútiles. En realidad son geniales . Se centran en una de las cuestiones clave: ¿con qué frecuencia se prueba mi sistema de software? Ayudan a pasar de "tenemos algunas pruebas" a "hemos probado exhaustivamente".
Pero mientras trabaja en "puntajes combinados", la realidad es que su puntaje será típicamente para "cobertura de declaración" en lugar de "cobertura de condición", "predicado" o "ruta" . Por lo tanto, sea cual sea el número que le den sus puntajes agregados, es poco probable que le brinde una imagen real de la cantidad de estados potenciales de su programa y las combinaciones de estados que se están probando. Mientras trabaja para aumentar su porcentaje de cobertura, considere también medir su cobertura predicada. Le dará una visión más realista, y casi invariablemente, más aleccionadora, de la amplitud de la prueba.