#CPBR6
TODO CÓDIGO É CULPADO
ATE QUE PROVE SUA INOCÊNCIA
ELIAS NOGUEIRA
Elias Nogueira
QA Engineer
@eliasnogueira
http://eliasnogueira.com
Pergunta
Se software
fossem carros...
Como garantir que tudo funciona?
TESTE DE SOFTWARE
Mas quem testa?
Desenvolvedor?
Tester!!!
Requisitos
Design
Codificação
Teste
Implantação
Modelo de Desenvolvimento Tradicional
Requisitos
Design
Codificação
Teste
Implantação
Problema...
Como garantir
uma melhor
entrega?
TDD – Test Driven Development
E quem vai
fazer?
Os números romanos
Os números eram representados por sete diferentes símbolos
• I, unus, 1, (um)
• V, quinque, 5 (cinco)
• X, decem, 10 (dez)
• L, quinquaginta, 50 (cinquenta)
• C, centum, 100 (cem)
• D, quingenti, 500 (quinhentos)
• M, mille, 1.000 (mil)
Os números romanos
Algarismos de menor ou igual valor à direita são somados ao
algarismo de maior valor
Algarismos de menor valor à esquerda são subtraídos do
algarismo de maior valor.
Os números romanos
Criaremos uma classe de teste de unidade
Instanciaremos uma classe que não existe
O teste, obviamente, falhará!
Os números romanos
Testa falha por problema de compilação...
Não existe a classe ConversorDeNumerosRomanos
Os números romanos
Criaremos a classe
Criaremos o método para passar o teste
Os números romanos
Executaremos o teste unitário.
O Test passa, mas o código ainda não está OK!
Os números romanos
Criaremos mais testes para garantir o
funcionamento e implementação
Os números romanos
E execução do teste falhará no novo método,
pois não implementamos o conversor para o “V”
Os números romanos
Alteramos o método converte para que seja
possível retornar os valores correspondentes a
“I” ou “V”
Os números romanos
Agora os dois testes passam com sucesso!
Os números romanos
Agora podemos implementar o restante dos
números que faltam
Os números romanos
Agora adicionaremos um pouco mais de
complexidade testando a conversão de “II”
Os números romanos
Poderíamos simplesmente adicionar o “II” na
tabela certo?
Mas vamos fazer melhor...
Os números romanos
Uma possível solução é acumular o valor
Os números romanos
Onde alteramos a tabela para char
Os números romanos
Agora adicionaremos um teste um pouco mais
“complexo” para testar a função converte
Os números romanos
E o teste passa!!! :D
Os números romanos
Agora precisamos tratar os números como “IX”
onde não adianta somente somar os valores
Os números romanos
Agora teremos que alterar o código
(1) Escrever um teste simples
(2) Vê se
ele falha
(3) Implementa uma solução
simples pra resolver
(4) Refatora
para remover
duplicidade
TDD – Test Driven Development
De onde veio?
• Kent Back (criador do JUnit)
• Prática conhecida do XP (Test First)
Benefícios da adoção do TDD
• Primeiro foco em teste, depois na
implementação
• Código já nasce testado
• Simplicidade e melhor design
• Feedback rápido
• Segurança!
Ferramentas xUnit
http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks
• São as ferramentas para a criação de
testes unitários
• Existem diversas ferramentas para todo
o tipo de linguagem
TDD é DESIGN!
e não teste
Test-Driven Development
Teste e Design no Mundo Real
Mauricio Aniche
casadocodigo.com.br
Test-Driven Development
By Example
Kent Beck
http://goo.gl/0vQv
@eliasnogueira
http://about.me/eliasnogueira
http://slideshare.net/elias.nogueira
https://github.com/eliasnogueira/tdd-exemplo

TDD - Test Driven Development