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

Like this? Share it with your network

Share

Dubles de Testes - Na Pratica

on

  • 1,605 views

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.

Statistics

Views

Total Views
1,605
Views on SlideShare
1,570
Embed Views
35

Actions

Likes
0
Downloads
18
Comments
0

1 Embed 35

http://rkmael.wordpress.com 35

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Dubles de Testes - Na Pratica Presentation 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:
    • Jmock
    • 42. EasyMock
    • 43. Mockito
    • 44. PowerMock
    • 45. JMockit
    Específicas de APIs
    • Mockrunner
    • 46. EJBMock
    • 47. SpringUnit
    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