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

Post on 03-Jul-2015

516 views 0 download

description

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?

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

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 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

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