Inicio / Verificar lo que devuelve
Un control de forma nunca ve un valor falso
Un control automatizado verifica casi siempre la forma y muy raramente la verdad: un archivo válido, una codificación correcta o una palabra clave presente pueden convivir con una cifra falsa. Validar una captura de la página que genera el documento tampoco prueba lo que la persona abre 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 cuantifica esta fuga.
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. Este mecanismo prolonga un verde no prueba nada hasta que no ha sido probado él mismo: un control que nunca ha fallado ante el caso preciso que debería atrapar no prueba nada sobre ese caso.
Validar lo que la persona abre realmente
Un remedio visual se confirmó sobre una captura de la página HTML que genera el documento y se anunció como entregado. El archivo que abrió la persona era un PDF, producido a partir de una copia del HTML que aún no había recibido el remedio: el defecto seguía visible en el PDF distribuido, que nunca había sido lo verificado.
La misma trampa aparece con las cachés: releer un dato por la vía que acaba de escribirlo solo prueba la coherencia de esa vía consigo misma, y una copia en caché puede devolver el valor antiguo. Rómpela con un parámetro inédito en la dirección, una ventana privada o un servidor sin caché; un simple refresco deja a menudo intacto un intermediario.
Cuando la propia medición cuenta mal
Un control de forma también puede equivocarse de medida. En Git Bash sobre Windows, grep no cuenta de forma fiable los retornos de carro. Mide con el lenguaje que aplica el umbral y conserva un testigo que deba dar un recuento distinto de cero:
printf 'a\r\nb\r\n' > crlf.txt
grep -c $'\r' crlf.txt
node -e "console.log(require('fs').readFileSync('crlf.txt','utf8').split('\r').length-1)"
0
2
Obtenida en Git Bash (GNU grep 3.0), la salida muestra grep en 0 sobre un archivo que contiene dos retornos de carro, y node en 2: el testigo prueba que el contador de node detecta y que el de grep falla. En Windows, grep quita los retornos de carro de un archivo que considera de texto antes de buscar; la opción -U, que lo lee en binario, da 2. Sin ella, el recuento nulo se lee como un archivo limpio. Fuera de Git Bash, repite el testigo antes de concluir.
El control que habría visto la fuga
El mismo mecanismo con un archivo fabricado: la constante prohibida nunca se imprime directamente, y un control que busca esa impresión 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 verde es honesto y sin embargo falso para el uso previsto: verifica una línea del fuente, no lo que la persona ve. 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 ser el último control 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; en Git Bash, grep también puede contar mal, de ahí un testigo positivo medido con el lenguaje que aplica el umbral.
- 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.