17
DESENVOLVIMENTO INCREMENTAL COM TEST DRIVEN DEVELOPMENT

Desenvolvimento Incremental com Test Driven Development

Embed Size (px)

DESCRIPTION

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

Citation preview

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?