SlideShare une entreprise Scribd logo
1  sur  14
Desenvolvimento
orientado a testes
TEST DRIVEN DEVELOPMENT (TDD)
Conceitos
Os problemas de requisitos são reduzidos quando utiliza-se de metodologias
ágeis
O TDD é um estilo de desenvolvimento de software ágil derivado do método
Extreme Programming (XP)
Kent Beck, considerado o criador ou o 'descobridor' da técnica
Deve-se primeiro escrever os testes, antes de implementar o sistema
Bem segundo Freeman,
você não tem nada a perder, a não ser os seus
bugs.
Conceitos
Imagine você adquirindo um carro
...de repente você está andando e nota que na curva o carro não é
eficiente.
O TDD se baseia em um ciclo curto de repetições de testes
O mesmo acontece com o cliente
de um software
Conceitos
“Qualidade de software é um processo
sistemático que focaliza todas as etapas e
artefatos produzidos com o objetivo de garantir
a conformidade de processos e
produtos, prevenindo e eliminando defeitos”.
Bartié
Segundo Myers,
quanto mais tardiamente
descobrirmos os erros, mais caros
estes se tornam.
- Regra dos 10
O TDD
Os testes são utilizados para facilitar no entendimento do
projeto
- A criação de teste unitários ou de componentes é parte crucial para o TDD
- Cada componente é testado independentemente
- É necessário testar o sistema como um todo
“Os componentes individuais são testados
para garantir que operem
corretamente...” Presmann
Benefícios
E qual o benefício em utilizar o TDD?
- torna o processo mais confiável
- reduz custos
- código seguro e sem complexidades
- evita retrabalho
Redução na quantidade de
defeitos
Ciclo do TDD
O Ciclo do TDD é simples
1 criamos um teste
2 Fazemos a codificação para passar no teste
3 Refatoramos nosso código
Ciclo do TDD
Ciclo do TDD
O vermelho é a escrita do primeiro
teste antes mesmo da lógica existir
O verde é o ponto em que a lógica
para que o teste previamente criado
passe
O refatora é a melhoria do código.
Modelo F.I.R.S.T.
F (Fast) - Rápidos: devem ser rápidos, pois testam apenas uma
unidade;
I (Isolated) - Testes unitários são isolados, testando individualmente
as unidades e não sua integração;
R (Repeateble) - Repetição nos testes, com resultados de
comportamento constante;
S (Self-verifying) - A auto verificação deve verificar se passou ou se
deu como falha o teste;
T (Timely) - O teste deve ser oportuno, sendo um teste por unidade.
Implementação do TDD
Unit: O JUnit é um framework de teste para Java;
TesteNG: Outra ferramenta de teste unitária, disponível para Java;
PHPUnit: Framework XUnit para teste unitário em PHP;
SimpleTest: Outra ferramenta para realização de teste para PHP;
NUnit: Framework de teste no molde XUnit para a plataforma .NET;
Jasmine: Framework para teste unitário de JavaScript;
CUnit: Ferramenta para os testes unitários disponível para Linguagem C;
PyUnit: Framework Xunit para testes na linguagem Python.
Conclusão
Por que não uso?
- O começo
-O tempo

Contenu connexe

Tendances

Qualidade de software - Gestão de Projetos de Software - BSI
Qualidade de software - Gestão de Projetos de Software - BSIQualidade de software - Gestão de Projetos de Software - BSI
Qualidade de software - Gestão de Projetos de Software - BSIMonnalisa Medeiros
 
Metodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo RochaMetodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo RochaFernando Palma
 
Desenvolvimento Mobile: Híbrido x Nativo
Desenvolvimento Mobile: Híbrido x NativoDesenvolvimento Mobile: Híbrido x Nativo
Desenvolvimento Mobile: Híbrido x NativoLetticia Nicoli
 
Testes de Software
Testes de SoftwareTestes de Software
Testes de SoftwareCapgemini
 
Introdução ao Domain-Driven Design
Introdução ao Domain-Driven DesignIntrodução ao Domain-Driven Design
Introdução ao Domain-Driven DesignAndré Borgonovo
 
Metodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareMetodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareÁlvaro Farias Pinheiro
 
Qualidade de Software: Teste de software
Qualidade de Software: Teste de softwareQualidade de Software: Teste de software
Qualidade de Software: Teste de softwareAlex Camargo
 
Introdução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaIntrodução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaFabrício Campos
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasRodrigo Branas
 
Levantamento Ágil de Requisitos
Levantamento Ágil de RequisitosLevantamento Ágil de Requisitos
Levantamento Ágil de RequisitosPaulo Furtado
 
Validação e Testes de software
Validação e Testes de softwareValidação e Testes de software
Validação e Testes de softwareRondinelli Mesquita
 

Tendances (20)

Fdd
FddFdd
Fdd
 
Qualidade de software - Gestão de Projetos de Software - BSI
Qualidade de software - Gestão de Projetos de Software - BSIQualidade de software - Gestão de Projetos de Software - BSI
Qualidade de software - Gestão de Projetos de Software - BSI
 
Metodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo RochaMetodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo Rocha
 
Desenvolvimento Mobile: Híbrido x Nativo
Desenvolvimento Mobile: Híbrido x NativoDesenvolvimento Mobile: Híbrido x Nativo
Desenvolvimento Mobile: Híbrido x Nativo
 
Testes de Software
Testes de SoftwareTestes de Software
Testes de Software
 
Introdução ao Domain-Driven Design
Introdução ao Domain-Driven DesignIntrodução ao Domain-Driven Design
Introdução ao Domain-Driven Design
 
Qualidade de Software
Qualidade de SoftwareQualidade de Software
Qualidade de Software
 
Metodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareMetodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de Software
 
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de SoftwareFundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
 
Curso javascript básico
Curso javascript básicoCurso javascript básico
Curso javascript básico
 
Aula - Metodologias Ágeis
Aula - Metodologias ÁgeisAula - Metodologias Ágeis
Aula - Metodologias Ágeis
 
Qualidade de Software: Teste de software
Qualidade de Software: Teste de softwareQualidade de Software: Teste de software
Qualidade de Software: Teste de software
 
Introdução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaIntrodução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem prática
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
 
Levantamento Ágil de Requisitos
Levantamento Ágil de RequisitosLevantamento Ágil de Requisitos
Levantamento Ágil de Requisitos
 
Apresentação fdd
Apresentação fddApresentação fdd
Apresentação fdd
 
Princípios SOLID
Princípios SOLIDPrincípios SOLID
Princípios SOLID
 
DDD - Domain Driven Design
DDD - Domain Driven DesignDDD - Domain Driven Design
DDD - Domain Driven Design
 
Padrões de Projeto de Software
Padrões de Projeto de SoftwarePadrões de Projeto de Software
Padrões de Projeto de Software
 
Validação e Testes de software
Validação e Testes de softwareValidação e Testes de software
Validação e Testes de software
 

