O documento discute a importância de testar código para evitar bugs e problemas. Ele enfatiza que testes automatizados tornam o desenvolvimento mais confiante e agradável ao reduzir o medo de introduzir erros. Vários frameworks de teste como RSpec, Cucumber e Ruby Test Unit são apresentados com exemplos simples de como escrever testes de unidade e funcionais.
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
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
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
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
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
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
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
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
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