Una calculadora de construcción en una página web solo sirve si da la misma respuesta que la que confiarías en la obra. Una calculadora de cabríos gratuita que se equivoca por un cuarto de pulgada en la cumbrera es peor que ninguna, porque no lo notas hasta que la pieza ya está cortada. Por eso, al llevar las calculadoras de CutOnce a la web, no reescribimos la matemática para el navegador. Las páginas web corren el mismo código probado que la app.
El problema de escribir la matemática dos veces
La forma habitual de hacer una versión web de una función de app es escribirla otra vez en otro lenguaje. La app hace su matemática de escaleras en Swift y Kotlin; lo obvio sería rehacerla en JavaScript para el sitio. El problema es que dos implementaciones se separan. Alguien corrige una regla de redondeo en la app, la copia web conserva la anterior, y ahora los mismos datos dan dos respuestas. En una página de marketing sería un detalle. En una calculadora de la que depende un carpintero, rompe lo único que importa.
Tomamos el otro camino. Cada calculadora web es un port directo de la función de la app, y una revisión en tiempo de compilación vuelve a correr los propios casos de prueba de la app contra el código portado. Si el resultado web y el de la app difieren en algún caso, la compilación falla y la página no se publica.
Qué es un vector de prueba
Un vector de prueba es un dato de entrada fijo junto con una salida esperada guardada, revisado automáticamente en cada compilación. Un vector de escalera dice que una altura total de 108 pulgadas produce 14 contrahuellas de cierta altura, 13 huellas de cierta profundidad, y una zanca de cierta longitud. Un vector de cabrío dice que un claro y una pendiente dados producen una longitud de línea, un pico de pájaro y un juego de ángulos de sierra. La app está cubierta por más de 9,000 pruebas automatizadas, incluidos más de 1,100 vectores compartidos que se ejecutan de forma idéntica en iOS y Android, para que ambas apps den las mismas respuestas.
Esa cobertura se reparte entre las calculadoras: la matemática de escaleras carga 283 vectores compartidos, la de cabríos 156, la de limas 134, los pies tablares 111. Esas son las pruebas de la app. El trabajo del lado web es que el código portado produzca las mismas respuestas que esas pruebas ya fijan.
La verificación que las mantiene honestas
El port web no tiene su propia suite separada de miles de pruebas. En su lugar, una revisión de paridad lo fija a las respuestas de la app. Lleva un conjunto de vectores copiados directamente de los casos de prueba reales de la app, cada uno etiquetado con el ID de prueba y el archivo del que viene, alimenta el dato a la función web, y compara la salida con la respuesta guardada de la app dentro de una tolerancia estrecha. El conjunto es representativo y no exhaustivo: cubre los ejemplos resueltos, los límites y los casos con más probabilidad de desviarse, no los 1,100 vectores compartidos completos. Una discrepancia es una compilación fallida, no una advertencia que alguien pueda ignorar. Las calculadoras web no pueden estar en desacuerdo con la app en un caso revisado, porque un desacuerdo detiene la publicación.
La revisión corre en el mismo ciclo que el resto de la compilación, junto a la revisión de tipos y la de paridad de traducciones. También mantiene visible el alcance honesto. Algunas páginas web cubren una parte de lo que hace la app: la página de cabríos resuelve cabríos comunes, mientras que la app resuelve las limatesas, limahoyas y jacks irregulares. Las páginas web lo dicen en lugar de fingir cobertura total, y la verificación comprueba la parte que sí muestran.
Por qué nos tomamos la molestia
La mayoría de las calculadoras de construcción gratuitas son una fórmula que alguien escribió una vez en un formulario web y nunca comprobó contra nada. Las nuestras están atadas a una app que la gente compra y usa en obra, y a la suite de pruebas a la que esa app se somete. El punto de la atadura es la confianza: la respuesta que lees gratis en la página es la que obtendrías de la herramienta de pago en tu teléfono, porque es el mismo código revisado de la misma manera.
Puedes ver el panorama completo, calculadora por calculadora con los conteos de vectores actuales, en la página de cómo verificamos. O simplemente abre una calculadora y compárala con un corte que ya conoces. La calculadora de cabríos es buena para probar: corre un claro y una pendiente que ya hayas armado, y la longitud de línea, el pico de pájaro y los ángulos deben coincidir con la pieza en el suelo.