• Nenhum resultado encontrado

Máquinas de estado. Arndt von Staa Departamento de Informática PUC-Rio Fevereiro 2018

N/A
N/A
Protected

Academic year: 2021

Share "Máquinas de estado. Arndt von Staa Departamento de Informática PUC-Rio Fevereiro 2018"

Copied!
25
0
0

Texto

(1)

Máquinas de estado

Arndt von Staa

Departamento de Informática

PUC-Rio

Fevereiro 2018

2 Arndt von Staa© LES/DI/PUC-Rio

Fev 2018

Especificação

Objetivo desta aula

Apresentar máquinas de estado e seu uso ao gerar testes funcionais

Justificativa

Muitos testes dependem de uma sequência grande e complexa de

decisões.

• Determinar que dados devem ser fornecidos, em que ordem e segundo que condições é uma tarefa complexa e propensa a enganos.

• Gerar e fornecer todos esses dados ao programa sob teste também tende a ser uma tarefa complexa e propensa a enganos.

• Consequentemente, deseja-se estabelecer uma técnica que permita gerar (quase automaticamente) os dados de teste

Texto

Pezzè, M.; Young, M.; Teste e Análise de Software; Porto Alegre, RS:

Bookman; 2008, capítulo 14

(2)

3 Arndt von Staa© LES/DI/PUC-Rio

Fev 2018

Máquina de estados, exemplo telefone

Livre Sinal de discar Sinal de ocupado Sinal rápido Desconectado Mensagem gravada Alarme audível tira do gancho Conectado Discando 1o. dígito dígito i número válido circuito estabelecido receptor atende receptor desliga Põe no gancho Põe no gancho time out 1 time out 1 time out 2 time out 2 Destino ocupado Não tem circuito número ilegal

Exemplo: diagrama de atividades

(3)

Exemplo: UML State chart

5 Arndt von Staa© LES/DI/PUC-Rio

Fev 2018

http://www.uml-diagrams.org/bank-atm-uml-state-machine-diagram-example.html

Exemplo: rede de Petri (Petri net)

6 Arndt von Staa© LES/DI/PUC-Rio

Fev 2018

Sklenar, J.; PetriSim - Discrete Simulation Environment; University of Malta

(4)

7 Arndt von Staa© LES/DI/PUC-Rio

Fev 2018

Máquina de estados ilustração genérica

Início

Fim

Estado 1

Estado 2

Estado 3

Transição 5

Transição 2

Transição 3

Transição 6

Transição 4

Transição 1

Máquina de estados

Uma máquina de estados é um

grafo dirigido

cada vértice é um

estado

podem existir dois tipos de vértices especiais:

início

e

término

cada aresta é uma

transição

cada aresta possui zero ou um

rótulo condição

que designa a

condição

ou o

evento

que permite seguir por aquela aresta

uma aresta sem rótulo condição corresponde a um “else”

– no máximo uma aresta de saída de um estado pode estar sem rótulo

(5)

Máquinas de estados generalizadas

Em máquinas de estado

generalizadas

:

os estados podem conter

código executável

tão complexo

quanto se queira, mas precisa ter interfaces clara e

corretamente definidas e respeitadas

as transições podem conter, além de

condições

ou

eventos

,

zero ou mais

ações

, possivelmente complexas, a serem

efetuadas caso a máquina transite por aquela aresta

os fragmentos de código contidos nos estados, e/ou nas

arestas podem

fazer uso de memória

local (estruturas de

dados) ou persistente (arquivos, bases de dados)

ex. carrinho de compras sendo preenchido

ex. tabelas de símbolos para

filtros léxicos

9 Arndt von Staa© LES/DI/PUC-Rio

Fev 2018

Confronto com autômatos. Máquinas de estados generalizadas são uma generalização de autômatos tais como os usados ao processar strings (ex análise léxica, análise sintática). Em autômatos os estados somente leem caracteres e decidem qual a transição a percorrer. Em autômatos que admitem memória local com comportamento restrito (pilha na análise sintática de linguagens livres de contexto, fita em máquinas de Turing), os estados podem movimentar e ler da memória e tomar decisões baseados nos dados lidos, podem ainda gravar nessa memória.

Máquinas de estado e testes

Máquinas de estado generalizadas são úteis

engenharia direta

cria máquinas de estado para fins de

