Tipos de teste de caixa branca, Teste de caixa preta

Os testes de software são fundamentais para garantir a qualidade, segurança e desempenho das aplicações. Dentre os tipos mais conhecidos, destacam-se os testes de caixa branca e caixa preta, cada um com sua abordagem, objetivos e técnicas específicas. Neste artigo, vamos entender as diferenças entre eles e explorar exemplos práticos com a linguagem Java para facilitar a compreensão.


O que é Teste de Caixa Branca?

O teste de caixa branca (ou teste estrutural) é aquele em que o testador tem acesso ao código-fonte da aplicação. A ideia é verificar o funcionamento interno do sistema, testando estruturas lógicas, caminhos de decisão, laços e fluxos de dados.

🔍 Técnicas comuns:

  • Cobertura de instrução: verificar se todas as linhas de código foram executadas.

  • Cobertura de decisão: testar todas as estruturas de decisão (if, switch, while, etc).

  • Cobertura de caminho: explorar todos os fluxos possíveis de execução.

Exemplo prático em Java:

public class ClassificadorIdade {

    public static String classificar(int idade) {
        if (idade < 12) {
            return "Criança";
        } else if (idade < 18) {
            return "Adolescente";
        } else {
            return "Adulto";
        }
    }
}

No teste de caixa branca, você analisaria o código-fonte diretamente e criaria testes que percorrem todos os caminhos:

Esse conjunto garante 100% de cobertura de decisão e instrução para esse método.


O que é Teste de Caixa Preta?

O teste de caixa preta ignora a implementação interna. O foco está nos requisitos funcionais: o sistema retorna as respostas corretas dadas certas entradas?

🔍 Técnicas comuns:

  • Partição de equivalência

  • Análise de valor-limite

  • Tabela de decisão

  • Casos de uso

✅ Exemplo prático em Java:

Sem conhecer o código, o testador sabe que:

  • Se a idade for menor que 12 → deve retornar "Criança".

  • Se a idade for entre 12 e 17 → "Adolescente".

  • A partir de 18 → "Adulto".

Cria-se testes com foco nas entradas e saídas esperadas:

Para esse último teste, seria necessário adaptar o método para lançar uma exceção caso a idade seja negativa.


Comparativo entre Caixa Branca e Caixa Preta

Característica
Caixa Branca
Caixa Preta

Visibilidade do código

Requer acesso ao código-fonte

Não requer acesso ao código

Foco

Lógica e estrutura interna

Funcionalidade e requisitos

Quem realiza?

Desenvolvedores ou testadores técnicos

Testadores, QA ou analistas

Exemplos de ferramenta

JUnit com cobertura de código

JUnit, Selenium, Postman, etc.

Gráficos de Cobertura de Testes

O que é a cobertura de testes?

A cobertura de testes indica quantas partes do código foram realmente testadas. Em Java, ferramentas como JaCoCo, Cobertura ou EclEmma (Eclipse) geram relatórios visuais após a execução dos testes unitários.

Exemplo de cobertura com JaCoCo:

Suponha que temos a seguinte classe:

E os testes:

Cobertura gerada (exemplo visual de um relatório JaCoCo):

Observação: O método dividir não teve a exceção testada! Logo, falta testar b == 0.


Exemplo de Código com Erros Intencionais

A seguir, um exemplo de código com problemas lógicos e estruturais para fins didáticos. A proposta é que os estudantes identifiquem os erros usando teste de caixa branca.

Erros intencionais:

  1. Lógica invertida no if (retorna "Ímpar" quando é par).

  2. Condição else if (numero % 2 == 1) é redundante — o else já cobriria esse caso.

  3. O else final é morto, nunca será atingido (código morto).

Como testar:

Esse exercício ajuda a diagnosticar erros de lógica que muitas vezes passam despercebidos em revisões manuais.

Last updated