Giovanni Bassi<br />Victor Hugo Germano<br />Desenvolvendooutside in com BDD<br />
Giovanni Bassi@giovannibassi<br />
Victor Hugo Germano@victorhg<br />
www.lambda3.com.br/training<br />
Assumption<br />DrivenDevelopment<br />
(…)<br />Agile<br />(…)<br />
http://reddevnews.com/articles/2007/11/01/testdriven-development-tdd.aspx<br />
TDD éumaferramentaparapossibilitar a evolução de Design<br />EfeitosColaterais<br />Verificação de comportamento<br />Docu...
Quenomedevodaraomeuteste?<br />O quetestarprimeiro?<br />TDD<br />Quandotestar?<br />O quetestar?<br />Quantotestar?<br />...
Estado<br />Interações<br />
Validação de Estado<br />@Test<br />publicvoid OrderIsFilledIfEnoughInWarehouse() {<br />   Warehouse warehouse = new Ware...
Validação de Interação<br />@Test<br />publicvoid fillingDoesNotRemoveIfNotEnoughInStock() {<br />  Order order = new Orde...
TDD: um péssimonome!<br />
“Behavior-driven development ésobreimplementarumaaplicaçãoatravés da descrição de seucomportamentopelaperspectiva de seus ...
Foco no valor<br />
Criando software queimporta!<br />
Tem valor de negóciotangível<br />Entregueincrementalmente<br />Fácil de manter e gerenciar<br />Fácil de entender e comun...
Linguagem Comum<br />
Soluções<br />PorondecomeçarO quetestar<br />O quenãotestar<br />Outside-in<br />User stories<br />Quantotestar<br />Como ...
Trocar de senha<br />Para que eu possa garantir minha segurança<br />Como usuário registrado<br />Eu quero poder trocar de...
Trocar de senha<br />Funcionalidade<br />Então...<br />Dado...<br />Quando...<br />Cenário 1<br />Um usuário logado<br />S...
E se especificaçõesfossemexecutáveis?<br />
Cenário: Acesso do usuárioàpaginapessoal<br />Dado queeutenho um usuariocadastrado<br />Quandoestounapagina principal<br /...
Ao final teremos testes de regressão!<br />São apenasefeitoscolaterais(aindaquePositivos)<br />
Outside In<br />Feature!<br />http://www.slideshare.net/josephwilk/outsidein-development-with-cucumber-and-rspec<br />
Outside In<br />Feature<br />“Queroqueosusuários do site quecompraram o produtopossamfazer o download diretamente de suasp...
Outside In<br />Cenário<br />Etapas<br />“Garantindo a segurança de informações,<br />Como usuáriocadastradopossoacessarap...
Outside In<br />Cenário<br />Etapas<br />
Outside In<br />TDD<br />CenárioFalhando<br />
Outside In<br />CenárioFalhando<br />
Outside In<br />CenárioFalhando<br />
Outside In<br />CenárioFalhando<br />
Outside In<br />CenárioFalhando<br />
Outside In<br />CenárioFalhando<br />
Outside In<br />CenárioPassando!<br />
Demo<br />
Fotografia da cultura de testes e BDD<br />
Dúvidas?<br />
Obrigado!<br />@giovannibassi	giovanni@lambda3.com.br<br />@victorhg		victor@lambda3.com.br<br />
Próximos SlideShares
Carregando em…5
×

Desenvolvendo Outside In com BDD

2.924 visualizações

Publicada em

Palestra apresentada no AgileBrazil 2011 pelo Giovanni Bassi e Victor Hugo Germano.

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

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

Nenhuma nota no slide
  • Disclaimer: Vocêfaz testes? Naosabe o queé TDD? Desculpe, mas temos um problema…
  • Dan North diz que é pra testar interações, usando mocksMartin Fowler diz que é pra estar estado, usando stubs somente
  • BDD != TDD principalmente porque o vemos de forma diferente
  • Acerte as palavras também vale na linguagem com o clienteBDD vai te obrigar a pensar no negócio, modelar o negócio
  • 19 minutos
  • Desenvolvendo Outside In com BDD

    1. 1. Giovanni Bassi<br />Victor Hugo Germano<br />Desenvolvendooutside in com BDD<br />
    2. 2. Giovanni Bassi@giovannibassi<br />
    3. 3. Victor Hugo Germano@victorhg<br />
    4. 4.
    5. 5.
    6. 6.
    7. 7. www.lambda3.com.br/training<br />
    8. 8.
    9. 9. Assumption<br />DrivenDevelopment<br />
    10. 10.
    11. 11. (…)<br />Agile<br />(…)<br />
    12. 12. http://reddevnews.com/articles/2007/11/01/testdriven-development-tdd.aspx<br />
    13. 13. TDD éumaferramentaparapossibilitar a evolução de Design<br />EfeitosColaterais<br />Verificação de comportamento<br />Documentação<br />
    14. 14. Quenomedevodaraomeuteste?<br />O quetestarprimeiro?<br />TDD<br />Quandotestar?<br />O quetestar?<br />Quantotestar?<br />Porque um testefalhou?<br />
    15. 15. Estado<br />Interações<br />
    16. 16. Validação de Estado<br />@Test<br />publicvoid OrderIsFilledIfEnoughInWarehouse() {<br /> Warehouse warehouse = new WarehouseImpl();<br />warehouse.add(“TALISKER”, 50);<br /> Order order = new Order(“TALISKER”, 50);<br />order.fill(warehouse);<br />assertTrue(order.isFilled());<br />assertEquals(0,warehouse.getInventory(“TALISKER”));<br />}<br />
    17. 17. Validação de Interação<br />@Test<br />publicvoid fillingDoesNotRemoveIfNotEnoughInStock() {<br /> Order order = new Order(“TALISKER”, 51);<br /> Mock warehouse = mock(Warehouse.class);<br />warehouse.expects(once()).method("hasInventory”)<br /> .will(returnValue(false));<br />order.fill((Warehouse) warehouse.proxy());<br />assertFalse(order.isFilled());<br />}<br />
    18. 18. TDD: um péssimonome!<br />
    19. 19. “Behavior-driven development ésobreimplementarumaaplicaçãoatravés da descrição de seucomportamentopelaperspectiva de seus stakeholders”<br />Dan North<br />BDD<br />
    20. 20. Foco no valor<br />
    21. 21. Criando software queimporta!<br />
    22. 22. Tem valor de negóciotangível<br />Entregueincrementalmente<br />Fácil de manter e gerenciar<br />Fácil de entender e comunicar<br />BDD<br />
    23. 23. Linguagem Comum<br />
    24. 24. Soluções<br />PorondecomeçarO quetestar<br />O quenãotestar<br />Outside-in<br />User stories<br />Quantotestar<br />Como nomearos testes<br />Porque um testefalha<br />Mínimopossível<br />Intenção<br />Documentação<br />http://www.slideshare.net/bmabey/the-why-behind-tddbdd-and-the-how-with-rspec<br />
    25. 25. Trocar de senha<br />Para que eu possa garantir minha segurança<br />Como usuário registrado<br />Eu quero poder trocar de senha<br />
    26. 26. Trocar de senha<br />Funcionalidade<br />Então...<br />Dado...<br />Quando...<br />Cenário 1<br />Um usuário logado<br />Solicito a troca de senha<br />A senha é alterada<br />E a nova senha é válida<br />E ativo<br />Cenário 2<br />Um usuário logado<br />Solicito a troca de senha<br />A senha não é alterada<br />E a nova senha é inválida<br />E ativo<br />Cenário 3<br />Um usuário anônimo<br />Solicito a troca de senha<br />Um erro é lançado<br />
    27. 27. E se especificaçõesfossemexecutáveis?<br />
    28. 28. Cenário: Acesso do usuárioàpaginapessoal<br />Dado queeutenho um usuariocadastrado<br />Quandoestounapagina principal<br /> Epreenchooscampos:<br /> | Usuário | login@gmail.com |<br /> | Senha | 123456 |<br /> Epressiono “acessar”<br />Entãodevover “Login realizado com sucesso”<br />
    29. 29. Ao final teremos testes de regressão!<br />São apenasefeitoscolaterais(aindaquePositivos)<br />
    30. 30. Outside In<br />Feature!<br />http://www.slideshare.net/josephwilk/outsidein-development-with-cucumber-and-rspec<br />
    31. 31. Outside In<br />Feature<br />“Queroqueosusuários do site quecompraram o produtopossamfazer o download diretamente de suaspáginaspessoais”<br />
    32. 32. Outside In<br />Cenário<br />Etapas<br />“Garantindo a segurança de informações,<br />Como usuáriocadastradopossoacessarapenasminhapáginapessoal”<br />
    33. 33. Outside In<br />Cenário<br />Etapas<br />
    34. 34. Outside In<br />TDD<br />CenárioFalhando<br />
    35. 35. Outside In<br />CenárioFalhando<br />
    36. 36. Outside In<br />CenárioFalhando<br />
    37. 37. Outside In<br />CenárioFalhando<br />
    38. 38. Outside In<br />CenárioFalhando<br />
    39. 39. Outside In<br />CenárioFalhando<br />
    40. 40. Outside In<br />CenárioPassando!<br />
    41. 41. Demo<br />
    42. 42. Fotografia da cultura de testes e BDD<br />
    43. 43. Dúvidas?<br />
    44. 44. Obrigado!<br />@giovannibassi giovanni@lambda3.com.br<br />@victorhg victor@lambda3.com.br<br />

    ×