Nerds-On

Informações, novidades e curiosidades. Tudo e mais um pouco sobre tecnologia da informação

Allpairs – Gerador de casos de testes

Pairwise é um método conhecido na comunidade de testes por diminuir consideravelmente a quantidade de testes quando se necessita testar a combinação de muitas variáveis. Basicamente é feita a combinação por pares das variáveis e removidas as situações que se repetem.

Fazer essas combinações quando se tem uma pequena quantidade de variáveis até é viável manualmente; porém conforme a quantidade de variáveis aumenta, a quantidade de testes necessários também aumenta geometricamente.

James Marcus Bach

Pensando em otimizar esse processo de levantamento de ideias      baseadas no método pairwise, a Satisfice Inc, empresa de James Marcus Bach (foto), desenvolveu uma ferramenta chamada AllPairs, a qual gera casos de teste utilizando o método pairwise baseado nas variáveis informadas pelo usuário.

Quando utilizado o método pairwise combinam-se os valores informados de cada variável, fazendo com que a quantidade de casos de teste seja o produto das quantidades de valores de cada variável, ou seja, se houver uma situação que tenha 10 variáveis com 2 valores possíveis cada, isso vai resultar em 1024 casos de teste diferentes.

Ao utilizar a ferramenta AllPairs, ela vai gerar uma tabela com todas as combinações pareadas possíveis e também outra tabela com as combinações de pares mais prováveis que possam ocorrer, diminuindo – neste caso – de 1024 para apenas 10 combinações de variáveis.


Mão na massa

 Agora que foi explicado como a ferramenta pode nos ajudar na teoria, vamos para a parte prática que é como utilizar essa ferramenta.

Baixe o aplicativo clicando aqui.

Quem não gosta muito de linha de comando estranhará um pouco, pois a ferramenta é executada dessa forma: através de um scripts Perl. É bem fácil a sua utilização, não é a falta de uma interface gráfica que faz a ferramenta perder o seu potencial de otimização na hora de levantar as ideias de teste.

Ao baixar e descompactar a ferramenta, você verá os arquivos conforme exibe imagem a abaixo.

Arquivos da ferramenta

Arquivos da ferramenta

Para explicar rapidamente do que se trata cada arquivo, falarei de cada um deles separadamente.
O executável é o arquivo que será utilizado para executar a ferramenta e gerar o arquivo com todas as situações possíveis de teste e todas as situações que ela recomenda testar.

O arquivo de extensão .pl é o script Perl que roda a ferramenta. O All Pairs é livre e de código aberto, então se você possui conhecimento sobre Perl script e quer mudar a ferramenta para ela executar baseada na sua estratégia ou na estratégia da sua empresa, fique à vontade.

A extensão .rtf é o manual da ferramenta – todo em inglês – porém de uma leitura fácil de fazer até pra quem tem conhecimento básico em inglês.

O arquivo license.txt traz algumas informações sobre a licença da ferramenta, quem desenvolveu e suas restrições de uso.
Os 2 arquivos de nome printing são um exemplo de uso da ferramenta, sendo o arquivo de extensão .txt com as variáveis e valores, e o arquivo de extensão .xls o arquivo com as combinações por par e testes recomendados pela ferramenta.

Chega de explicações, vamos botar a ferramenta para funcionar!
Antes de rodar a ferramenta é preciso criar um arquivo com todas as variáveis que vão ser combinadas e com todos os valores de cada variável. Na primeira linha devem ser escritas todas as variáveis separadas por TAB. Isso mesmo TAB! A ferramenta lê os arquivos e entende o conteúdo de forma tabular.

No nosso exemplo utilizaremos uma situação na qual precisa-se testar um sistema de vôos onde as nossas variáveis são: Cidade, Classe e Assento. Utilizarei um arquivo .txt mesmo.
Quando incluir nossas variáveis no arquivo ele ficará conforme a imagem abaixo.

Variáveis do exemplo

Variáveis do exemplo

Após incluir as variáveis, vamos incluir seus respectivos valores. Estes devem ser informados na mesma coluna da variável, seguindo o esquema de tabulação. No caso de uma variável não ter valor em alguma linha que outra variável tenha, deve-se apenas dar um TAB na coluna dessa variável sem preencher nada.
No exemplo abaixo pode-se verificar que temos 4 cidades, 2 classes e 3 assentos.

