Saltar al contenido

Pares de independencia MC/DC, ejemplo resuelto con el informe de cobertura del motor

Un par de independencia para una condición son dos escenarios que difieren solo en esa condición y dan resultados distintos. Esta página muestra el informe de cobertura del motor para la regla de entrada: un par por entrada, los escenarios que comparten, y cómo las cuatro filas se convierten en un conjunto de pruebas.

Para (member OR invited) AND NOT banned el informe encuentra un par para cada una de las tres entradas. Member: el escenario todo FALSO no da entrada, y poner solo member a VERDADERO da entrada. Invited: la misma base todo FALSO, con solo invited a VERDADERO, da entrada. Banned: invited = VERDADERO con banned = FALSO da entrada, y poner solo banned a VERDADERO la quita. El informe enuncia cada par en palabras y en valores, y los valores son asignaciones completas, así que cada una puede reproducirse.

Leídos como conjunto de pruebas, los pares se solapan: el escenario todo FALSO sirve a member y a invited, y el escenario invitado-no-vetado sirve a invited y a banned. Cuatro filas distintas de ocho bastan, y cada fila tiene un resultado esperado que viene de la regla tal como está enunciada. Esas cuatro son un diseño de pruebas, no solo una cifra de cobertura, porque cada fila lleva la razón por la que está ahí.

Cuando no se puede encontrar un par, el informe lo dice para esa entrada, con el estado y un mensaje. Eso ocurre cuando los supuestos fijan una condición o cuando la regla está escrita de modo que una condición nunca cambia el resultado, y las dos cosas son hallazgos que conviene tener antes de escribir ninguna prueba. El comando de cobertura de la CLI produce el mismo informe para la integración continua.

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)

Pares de independencia MC/DC, ejemplo resuelto con el informe de cobertura del motor
#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 independence pairs, worked example with the engine’s coverage report MC/DC independence pairs, worked example with the engine’s coverage report member invited banned allow AND OR NOT
MC/DC independence pairs, worked example with the engine’s coverage report MC/DC independence pairs, worked example with the engine’s coverage report 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

Elegir las dos filas de un par de escenarios base distintos. «Socio, invitado, no vetado: entrada» y «no socio, no invitado, no vetado: sin entrada» difieren en dos condiciones y no muestran nada sobre ninguna; el par debe mantener fijo todo lo demás.

Preguntas

¿El informe elige un par único?

No; pueden existir varios pares para una condición y el informe muestra uno. Cualquier par válido sirve al criterio, y los escenarios compartidos entre pares mantienen pequeño el conjunto de pruebas.

¿Qué significa el estado cuando no es «encontrado»?

Que no existe ningún par admisible dentro de los supuestos enunciados, con un mensaje que dice por qué. La condición no tiene entonces efecto independiente sobre el resultado tal como está la regla.

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.