Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouVinícius Gusmão Lacerda Alterado mais de 6 anos atrás
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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.