Test Driven Development - TDD - Vinicius Quaiato

3,284 views
3,118 views

Published on

Apresentação sobre o que é TDD e por que utilizá-lo.

Para mais informações e uma série completa de artigos sobre TDD com C# e Visual Studio: http://viniciusquaiato.com

Published in: Technology, Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,284
On SlideShare
0
From Embeds
0
Number of Embeds
513
Actions
Shares
0
Downloads
63
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • Envision Tecnologia
  • Test Driven Development - TDD - Vinicius Quaiato

    1. 1. Construindo software para durar Vinicius Quaiato
    2. 2. <ul><li>Desenvolvimento “guiado” por testes; </li></ul><ul><li>Se escrever o teste antes, é TDD, caso contrário não é; </li></ul>Vinicius Quaiato
    3. 3. <ul><li>Escrevemos o código primeiro; </li></ul><ul><li>Implementamos classes altamente acopladas; </li></ul><ul><li>Fazemos código confuso </li></ul><ul><ul><li>Código que precisa de comentários; </li></ul></ul><ul><ul><li>Código que precisa de documentações internas; </li></ul></ul><ul><ul><li>Código que precisa ser explicado; </li></ul></ul><ul><ul><li>Código que não é “entendível”. </li></ul></ul><ul><li>Perdemos tempo demais com “testes do macaco”; </li></ul>Vinicius Quaiato
    4. 4. <ul><li>Código mais claro; </li></ul><ul><li>Testes são “documentações executáveis”; </li></ul><ul><li>Testes representam/garantem features do domínio do problema; </li></ul><ul><li>Se algum teste parou de rodar, sabemos que algo deu errado; </li></ul><ul><li>Independência de uma camada gráfica para testar as camadas mais baixas(negócios, db, etc); </li></ul><ul><li>Economia de tempo e dinheiro em manutenção; </li></ul>Vinicius Quaiato
    5. 5. <ul><li>Testar é fácil, se está difícil escrever um teste o código está mal feito; </li></ul><ul><li>TDD nos leva a usar/descobrir/entender as boas práticas de design/arquitetura; </li></ul><ul><li>TDD nos leva a um baixo acoplamento; </li></ul><ul><ul><li>Injeção de Dependências; </li></ul></ul><ul><ul><li>Inversão de Controle </li></ul></ul><ul><li>TDD nos leva a desenvolver para/depender interfaces; </li></ul>Vinicius Quaiato
    6. 6. <ul><li>Os testes de unidade (Unit Tests) focam em algo específico; </li></ul><ul><li>SUT é a mínima parte que está sendo testada; </li></ul><ul><li>No teste de um SUT não devemos nos preocupar com o resto do sistema </li></ul>Vinicius Quaiato
    7. 7. <ul><li>Classes simples que implementam o comportamento de classes mais complexas; </li></ul><ul><li>Facilitam e auxiliam os testes, permitindo focar no SUT; </li></ul><ul><li>No geral são usados para testar estados </li></ul>Vinicius Quaiato
    8. 8. <ul><li>Segundo Martin Fowler: </li></ul><ul><ul><li>“ The term 'Mock Objects' has become a popular one to describe special case objects that mimic real objects for testing.” </li></ul></ul><ul><ul><li>“ O termo “Mock Objects” se tornou popular para descrever tipos especiais de objetos que imitam objetos reais para testes”. (tradução livre) </li></ul></ul>Vinicius Quaiato
    9. 9. <ul><li>Mocks geralmente são usados para testar comportamentos e interações entre objetos; </li></ul><ul><li>Framework de mocks auxiliam sua criação; </li></ul><ul><li>Podemos criar mocks de algo que não temos controle: </li></ul><ul><ul><li>Database; </li></ul></ul><ul><ul><li>Webservice; </li></ul></ul><ul><ul><li>Logservices; </li></ul></ul><ul><ul><li>etc </li></ul></ul>Vinicius Quaiato
    10. 10. <ul><li>Os testes devem evoluir, assim como o código evolui; </li></ul><ul><li>Testes que não são atualizados são apenas código legado; </li></ul><ul><li>Aprender a escrever testes é também um processo gradativo </li></ul>Vinicius Quaiato
    11. 11. <ul><li>Use Case: </li></ul><ul><ul><li>Criar um sistema de contas bancárias: </li></ul></ul><ul><ul><ul><li>Criar novas contas; </li></ul></ul></ul><ul><ul><ul><li>Depositar, sacar e transferir; </li></ul></ul></ul><ul><ul><ul><li>Consultar saldo; </li></ul></ul></ul><ul><ul><ul><li>Persistir contas em um banco de dados; </li></ul></ul></ul>Vinicius Quaiato
    12. 12. <ul><li>.NET 3.5 </li></ul><ul><li>MS Tests </li></ul><ul><li>Rhino Mocks – Framework para mocks </li></ul>Vinicius Quaiato
    13. 13. <ul><li>Rhino Mocks: </li></ul><ul><ul><ul><li>http://www.ayende.com/projects/rhino-mocks.aspx </li></ul></ul></ul><ul><li>Martin Fowler: </li></ul><ul><ul><ul><li>http://martinfowler.com/articles/mocksArentStubs.html </li></ul></ul></ul><ul><li>Blog Vinicius Quaiato: </li></ul><ul><ul><ul><li>http://www.viniciusquaiato.com </li></ul></ul></ul><ul><li>.NET Magazine (edições 53, 54 e 55): </li></ul>Vinicius Quaiato

    ×