← Volver a proyectos

Cómo someto cada release de un SaaS B2B para talleres automotrices a una compuerta doble, en QA y en producción, con matrices E2E de 13 a 45 casos y una regla: QA reporta, nunca corrige.

Rol: Responsable de QA y releases (puesto actual) Periodo: 2026 Estado: production

ReactAngularJS (legado)Node.jsTypeScripttRPCMySQLJiraPlaywright AI: Claude CodeAI: Playwright
76 (103 eventos de aprobación)

Cambios aprobados tras probarse en un ambiente previo a producción (algunos necesitaron varias rondas)

Llegan menos releases defectuosos a talleres que usan el sistema todos los días.

Snapshot de Jira, oct 2026

18

Cambios devueltos a desarrollo porque no pasaron la prueba

Los defectos se detectan antes de que los vea el cliente, no después.

Snapshot de Jira, oct 2026

30

Cambios revisados otra vez en el sistema en vivo después de salir

Confirma que el release funciona con datos y volúmenes reales, no solo en pruebas.

Snapshot de Jira, oct 2026

27

Carpetas de casos de prueba documentadas, para volver a probar un release de la misma forma

Qué probar no vive solo en la cabeza de una persona.

Archivo de QA, oct 2026

Arquitectura

ARQUITECTURA / QA-RELEASE-GATE pasa falla 01 Ticket del tablero 02 Matriz E2E resumen + casos 03 Corrida QA datos de staging 04 Veredicto reporta, no corrige 05 Verif. producción volúmenes reales 06 Bitácora veredicto registrado 07 Retrabajo regresa a desarrollo Cada etapa se juzga y registra por separado: QA y producción usan criterios distintos.
Release gate de QA: matriz, corrida en QA, veredicto, revisión en producción y retrabajo.

Contexto

Un SaaS B2B para talleres automotrices (mi puesto actual) está migrando su aplicación web de AngularJS a React y a la vez libera funciones nuevas cada semana: facturación múltiple, un portal de reportes, permisos, notificaciones. Los talleres usan el sistema todos los días, así que un release malo se nota en una hora. Hacía falta una compuerta de calidad antes y después de cada despliegue. Este caso es anónimo a propósito y todos los ejemplos de la demo son ficticios.

Mi rol

  • Decidí: el formato de QA, el veredicto de aprobar o regresar a reproceso cada ticket, la prioridad de la cola de QA (primero bugs, luego React, luego el resto, negociada con dirección en el weekly) y la regla de que QA solo reporta.
  • Verifiqué: cada ticket en el ambiente de QA y otra vez en producción después del deploy, combinando pruebas en navegador, lectura del código de la rama de QA y consultas de solo lectura a la base de datos para confirmar efectos (por ejemplo, que ninguna factura quedara huérfana después de un fix).
  • Delegué a la IA: corridas de automatización de navegador (Playwright, mediante un agente de validación) y borradores de reportes y consultas, bajo mi diseño de casos. Reviso lo que entrega; el veredicto es mío.

Investigación

Cuando un ticket falló con un error 400 en el API de QA, lo rastreé hasta una relación de modelo faltante después de un deploy nocturno y lo documenté como regresión del ambiente, no como defecto del ticket. Esa distinción importa: evita que desarrollo persiga un defecto que el ticket nunca tuvo.

Decisiones

DecisiónAlternativas descartadasPor qué
Matriz estándar de dos hojas (resumen y matriz E2E) con listas desplegables de estadoFormato libre con una columna “Bitácora”Nadie llenaba la bitácora. Menos columnas, más matrices completas.
QA solo reporta: falla, evidencia y pasosReportes con corrección sugeridaLa corrección les toca a producto y desarrollo. Una corrección sugerida mete a QA en el diseño y esconde el problema real.
Dos tiempos, QA y producción, con criterios distintos registrados por separadoValidar solo en QALos criterios cambian entre ambientes (volúmenes de datos y configuración reales), así que cada etapa se juzga y se registra por su cuenta.
Prioridad de la cola: bugs, luego migración a React, luego lo demásPrimero en llegar, primero en salirLos bugs lastiman a los talleres hoy; la migración tiene fecha; lo demás puede esperar.

