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

Desenvolvimento orientado a testes - TDD

  • 1.
  • 2.
    Conceitos Os problemas derequisitos 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ê adquirindoum 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 maistardiamente descobrirmos os erros, mais caros estes se tornam. - Regra dos 10
  • 7.
    O TDD Os testessã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 obenefí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 OCiclo do TDD é simples 1 criamos um teste 2 Fazemos a codificação para passar no teste 3 Refatoramos nosso código
  • 10.
  • 11.
    Ciclo do TDD Overmelho é 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ãouso? - O começo -O tempo