A diferença entre os testes de caixa branca e de caixa preta
Os testes de caixa preta avaliam a funcionalidade do software sem conhecimento do código interno, concentrando-se nas entradas e saídas. Os testes de caixa branca examinam a estrutura e a lógica do código interno, exigindo acesso ao código-fonte.
Os testes de caixa preta são normalmente realizados pelas equipas de QA para validar a funcionalidade visível para o utilizador, utilizando técnicas como o particionamento de equivalência e a análise de valores-limite.
Pelo contrário, os testes de caixa branca são realizados pelos programadores para garantir a correção e a cobertura do código, utilizando métodos como a cobertura de instruções e de ramificações.
A combinação de ambas as abordagens melhora a cobertura dos testes e a qualidade do software.
Neste artigo, vou explicar estes dois tipos de testes, abordando o que são, as principais diferenças entre eles, como são utilizados, bem como as suas vantagens e desvantagens.
O que são os testes de caixa preta?
Os testes de caixa preta, por vezes designados por testes comportamentais, são um tipo de teste de software em que o testador não tem acesso ao código-fonte do sistema que está a ser testado. São normalmente realizados pela equipa de garantia da qualidade e não exigem necessariamente competências técnicas avançadas, como programação.
Nos testes de caixa preta, os casos de teste são escritos com base nas entradas e saídas do AUT, conforme definido nas especificações de requisitos.
As técnicas de teste de caixa preta mais importantes são:
- Particionamento de equivalência: as entradas são categorizadas em classes (ou partições) de equivalência, o que significa que cada valor dentro de uma classe irá gerar o mesmo resultado. Para obter uma boa cobertura dos testes, basta um caso de teste por cada classe de equivalência.
Exemplo: Se um campo aceitar valores inteiros entre 1 e 10, a classe válida contém todos os números entre 1 e 10, e as duas classes inválidas são os números inferiores a 1 e os números superiores a 10. Isto significa que 3 casos de teste no total são suficientes para abranger todas as classes possíveis.
- Análise de valores-limite: são testados os valores extremos de entrada, que têm maior probabilidade de gerar defeitos.
Exemplo: Utilizando o mesmo campo acima, os limites válidos são 1 e 10, e os inválidos são 0 e 11.
- Testes com tabelas de decisão: as relações entre as entradas e as saídas são apresentadas num formato tabular. A tabela tem normalmente colunas para as condições e linhas para as diferentes combinações. Cada linha deve ter um caso de teste correspondente.
Exemplo: Esta técnica é adequada para cenários mais complexos. Suponhamos que temos um pedido de empréstimo bancário com as seguintes condições:
| Condições | Idade igual ou superior a 25 | Rendimento igual ou superior a 50000 USD | Resultado |
|---|---|---|---|
| Condições1 | Idade igual ou superior a 25Verdadeiro | Rendimento igual ou superior a 50000 USDVerdadeiro | ResultadoAprovar empréstimo |
| Condições2 | Idade igual ou superior a 25Verdadeiro | Rendimento igual ou superior a 50000 USDFalso | ResultadoRejeitar empréstimo |
| Condições3 | Idade igual ou superior a 25Falso | Rendimento igual ou superior a 50000 USDFalso | ResultadoEncaminhar para um gestor |
| Condições4 | Idade igual ou superior a 25Falso | Rendimento igual ou superior a 50000 USDFalso | ResultadoRejeitar empréstimo |
Temos quatro combinações possíveis, pelo que é necessário executar quatro casos de teste.
- Testes de transição de estados: verificam o comportamento de um sistema à medida que este transita entre diferentes estados.
Exemplo: Suponhamos que está a testar um sistema básico de acompanhamento de erros. O diagrama de estados é:

