Saltar al contenido

Cobertura de condición frente a cobertura de decisión (ramas)

La cobertura de decisión pide que el resultado de la regla sea VERDADERO en alguna prueba y FALSO en otra. La cobertura de condición pide lo mismo de cada condición. Ninguna muestra que una condición importe, y la regla de alarma de abajo es lo bastante pequeña para ver por qué en ocho filas.

La regla es armed AND (door OR window): la alarma suena cuando el sistema está armado y se abre una puerta o una ventana. La cobertura de decisión se cumple con dos pruebas, una que hace sonar la alarma y otra que no. La cobertura de condición se cumple con dos pruebas que pasan armed, door y window por sus dos valores, por ejemplo todo VERDADERO y todo FALSO, que además satisfacen la cobertura de decisión. Ninguno de los dos pares de pruebas dice nada sobre la ventana.

Los pares de independencia del motor sí. Para armed: door = FALSO, window = VERDADERO con el sistema desarmado (silencio) frente a armado (alarma). Para door: armado con las dos cerradas (silencio) frente a puerta abierta (alarma). Para window: armado con las dos cerradas (silencio) frente a ventana abierta (alarma). Tres pares, cuatro escenarios, y ahora se ha mostrado que cada condición cambia el resultado por sí sola, que es MC/DC.

Los criterios más débiles no son inútiles; son comprobaciones iniciales baratas. Lo importante es lo que no prometen: un sensor de ventana conectado a nada aprueba los dos, y un conjunto de pruebas diseñado para el criterio más fuerte es el que lo nota. Las páginas de patrones sobre alarmas y control de acceso, y la lección sobre diseño de pruebas, reutilizan esta regla.

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 condición frente a cobertura de decisión (ramas)
#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)

Diagrama lógico

Condition coverage vs decision (branch) coverage Condition coverage vs decision (branch) coverage armed door window alarm AND OR
Condition coverage vs decision (branch) coverage Condition coverage vs decision (branch) coverage armed door window alarm AND OR

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

Tomar «cada condición fue VERDADERA y FALSA en alguna prueba» como evidencia de que cada condición se probó. Es evidencia de que los valores ocurrieron, no de que importaran; la ventana puede ser VERDADERA en una prueba en la que la puerta ya estaba abierta y no cambiar nada.

Preguntas

¿La cobertura de decisión es lo mismo que la cobertura de ramas?

Para una regla con un resultado, sí: la decisión es la rama. La cobertura estructural de ramas del código añade cada if y cada bucle; la decisión de la regla es una de ellas.

¿Cuántas pruebas necesitan aquí los tres criterios?

Decisión: dos. Condición: dos. MC/DC: cuatro, de los tres pares que comparten el escenario armado-todo-cerrado. La tabla completa tiene ocho.

Relacionado

Ejercicios

Véase también

Pruebas y reglas

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.