SlideShare uma empresa Scribd logo
1 de 13
TDD
Desenvolvimento orientado a
teste
O QUE É TDD? TDD é uma técnica de automação dos
testes, onde nenhum código de produção
é escrito sem antes se escrever um
teste para ele.
Objetivos
Detecção de falhas e defeitos antes
de disponibilizar em produção
Verificação do correto funcionamento
de uma aplicação
Qualidade do código
IMPACTOS DA
FALTA DE
TESTES Retrabalho
Maior números de ticket no dia de
uma atualização do sistema
Insegurança no código realizado
Prejuízo à imagem da equipe
PONTOS
POSITIVOS DO
TDD
Qualidade do código
Um dos principais ensinamentos, senão o
principal, do TDD é que se algo não é
possível de ser testado então foi
desenvolvido de forma errada.
Raciocínio
Para se criar o teste antes do
desenvolvimento é dispensado um tempo
maior na lógica da funcionalidade e seu
funcionamento, forçando o desenvolvedor
a encarar o código de outra maneira.
Segurança
Maior segurança da equipe e do
desenvolvedor no código que será
entregue.
COMO
COMEÇAR
ciclo
COMO
COMEÇAR
Vermelho
Escrita do primeiro teste antes mesmo da
lógica existir. Este teste é feito para
falhar.
Verde
Escrever um código para que o teste passe.
Esta lógica deve ser desenvolvida da
forma mais simples possível eliminando
complexidades desnecessárias fazendo com
que a evolução do código ocorra de forma
segura.
Refatorar
Melhoria do código. Neste ponto são
removidas duplicações, múltiplas
responsabilidades e o código fica cada
EXEMPLO
PRÁTICO
EXERCÍCIO:
Retornar o N-ésimo número de
Fibonacci.
N-ésimo número de Fibonacci é obtido
pela soma dos dois números anteriores
da sequência, sendo que o primeiro
número é 0 e o segundo é o 1. Sendo
assim:
o terceiro é 1 (0 + 1)
o quarto é 2 (1 + 1)
assim por diante.
EXEMPLO
PRÁTICO
1)Escrevendo o teste (red)
Por definição o primeiro número de
Fibonacci é zero (Fibonacci(0) = 0).
Abaixo descrevemos o teste que atende
a esta especificação
Este é o passo red, como estamos desenvolvendo o
teste primeiro o método nem existe ainda, mas já
estamos pensando em como ele deve funcionar.
EXEMPLO
PRÁTICO
2) Fazendo o teste passar (green)
Neste momento você fará o código mais
simples para que o teste passe ou
seja, fazer o método retornar 0.
EXEMPLO
PRÁTICO
3) Refatorar (refatorar)
Neste momento o código está
funcionando e não tem como ficar mais
limpo. Mas obviamente não está pronto.
A partir daí siga o desenvolvimento do
método
CONSTANTES E
BABY STEPS
Retornar constantes e baby steps,
obviamente, não são regras imaculadas
do TDD. Conforme você for adquirindo
experiência e segurança em seguir
adiante, alguns passos podem ser
pulados, inclusive começando por uma
implementação mais próxima da solução
final.
DEVO USAR O TDD EM 100% DO MEU
CÓDIGO?
NÃO!!
Se estamos, por exemplo, escrevendo a implementação de um DAO
(classe que se comunica com o banco de dados), talvez escrever os
testes antes não vá ajudar tanto, afinal não há grandes decisões de
design a serem tomadas em classes como essa, e a funcionalidade
tende a ser simples. Escrever o teste depois, portanto, não será
tão diferente de escrever o teste antes.

Mais conteúdo relacionado

Mais procurados

Unit Testing And Mocking
Unit Testing And MockingUnit Testing And Mocking
Unit Testing And Mocking
Joe Wilson
 

Mais procurados (20)

Unit testing & TDD concepts with best practice guidelines.
Unit testing & TDD concepts with best practice guidelines.Unit testing & TDD concepts with best practice guidelines.
Unit testing & TDD concepts with best practice guidelines.
 
TDD - Agile
TDD - Agile TDD - Agile
TDD - Agile
 
Test Driven Development (TDD)
Test Driven Development (TDD)Test Driven Development (TDD)
Test Driven Development (TDD)
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Istqb 1-소프트웨어테스팅기초
Istqb 1-소프트웨어테스팅기초Istqb 1-소프트웨어테스팅기초
Istqb 1-소프트웨어테스팅기초
 
An Introduction to Unit Testing
An Introduction to Unit TestingAn Introduction to Unit Testing
An Introduction to Unit Testing
 
TDD Flow: The Mantra in Action
TDD Flow: The Mantra in ActionTDD Flow: The Mantra in Action
TDD Flow: The Mantra in Action
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
TDD (Test Driven Design)
TDD (Test Driven Design)TDD (Test Driven Design)
TDD (Test Driven Design)
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Software Testing Metrics
Software Testing MetricsSoftware Testing Metrics
Software Testing Metrics
 
Unit testing
Unit testingUnit testing
Unit testing
 
TDD refresher
TDD refresherTDD refresher
TDD refresher
 
Test and Behaviour Driven Development (TDD/BDD)
Test and Behaviour Driven Development (TDD/BDD)Test and Behaviour Driven Development (TDD/BDD)
Test and Behaviour Driven Development (TDD/BDD)
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Test-Driven Development
Test-Driven DevelopmentTest-Driven Development
Test-Driven Development
 
Unit Testing And Mocking
Unit Testing And MockingUnit Testing And Mocking
Unit Testing And Mocking
 
Risk-based Testing
Risk-based TestingRisk-based Testing
Risk-based Testing
 

Semelhante a TDD Desenvolvimento orientado ao teste

