1. Início
  2. QA
  3. Técnicas de caixa branca e preta para teste de software

Técnicas de caixa branca e preta para teste de software

Caixa Branca

Abordaremos nesse artigo as melhores práticas para utilização das técnicas de teste de caixa branca e caixa preta.

Teste de software não se trata apenas de encontrar bug, mas de investigar, analisar e garantir que a sua entrega será com qualidade em todos os aspectos possíveis (qualidade do código desenvolvido, dos requisitos acordados, dos padrões adotados e afins).

Com a crescente busca por uma entrega cada vez mais ágil, é oportuno falarmos que nada adianta entregarmos algo que está em desacordo com o que foi combinado com os stakeholders.

Dessa forma, conhecer e adotar técnicas para automatizar os testes de software com selenium fazem toda a diferença na hora de validarmos a entrega do produto.

As maiores vantagens de testes automatizados!

O que é teste de caixa branca?

teste de caixa branca
O teste de caixa branca é muito importante para garantir a integridade dos componentes!

O teste de caixa branca possui esse nome porque o testador tem acesso à estrutura interna da aplicação. Logo, seu foco é garantir que os componentes do software estejam concisos.

Nesse sentido, esse tipo de teste também é conhecido como teste estrutural ou caixa de vidro, já que busca garantir a qualidade na implementação do sistema. Logo, ele tem por objetivo validar, apenas, a lógica do produto.

Leia nosso artigo sobre quando testar o código da aplicação.

Desvendando a caixa branca

 teste de condição e teste de ciclo
Entenda agora mais detalhes sobre a forma de testar com a técnica da caixa branca!

A partir disso, ele é comumente realizado utilizando-se o código-fonte. Portanto, exige mais conhecimento técnico por parte do testador, sem contar o maior custo. Por ser baseado na implementação, quando a alteramos, também precisamos alterar o teste.

Tendo isso em mente, existem algumas práticas que visam amplificar a efetividade do teste de caixa branca. Desse modo, veremos duas, a saber: teste de condição e teste de ciclo.

Teste de condição

Essa técnica é simples, pois sua proposta é avaliar se os operadores/variáveis lógicos (booleanos – true/false) estão consistentes.

Apenas isso!

Teste de ciclo

Quem nunca precisou testar uma estrutura de repetição (for/while)? De modo bem simples, é justamente isso que essa técnica faz: valida estruturas de repetição.

Para isso, ela divide os ciclos em 4 tipos: desestruturado, simples, aninhado e concatenado.

O ciclo desestrutrado nada mais é do que o conjunto de blocos de repetição utilizados de maneira desordenada.

Por conta disso, ao ser identificado, deve ser reestruturado, já que que aumenta consideravelmente o custo dos testes e da manutenção do sistema.

Já o ciclo simples, como o próprio nome diz, é apenas uma estrutura de repetição sendo testada.

Ciclos aninhados são ciclos dentro de ciclos.

E, por último mas não menos importante, os ciclos concatenados no teste de caixa branca são estruturas de repetição dependentes, ou seja, para testar o bloco 2, eu preciso garantir que o bloco 1 é coerente.

Afinal, o que é teste de caixa preta?

o que é teste de caixa preta?
O teste de caixa preta pode ser também chamado de teste funcional!

Diferente do teste de caixa branca, ele possui esse nome porque o código-fonte é ignorado no teste. Assim, ao se utilizar dessa técnica, o tester não está preocupado com os elementos constitutivos do software, mas em como ele funciona.

Nesse sentido, esse tipo de teste também é conhecido como teste funcional, já que busca garantir que os requisitos funcionais do produto estão consistentes.

Logo, ele tem por objetivo validar as entradas e saídas do sistema.

Aprenda como aplicar Scrum em projetos de teste de software!

Desvendando a caixa preta

caixa preta e a interface do produto
Utilize o UX para garantir melhores resultados do teste de caixa preta!

A partir disso, ele é comumente realizado utilizando-se da experiência do usuário, ou seja, através da interface do produto. 

Com isso, para aumentarmos a qualidade e, consequentemente, blindarmos o software de falhas, entendemos que todas as entradas/saídas possíveis precisam ser testadas.

Contudo, sabemos que isso — na grande parte dos casos — é humanamente impossível. 

Ademais, a falta de clareza dos requisitos pode (e vai) impactar nas entradas e saídas aceitas para o teste. 

Isso quer dizer que, além da volumetria de dados que teremos que validar, eles podem não ser adotados nos testes.

Por exemplo: imagine que você utiliza apenas números para testar um campo de CPF, mas o desenvolvedor utiliza o campo como string (caracteres alfanuméricos).

Percebeu que os dados utilizados em seu teste podem não ser aceitos por desconsiderarem uma grande parte de dados que podem (mas não devem) ser aceitos?

Tendo isso em mente, existem algumas práticas que visam amplificar a efetividade dessa técnica.

Desse modo, veremos três, a saber: particionamento de equivalência, análise de valor limite e tabela de decisão.

Particionamento de equivalência

Imagine que você tenha um campo que receba apenas números pares. É necessário validar que o tal campo não recebe todos os números ímpares?

Segundo a técnica de partição de equivalência, não. Ela afirma que, sendo o resultado final correspondente para diferentes entradas, basta ordená-las em conjuntos e testar apenas um dado de cada.

No caso do cenário que formulamos, o número 5 e o número 11 possuem a mesma saída (são ímpares), logo, basta testar com um deles. Assim, ao invés de 2 testes com resultados equivalentes, teremos um contemplando a mesma saída.

Análise de valor limite

Essa técnica sugere que utilize apenas os valores que estejam no limite permitido. 

Assim, se você quer validar, por exemplo, que para uma dada operação o usuário deve ter idade superior a dezoito anos, os melhores valores para o teste são: 17, 18 e 19, já que estão no limite do valor mínimo permitido (18).

Tabela de decisão

Pressuponha que você testará uma funcionalidade que possui uma série de condições. Agora, como saber se todos os casos estão apresentando as saídas esperadas?

Para facilitar, imagine o teste de uma baixa de estoque:

Cenário123
Funcionário tem permissão?NãoSimSim
Produto válido?XNãoSim
Produto tem saldo disponível?XXNão
Saída esperadaFuncionário não tem permissãoProduto inválidoProduto sem saldo

Aí é que entra a tabela de decisão, pois ela se baseia na verificação do resultado esperado para os conjuntos formados através da combinação desses parâmetros.

Assim, para o nosso exemplo, temos certeza que ao menos 3 das combinações possíveis possuem cobertura por 3 testes.

Teste de caixa branca e preta: tutorial

Esse vídeo é bem didático e te mostra os testes na prática!

Os testes de caixa branca e preta valem a pena?

notebook aberto com codigos de programacao
Sim, eles valem a pena, já que o foco é na qualidade!

Seja teste de caixa preta (funcional), ou seja teste de caixa branca (caixa de vidro ou estrutural), o importante é garantir que o desenvolvimento tenha a máxima qualidade possível.

Assim, espero que essas técnicas, caso você ainda não conhecesse ou aplicasse, tenham despertado o seu interesse para testes e qualidade de software.

Categorias

Leituras Recomendadas

Quer receber conteúdos incríveis como esses?

Assine nossa newsletter para ficar por dentro de todas as novidades do universo de TI e carreiras tech.