Valores do exemplo

Valores do exemplo


Com os valores de cada variável preenchidos, podemos executar a ferramenta para que sejam geradas as combinações de variáveis em pares e as situações de teste recomendadas pela ferramenta.

Para isso abre-se o prompt de comando. Navega-se até a pasta onde foi descompactado. Digita-se o comando allpairs exemplo.txt > resultado.xls, sendo o arquivo exemplo.txt o qual acabamos de criar com as variáveis e valores de cada variável.O arquivo resultado.txt é o arquivo que será gerado pela ferramenta após a execução da mesma.

Comando de execução

Comando de execução

Ao executar o comando acima a ferramenta vai gerar o arquivo resultado.xls com os casos de teste necessários e com as combinações por pares de todas as variáveis e seus valores. Optei por gerar um arquivo em formato de planilha para facilitar a visualização dos resultados.
No arquivo resultado.xls o sistema apresenta a lista de casos de teste abaixo como os casos de teste necessários para cobrir o caso de uso testado no nosso exemplo.

TEST CASES
case Cidade classe assento pairings
1 Rio economica janela 3
2 Rio executiva corredor 3
3 Sao Paulo executiva janela 3
4 Sao Paulo economica corredor 3
5 Brasília economica central 3
6 Brasília executiva janela 2
7 Florianópolis executiva central 3
8 Florianópolis economica janela 2
9 Rio ~economica central 1
10 Sao Paulo ~executiva central 1
11 Brasília ~economica corredor 1
12 Florianópolis ~executiva corredor 1

Tabela de casos de teste requeridos


Os valores apresentados antecedidos por ‘~’, querem dizer que o valor da variável é indiferente para o caso de teste.
No caso apresentado a cima, se você fosse escrever casos de teste para todas as combinações possíveis, escreveria 24 casos de teste, porém a ferramenta gera 12 combinações para obter uma cobertura satisfatória. Claro que isso vai depender da criticidade do seu sistema, se a criticidade for altíssima seria mais provável que a quantidade de testes fosse maior, chegando perto dos 24 casos de teste.

No mesmo arquivo que a ferramenta gera os casos de teste ela também gera todas as combinações possíveis entre pares de variáveis.

PAIRING DETAILS
var1 var2 value1 value2 appearances cases
Cidade assento Rio janela 1 1
Cidade assento Rio corredor 1 2
Cidade assento Rio central 1 9
Cidade assento Sao Paulo janela 1 3
Cidade assento Sao Paulo corredor 1 4
Cidade assento Sao Paulo central 1 10
Cidade assento Brasília janela 1 6
Cidade assento Brasília corredor 1 11
Cidade assento Brasília central 1 5
Cidade assento Florianópolis janela 1 8
Cidade assento Florianópolis corredor 1 12
Cidade assento Florianópolis central 1 7
Cidade classe Rio economica 2 1, 9
Cidade classe Rio executiva 1 2
Cidade classe Sao Paulo economica 1 4
Cidade classe Sao Paulo executiva 2 3, 10
Cidade classe Brasília economica 2 5, 11
Cidade classe Brasília executiva 1 6
Cidade classe Florianópolis economica 1 8
Cidade classe Florianópolis executiva 2 7, 12
assento classe janela economica 2 1, 8
assento classe janela executiva 2 3, 6
assento classe corredor economica 2 4, 11
assento classe corredor executiva 2 2, 12
assento classe central economica 2 5, 9
assento classe central executiva 2 7, 10

Tabela de combinações pareadas das variáveis

Conclusão

A ferramenta é um excelente recurso para quem necessita da utilização do método pairwise na criação de casos de teste. All Pairs consegue reduzir drasticamente a quantidade de casos de teste requeridos como cobertura.

Um ponto a ser considerado é que a ferramenta sugere um nível de cobertura padrão, caso a sua aplicação tenha um nível de criticidade muito alto, ela pode acabar não criando casos de teste necessários para cobrir o nível de cobertura exigido para a aplicação, mas em linhas gerais ela é aderente e é fácil de usar.


Referências

http://www.satisfice.com/tools.shtml

Livro Base de Conhecimento em Teste de Software – Emersion Rios – Editora Martins

Autor: Daniel Ricardo de Amorim

Consultant QA at ThoughtWorks

