Lucas Dittrich
Serasa
Published in
5 min readAug 26, 2019

--

TÉCNICAS DE CAIXA PRETA E BRANCA PARA TESTE DE SOFTWARE

Pexels

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 testar o software fazem toda a diferença na hora de validarmos a entrega do produto.

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

Afinal, o que é teste de caixa preta?

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.

>>Leitura Recomendada:
Aprenda como aplicar Scrum em
projetos de teste de software

Desvendando a caixa preta

Caixa preta

É 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 sejam utilizados 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:

Tabela de decisão com um exemplo para baixa de estoque

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.

E o que é 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.

Desvendando a caixa branca

Pexels

É 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 dessa técnica. 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 desestruturado 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, ciclos concatenados são estruturas de repetição dependentes, ou seja, para testar o bloco 2, eu preciso garantir que o bloco 1 é coerente.

Recapitulando…

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 conhecia ou não aplicava, tenham despertado o seu interesse para testes e qualidade de software.

Curtiu?

👍🏼 Não esqueça de deixar seu like

💬 Caso queira, deixe a sua opinião, ela é muito bem-vinda

🚀 Ah, se o artigo foi útil, compartilhe!

--

--