Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface...

55
Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009

Transcript of Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface...

Page 1: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

Eliane Martins - Instituto de Computação - UNICAMP

Testes baseados na especificação - interface -

Criado: abril/2001Últ. atualiz.: jun/2009

Page 2: 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

Page 3: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 4: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 5: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 6: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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?

Page 7: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 8: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 9: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 10: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 11: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 12: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 13: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 14: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 15: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 16: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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.

Page 17: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 18: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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 . . .

Page 19: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 20: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 21: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 22: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 23: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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/

Page 24: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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?

Page 25: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 26: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 27: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 28: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 29: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 30: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 31: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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?

Page 32: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 33: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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 ?

Page 34: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 35: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 36: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 37: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 38: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 39: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 40: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 41: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 42: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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.

Page 43: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

...

Page 44: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 45: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

46Eliane Martins - Instituto de Computação - UNICAMP

c1 e1

c2

c3

c4

Exemplo: uso de restrição

e2

e3

e4

e5

E

M

Page 46: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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, ...

Page 47: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 48: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 49: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 50: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 51: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 52: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 53: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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.

Page 54: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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

Page 55: Eliane Martins - Instituto de Computação - UNICAMP Testes baseados na especificação - interface - Criado: abril/2001 Últ. atualiz.: jun/2009.

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.