Test-Driven Development
Software quality factors
Testability
“Disposition to support acceptance criteria and
evaluation of performance. Such a cha...
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 determ...
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
M
o
...
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ódigo
Executa Testes
Refactoring
E...
Ciclo TDD
• Escreva o teste
– Garante que todo o código funcional é testável
– Prove uma especificação funcional para o có...
Importante!
Não escreva o código em sua cabeça antes de
escrever o teste!!
Lembre-se: está escrevendo um teste unitário
ca...
Por que aplicar TDD
• Confiabilidade
– Aumenta confiança no código
– Elimina o medo de refactoring
• Documenta os requisit...
Por que aplicar TDD
0
1
2
3
4
5
6
7
8
9
10
0%
20%
40%
60%
80%
100%
Requirements Coding Integration Testing Support
Thousan...
DEMONSTRAÇÃO
OBRIGADO
Upcoming SlideShare
Loading in …5
×

Test-Driven Development

620 views

Published on

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

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
620
On SlideShare
0
From Embeds
0
Number of Embeds
224
Actions
Shares
0
Downloads
5
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Test-Driven Development

  1. 1. Test-Driven Development
  2. 2. 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
  3. 3. Agenda • Testes • Testes Unitários • Testes Unitários Automatizados • Mock • Test-driven Development
  4. 4. Por que testamos? Validação. Garantir que o software ou componente se comporta como foi projetado
  5. 5. 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
  6. 6. Por que automatizamos? • Confiabilidade • Regressão • Refactoring
  7. 7. DEMONSTRAÇÃO
  8. 8. Testes Unitários Automatizados • Fácil para componentes isolados Classe a ser testada Classe de Teste
  9. 9. Testes Unitários Automatizados • Difícil quando há dependências Classe a ser testada Classe de Teste
  10. 10. Testes Unitários Automatizados • Quebra-se as dependências para obter isolamento Classe a ser testada Classe de Teste M o c k M o c k M o c k
  11. 11. DEMONSTRAÇÃO
  12. 12. Testes Desenho Implementação Testes
  13. 13. Primeiro Testes Desenho Testes Implementação
  14. 14. Primeiro Testes Desenho Testes Implementação Testes
  15. 15. Test-driven Developement Desenho Testes Implementação Testes
  16. 16. Test-driven Developement Novo Requerimento Escreve Novo Teste Executa Testes Escreve o Código Executa Testes Refactoring Executa Testes Faça Falhar Faça Funcionar Faça Melhor
  17. 17. 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
  18. 18. 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
  19. 19. 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
  20. 20. Por que aplicar TDD 0 1 2 3 4 5 6 7 8 9 10 0% 20% 40% 60% 80% 100% Requirements Coding Integration Testing Support Thousand$s %defectscreated % of Defects Introduced Cost to Fix a Defect The pain is here! This is too late…
  21. 21. DEMONSTRAÇÃO
  22. 22. OBRIGADO

×