Control de calidad · página interna
Batería de pruebas
Corre contra assets/calculos.js, que es el mismo archivo que usan las diez herramientas. Si una prueba falla acá, la calculadora también está mala.
Invariantes
Propiedades que deben cumplirse para cualquier entrada. Detectan errores de código.
Arquitectura, procedencia y caducidad
Que los parámetros declaren su origen, que ninguno tenga la revisión vencida, que el catálogo sea coherente y que un escenario guardado siga siendo reproducible.
Tus números son tuyos
La promesa del producto, convertida en prueba. Que ningún dato económico salga del navegador, que el registro de gobierno no se separe de la realidad del código, y que no exista un camino —directo o indirecto— para que alguien que opera el sitio llegue a una cifra de nadie.
Adquisición, embudo y medición
Que cada herramienta declare de dónde llega la gente y qué hace después; que el catálogo estático no se separe del registro; y que la instrumentación NO pueda transportar una cifra de nadie.
Independiente frente a dependiente
Que el lado del sueldo esté bien —dos topes distintos, quién paga qué, el impuesto contra la tabla del SII— y que el lado independiente sea EXACTAMENTE el mismo motor que usan /cotizacion y /renta, sin una segunda versión que pueda separarse.
Pruebas normativas
Contrastan contra lo que dice la autoridad, no contra el resto del código. Son las que las 134 anteriores no podían hacer: todas pasaban mientras el sitio calculaba con la gradualidad del año equivocado.
Mi CuentaPropia, Mi año y las cotizaciones
Lo que el sitio guarda de la persona: que se lea, se corrija, se borre, se pueda reponer y se pueda llevar. Y que nada de eso duplique el motor de cálculo.
Importación de boletas del SII
La cadena completa: planilla, lector físico, perfil BHE, normalización y modelo REAL. Que no se pierdan las dos fechas, que una anulada no se convierta en ingreso, que las retenciones se importen y no se recalculen, y que importar dos veces no duplique.
Mi Situación
Una sola agregación alimenta la tarjeta, el gráfico y la tabla. Que las anuladas no sumen, que el período salga de la fecha de boleta, que el filtro mueva todo junto, y que «cero registrado» y «sin información» no se confundan.
Mi Plan
El objetivo del año vive en un solo lugar. Que no exista una segunda clave, que el equivalente mensual sea derivado y no guardado, que quitar el plan no toque lo facturado, y que acá no aparezca ningún cumplimiento ni proyección.
Plan vs. Real
El eje acumulado. Que la suma use la misma vara que el gráfico y la tabla, que solo entren los meses con algo anotado, que un mes en cero cuente y uno sin anotar no, que nada se guarde, y que la proyección siga siendo otra cosa.
Mi Proyección
El año se parte en tres —cerrados, en curso, por venir— y solo lo que todavía no empieza se proyecta. Que la fecha mande, que un mes cerrado sin dato no se rellene, que el mes en curso no se dé por vacío, y que no se pueda anotar lo facturado de un mes que no ha llegado.
Mis compromisos
Un solo concepto y un solo resolvedor para los cuatro casos. Que null siga sin ser cero, que un ajuste en cero sí sea un dato, que tabular por las casillas no invente ajustes, que arrepentirse de una edición no toque nada, que nada derivado se guarde, que las cuatro acciones lleguen a la bitácora sin el nombre que escribió la persona, que la clave entre al respaldo y al borrado —y que borrar de verdad deje el navegador como estaba—, y que el año siga guardándose con las claves de siempre.
Contar algo
Que el enlace exista en todas las páginas, que los tres motivos lleguen, que el formulario no pueda leer una cifra de nadie aunque quisiera, que el destinatario no viaje nunca en el navegador, que la trampa esté fuera del teclado y que lo que se manda esté declarado en privacidad y en el registro.
Descubribilidad
Que ninguna herramienta quede colgando del catálogo de la portada y nada más, que el recorrido apunte a páginas que existen, que lo que se declara a un buscador sea lo que la página muestra, y que optimizar no haya sido excusa para meter un rastreador.
Casos de borde
Los puntos exactos donde cambia una regla: el límite del tramo exento, el tope imponible, el décimo día de licencia.
Recorrido completo de la cadena
Un caso realista, paso a paso, para revisión humana. Cada línea debe poder verificarse contra la norma.
Qué cambió en esta batería. Hasta la versión 1.2.0 del cálculo, todas las pruebas verificaban coherencia interna: que las fórmulas se invirtieran, que la suma cuadrara, que un parámetro declarara su fuente. Todas pasaban mientras el sitio usaba la gradualidad del año tributario equivocado, porque el código era perfectamente coherente consigo mismo con un porcentaje falso. Las pruebas normativas de más arriba contrastan contra la fuente, que es lo que permite distinguir «cambió la norma» de «se rompió el cálculo».
Lo que sigue sin poder detectarse. Que una fuente oficial esté desactualizada o se contradiga. Eso se registra a mano en fuentes.js, donde viven las páginas oficiales obsoletas y las inconsistencias documentales encontradas.