14
Desenvolvimento orientado a testes TEST DRIVEN DEVELOPMENT (TDD)

Desenvolvimento orientado a testes - TDD

Embed Size (px)

Citation preview

Page 1: Desenvolvimento orientado a testes - TDD

Desenvolvimento orientado a testesTEST DRIVEN DEVELOPMENT (TDD)

Page 2: Desenvolvimento orientado a testes - 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.

Page 3: Desenvolvimento orientado a testes - TDD

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

Page 4: Desenvolvimento orientado a testes - TDD

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é 

Page 5: Desenvolvimento orientado a testes - TDD

Segundo Myers, quanto mais tardiamente descobrirmos os erros, mais caros estes se tornam.

- Regra dos 10

Page 6: Desenvolvimento orientado a testes - TDD
Page 7: Desenvolvimento orientado a testes - TDD

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

Page 8: Desenvolvimento orientado a testes - TDD

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

Page 9: Desenvolvimento orientado a testes - TDD

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

Page 10: Desenvolvimento orientado a testes - TDD

Ciclo do TDD

Page 11: Desenvolvimento orientado a testes - 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.

Page 12: Desenvolvimento orientado a testes - TDD

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.

Page 13: Desenvolvimento orientado a testes - TDD

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.

Page 14: Desenvolvimento orientado a testes - TDD

Conclusão

Por que não uso?

- O começo

-O tempo