SlideShare uma empresa Scribd logo
1 de 15
Baixar para ler offline
TDD - Test Driven
Development
A Bala de Prata da qualidade de software?
História, O que é, O que não é
"Desenvolvimento orientado a testes" é um processo
focado no constante ciclo:
1. escreva um pequeno teste que descreva a feature
desejada
2. desenvolva o menor trecho possível de código para que
o teste passe
3. refatore o código para torná-lo decente
História, O que é, O que não é
● "Test Driven Development: By
Example" de Kent Beck, em 2003,
falando sobre metodologias ágeis
● TDD é usado em conjunto com outros
conceitos como extreme programming
● TDD definido por seus principais
objetivos:
História, O que é, O que não é
TDD é especificação, não validação
História, O que é, O que não é => Especificação, não validação
● TDD usa as boas práticas de testes unitários para
proporcionar e forçar o desenvolvedor a pensar no
requerimento ou design antes de escrever código
funcional
● “Entrega” testes unitários que ajudam na validação, mas
isso é só uma boa consequência da prática
História, O que é, O que não é
TDD entrega código limpo e funcional
História, O que é, O que não é => Código limpo e funcional
● Premissa que o desenvolvedor sempre vai escrever o
teste antes especificando o comportamento e trabalhar
no menor trecho de código funcional possível
● Menos linhas de código = menos bugs
● Mais testes = mais confiança e liberdade ao refatorar
Comofaiz?! Boas práticas com TDD
Para termos o processo realmente funcional precisamos
obedecer algumas pequenas mas importantes regras:
● O teste vem primeiro!
● Mantenha o código funcional pequeno, abuse de OO
● Trate seus testes com o mesmo respeito do seu código
Comofaiz?! Boas práticas com TDD
● O teste realmente precisa vir primeiro!
● Evite dependência entre testes, são partes autônomas
● Rode testes isolados, randomize quando rodar todos
● Use dados de fácil compreensão, cuide a legibilidade
● Crie testes que sejam um pequeno passo da feature
completa, quando juntos eles cobrirão todo o código
Prós e Contras. Bom, mau e feio
Parece tudo muito bom, tudo muito bem, seguindo as
práticas e entendendo do que se trata eu consigo fazer,
mas antes de fazer quero saber dos resultados!
Prós e Contras => Bom
● Pequeno passo, teste que ele está ok, próximo pequeno
passo. Muito código coberto por testes
● Código aos poucos > montes de código = produtividade
● Menos tempo de debug = produtividade
● Segurança para os desenvolvedores em refactors de
código antigo e manutenibilidade
Prós e Contras => Mau
● É necessário bom entendimento do requerimento
● É parte da suite de testes, mas não é toda a suite
● Testes precisam ter manutenção, são parte do projeto,
escreva-os bem
● Evite over-testing, quando o teste começa a ficar muito
grande procure quebrá-lo em mais testes
Prós e Contras => Feio
● Acreditar que TDD “são só alguns testes”
● Ignorar a manutenção dos testes
● Acreditar que TDD substitui testes de integração,
aceitação ou mesmo a documentação do projeto
● Testar depois de implementar a feature completa e achar
que isso “é só o que precisa pra ser agile com qualidade”
Beija ou Passa?
TDD é somente uma prática complementar de muitas boas
práticas de desenvolvimento de software.
Ele se vale de benefícios de testes unitários e da prática de
escrever pouco código para refatorar.
Deve ser adotado com apoio gerencial e cuidado dos
desenvolvedores para seguir as regras esperadas.
Com atenção e feito da maneira certa aumenta a
produtividade e a qualidade do projeto de software.
TDD - Test Driven Development => Não é bala de prata, mas também vale muito!
OBRIGADO!
miguelgraz.com

Mais conteúdo relacionado

Mais procurados

Facilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHPFacilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHPPedro Chaves
 
Todas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilTodas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilElias Nogueira
 
TDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao testeTDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao testeRafaela Prado
 
Acelerando a criação de testes usando IntelliTest (Visual Studio Summit 2015)
Acelerando a criação de testes usando IntelliTest (Visual Studio Summit 2015)Acelerando a criação de testes usando IntelliTest (Visual Studio Summit 2015)
Acelerando a criação de testes usando IntelliTest (Visual Studio Summit 2015)Igor Abade
 
TDD - Desenvolvimento Dirigido a Testes
TDD - Desenvolvimento Dirigido a TestesTDD - Desenvolvimento Dirigido a Testes
TDD - Desenvolvimento Dirigido a TestesNetto Cavalcante
 
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) - #guma10anosDionatan default
 
