Test-Driven Develpment - TDD

Kleber Bernardo
Kleber BernardoSoftware Developer en GREat - University of Ceará
Test-Driven Development
TDD
Sumário
 Manifesto Ágil
 O que é?
 Ciclo do TDD
 Vantagens
 Aplicabilidade
 APIs e Sistemas
 Bugfixes
 Sistemas Legados
 Ferramentas para Testes
 Caso de Uso com TDD
 Bibliografia Recomendada
Manifesto Ágil
 Indivíduos e interações > Processos e ferramentas
 Software em funcionamento > Documentação abrangente
 Colaboração com o cliente > Negociação de contratos
 Resposta a mudanças > Seguir um plano
O que é?
 “Escrever os testes para o código antes de escrever o
código em si”
 É comum no desenvolvimento ágil
 Pode ser usada em qualquer tipo de desenvolvimento, até
em pesquisas
 Desenvolvimento como um processo de Aprendizado
O que é?
 Princípios do TDD – F.I.R.S.T. Principles:
 Fast – Testes devem ser executados em < 1 segundo
 Isolated – Falhas são claramente isoladas
 Repeatable – Comportamento constante
 Self-verifying – Passa ou Falha
 Timely – 1 mudança de código = 1 teste
Ciclo do TDD
Vantagens
 Antecipa o comportamento do código
 Reduz os custos de desenvolvimento e de
manutenção
 Educa o programador a pensar e criar códigos
“limpos”
 Componentes livremente acoplados
 Desestimula recursos desnecessários
Vantagens
 Desenvolvimento como um processo de
aprendizado
 Aperfeiçoamento do código: Refatoração
 Foco na aceitação, integração e unidade
 Blindagem do código
 Combate a Síndrome Nostradamus
Aplicabilidade
 Se livrando de Bugs:
 Relatório de Bug
 Teste que reproduz o Bug: Fail
 Correção do Bug
 Execução do teste: Pass
9
Aplicabilidade
 Sistemas Legados
 Funcionalidade Duvidosa: ???
 Escreva um teste para ver se você entendeu: Fail
 Adapte o teste (iterativamente)
 Execução do teste: Pass
 Cuidado, Vá devagar
 Esteja preparado para desfazer as mudanças
10
Aplicabilidade
 Testes servem como documentação
 Auxilia no design
 Se adapta a qualquer metodologia de
desenvolvimento de software
11
Ferramentas para Testes
 JUnit – Java
 NUnit, MsTest – .NET
 PyUnit – Python
 Perl – Test::More
 PHPUnit – PHP
 Test::Unit – Ruby
 Test.More – Javascript
12
Caso de Uso com TDD
 Como usuário eu gostaria de me cadastrar
fornecendo: nome, email, senha, confirmação
 Condição:
 O usuário deve possuir uma senha válida
 Ação:
 Verificar se a confirmação da senha é válida, senão
enviar mensagem de erro adequada
13
Caso de Uso com TDD
14
Criando o Teste Falho
Caso de Uso com TDD
15
Implementado
Caso de Uso com TDD
16
Teste Passa
Caso de Uso com TDD
17
Adicionando novas Falhas
Caso de Uso com TDD
18
Implementação
Caso de Uso com TDD
19
Teste Passa
Caso de Uso com TDD
20
Caso de uso ainda incompleto
Caso de Uso com TDD
21
Nova implementação
Caso de Uso com TDD
22
Teste Passa
Caso de Uso com TDD
23
Nova Falha – Refatoração
Caso de Uso com TDD
24
Implementação
Caso de Uso com TDD
25
Teste Passa: Fim de Caso de Uso
Bibliografia Recomendada
 TDD – Desenvolvimento Guiado por Testes. Kent Beck
 Desenvolvimento de Software Orientado a Objetos,
Guiado por Testes. Steve Freeman, Nat Pryce.
 Professional Test Driven Development with C#. James
Bender, Jeff McWherter
 Código Limpo (Clean Code): Habilidades Práticas do
Agile Software. Robert C Martin
Obrigado!!!
Créditos:
http://www.slideshare.net/Pigor/palestra-tddcompleta-5460534
http://www.slideshare.net/Skud/test-driven-development-tutorial
Contato:
franciscobernardo@great.ufc.br
www.great.ufc.br
1 de 27

Recomendados