especificação, desenvolvimento e geração de suítes de teste

dependendo da linguagem de representação utilizada ao criar

máquinas de estado generalizadas é possível gerar código

compilável

engenharia reversa

cria máquinas de estado para fins de

geração de suítes de teste para sistemas existentes

10 Arndt von Staa© LES/DI/PUC-Rio

Fev 2018

Qualquer programa escrito para um computador baseado na arquitetura Von Neumann é uma máquina de estados.

(6)

Máquinas de estado e testes

Um caso de teste de uma máquinas de estado generalizada

é uma sequência de ações e condições correspondentes a

um

caminho

viável através da máquina.

caminho total

de algum início até algum fim

caminho parcial

de algum estado a outro (pode ser o mesmo)

Máquinas de estado devem ser

semanticamente conexas

• semanticamente conexo: a máquina é um grafo conexo e, considerando a

totalidade dos caminhos semanticamente viáveis de algum início a algum fim, o conjunto de todos os estados poderá ser atingido e o conjunto de todas as transições poderá ser percorrido.

• caminho semanticamente viável: existe pelo menos um conjunto de dados

pertencentes ao domínio de dados de entrada que assegure que se possa percorrer o caminho.

• nem sempre é possível verificar se determinada máquina é semanticamente conexa (problema de computabilidade)

11 Arndt von Staa© LES/DI/PUC-Rio

Fev 2018

viável: um dado de entrada de um estado, mesmo que satisfaça a assertiva de entrada, pode impedir a seleção de uma ou mais das saídas desse estado, neste caso, caminhar usando uma destas saídas é inviável.

Exemplo: Interface humano computador

Selecionar Dicionário Selecionar Conjunto de Objetos Selecionar Ação Aplicar ação a todos objetos selecionados ESC ESC OK Processou todos objetos ^F3 ESC Comando dicionário Selecionou Dicionário Dicionário Vazio Selecionou Objetos Selecionou Ação Criar novo Objeto Selecionar Linguagem de Representação ESC && Vazio ESC && Não Vazio INS • Existem uma ou mais linguagens de representação

• Cada linguagem de representação possui n > 1 classes de objetos

• Cada classe de objetos pode fazer parte de 1 ou mais linguagens de representação

• Cada classe de objetos admite zero ou mais objetos registrados no dicionário da correspondente classe • A visualização de um dicionário exibe os nomes de todos os objetos da correspondente classe

• Cada linguagem de representação define um conjunto de zero ou mais ações que podem ser realizadas a partir de objetos de classes relacionadas com a linguagem

(7)

Máquinas de estados generalizadas

Máquinas de estados generalizadas podem formar uma

estrutura de decomposição

estados podem ser

decompostos

em máquinas de estado mais

detalhadas.

nas máquinas resultado da decomposição

tudo que atinge o estado decomposto deve aparecer como origem

e tudo que sai do estado decomposto deve aparecer como término

pode-se criar uma

máquina nível zero

formada por um único

estado e as origens e términos do processamento como um

todo

isso permite especificar a interface do artefato

13 Arndt von Staa© LES/DI/PUC-Rio

Fev 2018

Máquina de estados generalizada, exemplo

14 Arndt von Staa© LES/DI/PUC-Rio

Fev 2018

Efetuar Login

Termina execução Emite nova senha

Autoriza uso Sis Sis Cadastro de usuários autorizados Usuário Diferentes, precisa consertar Fornecer

dados Trocar a senha

Fornecer identi-ficação alternativa { "Cancelar" }

Não autoriza uso { "Login" }

{ "Mudar senha"}

{ "Esqueci senha" }

Emite nova senha Autoriza uso Dados e botão Validar dados {Erro} { "Cancelar" } Cadastro de usuários autorizados Usuário Controlar erros Cancela

{Erros além limite} {Até limite erros}

{Erro léxico}

{ "Cancelar" } { "Muda" }

controle dados

(8)

15 Arndt von Staa© LES/DI/PUC-Rio

Fev 2018

Máquina de estados - fluxo de controle

A partir do vértice inicial a execução prossegue de estado a

estado, de acordo com a condição que vale, ou o evento que

ocorreu

Caso

nenhuma

das condições ou evento de saída do estado

corrente valha, ou caso não existam arestas de saída

se for

estado de término

(final) o processamento termina

se não for, o

estado bloqueia

erro de projeto da máquina

