test-driven development
Post on 19-Jun-2015
434 Views
Preview:
DESCRIPTION
TRANSCRIPT
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
Agenda
• Testes• Testes Unitários• Testes Unitários Automatizados• Mock• Test-driven Development
Por que testamos?
Validação. Garantir que o software ou componente se comporta como foi projetado
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
Por que automatizamos?
• Confiabilidade• Regressão• Refactoring
DEMONSTRAÇÃO
Testes Unitários Automatizados
• Fácil para componentes isolados
Classe a ser testada
Classe de Teste
Testes Unitários Automatizados
• Difícil quando há dependências
Classe a ser testada
Classe de Teste
Testes Unitários Automatizados
• Quebra-se as dependências para obter isolamento
Classe a ser testada
Classe de Teste
Mock
Mock
Mock
DEMONSTRAÇÃO
Testes
Desenho
Implementação
Testes
Primeiro Testes
Desenho
Testes
Implementação
Primeiro Testes
Desenho
Testes
Implementação
Testes
Test-driven Developement
Desenho
Testes
Implementação
Testes
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
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
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
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
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…
DEMONSTRAÇÃO
OBRIGADO
top related