Inicio / Verificar lo que devuelve
Un control de forma nunca ve un valor falso
Un control automático mide la forma, la codificación, la presencia de una palabra clave, nunca la verdad, y validar una captura de pantalla o una etapa intermedia nunca prueba lo que la persona va a abrir realmente.
Un control automatizado que escanea un entregable antes de su publicación verifica casi siempre una sola cosa: la forma. ¿Es válido el archivo, parece correcta la codificación, aparece en algún lugar de la página una palabra clave esperada? Verifica muy raramente la verdad: ¿corresponde la cifra mostrada al valor correcto, es realmente exacta la afirmación? Esta diferencia permanece invisible hasta el día en que un valor falso atraviesa un control que muestra todo en verde.
Lo que un control de forma nunca ve
Una regla prohíbe publicar una cifra impugnada. La constante fuente que la contiene respeta la regla a la perfección: nunca se imprime directamente en ningún sitio. Una segunda constante, derivada de la primera en el mismo archivo, se muestra sin embargo en un gran número de páginas del sitio. Varios controles automatizados distintos permanecen en verde, porque ninguno de ellos compara el valor realmente mostrado con el valor prohibido: verifican la sintaxis, la codificación, la estructura, nunca el sentido. La figura que sigue a este párrafo cuantifica con precisión esta fuga: el número de páginas afectadas, el número de controles que permanecieron en verde a pesar de ella, y la diferencia, en líneas de código, entre la constante prohibida y su derivada.
El mismo defecto adopta una forma más simple con un control por palabra clave: una regla que exige que el documento mencione un término dado se satisface trivialmente escribiendo cualquier cosa falsa al lado de ese término, ya que solo busca la palabra, no su contexto. Todo lo que un entregable añade para satisfacer un control de forma merece verificarse en la fuente de verdad, no solo constatarse presente en la página. Este mecanismo prolonga un verde no prueba nada hasta que no ha sido probado el mismo: un control que nunca ha sido puesto en jaque por el caso concreto que debería atrapar no prueba nada sobre ese caso.
Validar lo que la persona abre realmente
Un remedio visual fue revisado y confirmado correcto sobre una captura de pantalla de la página HTML que genera el documento, y luego anunciado como entregado. El archivo realmente abierto por la persona interesada era un PDF, producido a partir de ese HTML mediante una etapa de conversión separada. Esa etapa tenía su propio defecto: regeneraba el PDF a partir de una copia del HTML que aún no había recibido el remedio, de modo que el problema, aunque bien corregido en la página mostrada en directo, seguía siendo visible en el PDF distribuido, porque el PDF nunca había sido lo verificado.
La misma trampa acecha en torno a las cachés. Releer un dato por la misma vía que acaba de recibir una escritura no prueba nada más que la coherencia de esa vía consigo misma: una copia almacenada en caché puede devolver el valor antiguo aunque la escritura haya sido un éxito total. Romper esa caché exige un gesto activo: añadir un parámetro inédito a la dirección, abrir una ventana de navegación privada, o interrogar directamente a un servidor configurado para ignorar su propia caché. Un simple refresco del navegador deja a menudo intacto un intermediario.
El control que habría visto la fuga
He aquí el mismo mecanismo, reproducible con un archivo fabricado para el ejemplo: la constante prohibida está efectivamente escrita en el código fuente, nunca impresa directamente, y un control que busca esa impresión directa no encuentra nada, con razón:
$ printf 'const CHIFFRE_INTERDIT = 999;\nconst AFFICHAGE = CHIFFRE_INTERDIT.toString() + ",00 EUR";\nconsole.log(AFFICHAGE);\n' > /tmp/source-v2m3l7.js $ grep -c "console.log(CHIFFRE_INTERDIT" /tmp/source-v2m3l7.js 0
Pero cuatro líneas más adelante, la constante derivada retoma ese valor y se imprime, ella sí, en la ejecución:
$ node /tmp/source-v2m3l7.js 999,00 EUR
Este control da un verde honesto y sin embargo falso para el uso que se le da: verifica una línea concreta del archivo fuente, no lo que la persona ve realmente en la pantalla. La lección se resume en un gesto: identificar lo que la persona va a abrir, un PDF, una página en directo, una pantalla de aplicación, y luego verificar exactamente esa cosa, con la herramienta que la abre de verdad, después de haber roto la caché. Un control de forma nunca es un control de exactitud, y nunca debe quedar como el último cerrojo antes de la publicación.
Lo que un control de forma mira, y lo que se le escapa
| Lo que verifica un control de forma | Lo que deja pasar silenciosamente |
|---|---|
| El archivo es un HTML o un JSON válido | Si una cifra mostrada corresponde a un valor prohibido |
| Una palabra clave requerida figura en algún lugar de la página | Si la frase que la rodea es verdadera |
| La constante fuente nunca muestra el valor prohibido | Una constante derivada de esta, más adelante en el archivo |
| El control se ejecuta sobre el archivo fuente | Si el mismo valor ha sobrevivido hasta el artefacto entregado |
Una fuga medida con exactitud
Una regla prohíbe mostrar una cifra concreta en el sitio. Un control automático recorre el archivo fuente de la página y busca esa cifra escrita tal cual, carácter por carácter. Ese mismo archivo fuente contiene además tres valores, escritos por separado en tres lugares del código, cuya suma corresponde exactamente a esa cifra.
Escribe en una frase lo que este resultado establece, y en una frase lo que no establece.
Lo que esto establece: El control establece que la cifra prohibida no aparece escrita tal cual en el archivo fuente que examinó.
Lo que esto no establece: No establece que esa cifra esté ausente de las páginas del sitio realmente mostradas a los visitantes, ya que nunca compara el valor fuente con el valor mostrado en pantalla.
Los tres calibrados falsos más frecuentes
- Demasiado amplio Este control establece que la cifra prohibida no aparece en ningún lugar del sitio, fuente y páginas mostradas incluidas.
- Demasiado estrecho Este control no establece nada en absoluto, ni siquiera la ausencia de la cifra escrita tal cual en el archivo fuente.
- Fuera de lugar Este control muestra que el equipo conocía la regla que prohibía esa cifra antes de escribirla en el código.
- Un control de forma verifica la sintaxis, la codificación o la presencia de una palabra clave, nunca si la afirmación que la rodea es verdadera.
- Un valor prohibido puede filtrarse a través de una constante derivada mientras la constante original permanece perfectamente conforme a la regla que lo prohíbe.
- Una captura de pantalla de la fuente no prueba nada sobre el archivo final que la persona abre realmente, PDF, exportación o página en caché.
- Releer un dato por la vía que acaba de escribirlo solo prueba la coherencia de esa vía consigo misma, no el valor realmente servido al visitante.
- Romper una caché exige un gesto activo, un parámetro inédito, una ventana privada o un servidor sin caché: un simple refresco no siempre basta.
Retoma un entregable que acabas de producir, anota lo que su control de forma no puede ver, y luego verifica eso por separado sobre la versión final realmente abierta por la persona interesada.