desenvolvimento incremental com test driven development

17
DESENVOLVIMENTO INCREMENTAL COM TEST DRIVEN DEVELOPMENT

Upload: leonardo-de-aguiar

Post on 24-Jun-2015

834 views

Category:

Technology


0 download

DESCRIPTION

Slides da palestra sobre Desenvolvimento Incremental com Test Driven Development na SESTINFO 2011 da Universidade Metodista de São Paulo.

TRANSCRIPT

Page 1: Desenvolvimento Incremental com Test Driven Development

DESENVOLVIMENTO INCREMENTAL COM TEST

DRIVEN DEVELOPMENT

Page 2: Desenvolvimento Incremental com Test Driven Development

Quem sou Eu?

Leonardo R. Aguiar(Mais conhecido como Léo ¬¬)

#SouDev na #TGS (Thomas Greg)

[email protected]@L30n4rdohttp://leonardoRaguiar.com.br/blog/

Page 3: Desenvolvimento Incremental com Test Driven Development

Agenda do dia!

• Manifesto Ágil• Princípios S.O.L.I.D.• O que é Test Driven Development?– Ciclo do TDD– TDD Não é uma técnica de Teste de Software– Objetos Mock e Stub

• Desenvolvimento “Tradicional”• Desenvolvimento com TDD• Benefícios do TDD• Paradigmas e Falácias sobre TDD

Page 4: Desenvolvimento Incremental com Test Driven Development

Manifesto Ágil

• Indivíduos e interação entre eles mais que processos e ferramentas

• Software em funcionamento mais que documentação abrangente

• Colaboração com o cliente mais que negociação de contratos

• Responder a mudanças mais que seguir um plano

Page 5: Desenvolvimento Incremental com Test Driven Development

Princípios S.O.L.I.D.SRP• Single Responsability Principle

OCP• Open-Closed Principle

LSP• Liskov Substitution Principle

DIP• Dependency Inversion Principle

ISP• Interface Segregation Principle

Page 6: Desenvolvimento Incremental com Test Driven Development

O Que é Test Driven Development?

TDD = Test-First + Design Incremental

Page 7: Desenvolvimento Incremental com Test Driven Development

Ciclo do TDD

Escrever um teste que falhe

Fazer o teste passar

Refactoring

Page 8: Desenvolvimento Incremental com Test Driven Development

Ciclo do TDD

Page 9: Desenvolvimento Incremental com Test Driven Development

TDD x Teste de Software

TDD

Integração

AceitaçãoSistema

Operação

Unidade

Page 10: Desenvolvimento Incremental com Test Driven Development

Objetos Mock

Estado Comporta-mento

Objeto / Instancia

Page 11: Desenvolvimento Incremental com Test Driven Development

Mock x Stub

Mock• Testa a Interação entre Objetos

Stub• Testa o Estado do Objeto

Page 12: Desenvolvimento Incremental com Test Driven Development

Desenvolvimento Tradicional

Escrevemos o Código Primeiro

Código com Alto Acoplamento

• Necessidade de comentários para dizer o que o código faz• Necessidade de alguém para explicar o que o código faz

Código Difícil de Entender

Debug

Page 13: Desenvolvimento Incremental com Test Driven Development

Desenvolvimento com TDD

Código Claro

• Cada teste representa uma funcionalidade do sistema

Documentação Executável

Feedback rápido sobre qualquer alteração no sistema

Diminuição de Debug

Page 14: Desenvolvimento Incremental com Test Driven Development

Benefícios do TDD

Cobertura de Teste

Documentação

• Design Patterns• Princípios S.OL.I.D.

Arquitetura

Page 15: Desenvolvimento Incremental com Test Driven Development

Paradigmas e Falácias sobre TDD

É mais demorado desenvolver com

TDD

Eu não sei o que testar Testar é difícil

Desenvolvendo com TDD não

preciso de testes

O projeto está atrasado

Eu não tenho tempo para testar

TDD só funciona com metodologias

ágeis

Page 16: Desenvolvimento Incremental com Test Driven Development

Conclusão

“TDD não é sobre testes, é sobre como utilizar testes para criar sistemas de forma simples e incremental. Isto não somente aumenta a qualidade do software, mas também simplifica o processo de desenvolvimento.”

Fonte: Test-Driven Development: A J2EE Example. Berkeley: Apress, 2004.

Page 17: Desenvolvimento Incremental com Test Driven Development

PERGUNTAS?