• Nenhum resultado encontrado

Teste Baseado em Modelo. Prof. André Takeshi Endo

N/A
N/A
Protected

Academic year: 2021

Share "Teste Baseado em Modelo. Prof. André Takeshi Endo"

Copied!
21
0
0

Texto

(1)

Teste Baseado em Modelo

Prof. André Takeshi Endo

(2)

Teste Baseado em Modelo

Critérios de teste caixa-preta

– Particionamento em classes de equivalência

– Análise de valor limite

– Tabela de decisão

Teste baseado em modelo (TBM)

– Associado em geral ao teste caixa-preta e de sistema

– No entanto, pode ser aplicado em qualquer nível

ou mesmo para teste caixa-branca

(3)

Intuição

TBM pode ser aplicado em diversos contextos, mas no geral, no cenário discutido a seguir.

PCE, AVL e TD* são critérios que focam cenários com no máximo duas sequências de eventos

– Por exemplo, (1) dados de formulário e (2) mensagens de erro ou sucesso!

A funcionalidade a ser testada pode envolver uma série de eventos

– Carrinho de compra em um e-commerce

– Operações bancárias (vários passos)

– Sistemas embarcados (climatizador)

*Particionamento em classes de equivalência (PCE) Análise de valor limite (AVL)

Tabela de decisão (TD)

(4)

Teste baseado em modelo

É aplicado em 4 passos principais:

Modelagem: elaborar de um modelo de teste referente a funcionalidade a ser verificada

Geração de casos de teste: usando modelo, casos de teste (sequências de teste) são geradas

Concretização: Os testes gerados são abstratos (codificar o teste para executar no SUT)

Execução dos testes: usando os casos de teste

concretizados, os mesmos são executados no SUT

(5)

Exemplo

Uma pilha de strings com tamanho limitado (Moodle)

Escreva uma implementação para a estrutura de dados pilha; tal pilha deve ser capaz de empilhar e desempilhar strings. Considere que:

Tal pilha possui um tamanho limitado (que deve ser passado como parâmetro no construtor).

Adicione métodos para empilhar, desempilhar e verificar se a pilha está vazia.

Crie duas classes de exceção que devem ser do tipo “checked exception”:

PilhaVaziaException e PilhaCheiaException.

PilhaVaziaException deve ser lançada caso tente desempilhar a pilha sem elementos.

PilhaCheiaException deve ser lançada caso tente empilhar um elemento na pilha

cheia.

(6)

Como aplicar?

Modelagem: elaborar de um modelo de teste referente a funcionalidade a ser verificada

Usaremos:

– Máquinas de estados* → diagrama de máquinas de estados da UML

Existem outras técnicas:

Modelos orientados a eventos → Event Sequence Graph (ESG)

– …..

*Serão usadas apenas as estruturas mais básicas.

(7)

Modelagem

Quais os eventos no exemplo?

Baseado na lista de métodos públicos

– New (construtor)

– empilhar(objeto)

– Objeto = desempilhar()

– Boolean vazia()

– PilhaCheiaException

– PilhaVaziaException

(8)

Modelagem

Máquina de estados (UML)

– Quais os estados?

– Quais os eventos?

– O que faria a mudança de estados (transições)?

(9)

Modelagem

Máquina de estados (UML) – possível solução

– Sugestão: usar o yEd Graph Editor*

* https://www.yworks.com/downloads#yEd

(10)

Como aplicar?

Geração de casos de teste: usando modelo de teste, casos de teste (sequências de teste) são geradas

Algoritmos e ferramentas podem ser aplicados para gerar automaticamente os casos de teste

No caso do nosso modelo, queremos que cada transição seja executada ao menos uma vez

– Critério de teste: todas as transições*

* Este critério é equivalente a todos-arcos usado no teste caixa-branca.

(11)

Geração de casos de teste

Elabore dois casos de teste: (i) testar o método

vazia() em cada estado e (ii) lançar as exceções

(12)

Geração de casos de teste

Elabore dois casos de teste (i) testar o método vazia() em cada estado e (ii) lançar as exceções

1

2

3

4

5

6

(13)

Geração de casos de teste

Elabore dois casos de teste (i) testar o método vazia() em cada estado e (ii) lançar as exceções

