# Teste de caixa-preta

Teste de caixa-preta é um teste de software para verificar a saída dos dados usando entradas de vários tipos. Tais entradas não são escolhidas conforme a estrutura do programa.
Quanto mais entradas são fornecidas, mais rico será o teste. Numa situação ideal todas as entradas possíveis seriam testadas, mas na ampla maioria dos casos isso é impossível. Outro problema é que a especificação pode estar ambígua em relação ao sistema produzido, e como resultado as entradas especificadas podem não ser as mesmas aceitas para o teste. Uma abordagem mais realista para o teste de caixa-preta é escolher um subconjunto de entradas que maximize a riqueza do teste. Podem-se agrupar subconjuntos de entradas possíveis que são processadas similarmente, de forma que testar somente um elemento desse subconjunto serve para averiguar a qualidade de todo o subconjunto. Por exemplo, em um sistema que aceita um inteiro como entrada, testar todos os casos possíveis pode gerar pelo menos dezenas de milhares de casos de testes distintos. Entretanto, a partir da especificação do sistema, pode-se encontrar um subconjunto de inteiros que maximizem a qualidade do teste. Depende do propósito do sistema, mas casos possíveis incluem inteiros pares, inteiros ímpares, zero, inteiros positivos, inteiros negativos, o maior inteiro, o menor inteiro.
Essa técnica é aplicável a todas as fases de teste:
* teste de integração
* teste de sistema
* teste de aceitação
A aplicação de técnicas de teste leva o testador a produzir um conjunto de casos de teste (ou situações de teste). A aplicação combinada de outra técnica – técnica de particionamento de equivalência (ou uso de classes de equivalência) permite avaliar se a quantidade de casos de teste produzida é coerente. A partir das classes de equivalência identificadas, o testador construirá casos de teste que atuem nos limites superiores e inferiores destas classes, de forma que um número mínimo de casos de teste permita a maior cobertura de teste possível.
Uma abordagem no desenvolvimento do teste de caixa-preta é o teste baseado na especificação, de forma que as funcionalidades são testadas de acordo com os requisitos. Apesar de necessário, esse tipo de teste é insuficiente para identificar certos riscos num projeto de software. O testador não está interessado em como as entradas são processadas, ele só acompanha as saídas produzidas pelo sistema. Ou seja, só são observadas se as saídas são coerentes para as entradas dadas.
Em boa parte das empresas, uma equipe projeta o software enquanto outra o testa. A grande desvantagem dessa técnica é que nem todos os tipos de entrada são testados e não existem "guias" para as entradas.

## Técnicas de teste típicas

Técnicas típicas de teste de caixa preta incluem:
* Testes baseados em Grafo
* Particionamento de equivalência
* Análise de valor limite
* Teste de tabela de decisão
* Teste de todos os pares
* Tabelas de estado de transição
* Teste de caso de uso

## Hardware

Dispositivos de teste funcional como fontes de alimentação, amplificadores, e muitos outros dispositivos elétricos de função simples são comuns na indústria eletrônica. Testes funcionais automatizados de características especificadas são usadas em testes de produção, e são parte da validação do projeto.