SlideShare uma empresa Scribd logo
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

Mais conteúdo relacionado

PPT
relacionamento no ambiente de trabalho
PDF
Test-driven Development - Introdução
PDF
Importância dos testes automatizadoss
PDF
Importancia dos testes automatizados
KEY
Test é para os fracos
PDF
TDD com Python
ODP
Lapidando ruby
relacionamento no ambiente de trabalho
Test-driven Development - Introdução
Importância dos testes automatizadoss
Importancia dos testes automatizados
Test é para os fracos
TDD com Python
Lapidando ruby

Semelhante a Teste seu código! não seja imaturo e nem bundão. (20)

PDF
Desenvolvimento em .Net - Testes Unitários
ODP
Mantendo a Qualidade dos Códigos de Teste
PDF
Testes e Refatoração
PDF
Testes e Refatoração
PDF
Testes de Software & Ferramentas de Testes
KEY
Introdução ao conceito de testes.
PDF
Codigo legado fisl
PDF
Palestra TDD Javou! #08 2016
PDF
Cultura de testes
PDF
Conhecendo Ruby on Rails
PPTX
Testes Automatizados
PDF
Mini curso de testes ágeis
PDF
Test Driven Development - Trabalhe tranquilo e maximize sua produtividade
PDF
Fun driven development com Ruby
PDF
Testes - Pra quê - 2013
PPT
Testes de Sofware
PDF
Techtalk riojs
PDF
Falando sobre testes automatizados
KEY
Testes - Para que?
PDF
Desmistificando agile testing tdc 2011
Desenvolvimento em .Net - Testes Unitários
Mantendo a Qualidade dos Códigos de Teste
Testes e Refatoração
Testes e Refatoração
Testes de Software & Ferramentas de Testes
Introdução ao conceito de testes.
Codigo legado fisl
Palestra TDD Javou! #08 2016
Cultura de testes
Conhecendo Ruby on Rails
Testes Automatizados
Mini curso de testes ágeis
Test Driven Development - Trabalhe tranquilo e maximize sua produtividade
Fun driven development com Ruby
Testes - Pra quê - 2013
Testes de Sofware
Techtalk riojs
Falando sobre testes automatizados
Testes - Para que?
Desmistificando agile testing tdc 2011
Anúncio

Mais de Lucas Renan (16)

PDF
building an international career
PDF
Real Time with Rails 5
PDF
Be Happy With Ruby on Rails - Ecosystem
PDF
Be happy with Ruby on Rails - CEUNSP Itu
PDF
Seja Feliz com Ruby!
PDF
hey agilista, esqueceu das pessoas?
PDF
Open Source e Ruby on Rails - FLISOL 2013
PDF
Movimentando Comunidades - GURU ABC
PDF
Ruby on Rails - UNISO
PDF
REST Active Resource - 7º Encontro do GURU Sorocaba
PDF
Ruby on Rails + MongoDB - FATEC Sorocaba
PDF
Ruby on Rails - Clube Startup
KEY
Movimente sua comunidade local - LT RubyConf Br 2012
KEY
AIESEC Sorocaba - CONACT Effect
KEY
Ruby on Rails + MongoDB
KEY
Ruby on Rails + MongoDB - GURU Sorocaba
building an international career
Real Time with Rails 5
Be Happy With Ruby on Rails - Ecosystem
Be happy with Ruby on Rails - CEUNSP Itu
Seja Feliz com Ruby!
hey agilista, esqueceu das pessoas?
Open Source e Ruby on Rails - FLISOL 2013
Movimentando Comunidades - GURU ABC
Ruby on Rails - UNISO
REST Active Resource - 7º Encontro do GURU Sorocaba
Ruby on Rails + MongoDB - FATEC Sorocaba
Ruby on Rails - Clube Startup
Movimente sua comunidade local - LT RubyConf Br 2012
AIESEC Sorocaba - CONACT Effect
Ruby on Rails + MongoDB
Ruby on Rails + MongoDB - GURU Sorocaba
Anúncio

Último (16)

PPTX
Arquitetura de computadores - Memórias Secundárias
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Arquitetura de computadores - Memórias Secundárias
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Processos na gestão de transportes, TM100 Col18
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Custos e liquidação no SAP Transportation Management, TM130 Col18
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
COBITxITIL-Entenda as diferença em uso governança TI
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Termos utilizados na designação de relação entre pessoa e uma obra.pdf

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
  • 3. guru sorocaba http://gurusorocaba.com.br/ sábado, 24 de março de 2012
  • 4. Como você garante que seu código funciona? sábado, 24 de março de 2012
  • 5. sábado, 24 de março de 2012
  • 6. Você confia no seu código? sábado, 24 de março de 2012
  • 7. sábado, 24 de março de 2012
  • 8. Muitos bugs no sistema? sábado, 24 de março de 2012
  • 9. Seu chefe fica furioso! sábado, 24 de março de 2012
  • 10. Você fica frustrado sábado, 24 de março de 2012
  • 11. Programar se torna chato sábado, 24 de março de 2012
  • 12. Inspirações da palestra sábado, 24 de março de 2012
  • 13. 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
  • 14. 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
  • 15. Você é um imaturo! sábado, 24 de março de 2012
  • 16. 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
  • 17. E os testes? sábado, 24 de março de 2012
  • 18. Se você não tem segurança, você tem medo! sábado, 24 de março de 2012
  • 19. 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
  • 20. Calma! sábado, 24 de março de 2012
  • 21. sábado, 24 de março de 2012
  • 22. 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
  • 23. Extreme Programming Kent Beck sábado, 24 de março de 2012
  • 24. Coragem sábado, 24 de març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. Ritmo sustentável sábado, 24 de março de 2012
  • 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 de março de 2012
  • 30. 3 fases sábado, 24 de 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 the code :) 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, 24 de 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 dar passos 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. Refatorar sábado, 24 de março de 2012
  • 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 de març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. Cucumber sábado, 24 de março de 2012
  • 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 vai continuar 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