TDD Desenvolvimento orientado ao teste por
TDD Desenvolvimento orientado ao testeTDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao testeRafaela Prado
190 vistas13 diapositivas
Introdução ao TDD por
Introdução ao TDDIntrodução ao TDD
Introdução ao TDDEduardo Mendes
1.2K vistas61 diapositivas
TDD (Test-Driven Development) por
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)Renato Groff
3.8K vistas37 diapositivas
TDD - Test Driven Development com JAVA por
TDD - Test Driven Development com JAVATDD - Test Driven Development com JAVA
TDD - Test Driven Development com JAVAPaulo Igor Alves Godinho
2.1K vistas53 diapositivas
Testes de Software & Ferramentas de Testes por
Testes de Software & Ferramentas de TestesTestes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de TestesPaulo César M Jeveaux
17.2K vistas50 diapositivas
Desenvolvimento Guiado por Testes por
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testeselliando dias
449 vistas37 diapositivas

Más contenido relacionado

La actualidad más candente

Palestra TDD Javou! #08 2016 por
Palestra TDD Javou! #08 2016Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016Matheus Fechine de Moura
239 vistas62 diapositivas
Introdução ao TDD (Test-Driven Development) - #guma10anos por
Introdução ao TDD (Test-Driven Development) - #guma10anosIntrodução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anosDionatan default
2.2K vistas83 diapositivas
Palestra TDD - TDC - 2016 por
Palestra TDD - TDC - 2016Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016Bruno Maomeh
217 vistas48 diapositivas
1 2 3 - Testando - Automatizando os testes de software por
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 softwareHeider Lopes
909 vistas87 diapositivas
Automação de Testes de Aceitação em Sistemas Web por
Automação de Testes de Aceitação em Sistemas WebAutomação de Testes de Aceitação em Sistemas Web
Automação de Testes de Aceitação em Sistemas WebRodrigo Veiga
1.6K vistas28 diapositivas
Tdd x testes unidades por
Tdd x testes unidadesTdd x testes unidades
Tdd x testes unidadesSimone Pittner
545 vistas11 diapositivas

La actualidad más candente(20)

Introdução ao TDD (Test-Driven Development) - #guma10anos por Dionatan default
Introdução ao TDD (Test-Driven Development) - #guma10anosIntrodução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anos
Dionatan default2.2K vistas
Palestra TDD - TDC - 2016 por Bruno Maomeh
Palestra TDD - TDC - 2016Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016
Bruno Maomeh217 vistas
1 2 3 - Testando - Automatizando os testes de software por Heider Lopes
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
Heider Lopes909 vistas
Automação de Testes de Aceitação em Sistemas Web por Rodrigo Veiga
Automação de Testes de Aceitação em Sistemas WebAutomação de Testes de Aceitação em Sistemas Web
Automação de Testes de Aceitação em Sistemas Web
Rodrigo Veiga1.6K vistas
Desenvolvimento Dirigido por Testes por Camilo Ribeiro
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
Camilo Ribeiro1.7K vistas
Test-Driven Development (TDD) utilizando o framework xUnit.net por Renato Groff
Test-Driven Development (TDD) utilizando o framework xUnit.netTest-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.net
Renato Groff2.1K vistas
Testes com TestLink e Selenium por André Thiago
Testes com TestLink e SeleniumTestes com TestLink e Selenium
Testes com TestLink e Selenium
André Thiago6.4K vistas
Testes Unitários/Integrados por Giovanni Bassi
Testes Unitários/IntegradosTestes Unitários/Integrados
Testes Unitários/Integrados
Giovanni Bassi4.1K vistas
Qualidade no desenvolvimento de Software com TDD e PHPUnit por Domingos Teruel
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
Domingos Teruel2.1K vistas
Behavior-Driven Development (BDD) - QA Ninja Conf 2016 por Renato Groff
Behavior-Driven Development (BDD) - QA Ninja Conf 2016Behavior-Driven Development (BDD) - QA Ninja Conf 2016
Behavior-Driven Development (BDD) - QA Ninja Conf 2016
Renato Groff664 vistas

Similar a Test-Driven Develpment - TDD

TDD - Test Driven Development por
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven DevelopmentEngenharia de Software Ágil
553 vistas46 diapositivas
Desenvolvimento Guiado Por Testes por
Desenvolvimento Guiado Por TestesDesenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por TestesGuilherme Chapiewski
2.6K vistas34 diapositivas
Programação Pragmática por
Programação PragmáticaProgramação Pragmática
Programação Pragmáticaelliando dias
1.5K vistas34 diapositivas
5 meses de python o que aprendi por
5 meses de python  o que aprendi5 meses de python  o que aprendi
5 meses de python o que aprendiVinta Software
527 vistas52 diapositivas
Treinamento Testes Unitários - parte 1 por
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Diego Pacheco
1.8K vistas32 diapositivas
Sobre TDD - Tech Friday da Everis Uberlândia por
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaRogerio Fontes
66 vistas19 diapositivas

