Pruebas de un programa
Una vez obtenido el código ejecutable de un programa depurado lo máximo posible, hay que comprobar, exhaustivamente, su funcionalidad. Para ello, se tiene que ejecutar tantas veces como se considere necesario, proporcionándole, cada vez, datos de entrada distintos, y comprobando si los datos de salida son siempre los esperados.
El código ejecutable de un programa es imposible que tenga errores de sintaxis, ya que, estos habrán sido detectados por el compilador y corregidos por el programador. Por tanto, las pruebas a realizar se deben centrar en la búsqueda de errores de ejecución o de lógica.
Para estar totalmente seguros del buen funcionamiento de un programa se debería probar con todas las combinaciones posibles de entrada, cosa que suele ser imposible, ya que, éstas podrían ser infinitas. Así pues, las pruebas tienen que ser muy bien elegidas, intentando abarcar el mayor número de casos posibles, y poniendo a prueba al programa en aspectos críticos.
EJEMPLO El código ejecutable del programa Sumar del apartado anterior (Codificación) se puede probar con distintos datos de entrada aleatorios, tales como: 3 y 5, 10 y 20, 400 y 56, etc. –todos ellos positivos– sabiendo de antemano que los datos de salida deben ser: 8, 30 y 456, respectivamente. También se debería probar si funciona correctamente con números negativos, por ejemplo, con los números: -3 y -5, -10 y -20, etc. Otra prueba que se puede hacer es sumar números positivos con negativos: -3 y 5, 72 y -72, etc. Si todas las pruebas han salido bien, entonces se puede pensar que el programa funciona correctamente, aunque nunca se tendrá la certeza al cien por cien, ya que, no se han probado todos los casos.
Además, en todos los programas pueden darse situaciones inesperadas, es decir, situaciones no previstas por el programador. En esos casos, el programa reaccionará de manera imprevisible. Por ejemplo: ¿qué ocurrirá si el usuario introduce dos letras en vez de dos números enteros?, ¿y si introduce dos números reales?, ¿qué ocurrirá si se introducen dos números enteros de diez cifras cada uno?, ¿y si son de treinta cifras cada uno?, etc.
En un programa tan simple como el de Sumar, las pruebas a realizar pueden llevar poco tiempo. Sin embargo, cuando se desarrolla una aplicación grande, las pruebas pueden tardar semanas o incluso meses. Piense, por ejemplo, en la aplicación que controla el tráfico aéreo de un aeropuerto, en la que gestiona todos los semáforos de una gran ciudad o en la que supervisa el lanzamiento de un cohete, etc. En todos estos ejemplos, las pruebas no sólo se deben centrar en la comprobación del tratamiento de los datos, sino también en aspectos como: la adaptación de la aplicación al resto del sistema informático o la interacción del software con otras aplicaciones ya existentes. Una aplicación informática de tal envergadura puede estar formada por cientos o miles de programas, y todos ellos deben ser probados individual y conjuntamente. Antes de implantar un software de estas características, lo normal es hacer simulaciones con datos reales para verificar su buen funcionamiento.
Para corregir los errores de ejecución o de lógica encontrados en la fase de pruebas, casi siempre, por no decir siempre, hay que modificar el algoritmo y, en algunos casos, incluso hay que volver a analizar el problema, volviendo a pasar por todas las fases de desarrollo; de lo cual se deduce que, cuanto mejor se haga el análisis y el diseño de una aplicación, la probabilidad de encontrar errores en la fase de pruebas será menor.