Testes com JUnit
Testes com JUnitTestes com JUnit
Testes com JUnitJugVale
 
XP Programming
XP ProgrammingXP Programming
XP ProgrammingCJR, UnB
 
Boas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDBoas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDJony Ferreira dos Santos
 
Revisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da culturaRevisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da culturaLeandro Parazito
 
Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016Bruno Maomeh
 
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 AppCastingPedro Pereira Martins
 
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...minastestingconference
 
Nunca foi tao facil testar
Nunca foi tao facil testarNunca foi tao facil testar
Nunca foi tao facil testarElias Nogueira
 
Testes utilizando cucumber + PhantomJs
Testes utilizando cucumber + PhantomJsTestes utilizando cucumber + PhantomJs
Testes utilizando cucumber + PhantomJsLocaweb
 
TDD - Pós Graduação em Engenharia de Software Ágil
TDD - Pós Graduação em Engenharia de Software ÁgilTDD - Pós Graduação em Engenharia de Software Ágil
TDD - Pós Graduação em Engenharia de Software ÁgilBruno Eustáquio
 

Mais procurados (20)

Facilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHPFacilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHP
 
Todas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilTodas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágil
 
TDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao testeTDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao teste
 
TDD para Java EE
TDD para Java EETDD para Java EE
TDD para Java EE
 
Acelerando a criação de testes usando IntelliTest (Visual Studio Summit 2015)
Acelerando a criação de testes usando IntelliTest (Visual Studio Summit 2015)Acelerando a criação de testes usando IntelliTest (Visual Studio Summit 2015)
Acelerando a criação de testes usando IntelliTest (Visual Studio Summit 2015)
 
TDD - Desenvolvimento Dirigido a Testes
TDD - Desenvolvimento Dirigido a TestesTDD - Desenvolvimento Dirigido a Testes
TDD - Desenvolvimento Dirigido a Testes
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao 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
 
Testes com JUnit
Testes com JUnitTestes com JUnit
Testes com JUnit
 
XP Programming
XP ProgrammingXP Programming
XP Programming
 
BDD em Ação
BDD em AçãoBDD em Ação
BDD em Ação
 
Boas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDBoas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDD
 
Revisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da culturaRevisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da cultura
 
Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016
 
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
 
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...
 
Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016
 
Nunca foi tao facil testar
Nunca foi tao facil testarNunca foi tao facil testar
Nunca foi tao facil testar
 
Testes utilizando cucumber + PhantomJs
Testes utilizando cucumber + PhantomJsTestes utilizando cucumber + PhantomJs
Testes utilizando cucumber + PhantomJs
 
TDD - Pós Graduação em Engenharia de Software Ágil
TDD - Pós Graduação em Engenharia de Software ÁgilTDD - Pós Graduação em Engenharia de Software Ágil
TDD - Pós Graduação em Engenharia de Software Ágil
 

Destaque (20)

Boletim geral n 041
Boletim geral n 041Boletim geral n 041
Boletim geral n 041
 
Isabel la Católica. -Biografia real-
Isabel la Católica.  -Biografia real-Isabel la Católica.  -Biografia real-
Isabel la Católica. -Biografia real-
 
Prova4 esc
Prova4 escProva4 esc
Prova4 esc
 
Cuadro comparativo
Cuadro comparativoCuadro comparativo
Cuadro comparativo
 
Exposicion lilia
Exposicion liliaExposicion lilia
Exposicion lilia
 
Programa de ensino
Programa de ensinoPrograma de ensino
Programa de ensino
 
Tics educadores
Tics educadores Tics educadores
Tics educadores
 
Sistema urinario
Sistema urinarioSistema urinario
Sistema urinario
 
Exercicio 7
Exercicio 7Exercicio 7
Exercicio 7
 
Boletim Especial Cibratel II
Boletim Especial Cibratel IIBoletim Especial Cibratel II
Boletim Especial Cibratel II
 
Baloncesto
BaloncestoBaloncesto
Baloncesto
 
Proyectocomputacion
ProyectocomputacionProyectocomputacion
Proyectocomputacion
 
Electrónica miguel loaiza
Electrónica miguel loaizaElectrónica miguel loaiza
Electrónica miguel loaiza
 
Proyectocomputacion
ProyectocomputacionProyectocomputacion
Proyectocomputacion
 
Comissionamento como Ferramenta do Processo de Controle de Qualidade em Contr...
Comissionamento como Ferramenta do Processo de Controle de Qualidade em Contr...Comissionamento como Ferramenta do Processo de Controle de Qualidade em Contr...
Comissionamento como Ferramenta do Processo de Controle de Qualidade em Contr...
 
