Eu darei minha resposta, com base no conhecimento para testes de segurança, mas IMHO isso pode ser generalizado.
Teste de caixa preta - quando o testador não sabe nada sobre o sistema, componentes, contatos, conexões etc. Isso pode ser útil mais como teste de UI / UX, teste funcional. Exemplo: você não trabalha para a Microsoft e também não possui o código-fonte e precisa testar o MS Office
Teste de caixa cinza - quando o testador tem algum conhecimento sobre como o sistema funciona, algumas informações sobre internos.
Teste de caixa branca - quando o testador tem ou pode obter todas as informações sobre componentes internos, conexões, princípios de trabalho do produto testado. Exemplo: testando o kernel do Linux.
Para referência:
Teste de caixa preta (Wikipedia)
Teste de caixa branca (Wikipedia)
Teste de caixa cinza (Wikipedia)