Saltar al contenido

MC/DC explicado: cobertura de condición/decisión modificada para reglas booleanas

La cobertura de condición/decisión modificada pide, para cada condición de una regla booleana, un par de casos de prueba que difieran solo en esa condición y produzcan resultados distintos. El motor encuentra un par así para cada entrada de la regla de entrada, y los cuatro escenarios que necesitan se enumeran abajo.

La regla es (member OR invited) AND NOT banned, tres condiciones, ocho filas. MC/DC se satisface cuando cada condición tiene un par de independencia: dos escenarios admisibles que difieren solo en esa condición y dan resultados distintos, lo que muestra que la condición puede afectar al resultado por sí sola. Los pares del motor son: para member, member = FALSO, invited = FALSO, banned = FALSO (sin entrada) frente a member = VERDADERO con el resto sin cambios (entrada); para invited, la misma fila base frente a invited = VERDADERO; para banned, invited = VERDADERO, banned = FALSO (entrada) frente a banned = VERDADERO (sin entrada).

Esos tres pares usan cuatro escenarios distintos, que es el recuento habitual de n + 1 para n condiciones. Un conjunto de pruebas construido con ellos ejercita la influencia de cada condición con cuatro pruebas donde la tabla completa tiene ocho, y atrapa el desliz clásico de agrupación, porque el par de banned es exactamente la fila en la que member OR (invited AND NOT banned) se equivoca cuando la persona es socia.

MC/DC viene de la certificación aeronáutica, donde se exige para el software más crítico, pero la idea es general: un conjunto de pruebas debería mostrar que cada entrada importa. El informe de cobertura del motor calcula pares de independencia para cualquier regla dentro de sus límites, y la lección sobre diseño de pruebas pone el método en contexto con las pruebas de mutación.

Ejemplo

allow := (member OR invited) AND NOT banned · salida

Comprobaciones exactas

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

Tabla de verdad (8 filas)

MC/DC explicado: cobertura de condición/decisión modificada para reglas booleanas
#memberinvitedbannedallow
0FALSOFALSOFALSOFALSO
1FALSOFALSOVERDADEROFALSO
2FALSOVERDADEROFALSOVERDADERO
3FALSOVERDADEROVERDADEROFALSO
4VERDADEROFALSOFALSOVERDADERO
5VERDADEROFALSOVERDADEROFALSO
6VERDADEROVERDADEROFALSOVERDADERO
7VERDADEROVERDADEROVERDADEROFALSO

Lectura en lenguaje claro

Principianteallow es verdadero exactamente cuando se cumplen las dos condiciones siguientes:
1. al menos uno entre member e invited es verdadero (pueden serlo ambos)
2. banned es falso
En todos los demás casos, allow 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.
- NOT (NO) invierte un valor: lo verdadero pasa a ser falso y lo falso, verdadero.
Intermedioallow es verdadero exactamente cuando se cumplen las dos condiciones siguientes:
1. al menos uno entre member e invited es verdadero (pueden serlo ambos)
2. banned es falso
En todos los demás casos, allow es falso.
Avanzadoallow es verdadero exactamente cuando se cumplen las dos condiciones siguientes [conjunción ∧]:
1. al menos uno entre member e invited es verdadero (pueden serlo ambos) [disyunción inclusiva ∨]
2. banned es falso [negación ¬]
En todos los demás casos, allow es falso.
Notación formal: (member ∨ invited) ∧ ¬banned

Diagrama lógico

MC/DC explained: modified condition/decision coverage for Boolean rules MC/DC explained: modified condition/decision coverage for Boolean rules member invited banned allow AND OR NOT
MC/DC explained: modified condition/decision coverage for Boolean rules MC/DC explained: modified condition/decision coverage for Boolean rules member invited banned allow AND OR NOT

MC/DC

EntradaEstadoPar de independencia (solo esa entrada cambia)
memberfoundmember=F, invited=F, banned=F → F  |  member=T, invited=F, banned=F → T
invitedfoundmember=F, invited=F, banned=F → F  |  member=F, invited=T, banned=F → T
bannedfoundmember=F, invited=T, banned=F → T  |  member=F, invited=T, banned=T → F

El error habitual

Probar cada condición en sus dos valores sin mantener fijas las demás. Cuatro pruebas que varían todo a la vez pueden cubrir todas las condiciones y todos los resultados y aun así no mostrar que una sola condición marcó la diferencia; el par debe diferir en una sola condición.

Preguntas

¿Y si no existe ningún par para una condición?

Entonces la condición no puede afectar al resultado dentro de los supuestos enunciados, lo que normalmente significa una condición redundante o un supuesto que la fija. El motor informa del estado de cada entrada en lugar de inventar un par.

¿MC/DC es lo mismo que la cobertura de condición múltiple?

No. La cobertura de condición múltiple prueba todas las combinaciones, 2 elevado a n casos; MC/DC necesita unas n + 1 y aun así muestra el efecto independiente de cada condición. La página de comparativa pone los criterios de cobertura lado a lado.

Relacionado

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.