Una forma de ver cualquier sistema es como una caja que tiene entradas (lo que entra en la caja) y salidas (lo que sale de la caja). Un "recuadro blanco" o "recuadro transparente" significa que uno puede ver las partes internas del sistema, o en otras palabras, ver dentro del recuadro. Una "caja negra" significa que no se pueden ver los elementos internos del sistema o dentro de la caja.
Los desarrolladores de pruebas tienen la posibilidad de acceder al codigo fuente de la aplicación, analizan cada linea de codigo, cada clase y función del software Otro ejemplo de prueba de “caja blanca” es la prueba unitaria donde los desarrolladores escriben casos de prueba, a menudo automatizados, para verificar cada unidad de código, como una función, método o clase. Los casos de prueba están orientados hacia el código real y para asegurarse de que cada unidad funcione como se supone que cumple con el diseño.
Las pruebas de caja negra se reducen a entradas y salidas. Para una unica entrada siempre habra una unica salida. Un ejemplo de tal prueba es la Prueba de aceptación del usuario, donde la persona que realiza la prueba no tiene acceso al código, no le preocupa cómo se implementó el sistema, sino que prueba que el sistema cumple con los requisitos del usuario y funciona como se espera para el típico entrada con la que el sistema necesita trabajar.