Um problema fácil de resolver        Eles sempre começam assim
A solução0 Preciso de um gerenciador de coleções:   0 Comic books;   0 DVDs;   0 LEGOs;   0 Jogos;
Qualidadeatende aos requisitos
Comunicação              LinguagemCliente                   Desenvolvedor
Comunicação            HistóriasCliente                 Desenvolvedor
História #123Para conseguir mais informações de umacoleção de revistasComo um usuárioEu deveria ver um relatório das minha...
História #123                                 proposição                                  de valorPara conseguir mais info...
História #123Para conseguir mais informações de umacoleção de revistas         papelComo um usuárioEu deveria ver um relat...
História #123Para conseguir mais informações de umacoleção de revistasComo um usuárioEu deveria ver um relatório das minha...
Qualidadefuncionar como esperado
Test Driven Development     Teste              Faça o      que                teste     falha              passar         ...
Testes de aceitação
História #123Apresentar todos os gêneros de revistas com asoma realDeveria mostrar o # total de revistasDeveria possuir o ...
Wireframes
Behavior Driven Development              Teste                Faça oAceitação   unitário                testeque falha   q...
Escolhendo as armas Ruby on Rails, Cucumber, RSpec, Webrat
Mãos à obraConfigurando o ambiente
Instalação    Lembre-se de ter a                                   última versão do ruby                                  ...
Criando uma nova aplicação  0 Para criar uma nova aplicação Rails é simples:$ rails new manga_collection -T  0 Pronto! Par...
Gerenciando os pacotes  0 Altere o arquivo Gemfile responsável pelos    gerenciamento de pacotes com as seguintes linhas:g...
O ambiente de testes  0 Vamos instalar o RSpec e o Cucumber na aplicação$ rails g rspec:install$ rails g cucumber:install
Hora de entender
Adicionando funcionalidade
Rails scaffold 0 Como exemplo vamos usar a funcionalidade de   scaffold para modelar o sistema.$ rails g scaffold manga na...
Escreva o pepino
Veja falhar 0 Execute:$ cucumber features/ 0 A princípio ele vai apenas informar que existem   passos não definidos; 0 Cri...
manga.rb
cucumber features/
Faça o teste passar0 Implementar um controle para relatórios de mangá;0 Página html.erb com as expectativas no wireframe;0...
Refatorar sem medo0 Princípio: Encontrar code smells0 Exemplos:   0 Variáveis temporárias;   0 Longos métodos;   0 Longas ...
Cucumber ou RSpec?  AMBOS
Obrigado!Twitter: @marcoafilhoGitHub: github.com/marcoafilhoEmail: marcoafilho@gmail.com
Behavior Driven Development com Ruby on Rails
Behavior Driven Development com Ruby on Rails
Behavior Driven Development com Ruby on Rails
Behavior Driven Development com Ruby on Rails
Upcoming SlideShare
Loading in …5
×

Behavior Driven Development com Ruby on Rails

502 views
439 views

Published on

Apresentação feita para o FLISOL Salvador 2012.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
502
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Behavior Driven Development com Ruby on Rails

  1. 1. Um problema fácil de resolver Eles sempre começam assim
  2. 2. A solução0 Preciso de um gerenciador de coleções: 0 Comic books; 0 DVDs; 0 LEGOs; 0 Jogos;
  3. 3. Qualidadeatende aos requisitos
  4. 4. Comunicação LinguagemCliente Desenvolvedor
  5. 5. Comunicação HistóriasCliente Desenvolvedor
  6. 6. História #123Para conseguir mais informações de umacoleção de revistasComo um usuárioEu deveria ver um relatório das minhasrevistas por tipo.
  7. 7. História #123 proposição de valorPara conseguir mais informações de umacoleção de revistasComo um usuárioEu deveria ver um relatório das minhasrevistas por tipo.
  8. 8. História #123Para conseguir mais informações de umacoleção de revistas papelComo um usuárioEu deveria ver um relatório das minhasrevistas por tipo.
  9. 9. História #123Para conseguir mais informações de umacoleção de revistasComo um usuárioEu deveria ver um relatório das minhasrevistas por tipo. funcionalidade
  10. 10. Qualidadefuncionar como esperado
  11. 11. Test Driven Development Teste Faça o que teste falha passar Refatore
  12. 12. Testes de aceitação
  13. 13. História #123Apresentar todos os gêneros de revistas com asoma realDeveria mostrar o # total de revistasDeveria possuir o link para nova revistaDeveria possuir o link para todas as revistas
  14. 14. Wireframes
  15. 15. Behavior Driven Development Teste Faça oAceitação unitário testeque falha que falha passar Refatore
  16. 16. Escolhendo as armas Ruby on Rails, Cucumber, RSpec, Webrat
  17. 17. Mãos à obraConfigurando o ambiente
  18. 18. Instalação Lembre-se de ter a última versão do ruby instalado. 0 Rails:$ gem install rails 0 RSpec:$ gem install rspec 0 Cucumber$ gem install cucumber
  19. 19. Criando uma nova aplicação 0 Para criar uma nova aplicação Rails é simples:$ rails new manga_collection -T 0 Pronto! Para testar é executar:$ cd manga_collection$ rails s 0 No navegador acesse http://localhost:3000
  20. 20. Gerenciando os pacotes 0 Altere o arquivo Gemfile responsável pelos gerenciamento de pacotes com as seguintes linhas:group :test do gem database_cleaner, 0.7.2 gem rspec-rails, 2.9.0 gem cucumber-rails, 1.3.0 gem webrat, 0.7.3end 0 Precisamos instalar as novas dependências:$ bundle install
  21. 21. O ambiente de testes 0 Vamos instalar o RSpec e o Cucumber na aplicação$ rails g rspec:install$ rails g cucumber:install
  22. 22. Hora de entender
  23. 23. Adicionando funcionalidade
  24. 24. Rails scaffold 0 Como exemplo vamos usar a funcionalidade de scaffold para modelar o sistema.$ rails g scaffold manga name:string volume:integer genre:string
  25. 25. Escreva o pepino
  26. 26. Veja falhar 0 Execute:$ cucumber features/ 0 A princípio ele vai apenas informar que existem passos não definidos; 0 Crie um arquivo .rb em features/step_definitions; 0 Implemente os passos e veja os testes falharem;
  27. 27. manga.rb
  28. 28. cucumber features/
  29. 29. Faça o teste passar0 Implementar um controle para relatórios de mangá;0 Página html.erb com as expectativas no wireframe;0 Rota apontando para a página; Enough is enough!!!
  30. 30. Refatorar sem medo0 Princípio: Encontrar code smells0 Exemplos: 0 Variáveis temporárias; 0 Longos métodos; 0 Longas classes;0 Os testes servem de suporte para refatoração!
  31. 31. Cucumber ou RSpec? AMBOS
  32. 32. Obrigado!Twitter: @marcoafilhoGitHub: github.com/marcoafilhoEmail: marcoafilho@gmail.com

×