SlideShare uma empresa Scribd logo
Test-Driven
Development
hlegius
Test-Driven Development
TD.. o quê ?
Era uma vez…
Barbie
Software Engineer
Era uma vez…
Barbie Software Engineer
Era uma vez…
Barbie Software Engineer
executa
Era uma vez…
Barbie Software Engineer
SVN
versiona
Várias Barbie’s Software Engineer
Várias Barbie’s Software Engineer
Modificando a aplicação sem garantias !
Um bug.
Resultados…
… e outro.
Resultados…
… e mais um.
Resultados…
… outro,
outro e tantos outros…
Resultados…
Desenvolvimento orientado à testes
Testa
Publica
Codifica
Forma non-TDD
Desenvolvimento orientado à testes
Desenvolvimento orientado à testes
Testa
Publica
Codifica
Forma non-TDD
Escreve o
teste
Cria a
implementação
Valida a
implementação
Incrementa o
teste
Evolui o design
da
implementação
A maneira focada em testes
Mas afinal, qual o objetivo do TDD ?
Mas afinal, qual o objetivo do TDD ?
Mitigar bugs ?
Mas afinal, qual o objetivo do TDD ?
Mitigar bugs ?
Evitar
re-testes ?
Mas afinal, qual o objetivo do TDD ?
Mitigar bugs ?
Evitar
re-testes ?
Evoluir
o
design ?
Mas afinal, qual o objetivo do TDD ?
Mitigar bugs ?
Evitar
re-testes ?
Evoluir
o
design ?
mimimi
Mas afinal, qual o objetivo do TDD ?
Mitigar bugs ?
Evitar
re-testes ?
Evoluir
o
design ?
mimimi
Validar
o
escopo ?
Mas antes…
… falando sobre agile
O Manifesto Ágil
… falando sobre design
Table Module
… falando sobre design
Table Module
 Fácil para gerar automáticamente;
… falando sobre design
Table Module
 Fácil para gerar automáticamente;
 Fácil para developers com pouca
experiência;
… falando sobre design
Table Module
 Fácil para gerar automáticamente;
 Fácil para developers com pouca
experiência;
 One size fits all;
… falando sobre design
Table Module
 Fácil para gerar automáticamente;
 Fácil para developers com pouca
experiência;
 One size fits all;
 Alto acoplamento; viola o SRP;
… falando sobre design
Table Module
 Fácil para gerar automáticamente;
 Fácil para developers com pouca
experiência;
 One size fits all;
 Alto acoplamento; viola o SRP;
 Pouco flexível, e;
… falando sobre design
Table Module
 Fácil para gerar automáticamente;
 Fácil para developers com pouca
experiência;
 One size fits all;
 Alto acoplamento; viola o SRP;
 Pouco flexível, e;
 Dados e comportamento estão
separados.

