Post on 24-Jun-2015
description
DESENVOLVIMENTO INCREMENTAL COM TEST
DRIVEN DEVELOPMENT
Quem sou Eu?
Leonardo R. Aguiar(Mais conhecido como Léo ¬¬)
#SouDev na #TGS (Thomas Greg)
leonardo.r.aguiar@gmail.com@L30n4rdohttp://leonardoRaguiar.com.br/blog/
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
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
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
O Que é Test Driven Development?
TDD = Test-First + Design Incremental
Ciclo do TDD
Escrever um teste que falhe
Fazer o teste passar
Refactoring
Ciclo do TDD
TDD x Teste de Software
TDD
Integração
AceitaçãoSistema
Operação
Unidade
Objetos Mock
Estado Comporta-mento
Objeto / Instancia
Mock x Stub
Mock• Testa a Interação entre Objetos
Stub• Testa o Estado do Objeto
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
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
Benefícios do TDD
Cobertura de Teste
Documentação
• Design Patterns• Princípios S.OL.I.D.
Arquitetura
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
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.
PERGUNTAS?