1
Test Driven DevelopmentJohn Jonathan da Silva / 11 - 2010
2
• Test Driven Development
I) O que é TDD?
II) Fundamentos do TDD
III) Vantagens de utilizar TDD
IV) 5 Desculpas para não usar TDD
V) Ciclo do TDD
VI) Tipos de testes
VII) Stubs
VIII) Fake it
IX) Mock Objects
X) JMock 2
XI) Hands on
Agenda
TDD é método ágil que tem como objetivo aumentar a velocidade da entrega de produtos através da simplificação das atividades de desenvolvimento de software.
O que é TDD?
Test Driven Development
Test Driven Development
3
• Escrever o teste da implementação da funcionalidade antes de escreve-lá;
• Escrever apenas código suficiente para fazer o teste passar;
• Escrever testes pequenos;
Fundamentos do TDD
Test Driven Development
Test Driven Development
4
• Incentiva a simplicidade;• Aumente a confiança no código;• Ajuda como documentação;• Facilita refactorings.
Vantagens de usar TDD
Test Driven Development
Test Driven Development
5
• Vai demorar muito mais• A funcionalidade é muito fácil• Não sei como testar• Isso não dá pra testar• Melhor deixar os testes com testadores
5 Desculpas para não usar TDD
Test Driven Development
Test Driven Development
6
Test Driven Development
Test Driven Development
6
• Adicionar um teste e veja ele falhar;• Faça o teste passar; • Refatore;
Ciclo do TDD
Test Driven Development
7
Test Driven Development
Ciclo do TDD
• Aceitação• Integração• Unitários• Stress
Tipos de teste
Test Driven Development
9
Stubs são classes que simulam o comportamento de classes mais complexas através de uma implementação simples. Com eles é possível isolar a classe testada do resto do sistema, simplificando os testes e deixando-os mais independentes.
Stubs
Test Driven Development
10
A tenica Fake It consite em escrever um teste que falhe e para faze-lo passar, utiliza-se constantes. A medida em que o código evoluí e são adicionados novos testes estas constantes são gradualmente substituidas por variáveis.
Fake it (til you make it)
Test Driven Development
11
São objetos que simulam o comportamento de objetos reais de forma controlada. São normalmente criados para testar o comportamento de outros objetos.
Mock Objects
Test Driven Development
12
O JMock é uma biblioteca que auxilia o Test Driven Development através dos mock objects.
JMock 2
Test Driven Development
13
• Web – Jmock 2
• http://www.jmock.org– Mock Objects
• http://www.mockobjects.com/
• Livros – Growing Object-Oriented Software Guided by Tests
• Steve Freeman • Nat Pryce
Referências
Test Driven Development
14
– Test-Driven Development by Example• Kent Beck• Addison Wesley
– A arte do desenvolvimento ágil• James Shore• Shane Warden
– Refactoring: Improving the design of existing code• Marting Flower
• Ferramentas– FiTNesse - http://fitnesse.org/– Selenium - http://seleniumhq.org/– Apache JMeter - http://jakarta.apache.org/jmeter/
Referências - Continuação
Test Driven Development
15
– Apache Maven - http://maven.apache.org– Eclipse - http://www.eclipse.org
• Bibliotecas | Frameworks– Jmock 2 - http://www.jmock.org– JUnit - www.junit.org– SwingUnit - https://swingunit.dev.java.net/– EasyMock - http://www.easymock.org– MockEJB Framework - http://www.mockejb.org– WSUnit - https://wsunit.dev.java.net/– XMLUnit – http://xmlunit.sourceforge.net
Referências - Continuação
Test Driven Development
16
17
John Jonathan da Silva
QUESTÕES
IMAGEM
Test Driven Development