ocorre se a disjunção (

ou-tório 

) de todos os rótulos de condição de

saída de um estado não resultar em “true”

Caso

mais de uma

das condições de saída do estado

corrente valham

o

estado é ambíguo

 erro de projeto da máquina

ocorre se existirem um ou mais

pares

de rótulos condição de saída

em que a conjunção das condições (and) não resulta em “false”

assume-se que else corresponda a true

Máquinas de estados - fluxo de eventos

Máquinas de eventos permitem projetar a sincronização de

sistemas multi-threading (redes de petri, state charts)

Em máquinas de eventos a progressão de estado para

estado é dada por um evento

espera-se no estado pela ocorrência de um dos possíveis

eventos, descartando eventos não previstos

usualmente o

conjunto de eventos

que podem ocorrer em um

determinado estado é

conhecido

podem existir eventos genéricos, ex. cancela

a

progressão espera

até que ocorra um evento

caso a espera possa ser potencialmente ilimitada pode ser

conveniente inserir um evento time-out

no exemplo do telefone

– caso a máquina esteja no estado livre, o telefone espera indefinidamente pelo evento tirar do gancho

– caso a máquina esteja no estado digitando, a espera é limitada por um time-out

(9)

17 Arndt von Staa© LES/DI/PUC-Rio

Fev 2018

Máquinas de estado: aspectos positivos

Máquinas de estado permitem

visualizar e verificar se as ações e transições estão completas e

corretas

implementar condições compostas complexas

gerar código diretamente a partir do diagrama

máquinas de estado generalizadas são "código" em nível de

abstração mais alto

verificar as condições (assertivas) de entrada e saída

verificação de modelos

controle dinâmico da execução

assegurar o comportamento do todo, através do controle do

comportamento local estabelecido por cada um dos estados e

correspondentes transições de saída

18 Arndt von Staa© LES/DI/PUC-Rio

Fev 2018

Máquinas de estado: aspectos negativos

Tendem a levar a um

conjunto muito grande de estados

efeito papel de parede

dimensão grande pode tornar difícil entender o diagrama

Pode-se atenuar isso através de uma hierarquia de

máquinas

um estado pode ser decomposto (explodido) em uma nova

máquina em um nível de abstração mais baixo

tudo que atingia (ou saía) o estado decomposto tem que atingir

(ou sair de) algum estado da nova máquina

(10)

Exemplo: Caso de uso Efetuar Login

fluxo principal 1. O componente limpa os campos e gera o captcha 2. O usuário digita sua identificação, senha e captcha 3. Quando o usuário selecionar a ação “Login” então

3.1 O controle de acesso verifica sintaticamente os dados fornecidos 3.2 O controle de acesso verifica se <usuario, senha> existe 3.3 O controle de acesso retorna ao sistema Sis, fornecendo a

condição “autorizar uso” e os direitos de uso correspondentes a <usuário, senha>

Fim quando

4. Quando o usuário selecionar a ação “Mudar senha” então

4.1 O controle de acesso verifica sintaticamente os dados fornecidos 4.2 O controle de acesso verifica se <usuario, senha> existe 4.3 O controle de acesso ativao caso de uso “Trocar a senha” 4.4 Repete a partir de 1

Fim quando

5. Quando o usuário selecionar a ação “Esqueci a senha” então 5.1 O controle de acesso verifica sintaticamente os dados fornecidos 5.2 O controle de acesso verifica se usuário existe

5.3 O controle de acesso ativa o caso de uso “Fornecer identificação alternativa”

5.4 Se retornar do caso de 5.3, repete a partir de 1 Fim quando

6. Quando o usuário selecionar a ação “Cancelar” então

6.1 O controle de acesso retorna ao sistema Sis, fornecendo a condição “cancelar uso” e direitos de uso nulo

Fim quando A forma “... ativa

...” implica o uso de máquina de estados

Fev 2018 Arndt von Staa© LES/DI/PUC-Rio 19

Componente Login: especificação

fluxos

alternativos Evento ou o captcha1/3.1, 4.1, 5.1 : O usuário digitou incorretamente a identificação E1.1 Se for a quarta ou mais vez que ocorreu um evento de erro então

E1.1.1. O controle de acesso emite a mensagem “Acesso não autorizado”

E1.1.2. O controle de acesso retorna ao sistema Sis, fornecendo a condição “não autorizar uso” e direitos de uso nulo

