Jpf@fe.up.pt www.fe.up.pt/~jpf Teste e Qualidade de Software Teste baseado em modelos – exemplo da biblioteca João Pascoal Faria jpf@fe.up.pt www.fe.up.pt/~jpf.

Slides:



Advertisements
Apresentações semelhantes
Integração de modelos formais e semi- formais: o caso de UML e VDM++
Advertisements

Funções Declaração function nomedafunção (arg_1, arg_2,..., arg_n) corpoDaFunção end.
Circuitos Seqüenciais Contadores
Interfaces.
Adriano S. Castro André Abdalla
Mestrado em Engenharia Electrotécnica e de Computadores Infraestrutura laboratorial para experimentação remota Orientador Prof. José Manuel Martins Ferreira.
Teste.
THE DEVELOPMENT OF THINKING AND SPEAKING: THE CENTRAL CONCEPT IN VYGOTSKY’S THEORY OF HUMAN PSYCHOLOGICAL DEVELOPMENT Peter Feigenbaum, Ph.D. Fordham University.
Orientação a Objetos com PHP
Uma Extensão do Fluxo de Análise e Projeto do RUP com suporte a Desenvolvimento Baseado em Componentes Eduardo Almeida
O Board of European Students of Technology é uma organização Europeia que tem como principal objectivo potenciar a aprendizagem e a internacionalização.
Modelagem Orientada a Objetos com UML Cursos para a CTI - IME/USP Dairton Bassi, Hugo Corbucci e Mariana Bravo Departamento de Ciência.
Teste.
Teste.
Teste.
Teste\. testes.
Teste de Web Services e SOA
Família Crystal e Iconix
Métodos Formais em Engenharia de Software Especificação Baseada em Modelos em VDM++ (5ª parte) João Pascoal Faria
Valéria Maria Lauande Março/2010
Métodos Formais em Engenharia de Software Especificação Baseada em Modelos em VDM++ (2ª parte) João Pascoal Faria
Complementos de Engenharia de Software A linguagem VDM++ (1ª parte - Estrutura geral duma especificação; importação de.
Métodos Formais em Engenharia de Software Utilização da Ferramenta VDMTools Lite João Pascoal Faria
(baseado em slides de ex-alunos)
Seja bem vindo ao ambiente virtual de nossa biblioteca
Introdução OO.
Linguagens de Programação Conceitos e Técnicas
UML : Unified Modeling Language
Introdução ao RUP – Rational Unified Process
UML – Diagramas de Objectos
Métodos Formais em Engenharia de Software 3c
Métodos Formais em Engenharia de Software Especificação Baseada em Modelos em VDM++ (4ª parte) João Pascoal Faria
Métodos Formais em Engenharia de Software Utilização da Ferramenta VDMTools Lite João Pascoal Faria
Python: Exceções, Iteradores e Geradores
MHP – RFP 2 Luiz Eduardo Sílvio Meira Jones Albuquerque
Complementos de Engenharia de Software A linguagem VDM++ (4ª parte – Funções avançadas) João Pascoal Faria
Métodos Formais em Engenharia de Software Especificação Algébrica em CafeOBJ (3ª parte) João Pascoal Faria
Geração automática de testes de caixa branca
TQS - Teste e Qualidade de Software (Software Testing and Quality) Análise de cobertura de testes com a ferramenta Coverlipse.
João Pascoal Faria TQS - Teste e Qualidade de Software (Software Testing and Quality) Análise de cobertura de código com.
TQS - Teste e Qualidade de Software (Software Testing and Quality) Test-Driven Development João Pascoal Faria
TQS - Teste e Qualidade de Software (Software Testing and Quality) Introdução a testes unitários automatizados com JUnit.
3.1 Classes e Objetos Em um programa orientado a objetos normalmente existem vários objetos de um mesmo tipo. Por exemplo, um programa de controle de.
TQS - Teste e Qualidade de Software (Software Testing and Quality) Teste Envolvendo Acesso a Bases de Dados João Pascoal.
TQS - Teste e Qualidade de Software (Software Testing and Quality) Caso de estudo: Problema da procura duma string num.
Complementos de Engenharia de Software 2005/06
Singleton e Template Method
Programador/a de Informática
TQS - Teste e Qualidade de Software (Software Testing and Quality) Test Driven Devlopment Experiment João Pascoal Faria.
FEUP/LEEC Algoritmos e Estruturas de Dados 2001/2002
Criação e manipulação de objetos
TQS - Teste e Qualidade de Software (Software Testing and Quality) Discussão de Exercícios de Análise de Cobertura de Código.
TQS - Teste e Qualidade de Software (Software Testing and Quality) Geração Automática de Casos de Teste com a Ferramenta.
Modelagem de Sistemas I Aula 1 – Introdução à UML
Complementos de Engenharia de Software A linguagem VDM++ (3ª parte – instruções; aplicação à descrição de algoritmos e.
Estudo da Análise Espacial Utilizando um Modelo Baseado em Indivíduo
TQS - Teste e Qualidade de Software (Software Testing and Quality) Teste baseado em modelos (visuais e formais): exemplo.
TQS - Teste e Qualidade de Software (Software Testing and Quality) Discussão de Exercícios de Teste Baseado em Modelos.
Programação Orientada a Objetos*
Programação Orientada a Objetos*
UML : Unified Modeling Language
Métricas de Qualidade de Software Orientado a Objetos
Rosemary Silveira Filgueiras Melo
3.1.7 Variáveis de Classe e Instância
Metodologia de Investigação I (João Filipe Matos)
Usando JUnit.
Curso básico de PHP. 1 Vantagens: Gratuito Multiplataforma Estável Rapidez Comunicação.
Modelagem Entidade-Relacionamento (MER)
Python: Exceções, Iteradores e Geradores
Métricas Estimando o esforço de desenvolvimento de software.
Transcrição da apresentação:

jpf@fe.up.pt www.fe.up.pt/~jpf Teste e Qualidade de Software Teste baseado em modelos – exemplo da biblioteca João Pascoal Faria jpf@fe.up.pt www.fe.up.pt/~jpf

Requisitos Sócios da biblioteca podem levar publicações emprestadas e reservar publicações Passada a data limite de levantamento de uma publicação, no seguimento de um pedido de empréstimo, o sistema deve automaticamente anular o pedido e disponibilizar a publicação para o próximo sócio que a tenha pedido, notificando ambos os sócios O sócio também pode anular o pedido

Modelo do ciclo de vida de um empréstimo Evento temporal (Rational Rose)

Modelo de estrutura estática Para simplificar: considerar relógio síncrono (Só parte de tratamento de prazo)

Modelo de interacção (notificação de sócios a tratar mais tarde) Também serve como especificação de um cenário de teste!

Código de teste – variáveis de instância class TestBiblioteca is subclass of Test instance variables bib : Biblioteca; s1 : Sócio; s2 : Sócio; s3 : Sócio; a1 : Autor; a2 : Autor; a3 : Autor; a4 : Autor; a5 : Autor; p1 : Publicação; p2 : Publicação;

Código de teste - setup operations -- construtor inicializa objectos exceptos empréstimos public TestBiblioteca() res : TestBiblioteca == ( Clock`SetCurDate(DateUtils`MakeDate(2005,11,8)); bib := new Biblioteca("Biblioteca da FEUP", "225081442", " Rua Dr. Roberto Frias, s/n 4200-465 Porto PORTUGAL"); Empréstimo`SetPrazoLevantamento(2); Empréstimo`SetPrazoDevolução(7); a1 := new Autor("John Fitzgerald", "UK"); a2 := new Autor("Peter Gorm Larsen", "DK"); a3 := new Autor("Paul Mukherjee", "?"); a4 := new Autor("Nico Plat", "?"); a5 := new Autor("Marcel Verhoef", "?"); p1 := new Publicação("0-521-62605-6", "Modelling systems : practical tools and techniques in software development", [a1, a2], 1998, "Cambridge University Press", DateUtils`MakeDate(2004,1,10), 100.0); bib.AddPublicação(p1); p2 := new Publicação("1-85233-881-4", "Validated Designs for Object-oriented Systems", [a1, a2, a3, a4, a5], 2005, "Springer", DateUtils`MakeDate(2005,11,1), 100.0); bib.AddPublicação(p2); s1 := new Sócio("Joana", "Rua Direita", "963033045", 90); bib.AddSócio(s1); s2 := new Sócio("Álvaro", "Rua Esquerda", "963033046", 90); bib.AddSócio(s2); s3 := new Sócio("Vicente", "Rua do Meio", "963038861", 90); bib.AddSócio(s3); return self );

Código de teste – caso de teste -- cenário que ilustra o mecanismo de alarmes public Test1() res : Biblioteca == ( dcl e1: Empréstimo; dcl e2: Empréstimo; dcl e3: Empréstimo; Clock`SetCurDate(Clock`GetCurDate()); e1 := p1.Emprestar(s1); e2 := p1.Requisitar(s2); e3 := p1.Requisitar(s3); e1.Devolver(); Assert(e2.GetEstado() = <EsperaLevantamento>); Assert(e3.GetEstado() = <EsperaDisponibilidade>); Clock`IncrCurDate(Empréstimo`GetPrazoLevantamento()+1); Assert(e2.GetEstado() = <Anulado>); Assert(e3.GetEstado() = <EsperaLevantamento>); e3.Levantar(); Clock`IncrCurDate(Empréstimo`GetPrazoDevolução()+1); Assert(s3.TemDevoluçõesAtrasadas()); e3.Devolver(); return bib ); end TestBiblioteca