More Related Content
Similar to Biblioteca (7)
Biblioteca
- 1. Teste e Qualidade de Software Teste baseado em modelos – exemplo da biblioteca João Pascoal Faria [email_address] www.fe.up.pt / ~jpf
- 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", "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 );
- 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