Transcript
Page 1: Test Driven Development - TDD - Vinicius Quaiato

Construindo software para durar

Vinicius Quaiato 1

Page 2: Test Driven Development - TDD - Vinicius Quaiato

Desenvolvimento “guiado” por testes; Se escrever o teste antes, é TDD, caso

contrário não é;

Vinicius Quaiato 2

Page 3: Test Driven Development - TDD - Vinicius Quaiato

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

Page 4: Test Driven Development - TDD - Vinicius Quaiato

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

Page 5: Test Driven Development - TDD - Vinicius Quaiato

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

Page 6: Test Driven Development - TDD - Vinicius Quaiato

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

Page 7: Test Driven Development - TDD - Vinicius Quaiato

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

Page 8: Test Driven Development - TDD - Vinicius Quaiato

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

Page 9: Test Driven Development - TDD - Vinicius Quaiato

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

Page 10: Test Driven Development - TDD - Vinicius Quaiato

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

Page 11: Test Driven Development - TDD - Vinicius Quaiato

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

Page 12: Test Driven Development - TDD - Vinicius Quaiato

.NET 3.5 MS Tests Rhino Mocks – Framework para mocks

Vinicius Quaiato 12

Page 13: Test Driven Development - TDD - Vinicius Quaiato

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


Top Related