Similaire à Desenvolvimento orientado a testes (TDD

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 softwareDextra Sistemas / Etec Itu
 
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
 
Apresentacao Testes de Unidade
Apresentacao Testes de UnidadeApresentacao Testes de Unidade
Apresentacao Testes de UnidadeAline Ferreira
 
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
 
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
 
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
 
Paletra sobre TDD, ocorrida no #DevDojo
Paletra sobre TDD, ocorrida no #DevDojoPaletra sobre TDD, ocorrida no #DevDojo
Paletra sobre TDD, ocorrida no #DevDojoflavio1110
 
UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27Hélio Medeiros
 
Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testeselliando dias
 

Similaire à Desenvolvimento orientado a testes (TDD (20)

Teste automatizados e tdd
Teste automatizados e tddTeste automatizados e tdd
Teste automatizados e tdd
 
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
 
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
 
Teste Driven Development
Teste Driven DevelopmentTeste Driven Development
Teste Driven Development
 
Tdd x testes unidades
Tdd x testes unidadesTdd x testes unidades
Tdd x testes unidades
 
RealDay: Introduction to TDD
RealDay: Introduction to TDDRealDay: Introduction to TDD
RealDay: Introduction to TDD
 
TDD
TDDTDD
TDD
 
Apresentacao Testes de Unidade
Apresentacao Testes de UnidadeApresentacao Testes de Unidade
Apresentacao Testes de Unidade
 
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
 
Desenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por TestesDesenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por Testes
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1
 
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
 
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
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Paletra sobre TDD, ocorrida no #DevDojo
Paletra sobre TDD, ocorrida no #DevDojoPaletra sobre TDD, ocorrida no #DevDojo
Paletra sobre TDD, ocorrida no #DevDojo
 
UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27
 
Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testes
 
TDD com Python (Completo)
TDD com Python (Completo)TDD com Python (Completo)
TDD com Python (Completo)
 
TDD com Python
TDD com PythonTDD com Python
TDD com Python
 

Desenvolvimento orientado a testes (TDD

  • 1. Desenvolvimento orientado a testes TEST DRIVEN DEVELOPMENT (TDD)
  • 2. Conceitos Os problemas de requisitos são reduzidos quando utiliza-se de metodologias ágeis O TDD é um estilo de desenvolvimento de software ágil derivado do método Extreme Programming (XP) Kent Beck, considerado o criador ou o 'descobridor' da técnica Deve-se primeiro escrever os testes, antes de implementar o sistema Bem segundo Freeman, você não tem nada a perder, a não ser os seus bugs.
  • 3. Conceitos Imagine você adquirindo um carro ...de repente você está andando e nota que na curva o carro não é eficiente. O TDD se baseia em um ciclo curto de repetições de testes O mesmo acontece com o cliente de um software
  • 4. Conceitos “Qualidade de software é um processo sistemático que focaliza todas as etapas e artefatos produzidos com o objetivo de garantir a conformidade de processos e produtos, prevenindo e eliminando defeitos”. Bartié
  • 5. Segundo Myers, quanto mais tardiamente descobrirmos os erros, mais caros estes se tornam. - Regra dos 10
  • 6.
  • 7. O TDD Os testes são utilizados para facilitar no entendimento do projeto - A criação de teste unitários ou de componentes é parte crucial para o TDD - Cada componente é testado independentemente - É necessário testar o sistema como um todo “Os componentes individuais são testados para garantir que operem corretamente...” Presmann
  • 8. Benefícios E qual o benefício em utilizar o TDD? - torna o processo mais confiável - reduz custos - código seguro e sem complexidades - evita retrabalho Redução na quantidade de defeitos
  • 9. Ciclo do TDD O Ciclo do TDD é simples 1 criamos um teste 2 Fazemos a codificação para passar no teste 3 Refatoramos nosso código
  • 11. Ciclo do TDD O vermelho é a escrita do primeiro teste antes mesmo da lógica existir O verde é o ponto em que a lógica para que o teste previamente criado passe O refatora é a melhoria do código.
  • 12. Modelo F.I.R.S.T. F (Fast) - Rápidos: devem ser rápidos, pois testam apenas uma unidade; I (Isolated) - Testes unitários são isolados, testando individualmente as unidades e não sua integração; R (Repeateble) - Repetição nos testes, com resultados de comportamento constante; S (Self-verifying) - A auto verificação deve verificar se passou ou se deu como falha o teste; T (Timely) - O teste deve ser oportuno, sendo um teste por unidade.
  • 13. Implementação do TDD Unit: O JUnit é um framework de teste para Java; TesteNG: Outra ferramenta de teste unitária, disponível para Java; PHPUnit: Framework XUnit para teste unitário em PHP; SimpleTest: Outra ferramenta para realização de teste para PHP; NUnit: Framework de teste no molde XUnit para a plataforma .NET; Jasmine: Framework para teste unitário de JavaScript; CUnit: Ferramenta para os testes unitários disponível para Linguagem C; PyUnit: Framework Xunit para testes na linguagem Python.
  • 14. Conclusão Por que não uso? - O começo -O tempo