@wscld
Published on

Abordagem de caixa branca e caixa preta nos testes unitários

Authors
  • avatar
    Name
    Wesley Caldas
    Twitter

Abordagem de caixa branca e caixa preta nos testes unitários

Ao escrever testes unitários, muitas vezes nos perguntamos “o que testar?” e “como testar?”. São perguntas cruciais para mentalizar a estrutura do código e dos testes. No desenvolvimento de software é legal saber que para testar um código existem tipos de abordagens diferentes, como a abordagem Caixa Preta e a Caixa Branca.

Abordagem Caixa Preta

Nesse tipo de abordagem, você se concentra apenas nos resultados observáveis externamente. Você testa a funcionalidade do componente como um usuário externo faria, sem se preocupar com a implementação ou como o código funciona internamente. Isso geralmente envolve testar as interfaces públicas do componente, enviando inputs e observando os outputs. Um exemplo é um teste onde o usuário deixa um campo obrigatório em branco e o teste deve verificar se o botão de avançar está desabilitado.

    // Exemplo de teste de caixa preta
    it('Botão de avançar permanece desabilitado quando campo obrigatório está vazio', () => {
      // Simula o comportamento do componente
      // Verifica se o botão de avançar está desabilitado
      // após deixar o campo obrigatório em branco
    });

Abordagem Caixa Branca

Nesse caso, você testa funções internas para garantir que partes cruciais da lógica interna estejam funcionando corretamente. Isso envolve a criação de testes para funções internas que têm uma importância crítica para o comportamento geral do componente ou até mesmo de regras de negócio. Nessa abordagem não testamos o conteúdo visual da tela, e sim o comportamento do código.

    // Exemplo de teste de caixa branca
    it('Função de cálculo de desconto retorna valor correto', () => {
      // Chama a função interna de cálculo de desconto
      // Verifica se o valor retornado corresponde ao esperado
    });

Em resumo

Caixa Preta:

✅ Teste com foco nas funcionalidades visíveis ao usuário

✅ Não se preocupa com a implementação do código, e sim com o resultado final

Caixa Branca:

✅ Teste em foco na implementação do código

✅ Testa funcionalidades não necessáriamente visíveis ao usuário