Teste seu código! não seja imaturo e nem bundão.
-
Upload
lucas-renan -
Category
Technology
-
view
516 -
download
0
description
Transcript of Teste seu código! não seja imaturo e nem bundão.
Teste seu código!não seja imaturo e nem bundão
@lucasrenan
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 frustradosábado, 24 de março de 2012
Programar se torna chatosá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 testamCarlos 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
Indivíduos e interações mais que processos e ferramentasSoftware em funcionamento mais que documentação abrangenteColaboração com o cliente mais que negociação de contratosResponder a mudanças mais que seguir um plano
Manifesto Ágil
sábado, 24 de março de 2012
Extreme ProgrammingKent Beck
sábado, 24 de março de 2012
Coragemsá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ávelsábado, 24 de março de 2012
TDDtest 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 fasessábado, 24 de março de 2012
BDDbehaviour 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) endend
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" endend
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
PASS test_should_have_a_title_if_is_setted
class Post def title "my post" end def title=(title) endend
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 endend
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 :titleend
PASS test_should_have_a_blank_title_if_none_is_settedPASS test_should_initialize_a_postPASS test_should_have_a_title_if_is_setted
sábado, 24 de março de 2012
Exemplo meio idiotaporé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 endend
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.newend
Dado /que eu digitei (\d+) na calculadora/ do |n| @calc.push n.to_iend
Quando 'eu aperto o botão de soma' do @result = @calc.somaend
Então /o resultado na calculadora deve ser (\d*)/ do |result| @result.should == result.to_iend
sábado, 24 de março de 2012
Você ainda vai continuar sendo um bundão???
sábado, 24 de março de 2012
Obrigadohttp://lucasrenan.com
sábado, 24 de março de 2012