El testing de caja gris es un método de prueba que es una combinación entre el testing de caja negra y el testing de caja blanca. Consiste en ejecutar prueba de caja negra basándose en casos de prueba realizados por personas que conocen el código.
En el testing de caja negra, el tester no conoce la estructura interna del sistema. En contraposición, en el testing de caja blanca, el tester conoce la estructura del sistema. En el testing de caja gris la estructura interna es parcialmente conocida.
Para realizar un testing de caja gris es necesario conocer internamente el sistema. No cómo lo conoceríamos al hacer testing de caja blanca. Pero si es necesario conocer las estructuras de datos y los algoritmos utilizados por el sistema. Esta documentación, es más bien de alto nivel.
El caso de un software orientado a objetos, la técnica de caja gris supone algunas cosas, tales como:
- Activación de métodos
- Informes de estado en clase bajo prueba
- La prueba de informe es inherente a la clase bajo prueba
Cem Kane define las prueba de caja gris “como pruebas que implican las entradas y las salidas, pero se diseñan con información sobre el código”.
Efectos positivos
- Ofrece beneficios combinados: Tiene las ventajas de las pruebas de caja negra y las de caja blanca.
- No intrusivo: Se basa en la especificación funcional y vista arquitectónica, y no en el código fuente o binarios que también son invasivos.
- Pruebas mas inteligentes: Un probador de caja gris conoce internamente cuales son los procesos más complejos, los tipos de datos, las excepciones (o la falta de excepciones). Esto permite diseñar casos de prueba más inteligentes.
- Prueba Imparcial: A pesar de todas las ventajas y funcionalidades anteriores, las pruebas de caja gris mantienen un límite para la prueba entre el probador y el desarrollador.
Efectos negativos
- Cobertura parcial de código: En las pruebas de caja gris, el código fuente o binarios no están disponibles debido al acceso limitado al sistema interno o la estructura de las aplicaciones que se traduce en un acceso limitado para el recorrido de ruta de código.
- Identificación de defectos: En aplicaciones distribuidas, es difícil asociar la identificación de defectos. Aun así, las pruebas de caja gris son una gran ayuda para encontrar la forma adecuada en que estos sistemas generan excepciones y que tan bien son manejadas estas excepciones en los sistemas distribuidos que tienen entorno de servicios Web.