Fim se

E1.2. O controle de acesso emite a mensagem “Dados incorretos” E1.3. O controle de acesso retorna ao passo 1

Fim evento E1

Evento 2/3.2, 4.2 : O par <usuário, senha> não está definido

E2.1 Se for a quarta ou mais vez que ocorreu um evento de erro então E2.1.1. O controle de acesso emite a mensagem

“Acesso não autorizado”

E2.1.2. O controle de acesso retorna ao sistema Sis, fornecendo a condição “não autorizar uso” e direitos de uso nulo

Fim se

E2.2. O controle de acesso emite a mensagem “Usuário desconhecido” E2.3. O controle de acesso retorna ao passo 1

(11)

Componente Login: especificação

fluxos

alternativos Evento 3/5.2 : A identificação do usuário não existe no cadastroE3.1 Se for a quarta ou mais vez que ocorreu um evento de erro então E3.1.1. O controle de acesso emite a mensagem

“Acesso não autorizado”

E3.1.2. O controle de acesso retorna ao sistema Sis, fornecendo a condição “não autorizar uso” e direitos de uso nulo

Fim se

E3.2. O controle de acesso emite a mensagem “Usuário desconhecido” E3.3. O controle de acesso retorna ao passo 1

Fim evento E3

Evento E4: o usuário clica “Cancelar” em qualquer lugar E4.1 O sistema solicita confirmação do cancelamento E4.2 Se usuário confirma o cancelamento

E4.2.1 O controle de acesso retorna fornecendo o conjunto “cancelar uso” ao sistema Sis

Fim se

E4.3 O controle de acesso retorna ao passo 1 Fim evento E4.

Veja Aula 04 Especificações, resumo

Fev 2018 Arndt von Staa© LES/DI/PUC-Rio 21

Máquina de estados derivada do caso de uso

22 Arndt von Staa© LES/DI/PUC-Rio

Fev 2018

Com pequenas alterações para não tornar ainda mais complexo o diagrama O caso de uso pode ser transformado em uma máquina de estados de forma automática

• A geração automática costuma

produzir um grafo confuso.

• No caso de geração automatizada

da suíte de teste isso é um problema menor.

• Ao gerar a suíte a mão é motivo

para muitos erros de geração. 2 3 3.1 3.2 Esqueci 4 4.1 4.2 4.3 5 5.1 5.2 5.3 Cancela 6 6.1 Login Muda Esqueci => Cancela E1 E1.1 !sintx !sintx

!sintx não autor.

>=4 >=4 >=4 E2 E2.1 !existe !existe E3 E3.1 ESC ESC !usu autor

(12)

23 Arndt von Staa© LES/DI/PUC-Rio

Fev 2018

Casos de uso como máquina de estado

O

caso de uso

pode ser transformado

manualmente

em uma

máquina de estados mais “civilizada”, sintaxe:

Interações com o usuário são tracejadas

Pontos de início são disparados ao acionar

Pontos de término informam o significado do término

Arestas de controle são dirigidas e vão de estado a estado

As arestas de controle são rotuladas

o rótulo informa a condição que faz seguir por aquela aresta

condições que correspondem a ações do usuário, ex. teclou um

botão, têm o seu texto redigido entre aspas

teclas de atalho devem ser identificadas por um nome entre

aspas, e não pelo valor do atalho

Inclusões e extensões seguem o padrão de caso de uso

Máquina de estados criada diretamente

Contexto do caso de uso  diagrama nível 0

Efetuar Login

Termina execução

Emite nova senha

Autoriza uso

Sis

Sis

Cadastro

de usuários

autorizados

Usuário

(13)

25 Arndt von Staa© LES/DI/PUC-Rio

Fev 2018

Componente Login, máquina de estados

Início

• A máquina pode ser melhorada

?

• Considere a separação da entrada de dados da verificação dos dados

• verificação léxica pode ser realizada imediatamente

• verificação envolvendo bases de dados, métodos etc. devem estar separados da

entrada

Efetuar Login

Trocar a senha

Fornecer

identi-ficação alternativa

Confirmar

usuário

Usuário

{ "Cancelar" ou erro }

Termina execução

{ "Login" } { "Login" } { "Mudar senha"} { "Esqueci senha" }

Emite nova senha

{ "Cancelar" }

