Teste seu código!
                              não seja imaturo e nem bundão
                                       @lucasrenan




sábado, 24 de março de 2012
http://nudesign.com.br/

sábado, 24 de março de 2012
guru sorocaba

                              http://gurusorocaba.com.br/

sábado, 24 de março de 2012
Como você garante que
              seu código funciona?


sábado, 24 de março de 2012
sábado, 24 de março de 2012
Você confia no seu
                             código?


sábado, 24 de março de 2012
sábado, 24 de março de 2012
Muitos bugs no sistema?
sábado, 24 de março de 2012
Seu chefe fica furioso!
sábado, 24 de março de 2012
Você fica frustrado
sábado, 24 de março de 2012
Programar se torna chato
sábado, 24 de março de 2012
Inspirações da palestra



sábado, 24 de março de 2012
Por que eu sou fanático
              por testes e você é um
                     bundão?
                              Sylvestre Mergulhão



  http://mergulhao.info/2009/10/29/por-que-eu-sou-fan-tico-
                 por-testes-e-voc-um-bund-o

sábado, 24 de março de 2012
Só os imaturos não
                             testam
                              Carlos Brando




    http://nomedojogo.com/2009/04/06/so-os-imaturos-nao-
                          testam/

sábado, 24 de março de 2012
Você é um imaturo!
sábado, 24 de março de 2012
Colar post-its na parede todo
            mundo quer, mas escrever testes
             automatizados ninguém quer.
                              Rodrigo Yoshima




       http://blog.aspercom.com.br/2010/01/12/incrementos/


sábado, 24 de março de 2012
E os testes?
sábado, 24 de março de 2012
Se você não tem
                      segurança, você tem
                             medo!


sábado, 24 de março de 2012
Kent Beck sobre o medo

               • o medo te faz inseguro
               • o medo te faz querer comunicar-se menos
               • o medo te faz afastar-se de feedback
               • o medo te faz mal humorado


sábado, 24 de março de 2012
Calma!



sábado, 24 de março de 2012
sábado, 24 de março de 2012
Manifesto Ágil
Indivíduos e interações mais que processos e
ferramentas
Software em funcionamento mais que
documentação abrangente
Colaboração com o cliente mais que negociação de
contratos
Responder a mudanças mais que seguir um plano




sábado, 24 de março de 2012
Extreme Programming
                              Kent Beck




sábado, 24 de março de 2012
Coragem
sábado, 24 de março de 2012
Testes
             • fazem você se setir confiante
             • fazem você acreditar no seu código
             • fazem você adicionar novas features sem medo
             • fazem você dormir tranquilo



sábado, 24 de março de 2012
Ritmo sustentável
sábado, 24 de março de 2012
TDD
                              test driven development




sábado, 24 de março de 2012
Desenvolvimento guiados por
                   testes é uma forma de
                administrar o medo durante a
                        programação!
                              Kent Beck




sábado, 24 de março de 2012
sábado, 24 de março de 2012
3 fases
sábado, 24 de março de 2012
BDD
                              behaviour driven development




sábado, 24 de março de 2012
Desenvolvimento orientado a
                      comportamento

               • testar o comportamento da sua aplicação
               • mais sobre escrever especificações
               • escrever testes também é documentar



sábado, 24 de março de 2012
Show me the code :)



sábado, 24 de março de 2012
Ruby Test Unit



sábado, 24 de março de 2012
Baby steps



sábado, 24 de março de 2012
require "minitest/autorun"

       class PostTest < MiniTest::Unit::TestCase
         def test_should_initialize_a_post
           post = Post.new
           assert(post)
         end
       end




          ERROR test_should_initialize_a_post (0:00:00.000)
                   uninitialized constant PostTest::Post


sábado, 24 de março de 2012
class Post

       end




                              PASS test_should_initialize_a_post




sábado, 24 de março de 2012
Eu poderia dar passos
                   mais largos caso me
                   sentisse confiante!


sábado, 24 de março de 2012
def test_should_have_a_title_if_is_setted
              post = Post.new
              assert_equal(post.title, "post title")
            end




               ERROR test_should_have_a_title_if_is_setted
                     undefined method `title' for #<Post:
                         0x0000010091dc90>




sábado, 24 de março de 2012
class Post
         def title
           "my post"
         end
       end




                  PASS test_should_have_a_title_if_is_setted




sábado, 24 de março de 2012
def test_should_have_a_title_if_is_setted
              post = Post.new
              post.title = "my post"
              assert_equal(post.title, "my post")
            end




               ERROR test_should_have_a_title_if_is_setted
                    undefined method `title=' for #<Post:
                          0x0000010107ca90>




sábado, 24 de março de 2012
class Post
         def title
           "my post"
         end

         def title=(title)
         end
       end




                  PASS test_should_have_a_title_if_is_setted



sábado, 24 de março de 2012
def test_should_have_a_blank_title_if_none_is_setted
     post = Post.new
     assert_equal(post.title, nil)
   end




    FAIL test_should_have_a_blank_title_if_none_is_setted
                        Expected: "my post"
                             Actual: nil