Info lexicon
Info lexiconInfo lexicon
Info lexicon
 
Newsletter nº 5 Relações Públicas e Imagem - Portugal
Newsletter nº 5   Relações Públicas e Imagem - Portugal Newsletter nº 5   Relações Públicas e Imagem - Portugal
Newsletter nº 5 Relações Públicas e Imagem - Portugal
 
Formatos segunda raquira
Formatos segunda raquiraFormatos segunda raquira
Formatos segunda raquira
 
Consulta
ConsultaConsulta
Consulta
 
Todo mundo conversa
Todo mundo conversaTodo mundo conversa
Todo mundo conversa
 

Semelhante a RealDay: Introduction to TDD

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ândiaRogerio Fontes
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesCamilo Ribeiro
 
Desenvolvimento dirigido por comportamento e por teste
Desenvolvimento dirigido por comportamento e por testeDesenvolvimento dirigido por comportamento e por teste
Desenvolvimento dirigido por comportamento e por testeUniversidade Tiradentes
 
Testes e mocks: Em Visual Studio com .NET
Testes e mocks: Em Visual Studio com .NETTestes e mocks: Em Visual Studio com .NET
Testes e mocks: Em Visual Studio com .NETAlessandro Binhara
 
TDD no Community Launch 2010 - Christian Cunha
TDD no Community Launch 2010 - Christian CunhaTDD no Community Launch 2010 - Christian Cunha
TDD no Community Launch 2010 - Christian CunhaChristian Cunha
 
TDD com Código Legado
TDD com Código LegadoTDD com Código Legado
TDD com Código LegadoCesar Romero
 
UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27Hélio Medeiros
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitDomingos Teruel
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Diego Pacheco
 
Tente desenvolver diferente com TDD
Tente desenvolver diferente com TDDTente desenvolver diferente com TDD
Tente desenvolver diferente com TDDWebgoal
 
Desenvolvimento orientado a testes - TDD
Desenvolvimento orientado a testes - TDDDesenvolvimento orientado a testes - TDD
Desenvolvimento orientado a testes - TDDwashingtonlslima
 

Semelhante a RealDay: Introduction to TDD (20)

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 - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
 
Desenvolvimento dirigido por comportamento e por teste
Desenvolvimento dirigido por comportamento e por testeDesenvolvimento dirigido por comportamento e por teste
Desenvolvimento dirigido por comportamento e por teste
 
TDD
TDDTDD
TDD
 
Testes e mocks: Em Visual Studio com .NET
Testes e mocks: Em Visual Studio com .NETTestes e mocks: Em Visual Studio com .NET
Testes e mocks: Em Visual Studio com .NET
 
TDD no Community Launch 2010 - Christian Cunha
TDD no Community Launch 2010 - Christian CunhaTDD no Community Launch 2010 - Christian Cunha
TDD no Community Launch 2010 - Christian Cunha
 
TDD com Código Legado
TDD com Código LegadoTDD com Código Legado
TDD com Código Legado
 
UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1
 
Tente desenvolver diferente com TDD
Tente desenvolver diferente com TDDTente desenvolver diferente com TDD
Tente desenvolver diferente com TDD
 
Testes Ágeis
Testes ÁgeisTestes Ágeis
Testes Ágeis
 
Criando uma Arquitetura Testável
Criando uma Arquitetura TestávelCriando uma Arquitetura Testável
Criando uma Arquitetura Testável
 
Desenvolvimento orientado a testes - TDD
Desenvolvimento orientado a testes - TDDDesenvolvimento orientado a testes - TDD
Desenvolvimento orientado a testes - TDD
 
Codigo limpo.pptx
Codigo limpo.pptxCodigo limpo.pptx
Codigo limpo.pptx
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
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 x testes unidades
Tdd x testes unidadesTdd x testes unidades
Tdd x testes unidades
 

Mais de Miguel Schmitz Grazziotin

Mais de Miguel Schmitz Grazziotin (7)

Trabalhando remoto updated
Trabalhando remoto updatedTrabalhando remoto updated
Trabalhando remoto updated
 
Ruby: A New World
Ruby: A New WorldRuby: A New World
Ruby: A New World
 
Jacket On, Jacket Off - Stop Working and Start Training!
Jacket On, Jacket Off - Stop Working and Start Training!Jacket On, Jacket Off - Stop Working and Start Training!
Jacket On, Jacket Off - Stop Working and Start Training!
 
