Páginas

terça-feira, 19 de abril de 2011

[Técnica de Escrita de Testes] ALLPAIRS Test Case Generation Tool

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: 


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:  http://www.york.ac.uk/depts/maths/tables/orthogonal.htm 
Fonte: Luiz Gustavo @ Testavo


Outras boas Referências:

 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  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 > TESTCASES.TXT". 
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:




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




    Print2: Executando o allpairs. : "ALLPAIRS TESTE.TXT > TESTCASES.TXT".




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

3 comentários:

Karla Viana disse...

Parabéns Felipe otimo post

Justin Hunter disse...

Good post. Please also see http://hexawise.com.

Thank you.

More AllPairs and pairwise software testing information is available (in English) at: http://bit.ly/bundles/hexawise/1

Leandro Bosse disse...

Faz tempo que não leio conteúdo de qualidade que não seja gringo.
Excelente post! Parabéns!