sábado, 24 de março de 2012
class Post
         def title
           @title
         end

         def title=(title)
           @title = title
         end
       end




    PASS test_should_have_a_blank_title_if_none_is_setted



sábado, 24 de março de 2012
Refatorar



sábado, 24 de março de 2012
class Post
         attr_accessor :title
       end




   PASS test_should_have_a_blank_title_if_none_is_setted
   PASS test_should_initialize_a_post
   PASS test_should_have_a_title_if_is_setted




sábado, 24 de março de 2012
Exemplo meio idiota
                              porém, ilustra bem o ciclo do TDD :)




sábado, 24 de março de 2012
RSpec



sábado, 24 de março de 2012
describe User do
    describe "authentication" do
      it "should be active to authentication" do
        user = Factory.build(:user, :loggable => true)
        user.active_for_authentication?.should be_true
      end

      it "should not be active to authentication" do
         user = Factory.build(:user, :loggable =>
  false)
         user.active_for_authentication?.should
  be_false
      end
    end
  end


sábado, 24 de março de 2012
RSpec + Capybara



sábado, 24 de março de 2012
describe "authentication" do
   let(:user) { Factory.create(:user, :password =>
 "123456", :password_confirmation => "123456") }

      describe "logging" do
        it "should login with valid credentials" do
          visit root_path
          fill_in "user_email", :with => user.email
          fill_in "user_password", :with => "123456"
          click_button "Login"

               page.should have_content("successfully logged"
 )
     end
   end
 ...

sábado, 24 de março de 2012
Cucumber



sábado, 24 de março de 2012
Funcionalidade: Adição
         Para evitar erros bobos
         Como um péssimo matemático
         Eu quero saber como somar dois números

         Cenário: Adicionar dois números
           Dado que eu digitei 50 na calculadora
           E que eu digitei 70 na calculadora
           Quando eu aperto o botão de soma
           Então o resultado na calculadora deve ser
       120




sábado, 24 de março de 2012
Before do
     @calc = Calculadora.new
   end

   Dado /que eu digitei (d+) na calculadora/ do |n|
     @calc.push n.to_i
   end

   Quando 'eu aperto o botão de soma' do
     @result = @calc.soma
   end

   Então /o resultado na calculadora deve ser (d*)/
   do |result|
     @result.should == result.to_i
   end


sábado, 24 de março de 2012
Você ainda vai continuar
               sendo um bundão???


sábado, 24 de março de 2012
Obrigado   http://lucasrenan.com




sábado, 24 de março de 2012