… falando sobre design
Table Module
Mais do mesmo: Transaction Script e Service Layer @ PoEAA por Fowler
Domain Model
… falando sobre princípios
S
O
L
I
D
… falando sobre princípios
S
O
L
I
D
ingle Responsibility Principle
… falando sobre princípios
S
O
L
I
D
pen Close Principle
ingle Responsibility Principle
… falando sobre princípios
S
O
L
I
D
pen Close Principle
ingle Responsibility Principle
iskov Substitution Principle
… falando sobre princípios
S
O
L
I
D
pen Close Principle
ingle Responsibility Principle
iskov Substitution Principle
nterface Segregation Principle
… falando sobre princípios
S
O
L
I
D
pen Close Principle
ingle Responsibility Principle
iskov Substitution Principle
nterface Segregation Principle
ependency Inversion Principle
E agora ele, o TDD.
Test-Driven Development
Test-Driven Development
Specification-Driven Design
Soa bem melhor e é menos confuso. 
Test-Driven Development
• Focado na especificação;
• Evolução contínua, e;
• Documentação executável;
• Three-one
Tem como objetivos:
Test-Driven Development
• Focado na especificação;
• Evolução contínua, e;
• Documentação executável;
• Three-one
• OODesign;
• Domain-Driven Design;
• Modelo rico;
• Integração Contínua, e;
• Deploy contínuo.
• Three-one
Tem como objetivos: Premissa para:
Arquitetura dos Testes
Arquitetura dos testes
Escreve o
teste
Cria a
implementação
Valida a
implementação
Incrementa o
teste
Evolui o design
da
implementação
• Escreve-se o teste com o mínimo possível;
• Procure focar-se na especificação;
• Não caia na tentação de codificar
algo antes;
• Verifique se o teste falha
sem a implementação, e;
• Certifique-se de que o teste está validando
o que está no documento de especificação.
Arquitetura dos testes
Escreve o
teste
Cria a
implementação
Valida a
implementação
Incrementa o
teste
Evolui o design
da
implementação
• Implementação coesa, seguindo um
design simplista baseado no SOLID, por exemplo;
• Não rascunhe. Crie o necessário
para aquela implementação, baseado no
que leu até o momento, e;
• Não rode o teste até ter finalizado.
Arquitetura dos testes
Escreve o
teste
Cria a
implementação
Valida a
implementação
Incrementa o
teste
Evolui o design
da
implementação
• Execute o teste. 
Arquitetura dos testes
Escreve o
teste
Cria a
implementação
Valida a
implementação
Incrementa o
teste
Evolui o design
da
implementação
• Melhore o design do teste.
Arquitetura dos testes
Escreve o
teste
Cria a
implementação
Valida a
implementação
Incrementa o
teste
Evolui o design
da
implementação
• Melhore o design da implementação.
Arquitetura dos testes
E o modelo anêmico
Arquitetura dos testes
Arquitetura dos testes
• Alto acoplamento;
• SRP, e;
• Dificulta testes de unidade.
Arquitetura dos testes
Design pattern: Service
• Alto acoplamento;
• SRP, e;
• Dificulta testes de unidade.
Arquitetura dos testes
Arquitetura dos testes
• Alto acoplamento;
• Viola SRP;
• Dificulta testes de unidade;
• Baixa legibilidade, e;
• Orientado à função.
Arquitetura dos testes
• Alto acoplamento;
• Viola SRP;
• Dificulta testes de unidade;
• Baixa legibilidade, e;
• Orientado à função.
Um factory ao init(), melhoraria :)
The root of all evil is
Arquitetura dos testes
Ele, o symfony !
Design pattern arquitetônico: Table Module
Design pattern estrutural: Row Data Gateway
Arquitetura dos testes
• Alto acoplamento;
• SRP;
• Orientado à “tabelas”;
• One size fits all;
• Utiliza-se herença à composição, e;
• Fácil uso.
Soluções ?
• Mudar a arquitetura, ou;
• Redobrar atenção aos princípios SOLID.
Design dos testes
Design dos testes
Single Responsibility Principle;
Design dos testes
Single Responsibility Principle;
Baixo acoplamento
Design dos testes
Single Responsibility Principle;
Baixo acoplamento;
Doc block e annotations na classe
Design dos testes
Single Responsibility Principle;
Baixo acoplamento;
Doc block e annotations na classe;
Keep It Simple, Stupid.
Design dos testes
WTF !?
Design dos testes
Qual o problema aqui ?
Design dos testes
Por fim…
• Entender o que é realmente OO Design;
• Entender o que é realmente OO Design;
• Não esquecer dos princípios S.O.L.I.D;
• Entender o que é realmente OO Design;
• Não esquecer dos princípios S.O.L.I.D;
• #nota TDD é validação de escopo, não
bug finder;
• Entender o que é realmente OO Design;
• Não esquecer dos princípios S.O.L.I.D;
• #nota TDD é validação de escopo, não
bug finder;
• Arquitetura é importante ! ;
• Entender o que é realmente OO Design;
• Não esquecer dos princípios S.O.L.I.D;
• #nota TDD é validação de escopo, não
bug finder;
• Arquitetura é importante ! ;
• Design patterns não são balas-de-prata,
e;
• Entender o que é realmente OO Design;
• Não esquecer dos princípios S.O.L.I.D;
• #nota TDD é validação de escopo, não
bug finder;
• Arquitetura é importante ! ;
• Design patterns não são balas-de-prata,
e;
• Refatore cedo, refatore regularmente *
E para criar testes…
E para criar testes…
http://www.phpunit.de ;)
E isto é apenas o
começo.

Mais conteúdo relacionado

PDF
Introdução ao TDD nas soluções Global AppCasting
PDF
Engenharia de Software II - Aula 7
PDF
Engenharia de Software II - Aula 9
PPT
O XP não é contra Design com Paulo Caroli, Café Ágil em Recife
PDF
Cafe agil em Recife - Agile and Design
PDF
TDD para "meros mortais"
PPTX
Design Patterns - Com Java
PPTX
TDD: Técnicas, Benefícios e Limitação
Introdução ao TDD nas soluções Global AppCasting
Engenharia de Software II - Aula 7
Engenharia de Software II - Aula 9
O XP não é contra Design com Paulo Caroli, Café Ágil em Recife
Cafe agil em Recife - Agile and Design
TDD para "meros mortais"
Design Patterns - Com Java
TDD: Técnicas, Benefícios e Limitação

Mais procurados (20)

