behavior driven development com ruby on rails
DESCRIPTION
Apresentação feita para o FLISOL Salvador 2012.TRANSCRIPT
![Page 1: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/1.jpg)
BDD com RoRMarco Antonio – FLISOL 2012 – Salvador, BA
Convidados especiais:
• Cucumber
• RSpec
![Page 2: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/2.jpg)
Um problema fácil de resolverEles sempre começam assim
![Page 3: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/3.jpg)
![Page 4: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/4.jpg)
A solução
0 Preciso de um gerenciador de coleções:0 Comic books;0 DVDs;0 LEGOs;0 Jogos;
![Page 5: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/5.jpg)
Qualidadeatende aos requisitos
![Page 6: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/6.jpg)
Comunicação
Ling
uag
emCliente Desenvolvedor
![Page 7: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/7.jpg)
Comunicação
Histórias
Cliente Desenvolvedor
![Page 8: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/8.jpg)
História #123
Para conseguir mais informações de uma coleção de revistasComo um usuárioEu deveria ver um relatório das minhas revistas por tipo.
![Page 9: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/9.jpg)
História #123
Para conseguir mais informações de uma coleção de revistasComo um usuárioEu deveria ver um relatório das minhas revistas por tipo.
proposição de valor
![Page 10: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/10.jpg)
História #123
Para conseguir mais informações de uma coleção de revistasComo um usuárioEu deveria ver um relatório das minhas revistas por tipo.
papel
![Page 11: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/11.jpg)
História #123
Para conseguir mais informações de uma coleção de revistasComo um usuárioEu deveria ver um relatório das minhas revistas por tipo.
funcionalidade
![Page 12: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/12.jpg)
Qualidadefuncionar como esperado
![Page 13: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/13.jpg)
Test Driven Development
Faça o teste
passar
Refatore
Teste que
falha
![Page 14: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/14.jpg)
Testes de aceitação
![Page 15: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/15.jpg)
História #123
Apresentar todos os gêneros de revistas com a soma realDeveria mostrar o # total de revistasDeveria possuir o link para nova revistaDeveria possuir o link para todas as revistas
![Page 16: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/16.jpg)
Wireframes
![Page 17: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/17.jpg)
Behavior Driven Development
Teste unitário
que falha
Aceitação que falha
Faça o teste
passar
Refatore
![Page 18: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/18.jpg)
Escolhendo as armasRuby on Rails, Cucumber, RSpec, Webrat
![Page 19: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/19.jpg)
![Page 20: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/20.jpg)
Mãos à obraConfigurando o ambiente
![Page 21: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/21.jpg)
Instalação
0 Rails:
0 RSpec:
0 Cucumber
$ gem install rails
$ gem install rspec
$ gem install cucumber
Lembre-se de ter a última versão do ruby
instalado.
![Page 22: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/22.jpg)
Criando uma nova aplicação
0 Para criar uma nova aplicação Rails é simples:
0 Pronto! Para testar é executar:
0 No navegador acesse http://localhost:3000
$ rails new manga_collection -T
$ cd manga_collection$ rails s
![Page 23: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/23.jpg)
Gerenciando os pacotes
0 Altere o arquivo Gemfile responsável pelos gerenciamento de pacotes com as seguintes linhas:
0 Precisamos instalar as novas dependências:
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.3'end
$ bundle install
![Page 24: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/24.jpg)
O ambiente de testes
0 Vamos instalar o RSpec e o Cucumber na aplicação
$ rails g rspec:install$ rails g cucumber:install
![Page 25: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/25.jpg)
Hora de entender
![Page 26: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/26.jpg)
Adicionando funcionalidade
![Page 27: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/27.jpg)
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
![Page 28: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/28.jpg)
Escreva o pepino
![Page 29: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/29.jpg)
Veja falhar
0 Execute:
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;
$ cucumber features/
![Page 30: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/30.jpg)
manga.rb
![Page 31: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/31.jpg)
cucumber features/
![Page 32: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/32.jpg)
Faça o teste passar
0 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!!!
![Page 33: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/33.jpg)
Refatorar sem medo
0 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!
![Page 34: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/34.jpg)
Cucumber ou RSpec?
AMBOS
![Page 35: Behavior Driven Development com Ruby on Rails](https://reader036.vdocuments.site/reader036/viewer/2022062419/558b9fe3d8b42a027a8b45dc/html5/thumbnails/35.jpg)