Omitirei a discussão aqui de técnicas de design de teste bem conhecidas e amplamente utilizadas, como classes de equivalência, teste de valor limite e teste de pares; discutirei outras técnicas menos comuns. Você também pode ler meu artigo sobre problemas com técnicas de design de testes combinatórios .
As tabelas de decisão são uma excelente ferramenta para documentar requisitos e descrever a funcionalidade de uma aplicação. Essas tabelas são muito convenientes para descrever a lógica de negócio da aplicação e, além disso, podem servir como uma base sólida para a criação de casos de teste. Se o aplicativo testado não tiver documentação adequada, é um bom motivo para usar Tabelas de Decisão. Apresentar requisitos de forma compacta e simples facilita bastante a criação de casos de teste.
Abordagem:
As Tabelas de Decisão descrevem a lógica da aplicação com base nas entidades (propriedades/condições) do estado do sistema. Cada tabela de decisão deve descrever apenas um estado do sistema.
| regra 1 | regra 2 | … | regra N |
---|---|---|---|---|
Entidades | | | | |
Propriedade 1 | | | | |
… | | | | |
Propriedade M | | | | |
Ações | | | | |
Ação 1 | | | | |
… | | | | |
Ação P | | | | |
Entidade (Propriedade) de 1 a M representa diversas propriedades do sistema; eles são apresentados na tabela como dados de entrada que podem ser inseridos no sistema. Ações de 1 a P são ações que podem ocorrer com a combinação especificada de entidades. Dependendo da combinação de todos os dados de entrada das entidades, as ações assumem os valores necessários. Cada regra define um conjunto exclusivo de dados de entrada para todas as propriedades que levam à execução de ações específicas.
Depois de compor a tabela de decisão, geralmente é possível simplificá-la, por exemplo, removendo alguns ou todos os cenários impossíveis. Então, a tabela pode ser transformada em casos de teste.
O teste de transição de estado, assim como o teste de tabela de decisão, é uma ferramenta valiosa para documentar requisitos e descrever a estrutura e o design de um sistema. Ao contrário dos testes de tabelas de decisão, que descrevem um estado específico do sistema, os testes de transição de estado descrevem como esses estados do sistema podem mudar. Os diagramas definem todos os eventos que ocorrem durante a operação do aplicativo e como o aplicativo responde a esses eventos.
Abordagem:
Existem dois tipos de representações visuais desta técnica:
Como exemplo, consideremos a reserva de passagens aéreas. Funciona aproximadamente da seguinte forma: Inicialmente, os clientes fornecem à companhia aérea informações para reserva - local de partida, destino, data e hora de partida. Um funcionário da companhia aérea atua como interface entre o cliente e o sistema de reserva de passagens, utilizando as informações fornecidas pelo cliente para criar uma reserva. Depois disso, a reserva do cliente fica no estado “Feita”. Além disso, após a criação da reserva, o sistema inicia um cronômetro. Quando o cronômetro expirar e o bilhete reservado não tiver sido pago, o sistema cancelará a reserva desse bilhete.
O círculo representa o estado do sistema de reserva de passagens aéreas, o estado “Feito”. A seta indica uma transição para o estado "Feito". A descrição abaixo da seta ("get_info") é um evento originado de fora do sistema. O comando na descrição abaixo da seta (após "/") significa que o sistema executou alguma ação em resposta ao evento - neste caso, iniciando um cronômetro. O círculo preto indica o ponto inicial/entrada do diagrama.
Se o cronômetro não expirar e tivermos pago o bilhete reservado, o sistema entra no estado “Pago”. Isso é representado pela seta denominada "payMoney" e pela transição do estado "Feito" para o estado "Pago".
As tabelas de transição de estado são tabelas que consistem em quatro colunas: Estado Atual, Evento, Ação e Próximo Estado.
A vantagem das Tabelas de Transição de Estado é que elas definem todos os cenários possíveis de Transição de Estado, não apenas os corretos. Portanto, as Tabelas de Transição de Estado geralmente levam à descoberta de combinações de Transição de Estado indefinidas e não documentadas, que são melhores para identificar antes de escrever o código.
Quantas combinações existem para o par de valores “1” e “2”? {1,1}, {1,2}, {2,1} e {2,2}. Uma matriz ortogonal é uma matriz bidimensional com uma propriedade especial – em quaisquer duas colunas da matriz, todas as combinações de valores nessas colunas estão presentes. Ou seja, se você pegar quaisquer duas colunas da matriz ortogonal, onde os valores só podem ser "1" ou "2", você encontrará as seguintes linhas para essas colunas - {1,1}, {1,2}, { 2,1} e {2,2}.
Como exemplo, considere um sistema com três parâmetros de entrada, cada um dos quais é binário (ou seja, assume o valor “1” ou “2”).
linhas | variável 1 | variável 2 | variável 3 |
---|---|---|---|
1 | 1 | 1 | 1 |
2 | 2 | 1 | 1 |
3 | 1 | 2 | 1 |
4 | 1 | 1 | 2 |
5 | 2 | 2 | 1 |
6 | 1 | 2 | 2 |
7 | 2 | 1 | 2 |
8 | 2 | 2 | 2 |
A matriz ortogonal é representada como - L_4 (2 ^ 3), onde L_4 indica que a matriz ortogonal possui quatro linhas e (2 ^ 3) indica que a matriz possui três colunas, com valores que podem ser "1" ou "2 ".
linhas | variável 1 | variável 2 | variável 3 |
---|---|---|---|
1 | 1 | 1 | 1 |
2 | 1 | 2 | 2 |
3 | 2 | 1 | 2 |
4 | 2 | 2 | 1 |
L_4, onde 4 é o número de linhas
2 ^ 3, onde 2 é o valor máximo (== 2, 3,…, N) e 3 é o número de colunas
Matriz Ortogonal - é uma matriz bidimensional com a seguinte propriedade: escolha quaisquer duas colunas da matriz e você encontrará todas as combinações de valores nessas colunas.
Usando matrizes ortogonais:
A essência do algoritmo AllPairs é que não há necessidade de testar todas as combinações de valores para todas as variáveis. Em vez disso, concentra-se em testar todas as combinações de valores para cada par de variáveis.
Como profissional de controle de qualidade, é importante compreender essas nuances. Embora teórico em alguns casos, compreender a complexidade das técnicas de design de testes combinatórios permite que os profissionais de controle de qualidade testem com eficácia a complicada lógica de negócios dos aplicativos e forneçam software de alta qualidade aos seus usuários.