test-driven development

22
Test-Driven Development

Upload: jorge-tressino-rua

Post on 19-Jun-2015

434 views

Category:

Documents


2 download

DESCRIPTION

Apresentação d processo de Desenvolvimento Orientado a Teste, as motivações e benefícios para sua utilização

TRANSCRIPT

Page 1: Test-Driven Development

Test-Driven Development

Page 2: Test-Driven Development

Software quality factors

Testability“Disposition to support acceptance criteria and

evaluation of performance. Such a characteristic must be built-in during the design phase if the

product is to be easily testable; a complex design leads to poor testability”

From Wikipedia

Page 3: Test-Driven Development

Agenda

• Testes• Testes Unitários• Testes Unitários Automatizados• Mock• Test-driven Development

Page 4: Test-Driven Development

Por que testamos?

Validação. Garantir que o software ou componente se comporta como foi projetado

Page 5: Test-Driven Development

Unit test

“In computer programming, unit testing is a method by which individual units of source

code are tested to determine if they are fit for use. A unit is the smallest testable part of an

application”From Wikipedia

Page 6: Test-Driven Development

Por que automatizamos?

• Confiabilidade• Regressão• Refactoring

Page 7: Test-Driven Development

DEMONSTRAÇÃO

Page 8: Test-Driven Development

Testes Unitários Automatizados

• Fácil para componentes isolados

Classe a ser testada

Classe de Teste

Page 9: Test-Driven Development

Testes Unitários Automatizados

• Difícil quando há dependências

Classe a ser testada

Classe de Teste

Page 10: Test-Driven Development

Testes Unitários Automatizados

• Quebra-se as dependências para obter isolamento

Classe a ser testada

Classe de Teste

Mock

Mock

Mock

Page 11: Test-Driven Development

DEMONSTRAÇÃO

Page 12: Test-Driven Development

Testes

Desenho

Implementação

Testes

Page 13: Test-Driven Development

Primeiro Testes

Desenho

Testes

Implementação

Page 14: Test-Driven Development

Primeiro Testes

Desenho

Testes

Implementação

Testes

Page 15: Test-Driven Development

Test-driven Developement

Desenho

Testes

Implementação

Testes

Page 16: Test-Driven Development

Test-driven Developement

Novo Requerimento

Escreve Novo Teste

Executa Testes

Escreve o CódigoExecuta Testes

Refactoring

Executa Testes

Faça Falhar

Faça Funcionar

Faça Melhor

Page 17: Test-Driven Development

Ciclo TDD• Escreva o teste

– Garante que todo o código funcional é testável– Prove uma especificação funcional para o código– Ajuda a pensar no desenho– Garante que o código é tangível

• Escreva o código– Complete o requerimento– Escreva a solução mais simples– Deixe as melhorias para um passo seguinte– O código serve somente para passar no teste

• Reescreva (Refactoring)– Faça a limpeza no código– Aplique as melhores práticas de codificação– Repense o desenho– Delete o código desnecessário

Page 18: Test-Driven Development

Importante!

Não escreva o código em sua cabeça antes de escrever o teste!!

Lembre-se: está escrevendo um teste unitário caixa preta

Page 19: Test-Driven Development

Por que aplicar TDD

• Confiabilidade– Aumenta confiança no código– Elimina o medo de refactoring

• Documenta os requisitos (no código)• Teste de regressão = Estabilidade = Qualidade

Page 20: Test-Driven Development

Por que aplicar TDD

Requirements Coding Integration Testing Support0%

20%

40%

60%

80%

100%

0

1000

2000

3000

4000

5000

6000

7000

8000

9000

10000

% of Defects Introduced Cost to Fix a Defect

% d

efec

ts c

reat

ed

Thou

sand

$s

The pain is here! This is too late…

Page 21: Test-Driven Development

DEMONSTRAÇÃO

Page 22: Test-Driven Development

OBRIGADO