Similar a Test-Driven Develpment - TDD(20)

Programação Pragmática por elliando dias
Programação PragmáticaProgramação Pragmática
Programação Pragmática
elliando dias1.5K vistas
5 meses de python o que aprendi por Vinta Software
5 meses de python  o que aprendi5 meses de python  o que aprendi
5 meses de python o que aprendi
Vinta Software527 vistas
Treinamento Testes Unitários - parte 1 por Diego Pacheco
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1
Diego Pacheco1.8K vistas
Sobre TDD - Tech Friday da Everis Uberlândia por Rogerio Fontes
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis Uberlândia
Rogerio Fontes66 vistas
Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ... por Agile Trends
Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...
Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...
Agile Trends1.1K vistas
TDD - Pós Graduação em Engenharia de Software Ágil por Bruno Eustáquio
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
Bruno Eustáquio1.3K vistas
PHPHEDERAL - Desenvolvimento Orientado a Testes com PHP por Marcelo Rodrigues
PHPHEDERAL - Desenvolvimento Orientado a Testes com PHPPHPHEDERAL - Desenvolvimento Orientado a Testes com PHP
PHPHEDERAL - Desenvolvimento Orientado a Testes com PHP
Marcelo Rodrigues807 vistas
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013 por Gabriel Rubens
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Gabriel Rubens902 vistas
Introdução à Engenharia de Testes de Software por Cloves da Rocha
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de Software
Cloves da Rocha257 vistas
Automação de testes para equipes agile por Alini Rebonatto
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agile
Alini Rebonatto931 vistas
Desenvolvimento orientado a testes - TDD por washingtonlslima
Desenvolvimento orientado a testes - TDDDesenvolvimento orientado a testes - TDD
Desenvolvimento orientado a testes - TDD
washingtonlslima633 vistas
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ... por tdc-globalcode
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
tdc-globalcode29 vistas
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ... por tdc-globalcode
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
tdc-globalcode31 vistas
Como aumentar a eficiência dos seus testes manuais por Marcelo Galvão
Como aumentar a eficiência dos seus testes manuaisComo aumentar a eficiência dos seus testes manuais
Como aumentar a eficiência dos seus testes manuais
Marcelo Galvão965 vistas

Último

TechConnection 2023 Floripa Azure Container Apps por
TechConnection 2023 Floripa Azure Container AppsTechConnection 2023 Floripa Azure Container Apps
TechConnection 2023 Floripa Azure Container AppsWalter Coan
5 vistas14 diapositivas
Skills e Squads, como trabalhar? por
Skills e Squads, como trabalhar?Skills e Squads, como trabalhar?
Skills e Squads, como trabalhar?Annelise Gripp
32 vistas13 diapositivas
Conheça agora o UiPath Autopilot™ para o Studio.pdf por
Conheça agora o UiPath Autopilot™ para o Studio.pdfConheça agora o UiPath Autopilot™ para o Studio.pdf
Conheça agora o UiPath Autopilot™ para o Studio.pdfBrunaCavalcanti29
14 vistas8 diapositivas
Shift left DevOps Experience por
Shift left DevOps ExperienceShift left DevOps Experience
Shift left DevOps ExperienceWalter Coan
5 vistas19 diapositivas
ProxySQL no MySQL: Apenas um load balancer? por
ProxySQL no MySQL: Apenas um load balancer?ProxySQL no MySQL: Apenas um load balancer?
ProxySQL no MySQL: Apenas um load balancer?Roberto Garcia de Bem
6 vistas62 diapositivas
VIRTUS 1.6 MSI.pdf por
VIRTUS 1.6 MSI.pdfVIRTUS 1.6 MSI.pdf
VIRTUS 1.6 MSI.pdfFbioVieira85
5 vistas13 diapositivas

Último(9)

TechConnection 2023 Floripa Azure Container Apps por Walter Coan
TechConnection 2023 Floripa Azure Container AppsTechConnection 2023 Floripa Azure Container Apps
TechConnection 2023 Floripa Azure Container Apps
Walter Coan5 vistas
Skills e Squads, como trabalhar? por Annelise Gripp
Skills e Squads, como trabalhar?Skills e Squads, como trabalhar?
Skills e Squads, como trabalhar?
Annelise Gripp32 vistas
Conheça agora o UiPath Autopilot™ para o Studio.pdf por BrunaCavalcanti29
Conheça agora o UiPath Autopilot™ para o Studio.pdfConheça agora o UiPath Autopilot™ para o Studio.pdf
Conheça agora o UiPath Autopilot™ para o Studio.pdf
BrunaCavalcanti2914 vistas
Shift left DevOps Experience por Walter Coan
Shift left DevOps ExperienceShift left DevOps Experience
Shift left DevOps Experience
Walter Coan5 vistas
DevFest2023-Pragmatismo da Internet das Coisas por Walter Coan
DevFest2023-Pragmatismo da Internet das CoisasDevFest2023-Pragmatismo da Internet das Coisas
DevFest2023-Pragmatismo da Internet das Coisas
Walter Coan24 vistas

