testes baseados na especificação - modelos de estado-

44
IC-UNICAMP Eliane Martins Testes baseados em modelos de estado Criado: abril 2001 Últ. atualiz.: out / 2011 Testes baseados na especificação - modelos de estado-

Upload: eddy

Post on 15-Jan-2016

31 views

Category:

Documents


0 download

DESCRIPTION

Testes baseados na especificação - modelos de estado-. Criado: abril 2001 Últ. atualiz.: out / 2011. Referências. R.Binder. Testing OO Systems , 2000. A.P.Mathur. Foundations of Software Testing . Pearson Education Editora, 2008, cap. 3. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado

Criado: abril 2001Últ. atualiz.: out / 2011

Testes baseados na especificação

- modelos de estado-

Page 2: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado 2

Referências

R.Binder. Testing OO Systems, 2000.A.P.Mathur. Foundations of Software Testing. Pearson Education Editora,

2008, cap. 3.H.Robinson. “Graph Theory in Model-based Testing”. Obtido em

set/20010 em http://www.harryrobinson.net/ http://www.geocities.com/harry_robinson_testing/graph_theory.htm

M. Utting, B. Legeard. Practical Model-Based Testing.Morgan Kaufmann Publishers, 2007.

C.Nagle. “Test Automation Frameworks”, 2000. Obtido em set/2009 em: http://testpro.com.au/whitepapers/Test-Automation-Frameworks-by-Carl-Nagle.pdf

Page 3: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado 3

Tópicos

• Motivação• Máquina estendida• Estratégia N+

Page 4: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado 4

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 5: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado 5

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 6: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado 6

Testes de Transições de Estados - Variações

• Nem todo sistema pode ser representado por modelos de estado do tipo clássico:– eventos de entrada têm parâmetros

– existem guardas associadas às transições

modelo estendido

como gerar testes para esse tipo de modelo?

Page 7: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado

Exemplo: classe conta

• O usuário pode ficar com saldo negativo:– Suas transações ficam limitadas a

consulta e crédito

• Conta não movimentada por mais de 5 anos é considerada inativa– Só consultas podem ser realizadas

7

Conta

-nro_conta-saldo#data_ult_movto

+abre()+fecha()+credita()+debita()+consulta()

Page 8: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado

AbertaAtiva com saldo positivo

Ativa com saldo negativoInativa

abre( )

fecha( )

credita(quantia)credita(quantia)

debita(quantia) : [ quantia <= saldo ]

debita(quantia) : [ quantia > saldo ]

consulta( )

[ data_ult_movto >= 5 ]

fecha( )

consulta( )

[ data_ult_movto >= 5 ]

fecha( )

consulta( )

credito(quantia) : [ saldo < 0 ]

credita(quantia) : [ saldo>0 ]

fecha( )

Diagrama de estados da classe Conta

8

guarda

evento com parâmetro

Page 9: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado

Tabela de transição de estados

Eventos e guardas Aber ta (S1)

Ativa com saldo posit. (S2)

Ativa com saldo negat. (S3)

Inativa (S4)

Abre S1

Fecha

Credita data_ult_mov to >5

saldo<0

quantia>saldo

X X X S2

F F X S2

F V F S3

F V V S2 9

Page 10: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado

Eventos e guardas Aber ta (S1)

Ativa com saldo posit. (S2)

Ativa com saldo negat. (S3)

Inativa (S4)

data_ult_movto >5

saldo<0

quantia>saldo

Debita F F F S2

F F V S3

F V V S3

F V F S2

Consulta

F F X S2

F V X S3

V X X S4

10

Page 11: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado

Geração de testes

• Existem diversas abordagens:– Uso de técnicas para a parte de controle somente

– Descompactar: MFEE MFE

– Testes baseados em fluxo de dados

– Testes aleatórios

– Testes baseados em execução simbólica

– ...

Page 12: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado

Geração de testes

• Existem diversas abordagens:– Uso de técnicas para a parte de controle somente

– Descompactar: MFEE MFE

– Testes baseados em fluxo de dados

– Testes aleatórios

– Testes baseados em execução simbólica

– ...

• Gera caminhos usando técnicas para MFE• Gera dados que satisfaçam às condições

de guarda no caminho Criação de caminhos infactíveis

• Gera caminhos usando técnicas para MFE• Gera dados que satisfaçam às condições

de guarda no caminho Criação de caminhos infactíveis

Page 13: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado

Exemplo de caminho infactível

conjunto vazio

conjunto não

vazio

IntSet

~ IntSet

is_empty

extent

clear

[size = = 1] remove

addis_emptyextentis_member

add

[1< size < M] remove

Page 14: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado

Geração de testes

• Existem diversas abordagens:– Uso de técnicas para a parte de controle somente

– Descompactar: MFEE MFE

