pepinos do cliente no código de testes da aplicação com oss
DESCRIPTION
Slides da palestra que apresentei no FISL 2010 sobre BDD, Cucumber, Rails, Ruby, Java e mais um pouco. Os videos utilizados podem ser encontrados em: http://vimeo.com/13523947 http://vimeo.com/13524790TRANSCRIPT
![Page 1: pepinos do cliente no código de testes da aplicação com OSS](https://reader036.vdocuments.pub/reader036/viewer/2022062704/55620564d8b42a25488b5856/html5/thumbnails/1.jpg)
http://www.urubatan.com.br [email protected]
Transformando os pepinos do cliente no código de testes da aplicação com
Cucumber
Rodrigo Urubatan
![Page 2: pepinos do cliente no código de testes da aplicação com OSS](https://reader036.vdocuments.pub/reader036/viewer/2022062704/55620564d8b42a25488b5856/html5/thumbnails/2.jpg)
Sobre Urubatan
Trabalho com desenvolvimento desde 1997, já desenvolvi sistemas em diversas linguagens, como Delphi, C, C++, PHP, ASP, ColdFusion, Assembly, Leather, Java e Ruby.
Atualmente trabalho com pesquisa e desenvolvimento na HP, utilizando principalmente Java, e com Ruby em outros projetos e cursos.
Alem de ser o autor do livro "Ruby On Rails: Desenvolvimento fácil e Rápido de aplicações web"
![Page 3: pepinos do cliente no código de testes da aplicação com OSS](https://reader036.vdocuments.pub/reader036/viewer/2022062704/55620564d8b42a25488b5856/html5/thumbnails/3.jpg)
O cliente tem um problema a resolver
![Page 4: pepinos do cliente no código de testes da aplicação com OSS](https://reader036.vdocuments.pub/reader036/viewer/2022062704/55620564d8b42a25488b5856/html5/thumbnails/4.jpg)
Descobrindo os problemas
Reuniões com o cliente
Definição do Project
Backlog
Agile Business Analysis
User Stories
Lista do que deve ser feito
Cenários de uso do
sistema
![Page 5: pepinos do cliente no código de testes da aplicação com OSS](https://reader036.vdocuments.pub/reader036/viewer/2022062704/55620564d8b42a25488b5856/html5/thumbnails/5.jpg)
Behavior Driven Development
![Page 6: pepinos do cliente no código de testes da aplicação com OSS](https://reader036.vdocuments.pub/reader036/viewer/2022062704/55620564d8b42a25488b5856/html5/thumbnails/6.jpg)
Cenário: Login
Scenario: Login of existent user
Given I am on the login page
When I provide valid credentials
And I press "Login"
Then I should be redirected to "the home
page"
![Page 7: pepinos do cliente no código de testes da aplicação com OSS](https://reader036.vdocuments.pub/reader036/viewer/2022062704/55620564d8b42a25488b5856/html5/thumbnails/7.jpg)
Pensando melhor na feature
![Page 8: pepinos do cliente no código de testes da aplicação com OSS](https://reader036.vdocuments.pub/reader036/viewer/2022062704/55620564d8b42a25488b5856/html5/thumbnails/8.jpg)
Feature Login
Feature: Login
In order to make some money
As the service provider
I want existing users to be able to access the system
Scenario: Login of existent user
Given I am on the login page
When I provide valid credentials
And I press "Login"
Then I should be redirected to "the home page"
Scenario: Login of inexistent user
Given I am on the login page
When I provide invalid credentials
And I press "Login"
Then I should be redirected to "the login page"
![Page 9: pepinos do cliente no código de testes da aplicação com OSS](https://reader036.vdocuments.pub/reader036/viewer/2022062704/55620564d8b42a25488b5856/html5/thumbnails/9.jpg)
Tudo faz parte de um conjunto
![Page 10: pepinos do cliente no código de testes da aplicação com OSS](https://reader036.vdocuments.pub/reader036/viewer/2022062704/55620564d8b42a25488b5856/html5/thumbnails/10.jpg)
Qual o ferramental completo?
• Integração continua
• Testes de aceitação automatizados
• Relatório dos testes
• Deploy automatico
![Page 11: pepinos do cliente no código de testes da aplicação com OSS](https://reader036.vdocuments.pub/reader036/viewer/2022062704/55620564d8b42a25488b5856/html5/thumbnails/11.jpg)
Ciclo de implementação
1. Montar o backlog de features a serem implementadas
2. Priorizar as features
3. Pegar uma das features para implementar
4. Escrever os cenários/Testes de aceitação para a feature
5. Executar os cenários
6. Escrever código o suficiente para um cenário/teste passar
7. Executar os cenários novamente
8. Repetir passos 6 e 7 até que todos os cenários estejam passando
![Page 12: pepinos do cliente no código de testes da aplicação com OSS](https://reader036.vdocuments.pub/reader036/viewer/2022062704/55620564d8b42a25488b5856/html5/thumbnails/12.jpg)
Exemplo com Ruby on Rails
1. Criar uma aplicação Rails
2. Configurar o suporte ao cucumber
3. Criar features
4. Executar os testes
5. Implementar as features
6. Executar os testes
7. Repetir passos 4 a 6 até que o sistema esteja pronto
8. Ver passo a passo neste video: http://vimeo.com/13523947
![Page 13: pepinos do cliente no código de testes da aplicação com OSS](https://reader036.vdocuments.pub/reader036/viewer/2022062704/55620564d8b42a25488b5856/html5/thumbnails/13.jpg)
Geração espontânea de testes
![Page 14: pepinos do cliente no código de testes da aplicação com OSS](https://reader036.vdocuments.pub/reader036/viewer/2022062704/55620564d8b42a25488b5856/html5/thumbnails/14.jpg)
Exemplo Web com Java
1. Criar um projeto Web Dinâmico com eclipse (ou outra IDE Java)
2. Copiar a pasta features do projeto Rails
3. Configurar cucumber para testar aplicação Java
4. Executar cucumber
5. Implementar Login
6. Executar cucumber
7. Implementar cadastro de usuários
8. Executar cucumber
9. Ver exemplo neste link: http://vimeo.com/13524790
![Page 15: pepinos do cliente no código de testes da aplicação com OSS](https://reader036.vdocuments.pub/reader036/viewer/2022062704/55620564d8b42a25488b5856/html5/thumbnails/15.jpg)
Automação do browser
require 'capybara'
require 'capybara/dsl'
include Capybara
Capybara.current_driver = :selenium
Capybara.app_host = 'http://www.google.com'
Capybara.run_server = false
visit('/')
![Page 16: pepinos do cliente no código de testes da aplicação com OSS](https://reader036.vdocuments.pub/reader036/viewer/2022062704/55620564d8b42a25488b5856/html5/thumbnails/16.jpg)
Executar o cucumber
cucumber features\login.feature
![Page 18: pepinos do cliente no código de testes da aplicação com OSS](https://reader036.vdocuments.pub/reader036/viewer/2022062704/55620564d8b42a25488b5856/html5/thumbnails/18.jpg)
Referências
• Meu livro - http://livro.urubatan.com.br• Meu blog - http://www.urubatan.com.br• Cucumber - http://wiki.github.com/aslakhellesoy/cucumber• Capybara- http://github.com/jnicklas/capybara• WebDriver -
http://code.google.com/p/selenium/wiki/RubyBindings• Watir - http://watir.com/• Watircuke - http://github.com/nofxx/watircuke• Rails – http://rubyonrails.org• ASP.NET MVC - http://www.asp.net/mvc• http://vimeo.com/13524790• http://vimeo.com/13523947