ANÁLISE COMBINATÓRIA COM PAIRWISE – PRATICANDO TESTES ÁGEIS #5

Análise combinatória nada mais é que um conjunto de possibilidades que é construído por elementos finitos, ou seja, com ele conseguimos determinar o número total de possibilidades de um evento ocorrer. Por exemplo:

Um passageiro saindo de São Paulo pode escolher os destinos de Rio de Janeiro ou Belo Horizonte utilizando a classe executiva ou econômica e reservar assento no corredor ou janela.

Quantas possibilidades de testes são possíveis nesse cenário?

Utilizando análise combinatória faríamos:

Opções de Destinos x Opções de Classes x Opções de Assento
2 x 2 x 2 = 8.

Realizando esse simples procedimento temos o número de casos de testes possíveis para este cenário, mas ainda será necessário transformar esse número em algo que seja visual. Poderíamos fazer isso utilizando uma planilha, por exemplo. Para essa situação não demoraríamos muito tempo, mas imagina se tivéssemos muito mais parâmetros de entrada, quantas horas investiríamos planilhando essas combinações para que se tornassem visuais e quanto tempo seria necessário para testar todas as possibilidades de variações existentes?

A técnica Pairwise significa pares inteligentes e é eficaz na geração de combinações possíveis dado um número de parâmetros. Os casos de teste gerados baseiam-se na observação de que a maioria das falhas são causadas por interações de no máximo dois fatores. Os conjuntos de testes gerados por pares cobrem todas as combinações de dois, portanto, são muito menores que os exaustivos, mas ainda são muito eficazes na busca de defeitos [1].

Esta técnica considera que um número determinado de casos de teste é muito mais representativo para o sistema, em relação à outros cenários que dificilmente serão considerados em tempo de execução. Para determinar quais combinações de dados de entrada utilizar o Pairwise indica que sejam testados todos os pares (“all pairs”) de acordo com as possibilidades de entrada.

Como utilizar?

Há várias ferramentas no mercado, mas irei falar sobre a allpair que pode ser baixada aqui.

Para utilizar o allpair basta descompactar a pasta baixada e dentro dela criar um arquivo texto colocando os parâmetros que serão utilizados para realizar as combinações e após os valores que serão combinados. Importante: todos os dados que deverão formar combinações diferentes devem estar separados pela tecla Tab.

Vejamos um exemplo:

Figura 1 - Arquivo Texto para utilização do allpair

Figura 1 – Arquivo Texto para utilização do allpair

Na figura 1 foram colocadas 3 tipos de entrada, sendo Destino, Classe e Assento e abaixo as variáveis que serão combinadas.

Em seguida utilizando a linha de comando acesse o diretório da pasta descompactada do allpair e execute o comando allpairs seguido do nome do arquivo texto criado. Fazendo dessa forma os cenários serão apresentados na própria linha de comando. Caso queira exportar os cenários gerados informe o comando allpairs + nome do arquivo texto criado + sinal > seguido do nome e extensão do arquivo que deseja criar.

Figura 2 - Criando combinações de casos de testes

Figura 2 – Criando combinações de casos de testes

No exemplo da figura 2 a extensão do arquivo que será gerado com os casos de testes é .ods (OpenOffice), mas poderia ser qualquer outra extensão.

Assim que o comando for executado será criado na mesma pasta o arquivo com a extensão informada contendo todas as combinações geradas.

Figura 3 - Combinações de testes geradas

Figura 3 – Combinações de testes geradas

Na figura 3 podemos ver que além de uma lista com todas as combinações possíveis também há uma lista com os pares inteligentes que representam as combinações geradas.

O que é importante considerar?

Para que esta técnica faça sentido é de extrema importância que as variáveis e seus valores sejam assertivos, ou seja, os parâmetros informados devem ser realmente os que precisam ser combinados para que os testes sejam efetivos. A técnica não irá ajudar se forem colocados no arquivo parâmetros que não irão agregar valor ao teste.

Quando devemos utilizar o PairWise?

Esta técnica deve ser aplicada quando a regra de negócio que será testada for muito complexa e existir muitas regras que dependem uma das outras. Nessas situações utilizando a análise combinatória podemos ter um número muito elevado de cenários tendendo ao infinito. Portanto, aplicamos esta técnica com o objetivo de viabilizar os testes.

Quem ganha com isso?

Imagine uma funcionalidade que possui muitas regras a serem consideradas no levantamento de cenários de testes. Poderíamos levar horas ou até mesmo dias para planilhar todas as combinações e só a partir daí conseguir analisar todos os cenários e dizer quais devem ser executados levando em consideração quais cenários são mais utilizados, com mais alterações, etc. O que realmente importa que é classificar os cenários críticos para o sistema só será feito numa segunda etapa. Se conseguirmos antecipar essa análise, então redirecionaremos nosso esforço em o que cada um pode fazer para que consigamos atingir o maior número de cobertura possível, exemplo, N% dos cenários críticos levantados serão cobertos por testes automatizados e outros N% serão cobertos nos testes manuais.

Sendo assim a resposta para esta pergunta é: todos ganham.

PairWise é um escudo mágico

Definitivamente, NÃO. O grande benefício dessa técnica é a economia de tempo e esforço no momento de levantar todos os cenários possíveis de testes e quais poderiam ser executados que representassem grande parte das combinações geradas. O Pairwise não elimina a necessidade de outras técnicas de testes. Nenhuma técnica deve ser utilizada sozinha, portanto o Pairwise é um complemento para as nossas atividades.

Além disso, nenhuma técnica de teste substitui a experiência de um Analista de Testes, sendo necessário em todo planejamento uma análise de testes baseados em risco.

Conclusão

Se pudéssemos criaríamos um muro para que nenhum bug fosse pego em produção e assim teríamos 100% de cobertura de testes. No entanto, isso sairia muito caro e seria muito demorado. Então criamos uma “cerca” para garantir N% de cobertura confiável dos testes.

Para nos ajudar no levantamento dos cenários de testes podemos utilizar a ferramenta allpair que é baseada em análise combinatória com Pairwise como complemento das nossas atividades de testes. Dessa forma investiremos mais tempo na classificação e priorização dos cenários críticos uma vez que a quantidade já está proposta.

Referências

[1] http://pairwise.org/

[2] https://www.youtube.com/watch?v=BO0vYwtXuLw

Por EMANUELLE BERNARDO SPONTON

Formada em Tecnologia e Análise de Desenvolvimento de Sistemas, Certificada em Testes (Foundation Level - CTFL), e-learning em Gestão de Projetos - FGV, cursando Gestão e Estratégia de Empresas - Instituto Unicamp

Postado em: 20 de junho de 2017

Confira outros artigos do nosso blog

Falando sobre Teste de Intrusão (ou PenTest)

03 de abril de 2018

Jacqueline Costa

Protractor – Testes automáticos end-to-end para aplicações em Angular

07 de dezembro de 2017

Jacqueline Costa

Testes em Node.js

04 de dezembro de 2017

Alan Cesar Elias

Automatizando Testes de Contrato API REST – Parte 1

30 de novembro de 2017

Monise Costa

Deixe seu comentário