SlideShare uma empresa Scribd logo
1 de 8
Teste e Qualidade de Software  Teste baseado em modelos – exemplo da biblioteca João Pascoal Faria [email_address]   www.fe.up.pt / ~jpf
Requisitos ,[object Object],[object Object],[object Object]
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

Mais conteúdo relacionado

Semelhante a Biblioteca

Lib.SAPO.JS - Codebits2007
Lib.SAPO.JS  - Codebits2007Lib.SAPO.JS  - Codebits2007
Lib.SAPO.JS - Codebits2007Claudio Gamboa
 
Javascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOJavascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOWesley Lemos
 
Automatizando tarefas com Python
Automatizando tarefas com PythonAutomatizando tarefas com Python
Automatizando tarefas com Pythonpugpe
 
Criação de log de ações através do banco - PostgreSQL
Criação de log de ações através do banco - PostgreSQLCriação de log de ações através do banco - PostgreSQL
Criação de log de ações através do banco - PostgreSQLMarcos Thomaz
 
Criação de log de ações através do banco
Criação de log de ações através do bancoCriação de log de ações através do banco
Criação de log de ações através do bancoMarcos Thomaz
 
Um Mundo Java Sem XML
Um Mundo Java Sem XMLUm Mundo Java Sem XML
Um Mundo Java Sem XMLiMasters
 

Semelhante a Biblioteca (7)

Lib.SAPO.JS - Codebits2007
Lib.SAPO.JS  - Codebits2007Lib.SAPO.JS  - Codebits2007
Lib.SAPO.JS - Codebits2007
 
Java 8 e futuro
Java 8 e futuroJava 8 e futuro
Java 8 e futuro
 
Javascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOJavascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POO
 
Automatizando tarefas com Python
Automatizando tarefas com PythonAutomatizando tarefas com Python
Automatizando tarefas com Python
 
Criação de log de ações através do banco - PostgreSQL
Criação de log de ações através do banco - PostgreSQLCriação de log de ações através do banco - PostgreSQL
Criação de log de ações através do banco - PostgreSQL
 
Criação de log de ações através do banco
Criação de log de ações através do bancoCriação de log de ações através do banco
Criação de log de ações através do banco
 
Um Mundo Java Sem XML
Um Mundo Java Sem XMLUm Mundo Java Sem XML
Um Mundo Java Sem XML
 

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
  • 2.
  • 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(&quot;Biblioteca da FEUP&quot;, &quot;225081442&quot;, &quot; Rua Dr. Roberto Frias, s/n 4200-465 Porto PORTUGAL&quot;); Empréstimo`SetPrazoLevantamento(2); Empréstimo`SetPrazoDevolução(7); a1 := new Autor(&quot;John Fitzgerald&quot;, &quot;UK&quot;); a2 := new Autor(&quot;Peter Gorm Larsen&quot;, &quot;DK&quot;); a3 := new Autor(&quot;Paul Mukherjee&quot;, &quot;?&quot;); a4 := new Autor(&quot;Nico Plat&quot;, &quot;?&quot;); a5 := new Autor(&quot;Marcel Verhoef&quot;, &quot;?&quot;); p1 := new Publicação(&quot;0-521-62605-6&quot;, &quot;Modelling systems : practical tools and techniques in software development&quot;, [a1, a2], 1998, &quot;Cambridge University Press&quot;, DateUtils`MakeDate(2004,1,10), 100.0); bib.AddPublicação(p1); p2 := new Publicação(&quot;1-85233-881-4&quot;, &quot;Validated Designs for Object-oriented Systems&quot;, [a1, a2, a3, a4, a5], 2005, &quot;Springer&quot;, DateUtils`MakeDate(2005,11,1), 100.0); bib.AddPublicação(p2); s1 := new Sócio(&quot;Joana&quot;, &quot;Rua Direita&quot;, &quot;963033045&quot;, 90); bib.AddSócio(s1); s2 := new Sócio(&quot;Álvaro&quot;, &quot;Rua Esquerda&quot;, &quot;963033046&quot;, 90); bib.AddSócio(s2); s3 := new Sócio(&quot;Vicente&quot;, &quot;Rua do Meio&quot;, &quot;963038861&quot;, 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