FeedMender

FeedMender/Cómo lo sabemos

Evidencia

Cómo se demuestran las comprobaciones

Una comprobación escrita, documentada y cobrada, pero que en realidad nunca se dispara, es el defecto que más esfuerzo ha costado erradicar en este proyecto. Por eso cada comprobación tiene que demostrar que puede dispararse con un archivo real antes de que se le permita contar, y el propio número se lee del código en lugar de teclearse.

El número no se teclea

Hay 225 comprobaciones distintas. Esa cifra no está escrita en esta página: se lee de la fuente en el momento de la compilación, del mismo registro al que se atiene la batería de tests. Un número tecleado a mano es una afirmación que nadie vuelve a comprobar, y cada auditoría interna de este proyecto encontró uno que se había quedado obsoleto. Así que el número de la lista completa de comprobaciones lo genera un script que lee el código, y si el código y el número llegaran a discrepar, se movería el número, no el código.

Una comprobación solo cuenta cuando se dispara con un archivo real

Cada comprobación está registrada con la ruta que la demuestra. La mayoría se demuestran pasando un archivo real por todo el pipeline y viendo salir el resultado por el otro extremo; unas pocas necesitan una entrada construida que una sola celda no puede transportar, un archivo comprimido malformado, una respuesta de red o una llamada a un modelo. La distinción se aplica de verdad, no es decorativa. Demostrar que una función funciona llamándola directamente dice que la función funciona; no dice nada sobre si el producto llega a alcanzarla. La batería de tests se niega a aceptar ese tipo de evidencia para una comprobación que afirma salir de un análisis real.

El mismo registro atrapa los dos fallos que dejan acumularse comprobaciones muertas: un código que la fuente puede emitir y que nadie registró, y un código registrado que la fuente ya no emite. Cualquiera de los dos hace fallar la batería. Dos comprobaciones están marcadas como deliberadamente inalcanzables, mantenidas como guardas contra una subida defectuosa que haga caer el análisis, y cada una lleva una razón escrita de por qué está ahí. A nada se le permite quedarse en el estado de "no puede dispararse" como quien se encoge de hombros.

Qué significa el número de recall, y qué no

En los feeds sintéticos que construimos para las pruebas, el recall es del 100 por ciento en tres formatos, xlsx, csv y xml, con cero falsos positivos en un grupo de control limpio. Nuestro catálogo de demostración lleva 55 tipos de defecto distintos y todos y cada uno se detectan.

Y este es el límite honesto de esa cifra. Los defectos de esos feeds los inyectamos nosotros mismos, así que el número mide que el analizador atrapa lo que se nos ocurrió plantar. No mide que el analizador atrape todo lo que contiene un catálogo real, y el recall frente a feeds reales de comerciantes es genuinamente desconocido hasta que se analicen feeds reales de comerciantes. Preferimos decírtelo así antes que redondearlo hacia arriba. El análisis gratuito es la manera honesta de descubrir qué produce un archivo real, que es en parte la razón de que sea gratuito.

Los falsos positivos que tuvimos que corregir

La parte más difícil de ser útil es acertar cuando un valor está técnicamente presente pero no significa nada. Un paso de generación en uno de nuestros feeds de prueba propuso una vez el color "Blue" para un televisor, porque la columna de color decía Blue en la mayor parte del catálogo. El valor estaba de verdad en los datos del comerciante, y aun así era incorrecto. Lo que lo frenó fue un filtro de relevancia y una comprobación palabra por palabra de cada valor propuesto contra la fila de origen, ambos escritos después de ver ocurrir el fallo.

El mismo trabajo sacó a la luz otros que merecen quedar registrados, porque son el tipo de error que erosiona la confianza en silencio: una pista para una etiqueta energética de la UE que coincidía dentro de una palabra compuesta neerlandesa sin ninguna relación, y una reescritura rechazada por una diferencia de flexión de dos caracteres que es correcta en inglés e incorrecta en un idioma que construye palabras uniéndolas. Cada uno de ellos tiene ahora su propio test de regresión, para que el mismo error no pueda volver sin ser visto.

Nada de esto es afirmar que hayamos terminado. Es afirmar que las comprobaciones que existen pueden demostrar que se disparan, que el número es honesto, y que somos claros sobre la diferencia entre probado en tests y demostrado sobre el terreno. Mira qué no puede decirnos un archivo para la otra mitad de esa honestidad.