Saltar al contenido
Jeremy Ayza
Todos los casos

Trabajo en CasaMarket

Pruebas de paridad para el nuevo flujo de venta

Rediseñé el flujo de venta de un POS que emite comprobantes 24/7 y lo verifiqué comparando, campo por campo, lo que envía el sistema anterior con lo que envía el nuevo.

Problema

El POS web de CasaMarket emite Boleta, Factura y Nota de Venta ante SUNAT para clientes que venden 24/7, así que rehacer su flujo de venta no podía fallar.

El trabajo tenía dos partes: llevar la lógica de venta a una capa que se pudiera probar, y demostrar que el flujo nuevo produce lo mismo que el anterior.

Decisión

Diseñé una capa de dominio pura y testeable (carrito, pagos, cliente, crédito, impuestos y descuentos) con la venta como caso de uso.

Para comprobar el flujo nuevo ideé una estrategia de paridad. Una suite E2E en Playwright ejecuta la misma venta en el POS legacy y en el nuevo, captura los dos payloads y los compara campo por campo. Ignora el ruido conocido, como fechas e IDs.

La misma venta pasa por los dos sistemas y se comparan los payloads. Una suite de Playwright ejecuta la misma venta en el POS legacy y en el POS nuevo. Captura el payload de cada uno y los compara campo por campo, ignorando fechas e IDs. Si son iguales la prueba pasa; si son distintos, falla. La misma venta suite E2E en Playwright POS legacy flujo anterior POS nuevo capa de dominio Payload A capturado Payload B capturado Comparación campo por campo se ignoran fechas e IDs Iguales: pasa Distintos: falla
La misma venta pasa por los dos sistemas y se comparan los payloads.

Usé Claude Code para auditar el código en paralelo y generar casos de prueba. El alcance, las reglas de negocio y la validación de los hallazgos los definí yo.

Resultado

Son 12 suites: precisión decimal, tipos de impuesto, descuentos, combos y pagos, entre otras. El nuevo flujo de venta está en producción.

Límite

La paridad no prueba que el cálculo sea correcto. Si los dos sistemas comparten un bug, el test pasa igual. Dejé documentado este límite del método.

Buscar en el portafolio

Los embeddings se calculan en tu navegador. Nada se envía a un servidor.