9 pensamentos sobre “Allpairs – Gerador de casos de testes

  1. ola.. eu fiz o procedimento.. mas na hora de executar ele sempre executa o exemplo..
    do arquivo printing.txt e printing.xls

    sera que preciso fazer algo diferente…

    • Olá Luciana

      Primeiramente obrigado por ler o artigo.

      Se você copiou o arquivo que criou com as possibilidades existentes para a mesma pasta do executável do allpairs deveria ter funcionado.

      O nome do arquivo que você gravou com as possibilidades é exatamente igual ao que você está chamado por linha de comando?

      Caso continue não funcionando, podes postar aqui o texto do seu arquivo de possibilidades existentes que eu verifico o que pode estar acontecendo.

      Grato

      • Ola Daniel, depois que tinha enviado pra voce conseguimos executar…
        Problema era que ao abrir o bloco de notas ele abriu o Context.. e ao inserir tab no Context ele entendeu converte, se eu nao me engano pra espaços…. no momento de executar nao encontrava o arquivo possivelmente por estar com erros e sempre estava lendo o exemplo de vcs…rsrsr..

        Deu Certinho..

        Muito Obrigada pelo retorno

        Posso continuar o contato em caso de duvidas?

        Gostei do modelo…. eu estudei um pouco dele para a prova de certificacao….

        Abraços

      • Olá Luciana,

        Devido a ferramenta trabalhar com uma formatação fixa ela está sujeita a esse tipo de problema mesmo.
        Deve-se tomar cuidado na criação do arquivo para que não ocorre nenhum erro.

        Podem continuar o contato sim.
        Estou a disposição para ajuda-los no que for preciso.

        Grato

      • Olá… gerando algumas informacoes pra conseguir os pares..
        eu tenho 3 variaveis onde, duas delas pode assumir valores S e N.
        E a outra pode assumir: 1, 2 , 3

        Ok.

        O que fiquei na duvida é que geraram duas linhas iguais..

        A linha 2 e a linha 8… por exemplo..

        Isso pode ocorrer mesmo?

        TEST CASES
        case cfrete qtdeitens cimposto pairings
        1 S 2 S 3
        2 S 1 S 3
        3 S 3 N 3
        4 N 2 S 3
        5 N 1 S 3
        6 N 3 S 2
        7 S 2 N 3
        8 S 1 S 2
        9 S 3 S 3
        10 N 1 N 2

        No arquivo TXT esta assim:
        cfrete qtdeitens cimposto
        S 2 S
        N 1 S
        S 3 N

        Deduzo o que possa ser.. acho que “comi bronha” qdo repito os valores S e N. para a variavel ‘Cimposto’ e ‘CFrete’… na verdade
        o aplicativo quem faria isso.. e eu ja adiantei.. o passo…
        Seria isso mesmo?

        Abços

      • Você não deve repetir os valores para Cimporto e Cfrete.
        Na linha onde não há valores para estes campos, apenas de um tab na coluna destas variáveis.

        No caso do teu exemplo ficaria assim.
        Cimposto qtdeitens cfrete
        S 1 S
        N 2 N
        3

        Gerei aqui os casos de teste com o allpairs e a ferramenta me trouxe os testes abaixo.
        TEST CASES
        case Cimposto qtdeitens cfrete pairings
        1 S 1 S 3
        2 N 1 N 3
        3 S 2 N 3
        4 N 2 S 3
        5 S 3 S 2
        6 N 3 N 2

        Conseguiu entender?

        Qualquer coisa pode perguntar que auxilio você como fazer.

      • Sim, :)
        Eu gerei assim tbem depois..rs
        Foi falha minha mesmo….

        -> observei que existem varias ferramentas que cobre alguns tipos de testes…fora a allpairs voce tem informacao de onde posso encontrar outras……?

        Do mais, muito obrigada pelas respostas

  2. Esta ferramenta Web é bem mais simples: http://goo.gl/kTdoB
    É possível adicionar campos conforme a necessidade e até importar de um arquivo.
    Este site é excelente! É só escolher o algoritmo que precisar
    Vc pode até mesmo fazer o pairwise do pairwise
    Caso precise descobrir o que faz cada algoritmo o manual está neste link http://goo.gl/EkRBI
    E se não gostar desta ferramenta web tem outras neste site http://goo.gl/q3pCn