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
Tabla de verdad (8 filas)
| # | armed | door | window | alarm |
|---|---|---|---|---|
| 0 | FALSO | FALSO | FALSO | FALSO |
| 1 | FALSO | FALSO | VERDADERO | FALSO |
| 2 | FALSO | VERDADERO | FALSO | FALSO |
| 3 | FALSO | VERDADERO | VERDADERO | FALSO |
| 4 | VERDADERO | FALSO | FALSO | FALSO |
| 5 | VERDADERO | FALSO | VERDADERO | VERDADERO |
| 6 | VERDADERO | VERDADERO | FALSO | VERDADERO |
| 7 | VERDADERO | VERDADERO | VERDADERO | VERDADERO |
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
| Entrada | Estado | Par de independencia (solo esa entrada cambia) |
|---|---|---|
| armed | found | armed=F, door=F, window=T → F | armed=T, door=F, window=T → T |
| door | found | armed=T, door=F, window=F → F | armed=T, door=T, window=F → T |
| window | found | armed=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
- Cobertura de condición frente a cobertura de decisión (ramas)
- Cobertura de condición: definición, ejemplo y equivalente en inglés
- MC/DC (cobertura de condición/decisión modificada): definición, ejemplo y equivalente en inglés
- La cobertura no es corrección: las pruebas siguen necesitando resultados esperados
- Lección 12: Diseñar pruebas que encuentren errores
- Regla de alarma: armada AND (puerta OR ventana OR movimiento) AND NOT codigo
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.