Glossário · Fundamentos de testes
Teste caixa-preta
Em inglês: Black-box testing
Também chamado de: teste de caixa preta, testes caixa-preta, teste comportamental, teste baseado em especificação
Definição
Testar um sistema pelas suas entradas e saídas, comparando com os requisitos, sem olhar nem depender do código ou do design interno.
O teste caixa-preta trata o sistema como uma caixa fechada: você fornece entradas, observa as saídas e as compara com o que a especificação diz que deve acontecer. O tester não precisa conhecer a linguagem de programação, a arquitetura nem como o código está estruturado. A maior parte dos testes funcionais, de sistema, de API e de aceitação é caixa-preta.
Exemplo
Uma API de transferência aceita valores de 1 a 10.000. Sem ver nenhuma linha de código, um tester de caixa-preta deriva os testes a partir da regra:
- Partições de equivalência: abaixo da faixa (0), válido (500), acima da faixa (10.001), não numérico (
"abc"). - Limites: 0, 1, 2, 9.999, 10.000, 10.001.
- Resultados esperados: valores válidos retornam
201 Created; os inválidos retornam400 Bad Requestcom uma mensagem de erro e não movimentam dinheiro.
As técnicas usadas aqui, particionamento de equivalência e análise de valor limite, junto com tabelas de decisão, teste de transição de estados e teste pairwise, são as principais técnicas de projeto de teste caixa-preta.
Teste caixa-preta vs caixa-branca
| Caixa-preta | Caixa-branca | |
|---|---|---|
| Base | Requisitos e especificações | Estrutura interna do código |
| Conhecimento necessário | O que o sistema deve fazer | Como o código foi escrito |
| Níveis típicos | Sistema, API, aceitação | Unitário, parte da integração |
| Medido por | Cobertura de requisitos | Cobertura de código (instruções, branches) |
| Encontra | Comportamento ausente ou errado, divergências da especificação | Caminhos não testados, código morto, erros de lógica |
Um não substitui o outro. O teste caixa-preta consegue encontrar funcionalidades que nunca foram implementadas, o que o caixa-branca não consegue, porque não há código para inspecionar. O teste caixa-branca encontra caminhos que a especificação nunca menciona. O teste caixa-cinza combina os dois: testa pela interface usando algum conhecimento interno, como verificar o banco de dados depois de uma chamada de API ou saber qual serviço uma requisição atinge.
Pontos fortes e limitações
Testes caixa-preta são independentes da implementação, então sobrevivem a refatorações e podem ser escritos a partir dos requisitos antes de o código existir. A limitação é que você não consegue saber quais caminhos internos deixou de cobrir e, sem técnicas sistemáticas, é fácil testar só os caminhos felizes óbvios.