Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

nessa palestra apresento os benefícios de testes automatizados, porque a coragem é importante para o desenvolvedor, TDD - test driven development, BDD - behavior driven development, ruby test unit, RSpec e talvez um pouco de cucumber :) você ainda quer continuar sendo um imaturo e um bundão?

lucas renan

March 24, 2012
Tweet

More Decks by lucas renan

Other Decks in Programming

Transcript

  1. 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
  2. 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
  3. 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
  4. 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 Manifesto Ágil sábado, 24 de março de 2012
  5. 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
  6. Desenvolvimento guiados por testes é uma forma de administrar o

    medo durante a programação! Kent Beck sábado, 24 de março de 2012
  7. 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
  8. 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
  9. 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
  10. 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
  11. PASS test_should_have_a_title_if_is_setted class Post def title "my post" end def

    title=(title) end end sábado, 24 de março de 2012
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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