– Testes baseados em fluxo de dados

– Testes aleatórios

– Testes baseados em execução simbólica

– ...

• se cada variável tem um número finito de valores

possíveis (ex.: variáveis do tipo boolean) nº combinações: variável X estado é finito MFEE é uma representação compacta de uma MFE• técnicas para MFE são aplicáveis explosão de estados

• se cada variável tem um número finito de valores

possíveis (ex.: variáveis do tipo boolean) nº combinações: variável X estado é finito MFEE é uma representação compacta de uma MFE• técnicas para MFE são aplicáveis explosão de estados

Page 15: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado

Exemplo

conjunto vazio

conjunto não

vazio

IntSet

~ IntSet

is_empty

extent

clear

[size = = 1] remove

addis_emptyextentis_member

add

[1< size < M] remove

Supor que M=2Supor que M=2

Page 16: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado

Exemplo

conjunto vazio: size=0

conjunto nãovazio: size=2

IntSet

~ IntSet

is_empty

extent

removeclear

addis_emptyextentis_member

add

conjunto vazio: size=1

remove clear

add

Se M >> 2, quantos estados?Nem todos os predicados podem ser tratados dessa formaSe M >> 2, quantos estados?Nem todos os predicados podem ser tratados dessa forma

Page 17: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado 17

Uma outra técnica de geração dos testes

• Pode-se usar o método T ou uma variante:

cobertura de circuitos (round-trip path):– caminho simples: seqüência de transições t1-t2-t3 ... contendo

somente uma repetição de cada ciclo (loop)

– circuito: caminho começando e terminando no mesmo estado

– critério: cobertura de circuitos começando no estado inicial e de caminhos simples começando no estado inicial e terminando em um estado final

• Usa árvore de alcançabilidade (ou de transições) para facilitar a identificação dos casos de teste

Page 18: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado 18

Árvore de Alcançabilidade

• A árvore de alcançabilidade é construída a partir do diagrama de estados:O estado inicial é a raiz da árvore.Examine cada estado não-terminal e cada transição que sai

desse estado. No mínimo uma nova aresta é criada para cada transição. Essa aresta liga o estado atual ao próximo estado:

• se a transição não tem guarda, crie uma nova aresta;• se a transição tem guarda composta de um único predicado ou de

expressão lógica contendo unicamente operadores E, crie uma nova aresta;

– Ex.: [x==0] – [a<b] && [c<d]

[Binder00, 7.4]

só cria 1 aresta só cria 1 aresta

Page 19: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado 19

Árvore de alcançabilidade Examine cada estado não-terminal e cada transição que sai desse

estado. ..:• se a transição tem guarda composta de expressão lógica com

operadores OU, crie uma nova aresta para cada combinação de valores para os quais a guarda é verdadeira.

– Ex.: [x !=1} || [a>b] 2 arestas V:

• Se a guarda especifica um laço, marque a transição com um *.

Para cada nova aresta e cada novo nó adicionado no passo 2:• anote o evento, bem como a condição de guarda na nova aresta• se o novo nó corresponde a um estado já representado por um outro nó da

árvore ou a um estado final, marque esse nó como terminal (nenhuma aresta será criada a partir desse nó)

Repita os passos e até que todos os nós tenham sido marcados como terminais.

[Binder00, 7.4]

x!=1 e a bx=1 e a>bx!=1 e a bx=1 e a>b

Page 20: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado

Árvore de alcançabilidade da classe Conta

20

S1

S2

S2 S3 S4

S3S2 S4 S4

11

22 33

*4*4 55S2 S2

66 77 88 99

99

S3

*10*10 1111 1212 1313 1414 1515

1- abre() 9- credita() [saldo>0]

2- credita() 10-credita()[saldo<0]

3- fecha() 11- consulta()

4- debita() [quantia<=saldo] 12- [data_ult_movto>=5]

5- consulta() 13- fecha()

6- credita() 14- consulta()

7- debita()[quantia>saldo] 15- fecha()

8- [data_ult_movto>=5]

1- abre() 9- credita() [saldo>0]

2- credita() 10-credita()[saldo<0]

3- fecha() 11- consulta()

4- debita() [quantia<=saldo] 12- [data_ult_movto>=5]

5- consulta() 13- fecha()

6- credita() 14- consulta()

7- debita()[quantia>saldo] 15- fecha()

8- [data_ult_movto>=5]

Page 21: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado 21

Derivando cenários de teste

• A partir da árvore:– Caminho começando na raiz e chegando em nó terminal

(folha)

• Testes sempre começam com nova instância do objeto

• Após aplicar a seqüência de eventos correspondente ao caminho na árvore:– Verificar a saída esperada

– Determinar se o estado atingido é o esperado

Page 22: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado

Exemplo de um caminho de teste

