Saltar al contenido

Cobertura de decisión: definición, ejemplo y equivalente en inglés

La cobertura de decisión se alcanza cuando cada decisión del código, cada expresión booleana que dirige el control, se ha evaluado a TRUE y a FALSE durante las pruebas. También se llama cobertura de ramas.

Una decisión es la condición entera de un if, un while o una guarda, contenga las subcondiciones que contenga. La cobertura de decisión pregunta solo por el conjunto: dos casos de prueba, uno que haga verdadera la decisión y otro que la haga falsa, la cubren por completo, aunque alguna de sus condiciones nunca cambie de valor. Es más fuerte que la cobertura de sentencias, que puede cumplirse sin tomar nunca la rama falsa, y más débil que la cobertura de condición y MC/DC, que miran dentro de la expresión. Los estándares de pruebas ordenan los criterios en esa secuencia.

El artefacto es la regla de alarma armed AND (door OR window), verdadera en las filas 5, 6 y 7. La cobertura de decisión necesita una fila verdadera y una falsa; las aportan el testigo de satisfacible armed = TRUE, door = FALSE, window = TRUE y el contraejemplo de tautología armed = FALSE, door = FALSE, window = FALSE. Los pares de independencia del motor van más lejos: el par de armed mantiene door = FALSE, window = TRUE y cambia solo armed, con la alarma pasando de FALSE a TRUE; hay pares similares para door y window.

La cobertura de decisión es el umbral habitual en los objetivos de cobertura de la industria y el primer criterio que informa una herramienta de cobertura. Su punto ciego es el interior de una condición compuesta: los dos casos de arriba dejan door en FALSE todo el tiempo, así que un error en cómo se combina door no se vería. Por eso los estándares de seguridad para software crítico exigen MC/DC. El término se confunde con la cobertura de condición y con la cobertura de caminos, que cuenta combinaciones de decisiones a lo largo de una ejecución.

Ejemplo

alarm := armed AND (door OR window) · salida

Comprobaciones exactas

¿Siempre verdadera (tautología)? No Contraejemplo: armed = F, door = F, window = F · Exhaustively checked and solver cross-checked · 1 filas
¿Siempre falsa (contradicción)? No Contraejemplo: armed = V, door = F, window = V · Exhaustively checked and solver cross-checked · 6 filas
¿Puede ser verdadera? Sí Asignación de ejemplo: armed = V, door = F, window = V · Exhaustively checked and solver cross-checked · 6 filas

Tabla de verdad (8 filas)

Cobertura de decisión: definición, ejemplo y equivalente en inglés
#armeddoorwindowalarm
0FALSOFALSOFALSOFALSO
1FALSOFALSOVERDADEROFALSO
2FALSOVERDADEROFALSOFALSO
3FALSOVERDADEROVERDADEROFALSO
4VERDADEROFALSOFALSOFALSO
5VERDADEROFALSOVERDADEROVERDADERO
6VERDADEROVERDADEROFALSOVERDADERO
7VERDADEROVERDADEROVERDADEROVERDADERO

Lectura en lenguaje claro

Principiantealarm es verdadero exactamente cuando se cumplen las dos condiciones siguientes:
1. armed es verdadero
2. al menos uno entre door y window es verdadero (pueden serlo ambos)
En todos los demás casos, alarm es falso.
Sobre los operadores:
- AND (Y) solo es verdadero cuando todas sus partes son verdaderas.
- OR (O) es inclusivo: es verdadero en cuanto al menos una parte es verdadera, también cuando lo son varias.
Intermedioalarm es verdadero exactamente cuando se cumplen las dos condiciones siguientes:
1. armed es verdadero
2. al menos uno entre door y window es verdadero (pueden serlo ambos)
En todos los demás casos, alarm es falso.
Avanzadoalarm es verdadero exactamente cuando se cumplen las dos condiciones siguientes [conjunción ∧]:
1. armed es verdadero
2. al menos uno entre door y window es verdadero (pueden serlo ambos) [disyunción inclusiva ∨]
En todos los demás casos, alarm es falso.
Notación formal: armed ∧ (door ∨ window)

MC/DC

EntradaEstadoPar de independencia (solo esa entrada cambia)
armedfoundarmed=F, door=F, window=T → F  |  armed=T, door=F, window=T → T
doorfoundarmed=T, door=F, window=F → F  |  armed=T, door=T, window=F → T
windowfoundarmed=T, door=F, window=F → F  |  armed=T, door=F, window=T → T

El error habitual

Informar de un 100 % de cobertura de decisión como si las condiciones estuvieran probadas. Los dos casos que cubren esta decisión nunca varían door; la cobertura de decisión no dice nada de ninguna condición concreta. La página del error sobre cobertura frente a corrección tiene la versión general de esta advertencia.

Preguntas

¿Cuántas pruebas necesita la cobertura de decisión?

Al menos dos por decisión, una por cada resultado, sin importar cuántas condiciones contenga la decisión. MC/DC sobre la misma regla necesita al menos una más que el número de condiciones, que para esta alarma de tres condiciones son cuatro.

Relacionado

Véase también

Glosario

Generado a partir del motor de Tangibool, semántica tangibool-semantics/1, motor 1.0.0, compilación . Cada tabla, mapa, simplificación y veredicto de estas páginas lo calculó el motor de Tangibool al compilar el sitio, y cada afirmación la volvió a comprobar el mismo verificador exacto que usa la app. Los límites se indican donde aplican. © 2026 Foreranger LTD.