Pruebas de regresión para reglas de decisión que cambian
Cuando una regla cambia, la cuestión es qué filas cambiaron con ella. La regla de entrada gana abajo una condición staff, y la comparación de las dos versiones por el motor encuentra exactamente una fila de dieciséis en la que difieren, que es la fila que el conjunto de pruebas de regresión debe añadir y las filas que debe conservar.
La versión uno es (member OR invited) AND NOT banned; la versión dos es (member OR invited OR staff) AND NOT banned. Añadir una entrada duplica la tabla, de ocho filas a dieciséis, y la comprobación de equivalencia informa de que las dos versiones no son equivalentes, con el testigo member = FALSO, invited = FALSO, banned = FALSO, staff = VERDADERO: un empleado que no es socio ni está invitado, ahora admitido. Es la única fila que difiere. En todas las demás filas, incluido el empleado vetado, las versiones coinciden.
Esa fila es la prueba nueva, con su resultado esperado tomado de la petición de cambio («el personal puede entrar»). Las filas que no cambiaron son el conjunto de regresión propiamente dicho: codifican todo lo que el cambio no debía tocar, y la comparación del motor es la demostración de que no lo tocó. Un cambio que hubiera producido dos filas distintas, por ejemplo admitiendo también al personal vetado, habría aparecido como un segundo testigo.
Conservar los contraejemplos de la versión anterior como pruebas, como recomienda la página de contraejemplos, significa que el conjunto acumula exactamente las filas que alguna vez importaron. En el motor las entradas se emparejan entre revisiones por identidad, así que renombrar member no rompe la comparación, y un archivo de pruebas lleva el resumen criptográfico de la lógica contra la que se escribió.
Ejemplo
v1 := (member OR invited) AND NOT banned · salidav2 := (member OR invited OR staff) AND NOT banned · salida
Comprobaciones exactas
Tabla de verdad (16 filas)
| # | member | invited | banned | staff | v1 | v2 |
|---|---|---|---|---|---|---|
| 0 | FALSO | FALSO | FALSO | FALSO | FALSO | FALSO |
| 1 | FALSO | FALSO | FALSO | VERDADERO | FALSO | VERDADERO |
| 2 | FALSO | FALSO | VERDADERO | FALSO | FALSO | FALSO |
| 3 | FALSO | FALSO | VERDADERO | VERDADERO | FALSO | FALSO |
| 4 | FALSO | VERDADERO | FALSO | FALSO | VERDADERO | VERDADERO |
| 5 | FALSO | VERDADERO | FALSO | VERDADERO | VERDADERO | VERDADERO |
| 6 | FALSO | VERDADERO | VERDADERO | FALSO | FALSO | FALSO |
| 7 | FALSO | VERDADERO | VERDADERO | VERDADERO | FALSO | FALSO |
| 8 | VERDADERO | FALSO | FALSO | FALSO | VERDADERO | VERDADERO |
| 9 | VERDADERO | FALSO | FALSO | VERDADERO | VERDADERO | VERDADERO |
| 10 | VERDADERO | FALSO | VERDADERO | FALSO | FALSO | FALSO |
| 11 | VERDADERO | FALSO | VERDADERO | VERDADERO | FALSO | FALSO |
| 12 | VERDADERO | VERDADERO | FALSO | FALSO | VERDADERO | VERDADERO |
| 13 | VERDADERO | VERDADERO | FALSO | VERDADERO | VERDADERO | VERDADERO |
| 14 | VERDADERO | VERDADERO | VERDADERO | FALSO | FALSO | FALSO |
| 15 | VERDADERO | VERDADERO | VERDADERO | VERDADERO | FALSO | FALSO |
Lectura en lenguaje claro
Principiantev1 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, v1 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.
Intermediov1 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, v1 es falso.
Avanzadov1 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, v1 es falso.
Notación formal: (member ∨ invited) ∧ ¬banned
Diagrama lógico
El error habitual
Regenerar toda la columna de resultados esperados a partir de la regla nueva después de un cambio. El conjunto de pruebas coincide entonces con la regla nueva por construcción, incluso en cualquier fila que el cambio rompió; las filas que difieren deben revisarse contra la petición de cambio, no regenerarse.
Preguntas
¿Por qué comparar versiones en lugar de probar solo la nueva?
Porque la comparación enumera las filas cuyo resultado cambió, que es un enunciado completo del efecto del cambio. Las pruebas de la regla nueva por sí solas no distinguen un cambio previsto de uno accidental.
¿Y si el cambio añade una entrada?
La tabla se duplica y las filas antiguas se emparejan por las entradas que comparten. La comparación sigue encontrando las filas que difieren, como muestra el resultado de una fila de arriba, y el par de independencia de la nueva entrada se convierte en una prueba nueva.
Relacionado
Véase también
- Convertir un contraejemplo en una prueba de regresión
- Derivar casos de prueba de una tabla de verdad sin probar todas las filas
- Prueba de regresión: definición, ejemplo y equivalente en inglés
- Comprobador de equivalencia lógica: dos expresiones, veredicto exacto, contraejemplo
- Regla de entrada: (socio OR invitado) AND NOT vetado, comprobada de todas las formas
- Lección 9: Contraejemplos
- Lista de revisión de reglas de decisión (para analistas y revisores)
Pruebas y reglas
- Derivar casos de prueba de una tabla de verdad sin probar todas las filas
- Pruebas de mutación para reglas booleanas: mutantes de operador, negación y literal
- Escribir reglas de negocio en lenguaje claro que se traduzcan a lógica
- Reglas de elegibilidad: el patrón, las excepciones habituales y las pruebas
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.