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, y
poniendo a prueba al programa en aspectos críticos.
Por ejemplo, el código ejecutable de un programa que sirva
para
calcular la suma dos números enteros cualesquiera, 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 este ejemplo, 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
adpatació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. |