Test-Driven Develpment - TDD

  • 2. Sumário  Manifesto Ágil  O que é?  Ciclo do TDD  Vantagens  Aplicabilidade  APIs e Sistemas  Bugfixes  Sistemas Legados  Ferramentas para Testes  Caso de Uso com TDD  Bibliografia Recomendada
  • 3. Manifesto Ágil  Indivíduos e interações > Processos e ferramentas  Software em funcionamento > Documentação abrangente  Colaboração com o cliente > Negociação de contratos  Resposta a mudanças > Seguir um plano
  • 4. O que é?  “Escrever os testes para o código antes de escrever o código em si”  É comum no desenvolvimento ágil  Pode ser usada em qualquer tipo de desenvolvimento, até em pesquisas  Desenvolvimento como um processo de Aprendizado
  • 5. O que é?  Princípios do TDD – F.I.R.S.T. Principles:  Fast – Testes devem ser executados em < 1 segundo  Isolated – Falhas são claramente isoladas  Repeatable – Comportamento constante  Self-verifying – Passa ou Falha  Timely – 1 mudança de código = 1 teste
  • 7. Vantagens  Antecipa o comportamento do código  Reduz os custos de desenvolvimento e de manutenção  Educa o programador a pensar e criar códigos “limpos”  Componentes livremente acoplados  Desestimula recursos desnecessários
  • 8. Vantagens  Desenvolvimento como um processo de aprendizado  Aperfeiçoamento do código: Refatoração  Foco na aceitação, integração e unidade  Blindagem do código  Combate a Síndrome Nostradamus
  • 9. Aplicabilidade  Se livrando de Bugs:  Relatório de Bug  Teste que reproduz o Bug: Fail  Correção do Bug  Execução do teste: Pass 9
  • 10. Aplicabilidade  Sistemas Legados  Funcionalidade Duvidosa: ???  Escreva um teste para ver se você entendeu: Fail  Adapte o teste (iterativamente)  Execução do teste: Pass  Cuidado, Vá devagar  Esteja preparado para desfazer as mudanças 10
  • 11. Aplicabilidade  Testes servem como documentação  Auxilia no design  Se adapta a qualquer metodologia de desenvolvimento de software 11
  • 12. Ferramentas para Testes  JUnit – Java  NUnit, MsTest – .NET  PyUnit – Python  Perl – Test::More  PHPUnit – PHP  Test::Unit – Ruby  Test.More – Javascript 12
  • 13. Caso de Uso com TDD  Como usuário eu gostaria de me cadastrar fornecendo: nome, email, senha, confirmação  Condição:  O usuário deve possuir uma senha válida  Ação:  Verificar se a confirmação da senha é válida, senão enviar mensagem de erro adequada 13
  • 14. Caso de Uso com TDD 14 Criando o Teste Falho
  • 15. Caso de Uso com TDD 15 Implementado
  • 16. Caso de Uso com TDD 16 Teste Passa
  • 17. Caso de Uso com TDD 17 Adicionando novas Falhas
  • 18. Caso de Uso com TDD 18 Implementação
  • 19. Caso de Uso com TDD 19 Teste Passa
  • 20. Caso de Uso com TDD 20 Caso de uso ainda incompleto
  • 21. Caso de Uso com TDD 21 Nova implementação
  • 22. Caso de Uso com TDD 22 Teste Passa
  • 23. Caso de Uso com TDD 23 Nova Falha – Refatoração
  • 24. Caso de Uso com TDD 24 Implementação
  • 25. Caso de Uso com TDD 25 Teste Passa: Fim de Caso de Uso
  • 26. Bibliografia Recomendada  TDD – Desenvolvimento Guiado por Testes. Kent Beck  Desenvolvimento de Software Orientado a Objetos, Guiado por Testes. Steve Freeman, Nat Pryce.  Professional Test Driven Development with C#. James Bender, Jeff McWherter  Código Limpo (Clean Code): Habilidades Práticas do Agile Software. Robert C Martin