A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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.

Apresentações semelhantes


Apresentação em tema: "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."— Transcrição da apresentação:

1 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

2 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

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

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

5 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!

6 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;

7 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", " ", " Rua Dr. Roberto Frias, s/n 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(" ", "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(" ", "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", " ", 90); bib.AddSócio(s1); s2 := new Sócio("Álvaro", "Rua Esquerda", " ", 90); bib.AddSócio(s2); s3 := new Sócio("Vicente", "Rua do Meio", " ", 90); bib.AddSócio(s3); return self );

8 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


Carregar ppt "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."

Apresentações semelhantes


Anúncios Google