1 2

3

4

5

(14)

Geração de casos de teste

Caso de teste 1

new(x), vazia()/true, empilhar, vazia()/false, empilhar(x-1 elementos), vazia()/false

Caso de teste 2

new(x), desempilhar/pilhaVaziaException, empilhar,

empilhar(x-1 elementos), empilhar/pilhaCheiaException

Faltou cobrir alguma transição? Elabore um CT para

cobrir esta transição

(15)

Como aplicar?

Concretização: Os testes gerados são abstratos (codificar o teste para executar no SUT)

Dá para executar os CTs anteriores direto no SUT?

Não! São abstratos

Existem várias estratégias

Vamos concretizar na forma de código usando

JUnit!!!!

(16)

Concretização

Usando JUnit, como faríamos a concretização deste caso de teste?

– Chamando métodos na ordem especificada e verificando as saídas com assertivas

Caso de teste 1

new(x), vazia()/true, empilhar, vazia()/false,

empilhar(x-1 elementos), vazia()/false

(17)

Como aplicar?

Execução dos teste: usando os casos de teste

concretizados, os mesmos são executados no SUT

(18)

Execução dos testes

Caso um código automatizado seja desenvolvido, basta mandar executar o código!

É possível, principalmente em teste de sistema, realizar a execução de maneira manual

– Assim, a concretização e a execução é realizada

manualmente pelo testador!

(19)

Exercício

Concretize e execute os outros dois casos de teste

para este exemplo.

(20)

Bibliografia

[Pfleeger07] S. L. Pfleeger, “Engenharia de Software:

Teoria e Prática”, 2007.

[Pressman11] R. S. Pressman, “Engenharia de Software:

uma abordagem profissional”, 2011.

[Sommerville03] I. Sommerville, “Engenharia de Software”, 2003.

[Brooks87] “No Silver Bullet: Essence and Accidents of Software Engineering”, 1987.

http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1663532

[IEEE90] “IEEE Standard Glossary of Software Engineering Terminology”, 1990.

http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=159342

(21)

Bibliografia

[Myers] G. J. Myers, T. Badgett, C. Sandler, “The art of software testing”, 2012.

[Pezze] M. Pezze, M. Young, “Teste e análise de software: Processos, princípios e técnicas”, 2008.

[DMJ07] DELAMARO, Márcio Eduardo; MALDONADO, José Carlos; JINO, Mario. Introdução ao teste de

software. Rio de Janeiro, RJ: Elsevier, 2007. 394 p. ISBN 9788535226348.

[UUU] Materiais didáticos elaborados pelos grupos de

engenharia de software do ICMC-USP, DC-UFSCAR e

UTFPR-CP.

Referências

Documentos relacionados

Use a auto hipnose para se libertar dos seus medos e fobias. A auto A auto sabotagem é sabotagem é uma constante uma constante em sua em sua vida? Sempre vida? Sempre que você

Primeiramente, antes de qualquer coisa, dê uma respirada bem funda e sorria! Sério! De pendendo do nível de stress e depressão que vo cê estiver sentindo neste exato momento da

em relação aos requisitos de representação de um registro bibliográfico, o relatório final do Grupo de estudos fRBR da iflA mostra-se como um pa- drão para a construção de

Na Educação Infantil é que vão acontecer os primeiros trabalhos com atividades motoras e é nesse espaço é que o professor deve oportunizar o desenvolvimento da afetividade do

inserir nenhum nome do curso no campo de pesquisa rápida ou se não for inserido nenhum dado no campo É apresentado uma mensagem”Insira o nome do curso” Funcional.Resultado

Os valores nos núcleos das profundidades médias são superiores (no Pacífico em relação ao Atlântico) de um factor de 2 para os fosfatos e nitratos e de um factor de 3 a 10 para

já tinha “estendido o tapete” ao regime de parcerias, em “águas” do poder local. Tal ratio resulta do regime jurídico das autarquias locais, publicado pela Lei nº.. Nesse

b) As brocas helicoidais do diâmetro φ20 mm para trabalhar materiais de aço de construção podem ser feitas do aço rápido P6M5 e sofrer os seguintes tratamentos: 10 p..