22

Cenário para o caminho de teste gerado:1.Abre( ) 2. Credita(quantia)3.Consulta()4. Verifica se saldo mostrado = quantia5. Verifica se está no estado 2.6. termina

caminho de teste

S1

S2

S2

S3

S4

S3

S2

S4

S4

11

22 33

*4*4 55S2

S2

66 77 88 99

99S3

*10*10 1111 1212 1313 1414 1515

Page 23: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado 23

Derivando casos de teste

• A partir de um caminho de teste:– Determinar valores de entrada para os eventos

vários casos de teste para um mesmo cenário

– Se há condições de guarda gerar dados que satisfaçam às condições existentes no caminho

– Existem dados que satisfaçam ao caminho?

Page 24: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado 24

Geração de dados

• Se um caminho de teste exercita transições com guardas encontrar dados que satisfaçam às guardas– O que fazer quando a saída de uma transição é usada na

guarda de uma outra transição ?

– O que fazer quando a guarda depende de variáveis de contexto ?

Page 25: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado

ab

c

X(nb) nro = 0;

Y P(nro); nro = nro + 1;

W [nro == nb] Q;

W [nro < nb] R(nb);

ab

c

X(nb) nro = 0;

Y P(nro); nro = nro + 1;

W [nro == nb] Q;

W [nro < nb] R(nb);

Qual o valor de nb que satisfaz a condição de caminho?Qual o valor de nb que satisfaz a condição de caminho?

Page 26: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado

ab

c

X(nb) nro = 0;

Y P(nro); nro = nro + 1;

W [nro == nb] Q;

W [nro < nb] R(nb);

Qual o valor de nb que satisfaz às condições dos caminhos abaixo?Qual o valor de nb que satisfaz às condições dos caminhos abaixo?

ab

c

X(nb) nro = 0;

Y P(nro); nro = nro + 1;

W [nro == nb] Q;

W [nro < nb] R(nb);

Page 27: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado 27

Ativação de caminhos

• Processo de determinar valores de parâmetros que façam com que um caminho seja executado pela implementação

Problema indecidível: não existe algoritmo que implemente uma solução para todos os casos !

uso de heurísticas para resolver o problema

Page 28: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado 28

Diretrizes para ativação de caminhos

Selecionar valores usando uma das técnicas independentes de modelo (classes de equivalência, valores-limites, grafo causa-efeito)

Verificar se todos os caminhos requeridos foram cobertos. Se falta algum caminho, tente encontrar um caso de teste que

cubra parte desse caminho. Identifique as transições críticas, i.e, transições para as quais o

caminho pode divergir do caminho de teste escolhido Ajuste os parâmetros de forma a passar por essa transição. Prossiga até chegar ao final do caminho.

[Binder00, 10.2.3]

Page 29: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado

Exemplo de transição crítica

ab

c

X(nb) nro = 0;

Y P(nro); nro = nro + 1;

W [nro == nb] Q;

W [nro < nb] R(nb);

Caminho de testeCaminho de teste

transição críticatransição crítica

Page 30: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado

Derivando casos de teste a partir do cenário

30

Cenário :1.Abre( ) 2. Credita(quantia)3.Debita(quantia) [quantia > saldo]4.Fecha( )

Entradas Saídas Esperadas

ID Evento Condição Ação Estado

CT1 Abre xxxx S1

Credita (100) Xxxx S2

Debita (150) quantia>saldo Xxx S3

Fecha

1+ casos de teste

Page 31: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado 31

Diretrizes para ativação de caminhos

Se nenhum caso de teste serviu, liste os predicados do caminho que falta.

Comece pela última transição com guardas no caminho. Tente achar valores que satisfaçam essas guardas. Repita essa análise, ajustando os valores de entrada para atender às guardas das demais transições até atingir a primeira transição do caminho.

(pode-se também começar pela primeira transição)

No processo pode-se descobrir caminhos não-executáveis !

falha no modelo (será?)[Binder00, 10.2.3]

Page 32: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado 32

Comportamento implícito

• Os métodos anteriores só testam a conformidade com relação ao comportamento explícito descrito pelo modelo de estados

• Se o modelo não é completo – as transições ausentes podem não ser tratadas

corretamente pela implementação• caminhos furtivos

• alçapões

• ...

Page 33: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado 33

Testes de caminhos furtivos (sneak path)

• Para cada estado:– aplicar um evento ilegal (não especificado para o estado)

• Se esse evento puder ser produzido pelo ambiente em que reside a implementação (uso de stubs?)

– determinar se a resposta obtida está de acordo com o esperado

– determinar se o estado final é válido: • consta na especificação

• não consta na especificação mas é aceitável

[Binder00, 7]

Page 34: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado

Exemplo – testes para IntSet

• Cobertura de estados– CT1: IntSet • add • clear •