As transições disponíveis são:
- De Novo para Em curso
- De Em curso para Em teste
- De Em teste para Fechado
- De Em teste novamente para Em curso
Para obter uma cobertura completa, deve garantir que cada uma das transições e dos estados é testada pelo menos uma vez.
- Testes baseados na experiência, como os testes exploratórios. Este tipo de teste consiste em executar testes com base na experiência do testador com o sistema ou com sistemas semelhantes, bem como no conhecimento do comportamento da aplicação.
Exemplo: Imagine que está a testar uma nova aplicação de redes sociais. O seu objetivo é explorar a aplicação para encontrar quaisquer defeitos ou problemas que precisem de ser corrigidos.
Durante os testes exploratórios, pode realizar as seguintes ações:
- Registar uma nova conta
- Carregar uma fotografia de perfil
- Escrever uma publicação
- Ver o seu próprio perfil
- Procurar amigos
- Enviar um pedido de amizade
- Aceitar um pedido de amizade
- Gostar e comentar uma publicação
Ao utilizar testes exploratórios, realizaria estas ações de forma não estruturada, sem um plano pré-determinado. O foco seria encontrar defeitos ou áreas de melhoria na aplicação.
Se quiser saber mais sobre testes exploratórios, achei o livro de Elisabeth Hendrickson, Explore It!, muito útil.
Have an account? Log In
Vantagens e desvantagens dos testes de caixa preta
É claro que existem benefícios, mas também desvantagens, na realização de testes de caixa preta.
Vantagens:
- É mais demorado
- O controlo sobre os casos de teste é limitado
- Alguns cenários específicos podem ser difíceis de testar
- Informação limitada sobre a causa-raiz da falha
- Pode não detetar determinados erros
- Capacidade limitada para testar o desempenho e a escalabilidade
Desvantagens:
- A preparação do ambiente de teste e a execução dos testes podem ser mais demoradas
- O controlo sobre os casos de teste é limitado
- Alguns cenários específicos podem ser difíceis de testar
- Informação limitada sobre a causa-raiz da falha
- Pode não detetar determinados erros
- Capacidade limitada para testar o desempenho e a escalabilidade
Quando utilizar testes de caixa preta?
As ferramentas de testes de caixa preta podem ser utilizadas em qualquer nível de teste. No entanto, é preferível utilizá-las num nível mais elevado e deixar os testes de nível inferior para os testes de caixa branca. Isto significa que, embora possam funcionar para testar ao nível da unidade, a metodologia de caixa preta é mais adequada para testes de sistema e testes de aceitação.
As técnicas de caixa preta podem ser utilizadas para testes funcionais e não funcionais (como testes de desempenho, usabilidade e acessibilidade).
Também devem ser aplicadas a funcionalidades recentemente implementadas; em alternativa, os casos de teste existentes identificados através destas técnicas podem ser executados durante os testes de regressão.
O que são testes de caixa branca?
A caixa branca (por vezes conhecida como teste de caixa transparente, teste de caixa de vidro, teste baseado no código ou teste estrutural) é um método de teste que se centra no funcionamento interno da UAT.
Abordagens aos testes de caixa branca:
- Cobertura de instruções: todas as instruções de código (linhas de código) são executadas pelo menos uma vez ao nível do código-fonte. A fórmula para calcular a cobertura é:
Cobertura de instruções = (Número de instruções executadas / Número total de instruções no código-fonte) * 100
Exemplo: Suponhamos que temos o seguinte código:
if(condition1 or condition2)) {
print(“test 1 OK”)
}
else {
if(condition3) {
print(“test 2 OK”)
}
}
- Para obter uma cobertura total das instruções, tem de percorrer cada linha de código pelo menos uma vez. Isto significa que são necessários vários testes:
- condition1=true condition2=false, o que imprimirá “test 1 OK”
- condition1=false, condition2=false e condition3=true, o que imprimirá “test 2 OK”.
- Cobertura de ramos: nesta técnica, os cenários de teste abrangem todos os ramos do grafo de fluxo de controlo. Cada resultado possível, verdadeiro e falso, de cada condição é abrangido pelo menos uma vez. A fórmula utilizada para a cobertura de ramos é:
- Cobertura de ramos = (Número de ramos executados / Número total de ramos no código) * 100
- Exemplo: Para o mesmo código, embora a cobertura de instruções seja de 100%, nem todos os ramos possíveis estão cobertos. Será necessário um teste adicional em que:
- condition1=false, condition2=false, condition3=false - desta forma, também cobrimos o caminho falso no segundo if. Nada deverá ser impresso neste caso de teste,
- Cobertura de condições: uma técnica abrangente em que todos os caminhos são testados. Garante que cada caminho da aplicação seja coberto por, pelo menos, um teste. É particularmente útil para aplicações complexas. Exemplo: Para o código acima, precisamos de mais um teste para obter uma cobertura total das condições:
- condition1=false, condition1=true, que terá o mesmo resultado que o primeiro teste, mas cobre uma condição diferente para alcançar o resultado.
Vantagens e desvantagens dos testes de caixa branca
Vejamos as vantagens e desvantagens dos testes de caixa branca.
Vantagens:
- Permitem encontrar erros numa fase inicial do ciclo de vida do desenvolvimento de software
- Testam a estrutura interna do código.
- Testam a cobertura e a lógica do código.
- Melhoram o conhecimento da base de código.
- Podem ser utilizados em testes de desempenho e escalabilidade.
Desvantagens:
- Funcionam melhor num nível de testes mais baixo
- Exigem bons conhecimentos da linguagem de programação do sistema
- Testes limitados na perspetiva do utilizador final
- Podem ignorar cenários do mundo real
Quando utilizar testes de caixa branca
Os testes de caixa branca são mais adequados para níveis inferiores, como os testes unitários e de integração. Isto ajuda a identificar erros e defeitos numa fase inicial do processo de desenvolvimento. Executar estes testes após cada implementação é uma boa prática, especialmente ao trabalhar num ambiente de CI/CD.
Os testes de caixa branca podem ser utilizados para testar funcionalidades, mas também podem ser utilizados para descobrir vulnerabilidades no sistema - algo que seria difícil de conseguir com técnicas de testes de caixa preta.
More Articles
- Como executar agentes de garantia de qualidade em todos os pedidos de alteração com a QA.tech (sem escrever um único guião de testes)
- Migrar do QA Wolf para o Checksum: um guia completo
- Adotar testes baseados em agentes: um guia prático de implementação para líderes de engenharia com a QA.tech
- Como utilizar o Checksum para testes contínuos de ponta a ponta em CI/CD
- Implementação do Dynatrace: um guia completo passo a passo
Testes de caixa preta vs. testes de caixa branca: resumo
Vejamos quais são as principais diferenças entre os testes de caixa preta e os testes de caixa branca:
| Testes de caixa preta | Testes de caixa branca |
| Não é necessário ter conhecimentos sobre o funcionamento interno. | Baseiam-se numa boa compreensão do código do sistema. |
| São realizados principalmente pela equipa de QA. | São normalmente realizados pelos programadores. |
| Centram-se no comportamento do sistema. | Centram-se na lógica e na implementação do software. |
| As técnicas incluem: Particionamento de equivalência Análise de valores-limite Tabela de decisão Transição de estados | As técnicas incluem: Cobertura de instruções Cobertura de ramos Cobertura de condições |
| Os cenários podem ser executados manualmente ou de forma automatizada. | São normalmente realizados através de testes automatizados. |
| São mais adequados para níveis de testes superiores. | Funcionam melhor nos níveis de testes inferiores. |
| Testam na perspetiva dos utilizadores finais. | Testam de uma perspetiva técnica. |
Mas não nos devemos esquecer de que, embora ambas as abordagens tenham vantagens e desvantagens, devemos utilizar as duas no nosso processo de testes, para obter uma boa cobertura dos testes e do código e encontrar os defeitos mais importantes.
Conclusões
Os testes de caixa preta e de caixa branca são duas abordagens diferentes e cada uma é adequada a necessidades diferentes durante o processo de desenvolvimento. Embora os testes de caixa branca sejam realizados principalmente por programadores e se apliquem a testes de nível inferior, e os testes de caixa preta sejam realizados pela equipa de QA em níveis superiores, funcionam melhor quando utilizados em conjunto.
Se gostou deste artigo, subscreva a newsletter para receber todos os artigos recentemente publicados sobre testes e garantia da qualidade!




