Upload
washingtonlslima
View
153
Download
5
Embed Size (px)
Citation preview
Desenvolvimento orientado a testesTEST DRIVEN DEVELOPMENT (TDD)
ConceitosOs 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íciosE 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 TDDO 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 TDDUnit: 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