46
#CPBR6 TODO CÓDIGO É CULPADO ATE QUE PROVE SUA INOCÊNCIA ELIAS NOGUEIRA

TDD - Test Driven Development

Embed Size (px)

DESCRIPTION

Apresentação sobre TDD - Test Driven Development no Campus Party 2013 em São Paulo no dia 2/2/2013 onde apresento o que é TDD com uma abordagem prática

Citation preview

#CPBR6

TODO CÓDIGO É CULPADOATE QUE PROVE SUA

INOCÊNCIA

ELIAS NOGUEIRA

Elias Nogueira

Arquiteto de Teste de Software@eliasnogueira

http://about.me/eliasnogueira

TDC2013

thedevelopersconference.com.br

1Pergunta

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 romanosOs 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 romanosCriaremos uma classe de teste de unidadeInstanciaremos uma classe que não existe

O teste, obviamente, falhará!

Os números romanosTesta falha por problema de compilação...Não existe a classe ConversorDeNumerosRomanos

Os números romanosCriaremos a classeCriaremos o método para passar o teste

Os números romanosExecutaremos o teste unitário.O Test passa, mas o código ainda não está OK!

Os números romanosCriaremos mais testes para garantir o funcionamento e implementação

Os números romanosE execução do teste falhará no novo método, pois não implementamos o conversor para o “V”

Os números romanosAlteramos o método converte para que seja possível retornar os valores correspondentes a “I” ou “V”

Os números romanosAgora os dois testes passam com sucesso!

Os números romanosAgora podemos implementar o restante dos números que faltam

Os números romanosAgora adicionaremos um pouco mais de complexidade testando a conversão de “II”

Os números romanosPoderíamos simplesmente adicionar o “II” na tabela certo?

Mas vamos fazer melhor...

Os números romanosUma possível solução é acumular o valor

Os números romanosOnde alteramos a tabela para char

Os números romanosAgora adicionaremos um teste um pouco mais “complexo” para testar a função converte

Os números romanosE o teste passa!!! :D

Os números romanosAgora precisamos tratar os números como “IX” onde não adianta somente somar os valores

Os números romanosAgora 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!

TDD é DESIGN!e não teste

Test-Driven DevelopmentTeste e Design no Mundo RealMauricio Aniche

casadocodigo.com.br

Test-Driven DevelopmentBy ExampleKent Beck

http://goo.gl/0vQv