Otimização na criação e cobertura dos testes unitários

Marcelo Soares
CWI Software
Published in
2 min readDec 12, 2019

Nós, programadores, somos responsáveis por implementar sistemas, desenvolver testes, realizar builds e outras tarefas a depender do fluxo de trabalho da companhia onde estamos trabalhando. Somados a estas tarefas, têm-se os prazos de entrega, pressões e reuniões. Devido a isso, evitar desperdício de tempo é de suma importância!!

Quando nós criamos testes unitários, devemos pensar nas diversas entradas possíveis que o método que estamos testando é capaz de receber. Essa quantidade de parâmetros de entrada pode ser 1, 2, 3 ou inúmeras, a depender da função. E testar todos esses inputs leva tempo; o que nos leva a estudar uma forma de otimização nesta etapa no desenvolvimento dos testes unitários.

Dentro do campo da ciência da computação, existem algumas técnicas para resolver esse problema citado. Vou comentar duas dessas, que foram propostas por Glenford Myers, em seu livro “”The Art of Software Testing””. Segue:

  1. Particionamento por Equivalência
  2. Análise de Valor Limite

A primeira técnica, também conhecida como classe de equivalência, consiste em reduzir o número de entradas, para um conjunto bem definido de dados, onde estas são organizadas em domínios/classes ou partição, a fim de filtrar um subconjunto de parâmetros. Vejamos um exemplo:

Para a entrada de dados de uma idade, é aceito somente valores de 0 a 130.

Nesse cenário, temos 3 partições de equivalência, onde qualquer valor entre 0–130, produzirá um resultado X e, valores menores que -1 e maiores que 130, vão produzir um resultado Y.

Neste último exemplo, é preciso criar somente três casos de testes, conforme abaixo.

Por fim, temos a Análise de Valor Limite, que é uma técnica complementar, usada junto com a partição de equivalência. A ideia é utilizar os valores mínimos e máximos de cada partição. Baseado no exemplo anterior, poderíamos definir os seguintes valores limites.

Neste exemplo, foi usado a Análise de Valor Limite por “intervalo de valores”.

Portanto, ao utilizar as técnicas citadas, consegue-se otimizar as entradas e aumentar a cobertura de testes desenvolvidos, com um menor tempo possível.

REFERÊNCIAS:

  • MYERS, G.; BADGETT, T.; THOMAS, T.; SANDLER, C.; “The Art of Software Testing”. Wiley, 3rd Edition, 2011

--

--

Marcelo Soares
CWI Software

Desenvolvedor e professor da área de Tecnologia da informação.