RealDay: Angular.js
RealDay: Angular.jsRealDay: Angular.js
RealDay: Angular.js
 
Ruby: Passado, Presente e além da Web
Ruby: Passado, Presente e além da WebRuby: Passado, Presente e além da Web
Ruby: Passado, Presente e além da Web
 
Trabalhando remoto com Vikings
Trabalhando remoto com VikingsTrabalhando remoto com Vikings
Trabalhando remoto com Vikings
 
TcheLinux 2010/SenacRS 2013: Apresentação Coding Dojos/DojoPoa
TcheLinux 2010/SenacRS 2013: Apresentação Coding Dojos/DojoPoaTcheLinux 2010/SenacRS 2013: Apresentação Coding Dojos/DojoPoa
TcheLinux 2010/SenacRS 2013: Apresentação Coding Dojos/DojoPoa
 

RealDay: Introduction to TDD

  • 1. TDD - Test Driven Development A Bala de Prata da qualidade de software?
  • 2. História, O que é, O que não é "Desenvolvimento orientado a testes" é um processo focado no constante ciclo: 1. escreva um pequeno teste que descreva a feature desejada 2. desenvolva o menor trecho possível de código para que o teste passe 3. refatore o código para torná-lo decente
  • 3. História, O que é, O que não é ● "Test Driven Development: By Example" de Kent Beck, em 2003, falando sobre metodologias ágeis ● TDD é usado em conjunto com outros conceitos como extreme programming ● TDD definido por seus principais objetivos:
  • 4. História, O que é, O que não é TDD é especificação, não validação
  • 5. História, O que é, O que não é => Especificação, não validação ● TDD usa as boas práticas de testes unitários para proporcionar e forçar o desenvolvedor a pensar no requerimento ou design antes de escrever código funcional ● “Entrega” testes unitários que ajudam na validação, mas isso é só uma boa consequência da prática
  • 6. História, O que é, O que não é TDD entrega código limpo e funcional
  • 7. História, O que é, O que não é => Código limpo e funcional ● Premissa que o desenvolvedor sempre vai escrever o teste antes especificando o comportamento e trabalhar no menor trecho de código funcional possível ● Menos linhas de código = menos bugs ● Mais testes = mais confiança e liberdade ao refatorar
  • 8. Comofaiz?! Boas práticas com TDD Para termos o processo realmente funcional precisamos obedecer algumas pequenas mas importantes regras: ● O teste vem primeiro! ● Mantenha o código funcional pequeno, abuse de OO ● Trate seus testes com o mesmo respeito do seu código
  • 9. Comofaiz?! Boas práticas com TDD ● O teste realmente precisa vir primeiro! ● Evite dependência entre testes, são partes autônomas ● Rode testes isolados, randomize quando rodar todos ● Use dados de fácil compreensão, cuide a legibilidade ● Crie testes que sejam um pequeno passo da feature completa, quando juntos eles cobrirão todo o código
  • 10. Prós e Contras. Bom, mau e feio Parece tudo muito bom, tudo muito bem, seguindo as práticas e entendendo do que se trata eu consigo fazer, mas antes de fazer quero saber dos resultados!
  • 11. Prós e Contras => Bom ● Pequeno passo, teste que ele está ok, próximo pequeno passo. Muito código coberto por testes ● Código aos poucos > montes de código = produtividade ● Menos tempo de debug = produtividade ● Segurança para os desenvolvedores em refactors de código antigo e manutenibilidade
  • 12. Prós e Contras => Mau ● É necessário bom entendimento do requerimento ● É parte da suite de testes, mas não é toda a suite ● Testes precisam ter manutenção, são parte do projeto, escreva-os bem ● Evite over-testing, quando o teste começa a ficar muito grande procure quebrá-lo em mais testes
  • 13. Prós e Contras => Feio ● Acreditar que TDD “são só alguns testes” ● Ignorar a manutenção dos testes ● Acreditar que TDD substitui testes de integração, aceitação ou mesmo a documentação do projeto ● Testar depois de implementar a feature completa e achar que isso “é só o que precisa pra ser agile com qualidade”
  • 14. Beija ou Passa? TDD é somente uma prática complementar de muitas boas práticas de desenvolvimento de software. Ele se vale de benefícios de testes unitários e da prática de escrever pouco código para refatorar. Deve ser adotado com apoio gerencial e cuidado dos desenvolvedores para seguir as regras esperadas. Com atenção e feito da maneira certa aumenta a produtividade e a qualidade do projeto de software.
  • 15. TDD - Test Driven Development => Não é bala de prata, mas também vale muito! OBRIGADO! miguelgraz.com