[Técnica de Escrita de Testes] ALLPAIRS Test Case Generation Tool
Autor: Felipe Silva | Publicado: 2011-04-19T11:52:00-07:00

Estou testando a ferramenta proposta por James Bach (ALLPAIRS Test Case Generation Tool). Aplicando a tecnica do Pairwise aliado a uma ferramenta de geração automática de casos de testes (ou cenarios). Otmizando e muito o processo da escrita dos testes. Primeiramente vou encaminhar alguns artigos legais sobre a técnica e em seguida demostrarei seu uso. Inclusive, gostaria de salientar que tive o primeiro contato atravez do V EBTS: Minicurso de automação com Luiz Fernando Corrêa. 


1- A Técnica:&nbsp;


Esta técnica é baseada na observação de que a maioria das falhas é causada pela combinação de apenas dois fatores (http://www.pairwise.org/). Em outras palavras, a causa da maioria dos bugs  encontrados quando temos várias condições (ou variáveis) de entrada se  deve ao conflito entre apenas duas delas. Por exemplo, se temos cinco  condições de entradas para que o fluxo de um determinado workflow  prossiga, caso uma falha seja encontrada, existe, aproximadamente, 95%  de chance do motivo da falha ter sido causada pelo conflito entre duas  condições apenas. Dificilmente alguma falha é resultante do conflito de  três condições, muito menos de quatro ou cinco delas. Dessa forma,  conclui-se que não é necessário testar todas as combinações. Em uma  análise sobre testes realizada pelo NIST (www.nist.gov/)  em 2003, apenas três entre 109 relatórios de testes indicaram que o  conflito entre mais de duas combinações foi o responsável pela falha.  Foi dessa estatística que encontrei o 95% citado acima. Baseada nessa idéia, a técnica Pairwise tem como objetivo  otimizar os testes, ou seja, reduzir os casos de testes, mantendo uma  boa cobertura. A técnica seleciona um conjunto dentre todas as  combinações possíveis (todas as combinações = teste exaustivo). Esse  conjunto contém TODAS as combinações entre cada par de variáveis. Cada combinação resultante da aplicação dessa técnica será um caso de  teste. Mas os testes não ficarão descobertos excluindo as demais  combinações? De acordo com as estatísticas nas quais a técnica Pairwise  foi baseada, não. Apesar de que, idealmente, a melhor cobertura seja  aquela com o maior número possível de combinações, temos que olhar  também o lado do custo versus benefício. Estamos cansados de saber que o  teste exaustivo de uma funcionalidade é caro. E muitas vezes,  impossível. 
Fonte: Daniel Lages @ Testexpert

Tabelas de pares (ou Array Ortogonal) Provavelmente a mais complexa e menos utilizada das técnicas avançadas  de Testes de Software. Ela não é utilizada por desconhecimento, pois  muitas pessoas deixam algumas combinações de fora e utilizam outras  milhares de combinações. Dessa forma, os profissionais normalmente  acabam pecando na elaboração desses casos de teste (ou até mesmo durante  a execução dos mesmos), fazendo a chamada "combinatory explosion".  Cuidado!

A tabela de pares é criada quando precisa testar várias  combinações de configurações. Sabe-se que é impraticável testar todas as  possíveis combinações, levando isso em consideração, percebeu-se que a  maior parte dos erros acontece em pares ou triplas. Essa técnica combina  várias colunas de maneira que todos os dados se encontrem pelo menos  uma vez, em pares.
Para melhor entendimento, veja a tabela a seguir.



Cada  coluna significa um item de configuração, e cada linha são os casos de  teste, ou seja, a combinação de valores. Por exemplo: deve-se testar um  sistema fator 1 seria o Sistema Operacional (onde os dois itens  existentes são: Windows XP e Linux) e o fator 2 o Navegador (onde os  dois itens são: Firefox e Internet Explorer). A tabela ficaria assim:



Nessa tabela, perceba que todas as combinações foram testadas, ou seja, não é útil para apenas dois fatores. Como funciona?
Todos  os fatores da coluna um devem ser combinados com todos os fatores da  coluna dois que devem ser combinados com a coluna três e assim por  diante. A ilustração da tabela a seguir, mostra a eficiência dessa  técnica, se fosse fazer um máximo de combinações, três fatores com dois  itens cada, resultariam em seis casos de teste. Portanto, utilizando a  técnica, esses valores diminuem para quatro. Veja como: 



Adaptando  o exemplo anterior, supõe-se que o terceiro fator seria o tipo de  conexão (banda larga e wireless), então, a tabela ficaria assim:



A  pergunta é: está faltando algum valor? A resposta é não. Perceba que  todos os valores da tabela combinam, em pares, com todos os valores da  tabela:
- Windows XP combina com Firefox e IE (coluna dois) e com Banda larga e Wireless (coluna três). Mesma coisa para o Linux.
- Firefox combina com Windows XP e Linux(coluna um) e com Banda larga e Wireless (coluna três). Mesma coisa para o IE.
- Banda larga combina com Windows XP e Linux(coluna um) e com Firefox e IE (coluna dois). Mesma coisa para o Wireless.
Já  existe uma forma de combinar esses fatores de maneira que não precise  ficar gerando manualmente essa tabela. Existe uma técnica chamada  Taguchi Orthogonal Array onde os valores já são pré-estabelecidos e só  devem ser renomeados pelos valores em questão:&nbsp; http://www.york.ac.uk/depts/maths/tables/orthogonal.htm&nbsp;Fonte: Luiz Gustavo @ Testavo 

Outras boas Referências:
&nbsp;http://www.developsense.com/pairwiseTesting.html

One of the leading exponents of the Robust Testing method is Madhav S. Phadke.   His paper, Planning Efficient   Software Tests, describes orthogonal arrays (of strength 2, mostly) and   their application in software testing.
Elfriede Dustin wrote an article called "Orthogonally Speaking" in the September/October   2001 issue of STQE Magazine.
[Phadke, 1997]   Phadke, Madhav S., Planning Efficient   Software Tests. Crosstalk, The Journal of Defense Software Engineering,   October 1997.
http://www.stsc.hill.af.mil/crosstalk/1997/10/planning.asp
[Telcordia,   1997] Cohen, D. M., et. al. The AETG System:   An Approach to Testing Based on Combinatorial Design. IEEE Transactions   On Software Engineering, July 1997 (Vol. 23, No. 7). http://www.argreenhouse.com/papers/gcp/AETGieee97.shtml
Hedayat, A.S., et. al. Orthogonal   Arrays: Theory and Applications. Springer Verlag, August 1999.
Montgomery, Douglas C.Design   and Analysis of Experiments, 5th Edition. Wiley Text Books, June 2000.


2-A Ferramenta:

 Como falei, James Bach disponibiliza em seu site, satisfice , a ferramenta ALLPAIRS totalmente free, licença GNU. O download e instalação é bem simples: baixar o .zip: ALLPAIRS Test Case Generation Tool&nbsp; e extrair em qualquer lugar no PC. Nos arquivos zipados há um documento de instruções gerais, assim como uma planilha de modelo para criação. O segredo é: criar as variáveis no excel ou afins e copiar e colar no notepad, salvando com extenção .txt. Em seguida abrir o prompt DOS e rodar o comanto no diretorio que está o allpairs: "ALLPAIRS VARS.TXT &gt; TESTCASES.TXT".&nbsp;Será criado um arquivo .txt com a lista de testes cases e suas variações para serem criados. Realmente muito bom.
Segue alguns prints para ajudar:



&nbsp;Print1: Criando o .txt, Como falei fiz no excel e copiei para o notepad. Não precisa editar nada.




&nbsp;&nbsp;&nbsp; Print2: Executando o allpairs. : "ALLPAIRS TESTE.TXT &gt; TESTCASES.TXT". 




&nbsp; Print3: Resultado da execução. 17 Testes cases sugeridos.