Falando de Testes 
Breno Oliveira
“Testar pra que? O que eu fiz 
vai funcionar …" 
–dummy programmer
Quem garante 
QUE 
vai funcionar?
por isso testamos 
murphy's law
“In God we Trust, all others bring data” 
–William Edwards Deming
Não se desespere os testes 
estão ai para te ajudar
Testes lhe dão a confiança para a mudança
Descrevem o comportamento do software
Facilita a Adição de melhorias
Tempo de desenvolvimento
Ajudam a reduzir o número de bugs
E principalmente …
Ninguém vai te olhar com essa cara ao ver um 
código seu …
Quanto devemos testar?
1 of Kent’s older wise sayings was: 
“Test everything that could possibly 
break.” I think that’s a pretty good 
recipe. 
–Uncle Bob
keep it simple and stupid
Baby steps ftw
Testes Unitários 
Teste de funções do código independente de outras partes do sistemas
Muitas vezes escrevemos testes de unidade 
Que não testam nada
Testar constante é importante 
Mas talvez não com teste de unidade 
Escreva um teste de integração
{ Então o que poderíamos testar daquele 
código? }
Verifique ao passar o valor 4111 foi gerado 
foi um pagamento com VISA.
Teste de Integração 
Testa a integração entre as funções e objetos 
do sistema
garantem que suas classes comunicam-se com 
APIs, escrevem arquivos texto ou mesmo 
gravar no banco são considerados testes de 
integração.
Lembre-se
Você não trabalha sozinho
ATDD NO TESTS 
BDD ? 
TDD
O que fazer então?
TDD
“Desenvolvimento guiados por 
testes é uma forma de administrar 
o medo durante a programação!” 
–Kent Beck
Novamente 
Baby steps ftw
ERROR test_should_initialize_a_post (0:00:00.000) 
uninitialized constant PostTest::Post
PASS test_should_initialize_a_post
Vamos lá 
Eu sei que você pode fazer mais 
Mais confiança cara
ERROR test_should_have_a_title_if_is_setted undefined method 
`title' for #<Post:0x0000010091dc90>
PASS test_should_have_a_title_if_is_setted
ERROR test_should_have_a_title_if_is_setted undefined 
method `title=' for #<Post:0x0000010107ca90>
PASS test_should_have_a_title_if_is_setted
FAIL test_should_have_a_blank_title_if_none_is_setted 
Expected: nil Actual: "my post”
PASS test_should_have_a_blank_title_if_none_is_setted
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
Ok … Meio idiota o exemplo 
Mas não temos tempo 
:(
BDD
Desenvolvimento orientado 
ao comportamento
testar o comportamento da sua aplicação
mais sobre escrever especificações
escrever testes também é documentar
Falando sobre testes automatizados
Falando sobre testes automatizados
Falando sobre testes automatizados

Falando sobre testes automatizados