A la hora de desarrollar un producto de software, es muy importante que este pase por diferentes fases de prueba para comprobar el buen funcionamiento del producto. Durante estas fases de testeo hay que verificar que nuestro producto no es susceptible a errores y que es capaz de gestionar cualquier comportamiento no definido para el mismo. Debido a la gran cantidad de pruebas por las que debe pasar nuestro producto, habrá algunas que requieran de un conocimiento profundo del programa para poder realizarlas mientras que otras serán menos exigentes en cuanto al conocimiento de la estructura interna del programa.
El primer caso hace referencia a lo que se conoce como white box, o caja blanca. El segundo caso, que no requiere de un conocimiento profundo sobre la estructura interna del programa, es lo que se conoce como black box, o caja negra. Es decir, el concepto de caja negra consiste en esconder las funciones complejas de un sistema/función.

De este modo, mediante el uso de una caja negra, podremos comprobar el buen funcionamiento o no de un programa únicamente observando el resultado que arroja. En ningún momento nos será necesario saber el cómo se ha producido el resultado dado. Por ejemplo, si queremos probar que una app de envío de correos electrónicos funciona correctamente, bastará con enviar un mensaje a un contacto y comprobar que dicho contacto ha recibido el mensaje. En este ejemplo se usa una caja negra porque no se necesita saber cómo se establecen las conexiones para que el mensaje llegue de un lugar a otro, solo se necesita verificar si el resultado mostrado es el esperado.
Para seguir aprendiendo…
Wikipedia: Caja negra (sistemas)
EcuRed: Pruebas de caja negra
Carolbr: CAJA NEGRA