PDF
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
KEY
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
PDF
In tests we trust: começando com TDD, mocks e mais
PPTX
Teste automatizados e tdd
PDF
A Carreira de Desenvolvedor: do Jr ao Sênior
PPTX
Desenvolvimento de software: Mundo ideal x Mundo real
PPTX
Desenvolvimento de software mundo ideal x mundo real
PDF
Revisão de Código - Uma prática que depende da cultura
PDF
Introdução ao TDD
PDF
Testes em ambiente agil - TechTalks ADP Labs
PDF
Como se tornar Agile Tester
PDF
UnP Eng. Software - Aula 27
PDF
Tente desenvolver diferente com TDD
PDF
DevOps - Por onde começar
PPT
Introdução ao XP
PDF
Feature Injection - Descobrindo e entregando valor testável
PDF
TDD para Java EE
PPTX
Desenvolvimento Dirigido por Testes
PPTX
Introdução a Modelagem
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
In tests we trust: começando com TDD, mocks e mais
Teste automatizados e tdd
A Carreira de Desenvolvedor: do Jr ao Sênior
Desenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software mundo ideal x mundo real
Revisão de Código - Uma prática que depende da cultura
Introdução ao TDD
Testes em ambiente agil - TechTalks ADP Labs
Como se tornar Agile Tester
UnP Eng. Software - Aula 27
Tente desenvolver diferente com TDD
DevOps - Por onde começar
Introdução ao XP
Feature Injection - Descobrindo e entregando valor testável
TDD para Java EE
Desenvolvimento Dirigido por Testes
Introdução a Modelagem
Anúncio

Destaque (6)

KEY
PDF
Test-driven Development - Introdução
PPTX
Ruby On Rails
PDF
Classroom Management Tips for Kids and Adolescents
PDF
The Buyer's Journey - by Chris Lema
PDF
The Presentation Come-Back Kid
Test-driven Development - Introdução
Ruby On Rails
Classroom Management Tips for Kids and Adolescents
The Buyer's Journey - by Chris Lema
The Presentation Come-Back Kid
Anúncio

Semelhante a Test-Driven Development - Introdução (20)

PPTX
Sobre TDD - Tech Friday da Everis Uberlândia
PDF
Revisitando as Práticas de Engenharia Ágil
PDF
Introdução ao TDD
PDF
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
PPTX
Seu codigo fede e voce nem sabia - 2020
PDF
Testando serviços aws localmente com Localstack e JUnit
PDF
PPTX
Criando uma Arquitetura Testável
PPT
O XP não é contra Design com Paulo Caroli, Café Ágil em Recife
PPT
Tdd On Rails
PDF
Encontro Locaweb Curitiba
PDF
Encontro Locaweb
PPT
[INFNET] Criando layouts em PSD pensando no front-end e back-end
PDF
Metodologias de desenvolvimento - Waterfall vs Agile
PDF
Treinamento TDD - Atech
PDF
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
PDF
Os Benefícios dos testes no desenvolvimento de software
PDF
Test First, TDD e outros Bichos
PDF
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Sobre TDD - Tech Friday da Everis Uberlândia
Revisitando as Práticas de Engenharia Ágil
Introdução ao TDD
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
Seu codigo fede e voce nem sabia - 2020
Testando serviços aws localmente com Localstack e JUnit
Criando uma Arquitetura Testável
O XP não é contra Design com Paulo Caroli, Café Ágil em Recife
Tdd On Rails
Encontro Locaweb Curitiba
Encontro Locaweb
[INFNET] Criando layouts em PSD pensando no front-end e back-end
Metodologias de desenvolvimento - Waterfall vs Agile
Treinamento TDD - Atech
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
Os Benefícios dos testes no desenvolvimento de software
Test First, TDD e outros Bichos
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...

Mais de Hélio Costa e Silva (6)

PPTX
Annotation Sniffer Hotspots implementation
PPTX
Chain of Responsibility Pattern
PPTX
Lightning talk - Framework Architecture: Hotspots
PPTX
Vex 2009-2011
PPSX
Definir classe não é programar com orientação a objetos
PPSX
WebVibe Barueri 2011 - "PHP por quê ?"
Annotation Sniffer Hotspots implementation
Chain of Responsibility Pattern
Lightning talk - Framework Architecture: Hotspots
Vex 2009-2011
Definir classe não é programar com orientação a objetos
WebVibe Barueri 2011 - "PHP por quê ?"

Último (19)

PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Apple Pippin Uma breve introdução. - David Glotz
PDF
Processos na gestão de transportes, TM100 Col18
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PPTX
Aula 18 - Manipulacao De Arquivos python
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
COBITxITIL-Entenda as diferença em uso governança TI
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Apple Pippin Uma breve introdução. - David Glotz
Processos na gestão de transportes, TM100 Col18
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Aula04-Academia Heri- Tecnologia Geral 2025
Aula 18 - Manipulacao De Arquivos python
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Custos e liquidação no SAP Transportation Management, TM130 Col18
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...

Test-Driven Development - Introdução