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é
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.