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