Transformando os pepinos
           do cliente no código de
          testes da aplicação com
                  Cucumber

                             Rodrigo Urubatan




http://www.urubatan.com.br                      rodrigo@urubatan.com.br
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"
O cliente tem um problema a resolver
Descobrindo os problemas
Reuniões com o cliente        Cenários de uso do
                                sistema


Definição do Project
  Backlog
Agile Business Analysis
User Stories
Lista do que deve ser feito
Behavior Driven Development
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"
Pensando melhor na feature
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"
Tudo faz parte de um conjunto
Qual o ferramental completo?

•   Integração continua
•   Testes de aceitação automatizados
•   Relatório dos testes
•   Deploy automatico
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
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
Geração espontânea de testes
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
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('/')
Executar o cucumber

cucumber featureslogin.feature
http://www.urubatan.com.br   rodrigo@urubatan.com.br
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

pepinos do cliente no código de testes da aplicação com OSS

  • 1.
    Transformando os pepinos do cliente no código de testes da aplicação com Cucumber Rodrigo Urubatan http://www.urubatan.com.br rodrigo@urubatan.com.br
  • 2.
    Sobre Urubatan Trabalho comdesenvolvimento 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"
  • 3.
    O cliente temum problema a resolver
  • 4.
    Descobrindo os problemas Reuniõescom o cliente Cenários de uso do sistema Definição do Project Backlog Agile Business Analysis User Stories Lista do que deve ser feito
  • 5.
  • 6.
    Cenário: Login Scenario: Loginof 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"
  • 7.
  • 8.
    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"
  • 9.
    Tudo faz partede um conjunto
  • 10.
    Qual o ferramentalcompleto? • Integração continua • Testes de aceitação automatizados • Relatório dos testes • Deploy automatico
  • 11.
    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
  • 12.
    Exemplo com Rubyon 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
  • 13.
  • 14.
    Exemplo Web comJava 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
  • 15.
    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('/')
  • 16.
    Executar o cucumber cucumberfeatureslogin.feature
  • 17.
    http://www.urubatan.com.br rodrigo@urubatan.com.br
  • 18.
    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