Saltar la navegación

2.- Tipos de prueba.

Caso práctico

Mujer de pelo largo mirando del frente.

Juan y María están implementando la mayor parte de la aplicación. ¿Es correcto lo realizado hasta ahora? ¿Cómo se prueba los valores devueltos por una función o método? ¿Es posible seguir la ejecución de un programa, y ver si toma los caminos diseñados?

No existe una clasificación oficial o formal, sobre los diversos tipos de pruebas de software. En la ingeniería del software, nos encontramos con dos enfoques fundamentales:

Esquema que muestra una caja negra que representa un sistema o módulo, que recibe una flecha con las entradas y devuelve una flecha con las salidas.

  • Prueba de la Caja Negra (Black Box Testing): cuando una aplicación es probada usando su interfaz externa, sin preocuparnos de la implementación de la misma. Aquí lo fundamental es comprobar que los resultados de la ejecución de la aplicación, son los esperados, en función de las entradas que recibe.

Una prueba de tipo caja negra se lleva a cabo sin tener necesidad de conocer la estructura interna del sistema. Cuando se realiza este tipo de pruebas, sólo se conocen las entradas adecuadas que deberá recibir la aplicación, así como las salidas que les correspondan, pero no se conoce el proceso mediante el cual la aplicación obtiene esos resultados.

En el siguiente ejemplo:
if(nota>=5)
      System.out.println("Has suspendido");     
else
       System.out.println("Has aprobado");
Se detecta un error mediante las pruebas de caja negra. Se entiende que tener una nota superior a 5 debería dar el mensaje de superado y viceversa. Los mensajes están intercambiados.

Esquema que muestra los diferentes caminos que puede tomar un programa, en función de las entradas producidas. En función del camino seguido, se producen las salidas.

  • Prueba de la Caja Blanca (White Box Testing): en este caso, se prueba la aplicación desde dentro, usando su lógica de aplicación.

En contraposición a lo anterior, una prueba de Caja Blanca, va a analizar y probar directamente el código de la aplicación, intentando localizar estructuras incorrectas o ineficientes en el código. Como se deriva de lo anterior, para llevar a cabo una prueba de Caja Blanca, es necesario un conocimiento específico del código, para poder analizar los resultados de las pruebas.

A continuación se muestra un código que presenta un error detectable mediante las pruebas de caja blanca:

 if(nota>=5)
      System.out.println("Has aprobado");     
else
      if(nota<5)
             System.out.println("Has suspendido");
       else
             System.out.println("Esta instrucción nunca se ejecutará.");
Aunque el programa dará el resultado esperado para cualquier nota (comprobación que se lleva a cabo con las pruebas de caja negra-funcionales), presenta un error en su estructura, el else nunca es alcanzado. De este error nos daremos cuenta gracias a las pruebas de caja blanca.

arte lógica del ordenador formado por un conjunto de instrucciones.

Reflexiona

Resulta habitual, que en una empresa de desarrollo de software se gaste el 40 por ciento del esfuerzo de desarrollo en la prueba ¿Por qué es tan importante la prueba? ¿Qué tipos de errores se intentan solucionar con las pruebas?