Autoriza

uso

{ "Cancelar" ou erro }

Versão inicial

26 Arndt von Staa© LES/DI/PUC-Rio

Fev 2018

Componente Login, máquina de estados

• A máquina pode ser melhorada mais ainda

?

• Considere fatorar o controle de número de erros.

Fornecer

dados

Trocar a senha

Fornecer

identi-ficação alternativa

{ "Cancelar" }

Não autoriza uso

{ "Login" } { "Mudar

senha"} { "Esqueci senha" }

Emite nova senha

Autoriza

uso

Dados e botão

Validar

dados

{ Quarto ou mais erro } {1o., 2o. ou 3o. erro} { "Cancelar" }

Cadastro

de usuários

autorizados

Usuário

Sistema

Sis

(14)

Fornecer

dados

Trocar a senha

Fornecer

identi-ficação alternativa

{ "Cancelar" }

Não autoriza uso

{ "Login" }

{ "Esqueci senha” }

Emite nova senha

Autoriza

uso

Dados e botão

Validar

dados

Controlar

erros

{ Quarto ou mais erro } { "Cancelar" }

Cadastro

de usuários

autorizados

Usuário

Sistema

Sis

{erro} {1o. a 3o. erro} {erro} { "OK" } { "Mudar senha"} 27 Arndt von Staa© LES/DI/PUC-Rio

Fev 2018

Componente Login, máquina de estados

• Ainda tem problemas a serem resolvidos

?

• Considere a separação de “cancelar” e “não autorizar”, cancelar troca de senha, ...

• cada saída de um estado ou da máquina deve explicitar a causa da escolha

cancelar ?

Qual é a causa do término?

Quase...

Componente Login, máquina de estados

Fornecer

dados Trocar a senha

Fornecer identi-ficação alternativa { "Cancelar" }

Não autoriza uso { "Login" }

{ "Mudar senha"} { "Esqueci senha" }

Emite nova senha Autoriza uso Dados e botão Validar dados {Erro} { "Cancelar" } Cadastro de usuários autorizados Usuário Controlar erros Cancela

{Erros além limite} {Até limite erros}

{Erro léxico} { "Cancelar" } { "Muda" } controle dados

Versão final

(15)

Componente Login, máquina de estados

29 Arndt von Staa© LES/DI/PUC-Rio

Fev 2018

Efetuar Login

Não autoriza uso Emite nova senha

Autoriza uso Sis Sis Cadastro de usuários autorizados Usuário Cancela Fornecer

dados Trocar a senha

Fornecer identi-ficação alternativa { "Cancelar" }

Não autoriza uso { "Login" }

{ "Mudar senha"}

{ "Esqueci senha" }

Emite nova senha Autoriza uso Dados e botão Validar dados {Erro} { "Cancelar" } Cadastro de usuários autorizados Usuário Controlar erros Cancela

{Erros além limite} {Até limite erros}

{Erro léxico}

{ "Cancelar" } { "Muda" }

controle dados

Máquina de estados, implementação

Organização do código

de um interpretador de

máquina de estados

Fev 2018 30

Arndt von Staa © LES/DI/PUC-Rio

Início

Selecionar

estado

Estado 1

Estado 2

Estado n

{estado != FIM}

{estado == E1} {estado == En}

se estado_anterior != estado: registrar estado_anterior = estado selecionar a transição a ser efetuada: determinar próximo_estado efetuar a função associada à transição registrar estado = próximo_estado executar ação de entrada processar estado

estado :: estado_corrente

se próximo_estado != estado: executar ação de saída

{estado == E2}

. . .

Assume-se que exista somente uma assertiva de saída em cada estado

(16)

31 Arndt von Staa© LES/DI/PUC-Rio

Fev 2018

Exemplo: Fornecer dados 1 / 4

Estado Fornecer dados

Resumo Recebe os dados do usuário e efetua a verificação independente de cadastro (verificação léxica)

Escopo não se aplica a estados

Ator principal não se aplica a estados

Interessados não se aplica a estados

Invariante O número de erros identificados na presente instância de usoé menor ou igual a três.

Pré condição

Acionamento Obter dados inicia quando

• ou o sistema Sis solicitar dados do usuário para autorizar o uso • ou o estado validar dados encontra dados ilegais e solicitar novos

dados

Exemplo: Fornecer dados 2 / 4

Fluxo principal 1. O controle de acesso limpa os campos de entrada 2. O controle acesso gera o captcha exibido

3. O usuário digita sua identificação e senha, e o captcha 4. O usuário clica a ação a ser realizada

5. O controle de acesso valida a corretude léxica de idUsuario 6. O controle de acesso verifica o captcha digitado

(17)

33 Arndt von Staa© LES/DI/PUC-Rio

Fev 2018

Exemplo: Fornecer dados 3 / 4

Fluxos

alternativos Evento E1: o usuário clica “cancelar”E1.1 O controle de acesso fecha a janela de identificação de usuário E1.2 O controle de acesso fornece o controle “cancelar uso” ao

sistema Sis Fim evento E1.

Evento E2/6: o usuário digita captcha incorreto E2.1 O controle de acesso emite a mensagem

“Captcha incorreto”

E2.2 Ativa o estado “controlar erros” Fim evento E2.

Evento E3/5: o usuário fornece identificação usuário lexicamente incorreta

E3.1 O controle de acesso emite a mensagem “Usuário incorreto”

E3.2 Ativa o estado “controlar erros” Fim evento E3.

E3 - Especificação léxica de usuário ver: regra de negócio idUsuario E1. Melhor:

E1.1 O controle acesso prepara o retorno <Cancelar, direitos: vazio> E1.2 Termina

34 Arndt von Staa© LES/DI/PUC-Rio

Fev 2018

Pós condições Dados e ação a executar fornecidos ao caso de uso Validar dados

Garantia mínima •N/A Requisitos • -.-Regras de negócio

•idUsuario deve ter entre 5 e 30 caracteres •idUsuario não deve conter letras diacríticas •idUsuario não deve conter dígitos

•idUsuario não deve conter brancos

•idUsuario pode conter somente os caracteres especiais: ‘–’ e ‘.’ Casos de uso

correlatos

Validar dados

Reconfirmar usuário corrente Trocar a senha

Fornecer identificação alternativa

(18)

35 Arndt von Staa© LES/DI/PUC-Rio

Fev 2018

Conversão “Fornecer dados” para tabela de decisão

1 2 3 4 5 6 7 8 9 10

Usuário correto - s s s n n n - -

-Captcha correto - s s s s s s n n n

xorob Tecla “Login” n s n n s n n s n n xorob “Mudar senha” n - s n - s n - s n xorob “Esqueci senha” n - - s - - s - - s xorob “Cancelar” s n n n n n n n n n Ativar “validar” x x x Ativar “erro” x x x x x x Erro “Captcha” x x x Erro “Léxico” x x x Termina “cancela” x

xorob– exclusive or obrigatório  exatamente uma das condições deve ser true

A tabela está correta?

Conversão “Fornecer dados” para tabela de decisão

1 2 3 4 5 6 7 S Usuário lex correto - s s s n s s

Captcha correto - s s s - n s

xorob “Login” - s n n - - n xorob “Mudar senha” - - s n - - n xorob “Esqueci senha” - - - s - - n xorob “Cancelar” s n n n n n n Ativar “validar” x x x Ativar “erro” x x Erro “captcha” x Erro “usuário” x Termina “cancela” x Impossível x Contagem 32 4 2 1 16 8 1 64

A tabela está correta?

Qual seria a ordem esperada das verificações léxicas de usuário e captcha? Isso afeta a tabela?

(19)

37 Arndt von Staa© LES/DI/PUC-Rio

Fev 2018

Exemplo: Validar dados 1 / 3

Estado Validar dados e ação

Resumo Valida os dados e a ação solicitada com relação ao cadastro de usuários autorizados Invariante

Pré condição Nome lexicamente correto, senha qq, ação selecionada é uma de { login, mudaSenha, novaSenha } Acionamento Validar dados inicia ao receber o controle de Obter dados Fluxo principal 1. O Controle de acesso busca os dados do idUsuario no cadastro

2. Se a ação solicitada for “Esqueci senha” Então

2.1 Ativa o estado Fornecer identificação alternativa FimSe

3. O Controle de acesso verifica se a senha fornecida corresponde a uma das registradas para este usuário

4. Se a ação solicitada for “Login” Então

4.1.1 O Controle de acesso prepara o retorno <autorizado, direitos: de < idUsuario, senha>>

4.1.2 Termina Senão

4.2 O Controle de acesso ativa o estado Trocar senha FimSe

Não deveria ser : se ação solicitada é “trocar senha” ?

resultado do estado fornecer dados

38 Arndt von Staa© LES/DI/PUC-Rio

Fev 2018

Exemplo: Validar dados 2 / 3

Fluxos

alternativos E1. Evento: Identificação do usuário não existe no CadastroE1.1. O Controle de acesso exibe a mensagem “Usuário desconhecido” E1.2. O Controle de acesso ativa o estado “Controlar erros”

Fim evento

E2. Evento: Senha não fornecida, ou lexicamente errada ou não corresponde a qualquer uma das senhas de idUsuario

E2.1. O Controle de acesso exibe a mensagem “Usuário desconhecido” E2.2. O Controle de acesso ativa o estado “Controlar erros”

Fim evento

Razões de segurança indicam que as duas mensagens devem ser alguma coisa similar a “Usuário desconhecido”. Um possível agressor ficará na dúvida se o problema é do idUsuario ou da Senha.

Problema 1: como discernir o erro de dados observado durante os testes?

Problema 2: a condição do evento E2 contém uma expressão lógica composta. Deveria ser simples para que se possa criar tabelas de decisão com condições binárias.

(20)

39 Arndt von Staa© LES/DI/PUC-Rio

Fev 2018

Pós condições Garantia mínima

Requisitos •Não deve ser possível discernir se o erro foi idUsuario incorreto ou se senha foi incorreta

Regras de negócio Casos de uso correlatos

Fornecer dados

Reconfirmar usuário corrente Trocar a senha

Fornecer identificação alternativa

Exemplo: Validar dados 3 / 3

Conversão “Validar dados” para tabela de decisão

1 2 3 4 5 6 7 8 9

Usuário conhecido s s s s s n n n

-Senha corresponde s s - n n - - -

-xorob Tecla “Login” s n n s n s n n n xorob “Mudar senha” - s n - s - s n n xorob “Esqueci senha” - - s - - - - s n

Autorizar x Ativar “Controlar” x x x x x Ativar “Trocar” x Ativar “Esqueci” x Impossível x Msg: “Usuário desconhecido” x x x x x

(21)

41 Arndt von Staa© LES/DI/PUC-Rio

Fev 2018

Nível 0 – Final Autoriza uso

Estado Final: Autoriza uso Assertivas de

saída da máquina decomposta

1. retornou < Autorizado, direitos de acesso de <idUsuario, Senha>>

Fluxo 1. Controle de acesso oblitera os registros decriptados do cadastro 2. Controle de acesso fecha a janela

3. Controle de acesso retorna < Autorizado, direitos de acesso de: <idUsuario, Senha>>

O valor retornado poderia ser um objeto da classe “Autorizacao”. Exemplos de atributos e métodos que essa classe pode definir :

• atributo idUnicaUsuario – um inteiro identificador interno gerado ao cadastrar o par <idUsuario, senha>

• atributo condicao uma enumeração tpCondicao :: {AUTORIZA, CANCELA, NOVA_SENHA, NÃO_AUTORIZA}

• atributo lista de idDireito’s – criptografada

• bool TemDireitos( char idDireito ) :: retorna true sse a condição é AUTORIZA e a lista de idDireitos contém idDireito

• tpCondicao RevalidaUsuario( ) :: abre uma janela similar a login e que contém somente o campo senha e os botões Login e Cancelar. Retorna AUTORIZA sse a senha fornecida

correspondem à idUnicaUsuario

42 Arndt von Staa© LES/DI/PUC-Rio

Fev 2018

(22)

Apêndice

43 Arndt von Staa© LES/DI/PUC-Rio

Fev 2018

Máquina de estados, caminhos

Caminhos descrevem os estados de um caminho do estado inicial para algum estado final

– caminhos são casos de teste abstratos

Exemplos de caminhos

Fornecer dados; Validar dados; Autoriza

Fornecer dados; Validar dados; Controlar Erros; Fornecer dados; Validar dados; Trocar

senha - Muda; Fornecer dados; Validar dados; Autoriza

...

Em aula futura será discutido como criar os caminhos de forma sistemática

Fornecer

dados Trocar a senha

Fornecer identi-ficação alternativa

{ "Cancelar" }

Não autoriza uso

{ "Login" } { "Mudar senha"} { "Esqueci senha" }

Emite nova senha Autoriza uso Dados e botão Validar dados {Erro} { "Cancelar" } Cadastro de usuários autorizados Usuário Controlar erros Cancela

{Erros além limite} {Até limite erros}

{Erro léxico}

{ "Cancelar" } { "Muda" }

controle dados

(23)

Máquina de estados, casos teste semânticos

Dado o caminho, um caso de teste abstrato

Fornecer dados; Validar dados; Autoriza

Converter para caso de teste semântico

precisa analisar o caminho,

usualmente faz-se de trás para diante examinando

a condição associada à aresta

as assertivas de saída (origem) e entrada (destino) dos estados

processamento no estado origem da aresta

Resultado

Autoriza: par <Usuário , senha> existe, direitos par definidos

Validar dados -> Autoriza  usuário existe, par <usuário,

senha> existe, botão = Login

Fornecer dados -> Validar dados  usuário correto, senha

digitada, captcha correto, botão = Login

45 Arndt von Staa© LES/DI/PUC-Rio

Fev 2018

Qual é a ideia?

Criar uma máquina de estados em que cada estado

ou é "simples"

ou é decomposto em outra máquina de estados

Para cada estado

criar um caso de uso do estado

fluxo principal

zero ou mais fluxos alternativos

o término de um fluxo é uma transição de estado ou o término da

máquina raiz

O término de um fluxo corresponde

ou a uma mudança de estado

ou ao término da máquina raiz

ou ao término da máquina de decomposição

neste caso a transição (oráculo da tabela de decisão) é uma das

transições de saída do estado "pai"

46 Arndt von Staa© LES/DI/PUC-Rio

(24)

Qual é a ideia?

Para cada estado cria-se uma tabela de decisão

a seleção de valores deve obedecer aos critérios de valoração

espera-se que o número de condições por estado seja pequeno, de

modo que se controle o número de colunas das tabelas de decisão

Cria-se a lista completa de caminhos da máquina de estados

repetições são resolvidas com base no arrasto e no limite de

iterações caso exista

cada caminho na máquina de estados corresponde a uma cena

espera-se que cada máquina contenha poucos estados, de modo

que o número de cenas seja pequeno

cada caminho determina as condições saída da tabela de

decisão de cada um dos estados

O teste cobre a combinação de condições em cada estado,

mas não realiza as combinações entre estados

47 Arndt von Staa© LES/DI/PUC-Rio

Fev 2018

Referências bibliográficas

Holcombe, M.; Bogdanov, K.; Gheorghe, M.; “

Functional Test Generation

for Extreme Programming

”; Proceedings of the XP2001 Second

International Conference on Extreme Programming and Flexible Processes

in Software Engineering; 2001; pags 109-113 Buscado em: 19/08/2004;

URL: http://www.dcs.shef.ac.uk/~wmlh/XPtest.pdf

(25)

49 Arndt von Staa© LES/DI/PUC-Rio

Fev 2018

Referências

Documentos relacionados

Sendo os resultados experimentais (verde) obtidos nas amostras sem desvolatilizacão da Figura 37, fizeram-se a descrição feita acima onde a media final serviu

A idéia de Ricardo teve como principio um problema na época era difícil explicar a causa do enorme aumento de preços que a Inglaterra passava.E é nessa busca que ele chega à

Deduzindo um modelo para um movimento completo de todo o processo, cada roda individualmente contribui ao movimento do robô, ao mesmo tempo, e estabelece restrições sobre o movimento

A Sementinha dormia muito descansada com as suas filhas. Ela aguardava a sua longa viagem pelo mundo. Sempre quisera viajar como um bando de andorinhas. No

A Sementinha dormia muito descansada com as suas filhas. Ela aguardava a sua longa viagem pelo mundo. No entanto, sempre vivera junto ao pomar do António Seareiro e até

8- Indica duas utilizações do granito.. Indica duas utilizações

Gramática: ( Usuário correto | Usuário incorreto ) ( Senha correta | Senha incorreta ) ( Captcha correto | Captcha incorreto ) ( Login | Cancelar | Mudar | Esqueci ) Usuário correto

- São usadas setas para indicar o caminho do menu. Você também pode selecionar Suporte &gt; e-Manual no menu da TV. Selecione uma categoria no lado esquerdo da tela. Uma vez que