Teste seu código! não seja imaturo e nem bundão.

  • 1.
    Teste seu código! não seja imaturo e nem bundão @lucasrenan sábado, 24 de março de 2012
  • 2.
  • 3.
    guru sorocaba http://gurusorocaba.com.br/ sábado, 24 de março de 2012
  • 4.
    Como você garanteque seu código funciona? sábado, 24 de março de 2012
  • 5.
    sábado, 24 demarço de 2012
  • 6.
    Você confia noseu código? sábado, 24 de março de 2012
  • 7.
    sábado, 24 demarço de 2012
  • 8.
    Muitos bugs nosistema? sábado, 24 de março de 2012
  • 9.
    Seu chefe ficafurioso! sábado, 24 de março de 2012
  • 10.
    Você fica frustrado sábado,24 de março de 2012
  • 11.
    Programar se tornachato sábado, 24 de março de 2012
  • 12.
  • 13.
    Por que eusou fanático por testes e você é um bundão? Sylvestre Mergulhão http://mergulhao.info/2009/10/29/por-que-eu-sou-fan-tico- por-testes-e-voc-um-bund-o sábado, 24 de março de 2012
  • 14.
    Só os imaturosnão testam Carlos Brando http://nomedojogo.com/2009/04/06/so-os-imaturos-nao- testam/ sábado, 24 de março de 2012
  • 15.
    Você é umimaturo! sábado, 24 de março de 2012
  • 16.
    Colar post-its naparede todo mundo quer, mas escrever testes automatizados ninguém quer. Rodrigo Yoshima http://blog.aspercom.com.br/2010/01/12/incrementos/ sábado, 24 de março de 2012
  • 17.
    E os testes? sábado,24 de março de 2012
  • 18.
    Se você nãotem segurança, você tem medo! sábado, 24 de março de 2012
  • 19.
    Kent Beck sobreo medo • o medo te faz inseguro • o medo te faz querer comunicar-se menos • o medo te faz afastar-se de feedback • o medo te faz mal humorado sábado, 24 de março de 2012
  • 20.
    Calma! sábado, 24 demarço de 2012
  • 21.
    sábado, 24 demarço de 2012
  • 22.
    Manifesto Ágil Indivíduos einterações mais que processos e ferramentas Software em funcionamento mais que documentação abrangente Colaboração com o cliente mais que negociação de contratos Responder a mudanças mais que seguir um plano sábado, 24 de março de 2012
  • 23.
    Extreme Programming Kent Beck sábado, 24 de março de 2012
  • 24.
    Coragem sábado, 24 demarço de 2012
  • 25.
    Testes • fazem você se setir confiante • fazem você acreditar no seu código • fazem você adicionar novas features sem medo • fazem você dormir tranquilo sábado, 24 de março de 2012
  • 26.
  • 27.
    TDD test driven development sábado, 24 de março de 2012
  • 28.
    Desenvolvimento guiados por testes é uma forma de administrar o medo durante a programação! Kent Beck sábado, 24 de março de 2012
  • 29.
    sábado, 24 demarço de 2012
  • 30.
    3 fases sábado, 24de março de 2012
  • 31.
    BDD behaviour driven development sábado, 24 de março de 2012
  • 32.
    Desenvolvimento orientado a comportamento • testar o comportamento da sua aplicação • mais sobre escrever especificações • escrever testes também é documentar sábado, 24 de março de 2012
  • 33.
    Show me thecode :) sábado, 24 de março de 2012
  • 34.
    Ruby Test Unit sábado,24 de março de 2012
  • 35.
    Baby steps sábado, 24de março de 2012
  • 36.
    require "minitest/autorun" class PostTest < MiniTest::Unit::TestCase def test_should_initialize_a_post post = Post.new assert(post) end end ERROR test_should_initialize_a_post (0:00:00.000) uninitialized constant PostTest::Post sábado, 24 de março de 2012
  • 37.
    class Post end PASS test_should_initialize_a_post sábado, 24 de março de 2012
  • 38.
    Eu poderia darpassos mais largos caso me sentisse confiante! sábado, 24 de março de 2012
  • 39.
    def test_should_have_a_title_if_is_setted post = Post.new assert_equal(post.title, "post title") end ERROR test_should_have_a_title_if_is_setted undefined method `title' for #<Post: 0x0000010091dc90> sábado, 24 de março de 2012
  • 40.
    class Post def title "my post" end end PASS test_should_have_a_title_if_is_setted sábado, 24 de março de 2012
  • 41.
    def test_should_have_a_title_if_is_setted post = Post.new post.title = "my post" assert_equal(post.title, "my post") end ERROR test_should_have_a_title_if_is_setted undefined method `title=' for #<Post: 0x0000010107ca90> sábado, 24 de março de 2012
  • 42.
    class Post def title "my post" end def title=(title) end end PASS test_should_have_a_title_if_is_setted sábado, 24 de março de 2012
  • 43.
    def test_should_have_a_blank_title_if_none_is_setted post = Post.new assert_equal(post.title, nil) end FAIL test_should_have_a_blank_title_if_none_is_setted Expected: "my post" Actual: nil sábado, 24 de março de 2012
  • 44.
    class Post def title @title end def title=(title) @title = title end end PASS test_should_have_a_blank_title_if_none_is_setted sábado, 24 de março de 2012
  • 45.
  • 46.
    class Post attr_accessor :title end PASS test_should_have_a_blank_title_if_none_is_setted PASS test_should_initialize_a_post PASS test_should_have_a_title_if_is_setted sábado, 24 de março de 2012
  • 47.
    Exemplo meio idiota porém, ilustra bem o ciclo do TDD :) sábado, 24 de março de 2012
  • 48.
    RSpec sábado, 24 demarço de 2012
  • 49.
    describe User do describe "authentication" do it "should be active to authentication" do user = Factory.build(:user, :loggable => true) user.active_for_authentication?.should be_true end it "should not be active to authentication" do user = Factory.build(:user, :loggable => false) user.active_for_authentication?.should be_false end end end sábado, 24 de março de 2012
  • 50.
    RSpec + Capybara sábado,24 de março de 2012
  • 51.
    describe "authentication" do let(:user) { Factory.create(:user, :password => "123456", :password_confirmation => "123456") } describe "logging" do it "should login with valid credentials" do visit root_path fill_in "user_email", :with => user.email fill_in "user_password", :with => "123456" click_button "Login" page.should have_content("successfully logged" ) end end ... sábado, 24 de março de 2012
  • 52.
  • 53.
    Funcionalidade: Adição Para evitar erros bobos Como um péssimo matemático Eu quero saber como somar dois números Cenário: Adicionar dois números Dado que eu digitei 50 na calculadora E que eu digitei 70 na calculadora Quando eu aperto o botão de soma Então o resultado na calculadora deve ser 120 sábado, 24 de março de 2012
  • 54.
    Before do @calc = Calculadora.new end Dado /que eu digitei (d+) na calculadora/ do |n| @calc.push n.to_i end Quando 'eu aperto o botão de soma' do @result = @calc.soma end Então /o resultado na calculadora deve ser (d*)/ do |result| @result.should == result.to_i end sábado, 24 de março de 2012
  • 55.
    Você ainda vaicontinuar sendo um bundão??? sábado, 24 de março de 2012
  • 56.
    Obrigado http://lucasrenan.com sábado, 24 de março de 2012