1 / 51

BDD com RSpec

BDD com RSpec. Behaviour-Driven Development em Ruby Danilo Sato ThoughtWorks UK www.dtsato.com. Duas Perspectivas. TDD / Test::Unit. DSL para BDD. Quanta sigla…. Test::Unit. Classe estende Test::Unit::TestCase Métodos devem começar com “test” Assertions: assert(bool)

tarmon
Download Presentation

BDD com RSpec

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. BDD com RSpec Behaviour-Driven Development em Ruby Danilo Sato ThoughtWorks UK www.dtsato.com

  2. Duas Perspectivas

  3. TDD / Test::Unit

  4. DSL para BDD Quanta sigla…

  5. Test::Unit • Classe estende Test::Unit::TestCase • Métodos devem começar com “test” • Assertions: • assert(bool) • assert_equal(expected, actual) • assert_raise(args, blk) • assert_nil(actual) • …

  6. http://rspec.info/documentation/test_unit.html

  7. setup/teardown

  8. Simple Custom Matcher

  9. Custom Matcher

  10. Custom Matcher

  11. Reaproveitamento

  12. Pendente…

  13. Test-Driven Development

  14. Feedback • Confiança • Erros são detectados rapidamente • Ajudam a saber quando terminamos • Pensar no design antes de implementar • Evita generalização desnecessária • Regressão automatizada

  15. Testes Unitários • Integridade Interna • Rápidos • Independentes • Escrito por e para desenvolvedores • Não indicam integridade externa

  16. Visão mais ampla

  17. Histórias • Como<papel/usuário> • Eu gostaria de<funcionalidade> • Pois <valor de negócio>

  18. Cenários (exemplos) • Dado <contexto> • Quando <evento> • Então<consequência>

  19. SMART • Specific • Measurable • Achievable • Relevant • Time-boxed

  20. Testes de Aceitação • Integridade Externa • Mais lentos • Mais difícil detectar causa de erros • Escrito para clientes • Não indicam integridade interna

  21. Testes Unitários

  22. Testes de Aceitação

  23. ?

  24. Integração

  25. Mocks • Permitem especificar interações entre objetos • Trocam o objeto real por um dublê • Verificam que as expectativas foram atendidas • Substituem: • Objetos “gordos” • Serviços externos • Bibliotecas (não quero testar se o gem funciona) • …

  26. Mocks

  27. Criando um mock

  28. Gravando Expectativas

  29. Verificar Expectativas • Automático! • O teste vai falhar se: • Método esperado não foi chamado • Método foi chamado com argumentos diferentes • Método foi chamado mais ou menos vezes • Método não esperado foi chamado • …

  30. Stubs • Mocks que não verificam expectativas • Servem como dublês mas não se importam com o que aconteceu

  31. RSpec on Rails • Permite testar camadas isoladas: • Model • Controller • View • Helper • Testes de aceitação com Histórias

  32. Model

  33. Controller

  34. View

  35. Muito mais… http://rspec.info

  36. De volta ao BDD…

  37. Normalmente…

  38. BDD

  39. BDD

  40. Resumindo • Behaviour-Driven Development • Um processo ponta-a-ponta de desenvolvimento • Independente de ferramenta • “Outside-in” • RSpec • Ferramental completo para BDD ponta-a-ponta • Histórias -> Mocks -> Specs

  41. Coisas legais (Ruby) • Autotest • Synthesis • Webrat • Cucumber • Selenium

More Related