• Like
Dubles de Testes - Na Pratica
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Dubles de Testes - Na Pratica

  • 1,303 views
Published

Nesta segunda parte da apresentação, Ismael explica como e quando utilizar cada Duble de Teste. No Final, faz comparações e conclui com dicas valiosas para serem usadas no dia-a-dia.

Nesta segunda parte da apresentação, Ismael explica como e quando utilizar cada Duble de Teste. No Final, faz comparações e conclui com dicas valiosas para serem usadas no dia-a-dia.

Published in Technology , Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,303
On SlideShare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
18
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Parte 2
    Ismael Soares
  • 2.
  • 3.
  • 4. Add Item
    Nota Fiscal
    Item
    Produto
    Cliente
  • 5.
  • 6. Os métodos de um Dummy
    Nunca podem ser chamados
  • 7.
  • 8.
  • 9.
  • 10.
  • 11. Como causar a Exception?
  • 12.
  • 13.
  • 14. Como testar uma String (HTML) gerada dinâmicamente?
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22. Mocks
    ou
    Stubs?
  • 23. No artigo: “Mocks aren’t Stubs”, Martin Fowler explica:
    Stub– éapropriadoparatestarestado
    Mock– é apropriadoparatestarcomportamento
  • 24. Exemplo - estado
    classOrderStateTester...
    publicvoidtestOrderSendsMailIfUnfilled() {
    Orderorder = new Order(TALISKER, 51);
    MailServiceStubmailer = new MailServiceStub();
    order.setMailer(mailer);
    order.fill(warehouse);
    assertEquals(1, mailer.numberSent());
    }
    public interface MailService {
    publicvoidsend (Messagemsg);
    }
    publicclassMailServiceStubimplementsMailService {
    privateList<Message> messages = new ArrayList<Message>();
    publicvoidsend (Messagemsg) {
    messages.add(msg);
    }
    publicintnumberSent() {
    returnmessages.size();
    }
    }
  • 25. Exemplo - comportamento
    classOrderInteractionTester...
    publicvoidtestOrderSendsMailIfUnfilled() {
    Orderorder = new Order(TALISKER, 51);
    Mockwarehouse = mock(Warehouse.class);
    Mockmailer = mock(MailService.class);
    order.setMailer((MailService) mailer.proxy());
    mailer.expects(once()).method("send");
    warehouse.expects(once()).method("hasInventory")
    .withAnyArguments()
    .will(returnValue(false));
    order.fill((Warehouse) warehouse.proxy());
    }
    }}
  • 26. Mocks
    ou
    Spys?
  • 27. Test Spy
    Verificação de comportamento efetuado (tudo roda)
    A unidade sob teste é chamada
    O spy captura informações
    O teste verifica se elas estão corretas
  • 28. Test Mock
    Especificação do comportamento esperado (falha cedo)
    O mock é carregado com as chamadas esperadas
    A unidade sob teste é chamada – se algo der errado os testes falham
  • 29. Quemprecisa de tantosdublêsquando se tem o mock?
    Mock
    O multi-usodos testes
  • 30. Nemsempre o mais “fácil”
    é o melhor!
  • 31. Entãodevoser
    Classista
    ou
    Mockista?
  • 32. O estilo TDD clássicoutilizaobjetosreaisquandopossível e um similar no casocontrário.
    Um praticante do TDD Mockista, sempreiráutilizar um mock paraqualquerobjetoquetenha um comportamentointeressante.
  • 33. Mas o ideal é ficar com as diferenças.
    Nãoserextremo!
  • 34. Como escolher?
  • 35. Analise o contexto
    Háinterações entre osobjetos?
    Estasinteraçõessãoimportantes?
    A quantidade e a ordem das interaçõessãorelevantes?
    Use MOCK
    Casocontrárioconsidere a possibilidade de usaroutrosdublês
  • 36. Reutilização
    Seráqueistoqueestoufazendonãoseráutilemoutrasocasiões?
  • 37. Nãocomplique!
    Procure fazer as coisas o maislegívelpossível
  • 38. Vantagens de usardublês
    • Isola testes de unidade (bug em uma unidade não afeta testes da outra)
    • 39. Acelera preparação ou execução dos testes
    • 40. Permite testar mesmo que alguma componente não esteja pronta ou disponível
    • 41. Evita efeitos colaterais indesejáveis
  • Ferramentasparacriardublês
    Genéricas:
    Específicas de APIs
    Fakes
    • Web containers leves, BDs / ORMsemmemória, HTMLUnit
  • 48. Links Imagens
    http://www.rethinkware.com/download/attachments/557237/testesunitarios.JPG?version=1&modificationDate=1274749852384
    http://www.yogodoshi.com/blog/wp-content/uploads/hacker2.jpg
    http://3.bp.blogspot.com/__8RKQKezcsk/TQee5_GRrEI/AAAAAAAABtk/-RNZUvv3Boo/s1600/0000+ideia.jpg
    http://www.corposaudavel.net/wp-content/uploads/beneficios-laranja.jpg
    http://dojofloripa.wordpress.com/2006/10/17/trabalhando-com-stubs/
    http://i.s8.com.br/images/sport/cover/img2/21203992_4.jpg
    http://www.stanford.edu/group/storytelling/cgi-bin/joomla/images/stories/Impostor.jpg
    http://www.mxmasters.com.br/wp-content/uploads/2010/02/falso2.jpg
    http://cdn.osabetudo.com/wp-content/uploads/2011/06/o_pensador_do_seculo_xxi_474185-257x300.jpg
    http://alliancecoaching.files.wordpress.com/2009/10/multi-tarefa.png
    http://www.guiadariviera.com.br/images/rivieraReciclagem/setas.jpg
  • 49. Referências
    Artigo do Martin Fowler (Mocks Aren't Stubs)
    http://www.infoq.com/br/articles/mocks-Arent-Stubs#4
    Curso de verão com Mariana Bravo
    http://ccsl.ime.usp.br/agilcoop/files/TestesAutomatizados-3-1-Dubles-AgilCoop-Verao2009.pdf
    Livro: xUnit Patterns
    http://xunitpatterns.com/Test%20Spy.html