Introdução ao TDD nas soluções Global AppCasting
Introdução ao TDD nas soluções Global AppCastingIntrodução ao TDD nas soluções Global AppCasting
Introdução ao TDD nas soluções Global AppCasting
Pedro Pereira Martins
 

Semelhante a TDD Desenvolvimento orientado ao teste (20)

Os Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareOs Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de software
 
UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"
 
Sobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis Uberlândia
 
Tdd x testes unidades
Tdd x testes unidadesTdd x testes unidades
Tdd x testes unidades
 
Teste automatizados e tdd
Teste automatizados e tddTeste automatizados e tdd
Teste automatizados e tdd
 
Tente desenvolver diferente com TDD
Tente desenvolver diferente com TDDTente desenvolver diferente com TDD
Tente desenvolver diferente com TDD
 
RealDay: Introduction to TDD
RealDay: Introduction to TDDRealDay: Introduction to TDD
RealDay: Introduction to TDD
 
Introdução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anosIntrodução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anos
 
Teste Driven Development
Teste Driven DevelopmentTeste Driven Development
Teste Driven Development
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do Mantra
 
Introdução ao TDD nas soluções Global AppCasting
Introdução ao TDD nas soluções Global AppCastingIntrodução ao TDD nas soluções Global AppCasting
Introdução ao TDD nas soluções Global AppCasting
 
TDD direto das trincheiras
TDD direto das trincheirasTDD direto das trincheiras
TDD direto das trincheiras
 
TDD
TDDTDD
TDD
 
Testes de unidade - Conhecendo e aplicando
Testes de unidade - Conhecendo e aplicandoTestes de unidade - Conhecendo e aplicando
Testes de unidade - Conhecendo e aplicando
 
Coding Dojo - Funcionamento
Coding Dojo - FuncionamentoCoding Dojo - Funcionamento
Coding Dojo - Funcionamento
 
Introdução ao Test Driven Development (TDD)
Introdução ao Test Driven Development (TDD)Introdução ao Test Driven Development (TDD)
Introdução ao Test Driven Development (TDD)
 
1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software
 
Lightning talk Test-Driven Development - TDD
Lightning talk Test-Driven Development - TDDLightning talk Test-Driven Development - TDD
Lightning talk Test-Driven Development - TDD
 

TDD Desenvolvimento orientado ao teste

  • 2. O QUE É TDD? TDD é uma técnica de automação dos testes, onde nenhum código de produção é escrito sem antes se escrever um teste para ele. Objetivos Detecção de falhas e defeitos antes de disponibilizar em produção Verificação do correto funcionamento de uma aplicação Qualidade do código
  • 3. IMPACTOS DA FALTA DE TESTES Retrabalho Maior números de ticket no dia de uma atualização do sistema Insegurança no código realizado Prejuízo à imagem da equipe
  • 4. PONTOS POSITIVOS DO TDD Qualidade do código Um dos principais ensinamentos, senão o principal, do TDD é que se algo não é possível de ser testado então foi desenvolvido de forma errada. Raciocínio Para se criar o teste antes do desenvolvimento é dispensado um tempo maior na lógica da funcionalidade e seu funcionamento, forçando o desenvolvedor a encarar o código de outra maneira. Segurança Maior segurança da equipe e do desenvolvedor no código que será entregue.
  • 6. COMO COMEÇAR Vermelho Escrita do primeiro teste antes mesmo da lógica existir. Este teste é feito para falhar. Verde Escrever um código para que o teste passe. Esta lógica deve ser desenvolvida da forma mais simples possível eliminando complexidades desnecessárias fazendo com que a evolução do código ocorra de forma segura. Refatorar Melhoria do código. Neste ponto são removidas duplicações, múltiplas responsabilidades e o código fica cada
  • 7. EXEMPLO PRÁTICO EXERCÍCIO: Retornar o N-ésimo número de Fibonacci. N-ésimo número de Fibonacci é obtido pela soma dos dois números anteriores da sequência, sendo que o primeiro número é 0 e o segundo é o 1. Sendo assim: o terceiro é 1 (0 + 1) o quarto é 2 (1 + 1) assim por diante.
  • 8. EXEMPLO PRÁTICO 1)Escrevendo o teste (red) Por definição o primeiro número de Fibonacci é zero (Fibonacci(0) = 0). Abaixo descrevemos o teste que atende a esta especificação Este é o passo red, como estamos desenvolvendo o teste primeiro o método nem existe ainda, mas já estamos pensando em como ele deve funcionar.
  • 9. EXEMPLO PRÁTICO 2) Fazendo o teste passar (green) Neste momento você fará o código mais simples para que o teste passe ou seja, fazer o método retornar 0.
  • 10. EXEMPLO PRÁTICO 3) Refatorar (refatorar) Neste momento o código está funcionando e não tem como ficar mais limpo. Mas obviamente não está pronto. A partir daí siga o desenvolvimento do método
  • 11. CONSTANTES E BABY STEPS Retornar constantes e baby steps, obviamente, não são regras imaculadas do TDD. Conforme você for adquirindo experiência e segurança em seguir adiante, alguns passos podem ser pulados, inclusive começando por uma implementação mais próxima da solução final.
  • 12. DEVO USAR O TDD EM 100% DO MEU CÓDIGO?
  • 13. NÃO!! Se estamos, por exemplo, escrevendo a implementação de um DAO (classe que se comunica com o banco de dados), talvez escrever os testes antes não vá ajudar tanto, afinal não há grandes decisões de design a serem tomadas em classes como essa, e a funcionalidade tende a ser simples. Escrever o teste depois, portanto, não será tão diferente de escrever o teste antes.

Notas do Editor

  1. Como o método ainda não foi implementado ele falhará. RED