~IntSet

• Cobertura de transições– CT1: IntSet • add • clear •

~IntSet

– CT2: IntSet • extent • is_empty • add • add • remove • clear • ~IntSet

– ...

34

conjunto vazio

conjunto não

vazio

IntSet

~ IntSet

is_empty

extent

clear

[size = = 1] remove

addis_emptyextentis_member

add

[size > 1] remove

Page 35: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado 35

Estratégia de teste N+

• Estratégia proposta por R.Binder. Contém os seguintes passos:

1. Desenvolver o modelo de estados e a matriz de transições.2. Construir árvore de alcançabilidade3. Criar casos de testes: caminhos da raiz até uma folha4. Criar testes que cubram caminhos furtivos

– Para modelos incompletos: testes que exercitem eventos inoportunos

5. Determinar condições para ativação das transições do caminho (condições de teste)– Identificar as condições para satisfazer às guardas das transições dos

caminhos percorridos

Page 36: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado 36

Estado destino / Resposta

Evento Guarda Conj Vazio Conj não Vazio

IntSet Conj Vazio

extent Conj Vazio Conj não Vazio

is empty Conj Vazio Conj não Vazio

add Conj não Vazio Conj não Vazio

clear Conj Vazio

is member Conj não Vazio

remove size > 1

NI

V Conj não Vazio

F Conj Vazio Conj Vazio

~IntSet

eventos inoportunos?

Page 37: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado 37

Respostas para eventos inoportunos

• Existem várias possibilidades para completar a tabela. R.Binder propõe o uso dos seguintes códigos de respostas possíveis:– evento impossível

– 1 evento inoportuno é colocado em fila para avaliação ulterior e ignorado

– 2 nenhuma ação ou mudança de estado; simplesmente ignore

– 3 retorne um código de erro diferente de zero

– 4 lançar exceção: IllegalEventException

– 5 desabilita a fonte que criou o evento e ignore

– 6 término anormal dos serviços; aborta o processo

Page 38: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado 38

Estado destino / Resposta

Evento Guarda Conj Vazio Conj não Vazio

IntSet Conj Vazio 6 6

Extent Conj Vazio Conj não Vazio

is empty Conj Vazio Conj não Vazio

add Conj não Vazio Conj não Vazio

clear 4 Conj Vazio

is member Conj não Vazio

remove size > 1

NI

V Conj não Vazio

F Conj Vazio Conj Vazio

~IntSet

completar ...

Page 39: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado 39

Verificação do estado destino

• Testes de comportamento explícito ou implícito exigem que estado destino seja válido. Como determinar isso?– Implementar método que reporte o estado

– Repetir os testes e comparar se as saídas produzidas são as mesmas. Se não forem, pode ser devido a existência de estado inválido

– Obter seqüências de assinatura de estados:• esforço extra para determinar tais seqüências

• aumento dos casos de teste

• não garante que todos os estados inválidos serão detectados

Page 40: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado 40

Outros modelos

• Máquinas indeterministas• Máquinas comunicantes• Máquinas para tempo real• Statecharts• …

Page 41: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado 41

Sumário

• Testes caixa preta são baseados na especificação do sistema, ignorando seu código fonte

• Partições de equivalência são úteis para testar entradas isoladamente

• Análise de valores-limite testa entradas isoladamente, nos limites, sendo portanto indispensáveis

• Grafo causa-efeito/tabela de decisões são úteis para testar combinações de entradas

• Máquinas de estado são úteis para testar seqüências válidas de entradas. Devem ser verificadas.

• Abordagem recomendada: combinar técnicas.

Page 42: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado

Exercícios

• Gere casos de testes para os problemas a seguir, considerando os critérios:– Cobertura de estados

– Cobertura de transições

Page 43: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado 43

Exercício 1Especifique o comando “login” usando modelo de estados. Os requisitos

funcionais para esse comando são dados a seguir:– o sistema solicita o nome do usuário (user name)– se o nome não é reconhecido pelo sistema, este solicita ao usuário que o

forneça novamente, até que um nome válido seja fornecido– o sistema solicita a senha– 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– se a senha é válida, o sistema solicita o nível de segurança da sessão a ser

iniciada– se o nível de segurança fornecido for maior que o nível de segurança

permitido para o usuário, o sistema emite um aviso e termina a sessão. Senão, a sessão é iniciada.

[Alagar e Periyasamy 98]

Page 44: Testes baseados na especificação  - modelos de estado-

IC-UNICAMP Eliane Martins

Testes baseados em modelos de estado

Exemplo

conjunto vazio

conjunto não

vazio

IntSet

~ IntSet

is_empty

extent

clear

[size = = 1] remove

addis_emptyextentis_member

add

[1< size < M] remove

Supor que M=2Supor que M=2