RealDay: Introduction to TDD

Miguel Schmitz Grazziotin
Miguel Schmitz GrazziotinSoftware Engineer en Happy Bear Software
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
1 de 15

Más contenido relacionado

La actualidad más candente(20)

Destacado

Boletim geral n 041Boletim geral n 041
Boletim geral n 041isacarlavieira
135 vistas23 diapositivas
Prova4 escProva4 esc
Prova4 escJ M
1.1K vistas13 diapositivas
Cuadro comparativoCuadro comparativo
Cuadro comparativoVictor Vences
333 vistas3 diapositivas
Exposicion liliaExposicion lilia
Exposicion liliaMariialamilla
196 vistas15 diapositivas
Programa de ensinoPrograma de ensino
Programa de ensinolorenatarcia
128 vistas6 diapositivas

Destacado(20)

Boletim geral n 041Boletim geral n 041
Boletim geral n 041
isacarlavieira135 vistas
Isabel la Católica.  -Biografia real-Isabel la Católica.  -Biografia real-
Isabel la Católica. -Biografia real-
Muro del Honor Patriotico1.5K vistas
Prova4 escProva4 esc
Prova4 esc
J M1.1K vistas
Cuadro comparativoCuadro comparativo
Cuadro comparativo
Victor Vences333 vistas
Exposicion liliaExposicion lilia
Exposicion lilia
Mariialamilla196 vistas
Programa de ensinoPrograma de ensino
Programa de ensino
lorenatarcia128 vistas
Tics educadores Tics educadores
Tics educadores
josabet11146 vistas
Sistema urinarioSistema urinario
Sistema urinario
ivan_1997co111 vistas
Exercicio 7Exercicio 7
Exercicio 7
giselalaranjeira123 vistas
Boletim Especial Cibratel IIBoletim Especial Cibratel II
Boletim Especial Cibratel II
Governo Municipal de Itanhaém891 vistas
BaloncestoBaloncesto
Baloncesto
Camilo Lizarazo391 vistas
ProyectocomputacionProyectocomputacion
Proyectocomputacion
stephanie-franco-garcia69 vistas
Electrónica miguel loaizaElectrónica miguel loaiza
Electrónica miguel loaiza
Miguel Loaiza87 vistas
ProyectocomputacionProyectocomputacion
Proyectocomputacion
ymaryy-castaneda69 vistas
Info lexiconInfo lexicon
Info lexicon
Lucimar Veiga204 vistas
Formatos segunda raquiraFormatos segunda raquira
Formatos segunda raquira
lilianacpe151 vistas
ConsultaConsulta
Consulta
jefersonnavarro1224 vistas
Todo mundo conversaTodo mundo conversa
Todo mundo conversa
ossobuco480 vistas

Similar a RealDay: Introduction to TDD(20)

TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
Engenharia de Software Ágil544 vistas
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
Camilo Ribeiro1.7K vistas
Desenvolvimento dirigido por comportamento e por testeDesenvolvimento dirigido por comportamento e por teste
Desenvolvimento dirigido por comportamento e por teste
Universidade Tiradentes111 vistas
TDDTDD
TDD
João Victorino392 vistas
Testes e mocks: Em Visual Studio com .NETTestes e mocks: Em Visual Studio com .NET
Testes e mocks: Em Visual Studio com .NET
Alessandro Binhara667 vistas
TDD com Código LegadoTDD com Código Legado
TDD com Código Legado
Cesar Romero163 vistas
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27
Hélio Medeiros325 vistas
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1
Diego Pacheco1.8K vistas
Testes ÁgeisTestes Ágeis
Testes Ágeis
Sandy Maciel380 vistas
Criando uma Arquitetura TestávelCriando uma Arquitetura Testável
Criando uma Arquitetura Testável
Cleiton Felipe Moraes49 vistas
Desenvolvimento orientado a testes - TDDDesenvolvimento orientado a testes - TDD
Desenvolvimento orientado a testes - TDD
washingtonlslima633 vistas
Codigo limpo.pptxCodigo limpo.pptx
Codigo limpo.pptx
Rennan Cardoso Guarani Kaiowá58 vistas
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
Breno Martinusso764 vistas
Teste Driven DevelopmentTeste Driven Development
Teste Driven Development
Eduardo Carvalho909 vistas
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
gustavoferrazfontes326 vistas
Tdd x testes unidadesTdd x testes unidades
Tdd x testes unidades
Simone Pittner545 vistas

Más de Miguel Schmitz Grazziotin(7)

Trabalhando remoto updatedTrabalhando remoto updated
Trabalhando remoto updated
Miguel Schmitz Grazziotin130 vistas
Ruby: A New WorldRuby: A New World
Ruby: A New World
Miguel Schmitz Grazziotin326 vistas
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!
Miguel Schmitz Grazziotin2.1K vistas
RealDay: Angular.jsRealDay: Angular.js
RealDay: Angular.js
Miguel Schmitz Grazziotin398 vistas
Ruby: Passado, Presente e além da WebRuby: Passado, Presente e além da Web
Ruby: Passado, Presente e além da Web
Miguel Schmitz Grazziotin343 vistas
Trabalhando remoto com VikingsTrabalhando remoto com Vikings
Trabalhando remoto com Vikings
Miguel Schmitz Grazziotin1.1K vistas

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