Saltar al contenido

Prueba de regresión: definición, ejemplo y equivalente en inglés

Una prueba de regresión comprueba que un comportamiento que era correcto sigue siéndolo después de un cambio. Para una regla booleana, la más afilada es una comprobación de equivalencia entre la versión antigua y la nueva, que nombra cada fila en que difieren.

Las pruebas de regresión son las pruebas que se conservan: casos registrados cuando una regla se sabía correcta, repetidos después de cada edición. Su trabajo es detectar cambios no deseados, así que una prueba de regresión que falla tras un cambio deliberado es información, no necesariamente un error; significa que el cambio alcanzó ese caso. Para reglas lo bastante pequeñas como para tabularlas, la tabla entera es la batería de regresión, y comparar dos versiones fila a fila muestra exactamente qué cambió, cosa que ninguna muestra de casos puede prometer.

El artefacto de esta página compara v1 = (member OR invited) AND NOT banned con v2 = (member OR invited OR staff) AND NOT banned, que añade una cuarta entrada. En la tabla de 16 filas, las dos columnas difieren exactamente en una fila, la 1, y la comprobación de equivalencia se viola con ese contraejemplo: member = FALSE, invited = FALSE, banned = FALSE, staff = TRUE, donde v1 rechaza y v2 admite. Todas las demás filas siguen iguales, así que la edición hizo lo que pretendía y nada más; un empleado vetado sigue rechazado en v2.

Las pruebas de regresión son la práctica diaria de todo equipo de software, normalmente como batería ejecutada en integración continua. Para reglas, la comparación fila a fila de esta página es la forma más fuerte: encuentra la única fila cambiada de dieciséis sin que nadie tenga que pensar en ella. El término se confunde con la re-prueba (comprobar que un arreglo arregló el error) y con la regresión en sentido estadístico, que no tiene relación.

Ejemplo

v1 := (member OR invited) AND NOT banned · salidav2 := (member OR invited OR staff) AND NOT banned · salida

Comprobaciones exactas

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

Tabla de verdad (16 filas)

Prueba de regresión: definición, ejemplo y equivalente en inglés
#memberinvitedbannedstaffv1v2
0FALSOFALSOFALSOFALSOFALSOFALSO
1FALSOFALSOFALSOVERDADEROFALSOVERDADERO
2FALSOFALSOVERDADEROFALSOFALSOFALSO
3FALSOFALSOVERDADEROVERDADEROFALSOFALSO
4FALSOVERDADEROFALSOFALSOVERDADEROVERDADERO
5FALSOVERDADEROFALSOVERDADEROVERDADEROVERDADERO
6FALSOVERDADEROVERDADEROFALSOFALSOFALSO
7FALSOVERDADEROVERDADEROVERDADEROFALSOFALSO
8VERDADEROFALSOFALSOFALSOVERDADEROVERDADERO
9VERDADEROFALSOFALSOVERDADEROVERDADEROVERDADERO
10VERDADEROFALSOVERDADEROFALSOFALSOFALSO
11VERDADEROFALSOVERDADEROVERDADEROFALSOFALSO
12VERDADEROVERDADEROFALSOFALSOVERDADEROVERDADERO
13VERDADEROVERDADEROFALSOVERDADEROVERDADEROVERDADERO
14VERDADEROVERDADEROVERDADEROFALSOFALSOFALSO
15VERDADEROVERDADEROVERDADEROVERDADEROFALSOFALSO

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

El error habitual

Conservar los resultados esperados antiguos tras un cambio deliberado. Cuando v2 admite al personal a propósito, la expectativa registrada para la fila 1 debe cambiar con él; dejarla hace que la batería falle para siempre o, peor, tienta a alguien a borrar la prueba. Conviene registrar las filas que difieren según la comprobación de equivalencia y actualizar exactamente esas.

Preguntas

¿Añadir una entrada rompe la comparación con la versión antigua?

No. La tabla se construye sobre la unión de las entradas, y v1 simplemente ignora staff en todas las filas. La única fila que difiere es aquella en que staff por sí sola admitiría a alguien, que es exactamente el cambio pretendido.

Relacionado

Véase también

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.