Auditoría de la suite de regresión
Informa de lo que vale de verdad una suite automatizada existente — qué pruebas protegen algo, cuáles enseñan a ignorar los fallos y cuáles habría que borrar.
Entregable
Un documento Markdown, regression-suite-audit.md, con la estructura fijada en Salida más abajo. Lee la suite contra los niveles que fija Definición de estrategia de pruebas, y sus hallazgos alimentan la siguiente revisión de esa estrategia.
Entradas obligatorias
- La suite automatizada — el código de las pruebas, o un listado con detalle suficiente para ver qué afirma cada prueba y en qué nivel se ejecuta.
- Qué debe proteger la suite — el comportamiento cuya rotura existe para detectar.
- Quién es dueño de la suite, al menos por rol — quien puede actuar sobre una recomendación de borrar una prueba.
Si falta cualquiera de las tres, detente y repórtalo. El historial de ejecuciones no es obligatorio, pero su ausencia cambia lo que esta auditoría puede concluir.
Entradas opcionales
- Historial de ejecuciones: pasa, falla y omitida por prueba, durante el periodo que indique quien lo pide
- Los defectos que llegaron a producción desde que la suite existe
- Tiempo de ejecución medido, por prueba y del conjunto
- El registro de mantenimiento: qué pruebas se editaron y si la edición siguió a un cambio de comportamiento o a una refactorización
- La propiedad por prueba o por área
- La estrategia de pruebas contra la que se construyó la suite
Sin historial de ejecuciones la auditoría solo reporta hallazgos estructurales — qué afirma una prueba, qué duplica, a qué está acoplada — y declara en su primera línea que no fue posible ningún juicio de comportamiento. Ninguna prueba se llama intermitente, ni prueba que nunca falla, sin el historial que lo demuestre.
Ejecución
1 — Inventariar la suite. Una línea por prueba: nombre, nivel, qué afirma, el área que cubre y su dueño cuando se conoce. Una prueba cuya afirmación no cabe en una línea se registra como afirmación poco clara y sigue adelante así — es la primera candidata a reescritura, porque tampoco nadie puede actuar sobre su fallo.
2 — Clasificar cada prueba contra su historial. Nunca ha fallado, falla ante regresiones reales, falla de forma intermitente, falla ante cambios sin relación con lo que afirma, omitida o desactivada. Cada clasificación cita el historial que la sostiene. Una prueba sin historial se registra como sin historial y no recibe ninguna clasificación de comportamiento.
3 — Separar comportamiento de implementación. Por cada prueba, decide si afirma algo de lo que depende una persona usuaria o un sistema llamante, o algo interno: orden de llamadas, estructura privada, marcado exacto, la forma de un valor intermedio. Registra cada afirmación de implementación junto a la refactorización que la rompería con el comportamiento intacto.
4 — Poner precio a las intermitentes. Lista cada prueba que falla de forma intermitente con la respuesta que el equipo le da hoy: relanzar, ignorar, investigar. Donde la respuesta sea relanzar o ignorar, declara con claridad que en esa área la suite ha dejado de ser una señal, y que un fallo real allí recibiría el mismo trato.
5 — Poner precio a la suite. Tiempo de ejecución por prueba y total, solo a partir de las mediciones aportadas; el mantenimiento que muestra el registro; y en qué punto de la cadena cae el coste. Un tiempo que nadie midió es desconocido, y un total construido sobre desconocidos se reporta como desconocido en lugar de sumarse.
6 — Comprobar qué se escapó. Por cada defecto de producción aportado, decide si una prueba podría haberlo detectado, en qué nivel y qué hueco lo dejó pasar. Los huecos por los que algo se ha roto de verdad son los que importan; los huecos de áreas que nunca se han roto se listan aparte y por debajo.
7 — Recomendar por prueba. conservar, arreglar, reescribir o borrar, cada una con la evidencia que la sostiene y el coste de actuar. Un borrar nombra qué deja de estar protegido y quién debe aceptarlo. Una recomendación sin evidencia es una opinión sobre el código de otra persona.
Salida
regression-suite-audit.md, en este orden:
- 1. Entrada y fecha — qué suite se auditó, qué historial se aportó y de qué periodo, quién la auditó y cuándo
- 2. Registro — una línea por prueba: nombre, nivel, qué afirma, clasificación, recomendación y la evidencia citada
- 3. Pruebas que nunca fallan — por prueba: qué afirma y si guarda algo estable o no afirma nada
- 4. Pruebas intermitentes — por prueba: el patrón que muestra el historial y la respuesta que el equipo le da hoy
- 5. Pruebas acopladas a la implementación — por prueba: el detalle interno que afirma y la refactorización que la rompería
- 6. Coste — tiempo medido por prueba y total, mantenimiento observado y dónde cae el coste;
desconocido donde no se midió nada
- 7. Defectos escapados — por defecto: qué no vio la suite, en qué nivel se podría haber detectado y el hueco responsable
- 8. Huecos de cobertura — los huecos por los que algo se ha roto, y después aquellos por los que nada se ha roto, separados
- 9. Recomendaciones — por prueba:
conservar, arreglar, reescribir o borrar, la evidencia, el coste de actuar y qué deja de proteger un borrar
- 10. Información que falta — qué no se pudo juzgar y quién puede aportar lo que hace falta
Validación
La auditoría está lista cuando se cumple todo esto:
- Cada prueba de la suite aportada aparece exactamente una vez en la sección 2
- Cada clasificación de la sección 2 cita el historial en el que se apoya, o dice
sin historial
- Cada recomendación nombra su evidencia, y cada
borrar nombra qué deja de estar protegido
- Ninguna prueba se describe como intermitente ni como prueba que nunca falla sin el historial que lo muestre
- La sección 6 lleva solo cifras medidas; lo que no se midió dice
desconocido
- La sección 1 declara si se aportó historial y qué no pudo concluir la auditoría por ello
Falla la ejecución si aparece un juicio sin la evidencia detrás, o si aparece un tiempo de ejecución que nadie midió.
Gestión de fallos
- Sin historial de ejecuciones — produce las secciones 1, 2, 5, 9 y 10 solo desde el código, marca las secciones 3, 4 y 6 como
sin historial aportado y declara en la primera línea que la auditoría es estructural y que ninguna prueba se juzgó por cómo se comporta.
- Sin acceso al código de las pruebas — audita desde el listado aportado, marca cada hallazgo como
reportado y declara que no se leyó nada. Una suite juzgada por sus nombres se juzga por lo que alguien esperaba que hiciera cada prueba.
- La suite y el historial no cuadran — cuando el historial nombra pruebas que ya no existen, o hay pruebas sin historial alguno, registra ambas cosas, nombra ambas fuentes y elévalo a la sección 10. No lo reconcilies descartando un lado.
- Una prueba sin dueño — regístrala como
dueño desconocido en la sección 2 y lístala en la sección 10. Una prueba sin dueño que falla es la que se relanza hasta que pasa.
- Material parcial — audita lo aportado, marca el resto como
INCOMPLETO — pendiente de <pregunta> y nombra la parte de la suite que no se examinó. Una auditoría que cubre media suite y lo dice es utilizable; una que da a entender que las cubrió todas, no.