Validación y QA

Las matrices van de 13 a 45 casos por ticket (45 para el portal de reportes, 40 para el módulo de servicios en React, 36 para compras, pagos y proveedores). Cuatro hallazgos muestran cómo funciona la compuerta:

  • Portal de reportes. La ronda uno validó 15 casos y encontró 14 fallas con 6 bloqueados. En la ronda dos se corrigieron 8 de 10 errores. En la ronda tres se corrigió un error de zona horaria y dos diferencias se aceptaron como no-bug, cada una con justificación escrita.
  • Seguridad. El servidor de sockets imprimía el token de sesión en claro en el log. Se reportó con evidencia y se corrigió.
  • Facturación. Un complemento de pago que cubría varias facturas quedaba bloqueado (facturación electrónica fiscal de México, CFDI 4.0). Tras la corrección revalidé los 22 casos de 22.
  • Rendimiento. Una búsqueda de clientes sin caché en memoria había causado la caída de un servidor. La validé en un taller chico y en uno de unos 30,000 clientes: una ráfaga de 6 búsquedas respondió en menos de 0.9 segundos sin reinicio.

Resultados

Portal de reportes: tres rondas de QA

Qué encontró cada ronda y qué se resolvió. Las barras comparten escala dentro de cada ronda.

Portal de reportes: tres rondas de QA Qué encontró cada ronda y qué se resolvió. Las barras comparten escala dentro de cada ronda. Ronda 1 casos validados 15 casos validados: 15 fallas 14 fallas: 14 bloqueados 6 bloqueados: 6 Ronda 2 errores corregidos (de 10) 8 / 10 errores corregidos (de 10): 8 / 10 Ronda 3 error de zona horaria corregido 1 error de zona horaria corregido: 1 diferencias aceptadas, no son error 2 diferencias aceptadas, no son error: 2
Fuente: Registros propios de QA · 2026-10
Tabla de datos
RondaConceptoValor
Ronda 1casos validados15
Ronda 1fallas14
Ronda 1bloqueados6
Ronda 2errores corregidos (de 10)8 / 10
Ronda 3error de zona horaria corregido1
Ronda 3diferencias aceptadas, no son error2
  • 76 tickets distintos aprobados (103 eventos de aprobación contando rondas repetidas), 18 rechazos a reproceso y 30 validaciones en producción, sobre un histórico de 171 tickets (snapshot de Jira, octubre de 2026).
  • 27 carpetas de casos de QA documentadas.
  • En la semana del 6 al 12 de octubre de 2026 la bitácora registra más de 30 veredictos de QA (aprobaciones, reprocesos y pases a producción).
  • La tasa de reapertura y los días en QA los calcula el tablero, pero todavía no los extraje, así que no los cito.

Qué resuelve y dónde más sirve

Un producto que libera funciones cada semana no puede depender de que los desarrolladores revisen su propio trabajo, y un release malo se nota en una hora. Esta compuerta da a cada cambio un veredicto claro, evidencia escrita y una segunda revisión en producción, sin frenar el ritmo semanal.

Dónde más aplica el mismo patrón:

  • Cualquier equipo con releases semanales y sin un área de QA dedicada.
  • Productos donde un error tiene costo directo, como facturación, nómina o fintech.
  • Equipos que migran una aplicación heredada a una tecnología nueva y necesitan demostrar que nada se rompió en el camino.

Qué haría distinto

Extraería cada semana la tasa de reapertura y los días en QA del tablero y los publicaría junto a los conteos de veredictos; hoy la compuerta tiene números de volumen pero no una tendencia de resultados. También automatizaría antes la mitad repetitiva de cada matriz, porque las corridas de navegador de los mismos flujos se repiten en cada release, y dejaría el tiempo manual para los casos que piden criterio.

Evidencia

Versión completa: repositorio privado, disponible bajo solicitud.

Basado en mi puesto actual; todos los datos son ficticios.