ANALOGÍA DEL CONCEPTO DE CAJA NEGRA Y CAJA
BLANCA
Un vendedor quiere ofrecernos una máquina
que al momento de ingresarle cualquier
cantidad de dinero, sale el doble de la cantidad
ingresada. ¿Cómo comprobamos que sirve?
OTRO EJEMPLO
RETROEXCAVADORA:
Caja Negra? Probar Excavar.
Caja Blanca? No excava porque se
quedó sin combustible, cable
desconectado, descarga de batería.
Comprobación:
Si el vendedor nos dijera que podemos destapar la máquina
comprobaríamos su funcionamiento interno:
Caja
Negra
Caja
Blanca
Caja negra
Elemento que es estudiado desde el punto de vista de
las entradas que recibe y las salidas o respuestas que
produce, sin tener en cuenta su funcionamiento
interno.
Qué es lo que hace, pero sin dar importancia a cómo
lo hace.
Define las entradas y salidas, es decir, su interfaz; en
cambio, no se precisa definir ni conocer los
detalles internos de su funcionamiento."
Caja negra
Es el estudio de un módulo o elemento de un
sistema, desde su parte externa.
Estudia de qué forma las entradas y salidas de
un módulo interactúan y funcionan con otros
módulos cercanos.
Técnicas usadas en
Caja negra
Disponible el Ejecutable, el DLL, el JAR, el Lib, el Bin,
o cualquier archivo ejecutable (que no sea código
fuente).
Se proporcionan las entradas y se verifican las salidas.
No se enfoca en lo que el ejecutable haga
internamente, ya que no hay acceso al código fuente
del ejecutable.
Verificar que la salida es la esperada, según los
requerimientos bajo los cuales el ejecutable fue
implementado.
Ejemplos:
Ejemplos típicos de pruebas de caja negra son la
comprobación de valores límite (por ejemplo que se
permita sólo valores positivos), pruebas de integridad
de la base de datos (comprobar que los datos
ingresados a una tabla sean los correctos), pruebas de
situaciones de excepción (comprobar que al momento
de un error se muestre el error y permita regresar al
programa), o pruebas de rendimiento del sistema
(comprobar si al momento de cargar cierta cantidad de
datos el sistema no se pone lento).
Caja Blanca
En programación, se denomina caja
blanca a un tipo de pruebas de software
que se realiza sobre las funciones
internas de un módulo.
Las pruebas de caja blanca están
dirigidas a las funciones internas.
Técnicas usadas en
Caja blanca
La cobertura de caminos (pruebas que hagan
que se recorran todos los posibles caminos de
ejecución).
Pruebas sobre las expresiones lógico-aritméticas.
Pruebas de camino de datos (definición-uso de
variables).
Comprobación de bucles (se verifican los bucles
para 0, 1 y n iteraciones, y luego para las
iteraciones máximas, máximas menos uno y más
uno.
Técnicas usadas en
Caja blanca
Las pruebas de caja blanca se llevan a cabo en primer lugar,
sobre un módulo concreto, para luego realizar las de caja negra
sobre varios subsistemas (integración).
En los sistemas orientados a objetos, las pruebas de caja blanca
pueden aplicarse a los métodos de la clase, pero según varias
opiniones, ese esfuerzo debería dedicarse a otro tipo de pruebas
más especializadas (un argumento podría ser que los métodos de
una clase suelen ser menos complejos que los de una función de
programación estructurada).
Puede utilizar recursos como el Debugging.
En pruebas de Caja Blanca, puedo proveer la solución a cualquier
desperfecto que se encuentre en el código a la hora de probar, o
reportar a los desarrolladores la solución al desperfecto y no solo
la existencia del mismo.
Ejemplos:
Los ejemplos típicos de esta tipo de pruebas son las
pruebas unitarias, entre éstas se puede citar:
Evaluar si el funcionamiento de cada uno de los
métodos de una clase se comporta como se espera.
Cuando una parte del código ha sido modificado y se
desea ver que el nuevo código cumple con los
requerimientos anteriores y que no se ha alterado su
funcionalidad después de la nueva modificación.
Si existen variables o librerías inutilizables.
Herramientas más
utilizadas
Junit: Entorno de pruebas para
Java.
PHPunit: Entorno de pruebas
para el lenguaje PHP.
Nunit: Entorno de pruebas para
.NET.
Ventajas y desventajas
Para la Caja Negra se requiere menos habilidad
técnica, menos tiempo y menos herramientas. Por
ende, menos costo. Pero solo permite detectar errores
y fallos pero no se acerca a la solución de éstos.
Para la Caja Blanca se requiere más habilidad técnica
(en específico, habilidad con la tecnología con la que
se implementó lo que se está probando), más tiempo
(porque son más rigurosas) y más herramientas
(requiere IDE's más poderosos, debuggers, ambientes
de pruebas, etc). Pero, a cambio, provee la solución a
los desperfectos que pueden encontrarse durante la
fase de pruebas.