testes baseados na especificação - interface -
DESCRIPTION
Testes baseados na especificação - interface -. Criado: abril/2001 Últ. atualiz.: jun/2009. Tópicos. Introdução Partição de equivalência Análise de valores-limite Grafo causa-efeito Gramática. Testes caixa preta. Especificação: Requisitos Projeto. Independente de notação. - PowerPoint PPT PresentationTRANSCRIPT
Eliane Martins - Instituto de Computação - UNICAMP
Testes baseados na especificação - interface -
Criado: abril/2001Últ. atualiz.: jun/2009
3Eliane Martins - Instituto de Computação - UNICAMP
Tópicos
• Introdução• Partição de equivalência• Análise de valores-limite• Grafo causa-efeito• Gramática
4Eliane Martins - Instituto de Computação - UNICAMP
Testes caixa preta
Especificação:RequisitosProjeto
Independente de notação
Partição de equivalênciaValores LimiteGrafo causa-efeitoTabela de decisão
Dependente de notação
Baseada em modeloBaseada em linguagem de especificação
5Eliane Martins - Instituto de Computação - UNICAMP
Testes caixa preta
Especificação:RequisitosProjeto
Independente de notação
Partição de equivalênciaValores LimiteGrafo causa-efeitoTabela de decisão...
Dependente de notação
Baseada em modeloBaseada em linguagem de especificação
Testes de interface
6Eliane Martins - Instituto de Computação - UNICAMP
Motivação - aplicabilidade
• Testes de interface são aplicáveis:– Quando só se tem a descrição da interface do software
em teste
– Nos testes de robustez
– Para criar dados para testes cx branca ou cx preta
7Eliane Martins - Instituto de Computação - UNICAMP
?xml version="1.0"?>
<definitions name="StockQuote"
targetNamespace="http://example.com/stockquote.wsdl"
xmlns:tns="http://example.com/stockquote.wsdl"
...
<types>
<schema targetNamespace="http://example.com/stockquote.xsd"
xmlns="http://www.w3.org/2000/10/XMLSchema">
<element name="TradePriceRequest">
<complexType>
<all>
<element name="tickerSymbol" type="string"/> </all>
</complexType>
</element>
...
</schema>
</types>
Como gerar os dados para esse serviço?
8Eliane Martins - Instituto de Computação - UNICAMP
Partições de equivalência: princípio
entradas válidas entradas inválidas
domínio de entrada
domínio de saída
sistema
9Eliane Martins - Instituto de Computação - UNICAMP
Partições de equivalência
• Princípio:– O domínio de entrada (ou saída) do programa/função é dividido em
um número finito de partições de equivalência• supõe-se que dados pertencentes a uma partição têm capacidade de
revelar as mesmas classes de falhas• uma classe de equivalência representa um conjunto de estados válidos e
inválidos para uma dada condição de entrada
• Geração de testes: selecionar um ou mais dados de cada partição
• Critério de cobertura: cada partição deve ser considerada ao menos 1 vez
10Eliane Martins - Instituto de Computação - UNICAMP
Partição de equivalência: passos Decompor o programa em funções Identificar as variáveis que determinam o comportamento de cada
função Particionar os valores de cada variável em classes de equivalência
(válidas e inválidas) Especificar os casos de teste:
– eliminar as classes impossíveis ou os casos desinteressantes– selecionar casos de testes cobrindo as classes válidas das diferentes
variáveis– para cada classe inválida escolha um caso de teste que cubra 1 e somente 1
de cada vez
11Eliane Martins - Instituto de Computação - UNICAMP
Determinação das classes de equivalência
Definição da variávelde entrada
Classes de equivalência
Intervalo Uma classe válida para valores pertencentes aointervalo
Uma classe inválida para valores menores queo limite inferior
Uma classe inválida para valores maiores que olimite superior
Lista de valoresválidos
Uma classe válida para os valores incluídos nalista
Uma classe inválida para todos os outrosvalores
12Eliane Martins - Instituto de Computação - UNICAMP
Determinação das classes de equivalência
Definição da variável deentrada
Classes de equivalência
Número de valores válidos Uma classe válida para número devalores igual ao número previsto
Uma classe inválida para número devalores = 0
Uma classe inválida para número devalores maior ou menor que o valorprevisto
Restrições(expressão lógica; sintaxe;valor específico;compatibilidade com outrasvariáveis)
Uma classe válida para os valores quesatisfazem às restrições
Uma classe inválida para os outrosvalores
13Eliane Martins - Instituto de Computação - UNICAMP
Exemplo 1
• Função:Supor uma função que calcula o valor de
• Valores válidos para X:– X -2
– X 1
)2()1( XX
NSF-SWENET
14Eliane Martins - Instituto de Computação - UNICAMP
Exemplo 1
• Determinação das classes de equivalência:
Condições Classes Válidas Classes Inválidas
de entrada
X -2 C1. X -2 C3. -2 < X < 1
X 1 C2. X 1
15Eliane Martins - Instituto de Computação - UNICAMP
Exemplo 1• Casos de teste:
– selecionar casos de testes cobrindo as classes válidas das diferentes variáveis
X -2 C1 C2 C3 variável valor
X -5
-2 < X < 1
X 1 X 5
X 0
16Eliane Martins - Instituto de Computação - UNICAMP
Exemplo 2
• Função MDC, que calcula o máximo divisor comum de dois inteiros (ambos não podem ser negativos)– MDC(a,b) = c onde
• c é um inteiro positivo• c é divisor comum de a e b (i.e., c divide a e c divide b)• c é maior que todos os divisores comuns de a e b.
– Exemplo:• MDC(45, 27) = 9• MDC (7,13) = 1• MDC(-12, 15) = 3• MDC(13, 0) = 13• MDC(0, 0) indefinido
NSF-SWENET
17Eliane Martins - Instituto de Computação - UNICAMP
Exemplo 2 - Descrição
O algoritmo do MDC pode aceitar quaisquer inteiros como entrada.
Neste exemplo vamos considerar que 0, inteiros positivos e inteiros negativos são valores especiais, i.e., são tratados diferentemente pelo programa.
18Eliane Martins - Instituto de Computação - UNICAMP
Exemplo 2 – Classes de Equivalência
Variáveis Classes de equivalência
a C1. a < 0 C2. a = 0 C3. a > 0
b C4. b < 0 C5. b = 0 C6. b > 0
19Eliane Martins - Instituto de Computação - UNICAMP
Exemplo 2 – Casos de teste
casos de teste
1.2.3.4.5.6.7.8.9.
1 2 3 4 5 6
1 2 3456789
Classes de equivalência
Condições:a<0, b<0a<0, b=0a<0, b>0 . . .
20Eliane Martins - Instituto de Computação - UNICAMP
Análise de valores-limite
• Critério de seleção que identifica valores nos limites das classes de equivalência
• Exemplos:– valor mínimo (máximo) igual ao mínimo (máximo) válido
– uma unidade abaixo do mínimo
– uma unidade acima do máximo
– arquivo vazio
– arquivo maior ou igual à capacidade máxima de armazenamento
– cálculo que pode levar a “overflow” (“underflow”)
– erro no primeiro (último) registro
21Eliane Martins - Instituto de Computação - UNICAMP
Exemplo 1 - Análise de valores limites
• No exemplo 1, após determinar as classes de equivalência, devemos fazer uma análise de valores-limites para a escolha dos valores de cada classe (ou partição) de equivalência. Assim, considerando que a função roda em um processador de 32 bits, temos:C1. X -2 -231, -100, -2.1, -2C2. X 1 1, 1.1,100, 231-1C3. -2 < X < 1 -1.9, -1, 0, 0.9
NSF-SWENET
22Eliane Martins - Instituto de Computação - UNICAMP
Exemplo 2 - Análise de valores limites
• Para a função MDC
• Valores limites C1. -231, -1
a = C2. 0, C3. 1, 231-1
C4. -231, -1 b = C5. 0,
C6. 1, 231-1
23Eliane Martins - Instituto de Computação - UNICAMP
MDC – Plano de Testes (2)Descrição dos testes /
Dados Resultados Esperados
Resultados Obtidos
Testes de caminhos básicos caminho (1,5,6,17,18) (0, 15)
15
caminho (1,5,7,18) (15, 0)
15
caminho (1,5,7,9,10,17,18) (30, 15)
15
caminho (1,5,7,9,10,9,10,17,18) (15, 30)
15
Classes de equivalência a < 0 e b < 0 (-27, -45) 9 a < 0 e b > 0 (-72, 100) 4 a > 0 e b < 0 (121, -45) 1 a > 0 e b > 0 (420, 252) 28 a = 0 e b < 0 (0, -45) 45 a = 0 e b > 0 (0 , 45) 45 a > 0 e b = 0 (-27, 0) 27 a > 0 e b = 0 (27, 0) 27 a = 0 e b = 0 (0 , 0) exceção
Valores-limites (1 , 0) 1 (-1 , 0) 1 (0 , 1) 1 (0 , -1) 1 (0 , 0) (redundante) exceção (1, 1) 1 (1, -1) 1 (-1, 1) 1 (-1, -1) 1
Ainda falta algum teste?Complete ...
NSF-SWENET
24Eliane Martins - Instituto de Computação - UNICAMP
Alguns valores-limites interessantes
Tipo do dado Valores
Inteiro 0, 1, -1, MaxInt, MinInt
Real 0., 1., -1., DblMin, DblMax
Boolean Inversão de estado (V F, F V)
String Null, string do tamanho da memória virtual, string com caracteres especiais (fim de arquivo, formatação, etc)
Descritor de arquivo (tipo inteiro)
0, 1, -1, MaxInt, MinIntdescritor de: arquivo aberto para leitura, arquivo aberto para escrita, arquivo vazio, arquivo apagado após o descritor ter sido atribuído
Fonte: Projeto Ballista - http://www.ece.cmu.edu/~koopman/ballista/
25Eliane Martins - Instituto de Computação - UNICAMP
Limitação
Testes baseados em partições de equivalência ou análise de valores-limite:consideram cada valor de entrada isoladamente
e se existirem combinações de valores que constituam situações interessantes a serem testadas?
26Eliane Martins - Instituto de Computação - UNICAMP
Análise causa - efeito
• Necessária quando se deseja testar combinações de entradas
• Utiliza tabelas de decisão e árvores de decisão– grafo causa-efeito como modelo auxiliar
27Eliane Martins - Instituto de Computação - UNICAMP
Definições
• Causas:– condições de entrada (valor lógico)
• Efeitos:– ações realizadas em resposta às diferentes
condições de entrada
28Eliane Martins - Instituto de Computação - UNICAMP
Árvore de decisão: exemplo do mdc (a, b)
a
0
= 0exceção
b= 0
mdc(a, b) 0
mdc(a,b) = a
b= 0
mdc(a, b)=b 0
29Eliane Martins - Instituto de Computação - UNICAMP
Tabela de decisão
Condições de entrada(causas)
Ações(efeitos)
regra
c1...
V ... F
e1...
X
30Eliane Martins - Instituto de Computação - UNICAMP
Construção da tabela de decisão
a 0 V V F Fb 0 V F V F
mdc(a, b) = a mdc(a,b) = b mdc(a, b) exceção
31Eliane Martins - Instituto de Computação - UNICAMP
Utilidade da tabela de decisão
• A tabela de decisão:– Facilita a determinação de quais testes aplicar.
– Permite que se analise a especificação para determinar:• Redundâncias: duas regras iguais, i.e, mesmas causas
levando aos mesmos efeitos
• Contradições: duas regras com as mesmas causas levando a efeitos diferentes
• Omissões: não há regras para todas as combinações de causas.
Redundâncias e contradições não são necessariamente erros: podem indicar concorrência.
Omissões podem indicar situações irrelevantes ou até mesmo impossíveis
é preciso fazer uma análise
32Eliane Martins - Instituto de Computação - UNICAMP
Limitação das tabelas de decisão
• Tamanho:– 3 causas 23 combinações (regras)
– 5 causas 25 regras
– ...
– 8 causas 28 regras
– ...
• Será que vale a pena testar todas as regras?
33Eliane Martins - Instituto de Computação - UNICAMP
Exemplo
Supor um sistema bancário que trate somente duas transações:depósito nº da conta quantia
saque nº da conta quantia
Requisitos:
– se o comando é depósito e o nº da conta é válido então a quantia é depositada
– se o comando é saque e o nº da conta é válido e a quantia é válida (0 < quantia saldo) então a quantia sacada
– se o comando ou nº da conta ou a quantia for inválido então exibir mensagem de erro apropriada
34Eliane Martins - Instituto de Computação - UNICAMP
• Causas:c1. Comando é depósito
c2. Comando é saque
c3. Nº da conta é válido
c4. Quantia é válida
• Efeitos:e1. Exibir “comando inválido”
e2. Exibir “nº da conta inválido”
e3. Exibir “quantia inválida”
e4. Depositar a quantia
e5. Sacar a quantia
nº de regras = 2 4 = 16
será que todas interessam ?
35Eliane Martins - Instituto de Computação - UNICAMP
Grafo causa-efeito: notação básica
c1 e1 Identidade
c1 e1 Negação
c1e1
c2
c1e1
c2
Ou
E
36Eliane Martins - Instituto de Computação - UNICAMP
Exemplo: grafo causa-efeito
c1 e1
c2
c3
c4
e2
e3
e4
e5
• Causas:c1. Comando é depósito
c2. Comando é saque
c3. Nº da conta é válido
c4. Quantia é válida
• Efeitos:e1. Exibir “comando
inválido”
e2. Exibir “nº da conta inválido”
e3. Exibir “quantia inválida”
e4. Depositar a quantia
e5. Sacar a quantia
37Eliane Martins - Instituto de Computação - UNICAMP
Conversão em tabela de decisão
Escolher um efeito como ação a ser executada, ie, marcar um “” na regra correspondente a este efeito.
Rastrear no grafo quais as combinações de causas que levam a esse efeito e marcar um “V” ou “F” na posição correspondente na tabela
Para cada combinação criada, verificar se ocorrem ou não os outros efeitos
38Eliane Martins - Instituto de Computação - UNICAMP
Conversão: OU
• Se e1 = x1 x2:– não escolha x1 = x2 =V
• Se e1 = (x1 x2):– considere todas as combinações que façam com
que x1 x2 = F
x1 e x2 podem ser causas ou nós intermediários
39Eliane Martins - Instituto de Computação - UNICAMP
Exemplo: tabela de decisão
Id. 1 2 3 4 5c1 Fc2 Fc3 ×c4 × e1 e2e3e4e5
c1 e1
c2
40Eliane Martins - Instituto de Computação - UNICAMP
Conversão: E
• Se e1 = x1 x2:– considere todas as combinações que façam com que x1
= x2 = V
• Se e1 = (x1 x2):– considere somente uma combinação que faça com que
x1 x2 = F– para a combinação escolhida inclua uma e somente uma
combinação que leve ao resultado desejado
x1 e x2 podem ser causas ou nós intermediários
41Eliane Martins - Instituto de Computação - UNICAMP
Exemplo: tabela de decisão
Id. 1 2 3 4 5 6 7c1 F V Fc2 F F Vc3 × F Fc4 × × ×e1 e2 e3e4
e5
c1
c2
c3
e2
42Eliane Martins - Instituto de Computação - UNICAMP
Exemplo: tabela de decisão
Id. 1 2 3 4 5 6 7c1 F V F V F V Fc2 F F V F V F Vc3 × F F V V V Vc4 × × × F F V Ve1 e2 e3 e4 e5
43Eliane Martins - Instituto de Computação - UNICAMP
Geração de testes
• Tabela de decisãocritério: exercitar cada regra pelo menos 1 vez
• Árvore de decisãocritério: exercitar cada caminho da raiz até a folha
pelo menos 1 vez
Eliminar os casos de teste que não fazem sentido ou que são redundantes.
44Eliane Martins - Instituto de Computação - UNICAMP
Exemplo: casos de teste
• Regra 1:comando {depósito, saque}, nº conta, quantia
• Regra 2:comando = depósito, nº de conta inválido, quantia
• Regra 3:comando = saque, nº de conta inválido, quantia
...
45Eliane Martins - Instituto de Computação - UNICAMP
Restrições
Exclusivono máximo 1(0+)
c1
c2E
c1
c2I
Inclusivono mínimo 1(1+)
c1
c2O
Somente um1 e somente 1(1)
e1
e2RExige
e1 e2
e1
e2MMascara
e1 e2
46Eliane Martins - Instituto de Computação - UNICAMP
c1 e1
c2
c3
c4
Exemplo: uso de restrição
e2
e3
e4
e5
E
M
47Eliane Martins - Instituto de Computação - UNICAMP
Outras formas de gerar dados de teste
• Além das técnicas vistas, outras podem ser usadas para a geração de dados de teste:– Testes aleatórios
– Uso de heurísticas• Algoritmos de otimização
– Recozimento simulado (simulated annealing), colônia de formigas, hill climbing, ...
– Algoritmos evolutivos: algoritmos genéticos, otimização extrema, ...
48Eliane Martins - Instituto de Computação - UNICAMP
Testes aleatórios
• Testes gerados aleatoriamente
• Independem do tipo de dado: inteiros, reais, cadeias de caracteres, ...– Todos tratados como cadeias de bits que são alteradas aleatoriamente
• Não é a melhor forma, em geral, de se conseguir uma boa cobertura de algum critério, mas é fácil de implementar
• Existem diversas ferramentas: – Fuzz, Ridle
– Úteis em testes de robustez
49Eliane Martins - Instituto de Computação - UNICAMP
Uso de gramáticas
• Gramáticas são adequadas para representar:– Entradas de tamanho variável e não limitado
– Estruturas recursivas
– Condições-limite
• Exemplos:– Entradas textuais complexas
– Árvores• ex.: documentos XML e HTML são árvores descritas textualmente
– Estrutura de programas• Também podem ser consideradas como árvores descritas
textualmente
50Eliane Martins - Instituto de Computação - UNICAMP
Exemplo de gramática
stream ::= action*action ::= actG | actBactG ::= “G” s nactB ::= “B” t ns ::= digit1-3
t ::= digit1-3
n ::= digit2 ”.” digit2 digit ::= “0” | “1” | “2” | “3” | “4” | “5”
Símbolo inicial Símbolo não terminal
Símbolo terminal
produção ou regra
•: zero ou mais repetiçõesm-n: no mínimo m e no máximo n repetiçõesn: exatamente n repetições
G 17 03.01B 13 15.20G 1 04.23B 123 45.34
Cadeias válidas
51Eliane Martins - Instituto de Computação - UNICAMP
Testes baseados em gramáticas
• Casos de teste = cadeias geradas a partir da gramática• Alguns critérios:
– Cobertura de produções: um caso de teste deve exercitar pelo menos uma produção
– Cobertura de terminais: um caso de teste deve conter pelo menos um terminal
– Condições-limite: casos de teste devem exercitar cada produção recursiva:
• Número mínimo de vezes• Número mínimo + 1• Número máximo - 1• Número máximo de vezes
52Eliane Martins - Instituto de Computação - UNICAMP
Exemplo de derivação de testes
stream action2
action action actB action G s n action G digit1-3 digit2 ”.” digit2 action G digitdigitdigit digitdigit.digitdigit action G 143 21.01 action...
Cobertura de produçõesnro estabelecido de repetições
53Eliane Martins - Instituto de Computação - UNICAMP
Ainda a geração de testes
• Cobertura probabilística– Pode-se associar probabilidades às produções, para indicar qual
produção selecionar a cada passo– Prioriza produções mais utilizadas
• Geração de dados inválidos:– Obtidos simplesmente aplicando-se mutações às produções ou aos
terminais– Objetivo: determinar se o programa reage adequadamente a
entradas inválidas– Ex.:
• Mutação de produção: B 123 45.34 15 123 45.34• Mutação de terminal: B 123 45.34 B 123 01.34
54Eliane Martins - Instituto de Computação - UNICAMP
Exercício 1
Considere uma função com duas variáveis de entrada: Cliente e Qtd, e uma variável de saída, Desconto. Cliente pode ser do tipo A, B ou C e Qtd pode variar de 1 a 1000. A função calcula Desconto de acordo com as seguintes regras:– Clientes do tipo A não recebem desconto se nº de itens comprados for
inferior a 10; recebem 5% desconto para compras entre 10 e 99 itens; 10% de desconto acima de 100 itens.
– Clientes do tipo B recebem 5% de desconto para compras abaixo de 10 itens; 15% de desconto entre 10 e 99 itens; 25% de desconto acima de 100 itens.
– Clientes do tipo C não recebem desconto se nº de itens comprados for inferior a 10; 20% de desconto entre 10 e 99 itens; 25% de desconto acima de 100 itens.
55Eliane Martins - Instituto de Computação - UNICAMP
Exercício 2
Considere a tela de login em um sistema mostrada ao lado. O usuário deve fornecer:
– login: código alfanumérico de 8 caracteres. Se o código é inválido ou não é reconhecido pelo sistema, este solicita ao usuário que o forneça novamente, até que um código válido seja fornecido.
– senha: código alfanumérico de 5 caracteres. Se a senha é incorreta, o usuário tem uma chance a mais para fornece-la. Se ambas as tentativas falharem, o usuário deve recomeçar todo o processo.
Sistema - Tela de Entrada - ×
Login
Senha
CancelarCancelarEntrar
Entrar CancelarCancelar
56Eliane Martins - Instituto de Computação - UNICAMP
Referências
R.Binder. “Testing OO Systems”, 2000.
P.Jalote. “An Integrated Approach to Sw Engineering”, 2ª ed., 1997, cap9.2.3
G.J.Myers. “The Art of Software Testing”, 1979, cap.4.
R.S.Pressman. “Engenharia de Software”, 3ª edição, 1995, cap. 18.5.3.
NSF-SWENET. “Unit Testing”. SWENET Module. Obtido em maio/2005.