Teste e Qualidade de Software  Teste baseado em modelos – exemplo da biblioteca João Pascoal Faria [email_address]   www.f...
Requisitos <ul><li>Sócios da biblioteca podem levar publicações emprestadas e reservar publicações </li></ul><ul><li>Passa...
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 ...
Código de teste - setup operations -- construtor inicializa objectos exceptos empréstimos public TestBiblioteca() res : Te...
Código de teste – caso de teste -- cenário que ilustra o mecanismo de alarmes public Test1() res : Biblioteca == ( dcl e1:...
Próximos SlideShares
Carregando em…5
×

Biblioteca

264 visualizações

Publicada em

Publicada em: Tecnologia, Negócios
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
264
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
2
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Biblioteca

  1. 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. 2. Requisitos <ul><li>Sócios da biblioteca podem levar publicações emprestadas e reservar publicações </li></ul><ul><li>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 </li></ul><ul><li>O sócio também pode anular o pedido </li></ul>
  3. 3. Modelo do ciclo de vida de um empréstimo Evento temporal (Rational Rose)
  4. 4. Modelo de estrutura estática Para simplificar: considerar relógio síncrono (Só parte de tratamento de prazo)
  5. 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. 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. 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. 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

×