SlideShare uma empresa Scribd logo
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

Mais conteúdo relacionado

Mais procurados

Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016
Matheus Fechine de Moura
 
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
Dionatan default
 
Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016
Bruno Maomeh
 
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
Heider Lopes
 
Automação de Testes de Aceitação em Sistemas Web
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 Veiga
 
Tdd x testes unidades
Tdd x testes unidadesTdd x testes unidades
Tdd x testes unidades
Simone Pittner
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
Camilo Ribeiro
 
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
Dextra Sistemas / Etec Itu
 
Test-Driven Development (TDD) utilizando o framework xUnit.net
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 Groff
 
RealDay: Introduction to TDD
RealDay: Introduction to TDDRealDay: Introduction to TDD
RealDay: Introduction to TDD
Miguel Schmitz Grazziotin
 
JUnit Sample
JUnit SampleJUnit Sample
Pensando TDD
Pensando TDDPensando TDD
Pensando TDD
Luiz Ricardo Silva
 
Testes com TestLink e Selenium
Testes com TestLink e SeleniumTestes com TestLink e Selenium
Testes com TestLink e Selenium
André Thiago
 
Testes Unitários/Integrados
Testes Unitários/IntegradosTestes Unitários/Integrados
Testes Unitários/Integrados
Giovanni Bassi
 
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
Domingos Teruel
 
Behavior-Driven Development (BDD) - QA Ninja Conf 2016
Behavior-Driven Development (BDD) - QA Ninja Conf 2016Behavior-Driven Development (BDD) - QA Ninja Conf 2016
Behavior-Driven Development (BDD) - QA Ninja Conf 2016
Renato Groff
 
Testes Automatizados No Cakephp
Testes Automatizados No CakephpTestes Automatizados No Cakephp
Testes Automatizados No Cakephp
João José Pedrini
 
Implementando Testes Unitários em Java - Manoel Pimentel
Implementando Testes Unitários em Java - Manoel PimentelImplementando Testes Unitários em Java - Manoel Pimentel
Implementando Testes Unitários em Java - Manoel Pimentel
Manoel Pimentel Medeiros
 
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
Universidade Tiradentes
 
TDD na Prática
TDD na PráticaTDD na Prática
TDD na Prática
Rafael Fuchs, PMP, MBA
 

Mais procurados (20)

Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016
 
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
 
Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016
 
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
 
Automação de Testes de Aceitação em Sistemas Web
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
 
Tdd x testes unidades
Tdd x testes unidadesTdd x testes unidades
Tdd x testes unidades
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
 
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
 
Test-Driven Development (TDD) utilizando o framework xUnit.net
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
 
RealDay: Introduction to TDD
RealDay: Introduction to TDDRealDay: Introduction to TDD
RealDay: Introduction to TDD
 
JUnit Sample
JUnit SampleJUnit Sample
JUnit Sample
 
Pensando TDD
Pensando TDDPensando TDD
Pensando TDD
 
Testes com TestLink e Selenium
Testes com TestLink e SeleniumTestes com TestLink e Selenium
Testes com TestLink e Selenium
 
Testes Unitários/Integrados
Testes Unitários/IntegradosTestes Unitários/Integrados
Testes Unitários/Integrados
 
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
 
Behavior-Driven Development (BDD) - QA Ninja Conf 2016
Behavior-Driven Development (BDD) - QA Ninja Conf 2016Behavior-Driven Development (BDD) - QA Ninja Conf 2016
Behavior-Driven Development (BDD) - QA Ninja Conf 2016
 
Testes Automatizados No Cakephp
Testes Automatizados No CakephpTestes Automatizados No Cakephp
Testes Automatizados No Cakephp
 
Implementando Testes Unitários em Java - Manoel Pimentel
Implementando Testes Unitários em Java - Manoel PimentelImplementando Testes Unitários em Java - Manoel Pimentel
Implementando Testes Unitários em Java - Manoel Pimentel
 
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 na Prática
TDD na PráticaTDD na Prática
TDD na Prática
 

Semelhante a Test-Driven Develpment - TDD

TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
Engenharia de Software Ágil
 
Desenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por TestesDesenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por Testes
Guilherme Chapiewski
 
Programação Pragmática
Programação PragmáticaProgramação Pragmática
Programação Pragmática
elliando dias
 
5 meses de python o que aprendi
5 meses de python  o que aprendi5 meses de python  o que aprendi
5 meses de python o que aprendi
Vinta Software
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1
Diego Pacheco
 
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
Rogerio Fontes
 
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 Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...
Agile Trends
 
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
Bruno Eustáquio
 
PHPHEDERAL - Desenvolvimento Orientado a Testes com PHP
PHPHEDERAL - Desenvolvimento Orientado a Testes com PHPPHPHEDERAL - Desenvolvimento Orientado a Testes com PHP
PHPHEDERAL - Desenvolvimento Orientado a Testes com PHP
Marcelo Rodrigues
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
Thiago Faria de Andrade
 
Instituto Stela S&T#001, Projeto de software com testes unitários
Instituto Stela S&T#001, Projeto de software com testes unitáriosInstituto Stela S&T#001, Projeto de software com testes unitários
Instituto Stela S&T#001, Projeto de software com testes unitários
Instituto Stela (Florianópolis-SC, Brasil)
 
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
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 Rubens
 
Introdução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de Software
Cloves da Rocha
 
Automação de testes para equipes agile
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agile
Alini Rebonatto
 
Desenvolvimento orientado a testes - TDD
Desenvolvimento orientado a testes - TDDDesenvolvimento orientado a testes - TDD
Desenvolvimento orientado a testes - TDD
washingtonlslima
 
Teste automatizados e tdd
Teste automatizados e tddTeste automatizados e tdd
Teste automatizados e tdd
Luiz Fernando Signorelli
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
Otavio Augusto
 
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 ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
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 ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
tdc-globalcode
 
Como aumentar a eficiência dos seus testes manuais
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ão
 

Semelhante a Test-Driven Develpment - TDD (20)

TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
Desenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por TestesDesenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por Testes
 
Programação Pragmática
Programação PragmáticaProgramação Pragmática
Programação Pragmática
 
5 meses de python o que aprendi
5 meses de python  o que aprendi5 meses de python  o que aprendi
5 meses de python o que aprendi
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1
 
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
 
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 Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...
 
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
 
PHPHEDERAL - Desenvolvimento Orientado a Testes com PHP
PHPHEDERAL - Desenvolvimento Orientado a Testes com PHPPHPHEDERAL - Desenvolvimento Orientado a Testes com PHP
PHPHEDERAL - Desenvolvimento Orientado a Testes com PHP
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Instituto Stela S&T#001, Projeto de software com testes unitários
Instituto Stela S&T#001, Projeto de software com testes unitáriosInstituto Stela S&T#001, Projeto de software com testes unitários
Instituto Stela S&T#001, Projeto de software com testes unitários
 
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
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
 
Introdução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de Software
 
Automação de testes para equipes agile
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agile
 
Desenvolvimento orientado a testes - TDD
Desenvolvimento orientado a testes - TDDDesenvolvimento orientado a testes - TDD
Desenvolvimento orientado a testes - TDD
 
Teste automatizados e tdd
Teste automatizados e tddTeste automatizados e tdd
Teste automatizados e tdd
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
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 ...
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 ...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 ...
 
Como aumentar a eficiência dos seus testes manuais
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
 

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