Errores lógicos

Los errores lógicos son los más difíciles de localizar y eliminar. Este tipo de error se produce cuando un código perfectamente válid hace lo que se le dice, pero no lo que el programador esperaba, como por ejemplo:

<?php
   for ($i=0; $i < 10; $i++);
   {
      echo "Hacer algo aquí<br />";
   }
?>

Este fragmento es perfectamente válido. Cumple correctamente la sintaxis de PHP. No depende de servicios externos, por lo que es poco probable que falle durante el tiempo de ejecución.

A simple vista, parece que iterará diez veces el bucle _for_ , repitiendo "Hacer algo aquí" cada vez. La inclusión de un punto y coma al final de la primera línea significa que el bucle no afecta a las líneas siguientes. El bucle _for_ iterará diez veces sin resultados y, tras ello, la instrucción echo se ejecutará una vez.

Como este código es una forma válida pero ineficaz de escribir código para obtener este resultado, el analizador no se queja. El realizar casos de prueba que cubran todo nuestro código hará que muchos de esos fallos lógicos salgan a la luz.

Un error lógico como el del ejemplo anterior se puede cometer con facilidad, pero también resulta sencillo de corregir ya que la primera vez que se ejecute el código obtendremos un resultado distinto al esperado. La mayoría de los errores lógicos son ligeramente más nocivos.

Los errores lógicos problemáticos suelen deberse a suposiciones erróneas de los programadores. En las metodologías ágiles como XP, se establece la programación por parejas para detectar ese tipo de problemas, entre muchas de otras cosas. También nos recomiendan probar nuestra aplicación en un entorno de preproducción para que el cliente final sea capaz de probar la aplicación con sus datos y sus pruebas. La suposición de que los usuarios sólo introducen determinados tipos de datos es muy habitual y también es muy posible pasarlo por alto si realizamos nuestras propias comprobaciones.

Imaginemos que tenemos un carro de la compra y un cuadro de texto donde le dejamos al cliente que introduzca la cantidad que quiere de un producto. ¿Hemos supuesto que todos los datos deben ser positivos? ¿Admitimos valores negativos?....Estos valores podríamos comprobarlos con tecnología de cliente, por ejemplo, JavaScript.

Si pasamos información a otra página debemos saber que hay ciertos caracteres con un significado especial en una URL como los espacios en blanco, el &, etc.

El número posible de errores lógicos es infinito. No hay forma automática de comprobar todos ellos. La única solución consiste, en primer lugar, intentar eliminar suposiciones que implícitamente hayamos codificado en script PHP y, tras ello, probar con todos los tipos de entradas válidas y no válidas posibles, asegurándonos de que obtenemos el resultado anticipado de todos ellos.

results matching ""

    No results matching ""