SlideShare uma empresa Scribd logo
1 de 38
Baixar para ler offline
MANDIC + RIVENDEL.
ESPECIALISTAS EM CLOUDS.
TDD como ferramenta de
arquitetura
Desenvolvedor
everton.tavares@rivendel.com.br
@ezidio
mandic.com.br
Everton Tavares
#EspecialistaFaz
DevParaná
http://slack.devparana.org
O que é TDD?
6
TDD tem uma fórmula
simples:
Escreva os testes antes
do código de
produção.
7
Mantra do TDD
Code that's hard to test in
isolation is poorly designed
9
O que é um código
bem projetado?
10
Alta coesão, baixo
acoplamento, design
Patterns, DRY, SOLID,
etc...
11
Alta cobertura de
testes ajuda a
refatorar para padrões
sem medo.
TDD garante uma arquitetura de
qualidade?
13
O que é uma boa
arquitetura?
14
MVC, MVVM,
Hexagonal, CQRS,
Onion, DDD, Clean
Architecture
15
Qual arquitetura é melhor?
16
Não é o TDD que
garante a arquitetura.
Ela deve ser
planejada...
17
TDD “prejudica” o design da
aplicação? ...
19
TDD is dead. Long live testing.
DAVID HEINEMEIER HANSSON (DHH)
http://david.heinemeierhansson.com/2014/tdd-is-dead-long-
live-testing.html
20
user = User.find_by(name: 'David')
user.name = 'Dave'
user.save
21
O nível de abstração e
desacoplamento
depende do contexto
da aplicação.
Quanto mais testes, mais difícil
de manter o código?
23
Qual arquitetura é mais fácil de manter?
24
Agora troque “User” por “Test”
25
Testes também devem
ser arquitetados.
Como TDD ajuda na arquitetura?
27
TDD é uma ferramenta
que ajuda identificar
“smells” no design.
28
Como?
29
Dificuldade em
escrever testes
30
Excesso de testes em
uma única unidade.
31
Testes inteligentes
32
Excesso de validações
(asserts)
33
Efeito cascata em
testes não
relacionados.
34
Mas para tudo isso,
deve-se saber
implementar testes!
Code that's hard to test in
isolation is poorly designed?
36
Nem sempre...
Você pode estar
fazendo da forma
errada!
Perguntas?
Obrigado!

Mais conteúdo relacionado

Mais procurados

Introdução ao TDD nas soluções Global AppCasting
Introdução ao TDD nas soluções Global AppCastingIntrodução ao TDD nas soluções Global AppCasting
Introdução ao TDD nas soluções Global AppCasting
Pedro Pereira Martins
 

Mais procurados (20)

TDC Florianópolis 2019. Trilha Java - Arquitetura de Testes
TDC Florianópolis 2019. Trilha Java - Arquitetura de TestesTDC Florianópolis 2019. Trilha Java - Arquitetura de Testes
TDC Florianópolis 2019. Trilha Java - Arquitetura de Testes
 
Muita gestão e pouca engenharia, por onde anda o XP?
Muita gestão e pouca engenharia, por onde anda o XP?Muita gestão e pouca engenharia, por onde anda o XP?
Muita gestão e pouca engenharia, por onde anda o XP?
 
Acredite, você pode agilizar feedbacks aplicando Dev Box Testing
Acredite, você pode agilizar feedbacks aplicando Dev Box Testing Acredite, você pode agilizar feedbacks aplicando Dev Box Testing
Acredite, você pode agilizar feedbacks aplicando Dev Box Testing
 
Você já aplicou dev box testing hoje?
Você já aplicou dev box testing hoje?Você já aplicou dev box testing hoje?
Você já aplicou dev box testing hoje?
 
Sucesso e derrota na Arquitetura Agile
Sucesso e derrota na Arquitetura AgileSucesso e derrota na Arquitetura Agile
Sucesso e derrota na Arquitetura Agile
 
BDD - Behaviour Driven Development
BDD - Behaviour Driven DevelopmentBDD - Behaviour Driven Development
BDD - Behaviour Driven Development
 
Tdd direto das trincheiras
Tdd direto das trincheirasTdd direto das trincheiras
Tdd direto das trincheiras
 
Oficina FLISOL Curitiba - TDD, pequenos passos fazem toda diferença
Oficina FLISOL Curitiba - TDD, pequenos passos fazem toda diferençaOficina FLISOL Curitiba - TDD, pequenos passos fazem toda diferença
Oficina FLISOL Curitiba - TDD, pequenos passos fazem toda diferença
 
Arquitetura para entrega continua
Arquitetura para entrega continuaArquitetura para entrega continua
Arquitetura para entrega continua
 
BDD em Ação - Testadores 2015
BDD em Ação - Testadores 2015BDD em Ação - Testadores 2015
BDD em Ação - Testadores 2015
 
DevOps: Entregando software e serviços rapidamente
DevOps: Entregando software e serviços rapidamenteDevOps: Entregando software e serviços rapidamente
DevOps: Entregando software e serviços rapidamente
 
Introdução a BDD
Introdução a BDDIntrodução a BDD
Introdução a BDD
 
Test Driven Development (TDD) para seres humanos.
Test Driven Development (TDD) para seres humanos.Test Driven Development (TDD) para seres humanos.
Test Driven Development (TDD) para seres humanos.
 
Upgrade na sprint com práticas do agile testing - QA Ladies 2a Noite
Upgrade na sprint com práticas do agile testing - QA Ladies 2a NoiteUpgrade na sprint com práticas do agile testing - QA Ladies 2a Noite
Upgrade na sprint com práticas do agile testing - QA Ladies 2a Noite
 
Introdução ao TDD nas soluções Global AppCasting
Introdução ao TDD nas soluções Global AppCastingIntrodução ao TDD nas soluções Global AppCasting
Introdução ao TDD nas soluções Global AppCasting
 
Desenvolvimento BDD
Desenvolvimento BDDDesenvolvimento BDD
Desenvolvimento BDD
 
DevOpsDays Brasilia - DevSecOps: Adotando uma cultura de segurança ágil
DevOpsDays Brasilia - DevSecOps: Adotando uma cultura de segurança ágilDevOpsDays Brasilia - DevSecOps: Adotando uma cultura de segurança ágil
DevOpsDays Brasilia - DevSecOps: Adotando uma cultura de segurança ágil
 
CPBR11 - DevSecOps: Adotando uma cultura de segurança ágil
CPBR11 - DevSecOps: Adotando uma cultura de segurança ágil CPBR11 - DevSecOps: Adotando uma cultura de segurança ágil
CPBR11 - DevSecOps: Adotando uma cultura de segurança ágil
 
Soujavarj 12 habitos de arquitetos altamente eficazes
Soujavarj 12 habitos de arquitetos altamente eficazesSoujavarj 12 habitos de arquitetos altamente eficazes
Soujavarj 12 habitos de arquitetos altamente eficazes
 
[Interagil 2019] recuperando a essencia da agilidade para desenvolvedores
[Interagil 2019] recuperando a essencia da agilidade para desenvolvedores[Interagil 2019] recuperando a essencia da agilidade para desenvolvedores
[Interagil 2019] recuperando a essencia da agilidade para desenvolvedores
 

Semelhante a Tdd como uma ferramenta de arquitetura

MVCSummit - DDD e ASP NET MVC na prática com o LiteFx
MVCSummit - DDD e ASP NET MVC na prática com o LiteFxMVCSummit - DDD e ASP NET MVC na prática com o LiteFx
MVCSummit - DDD e ASP NET MVC na prática com o LiteFx
Douglas Aguiar
 
TDD e sua influência no design
TDD e sua influência no designTDD e sua influência no design
TDD e sua influência no design
Felipe Benevides
 

Semelhante a Tdd como uma ferramenta de arquitetura (20)

UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27
 
Seja um desenvolvedor disruptivo, e se torne um grande DevOps
Seja um desenvolvedor disruptivo, e se torne um grande DevOpsSeja um desenvolvedor disruptivo, e se torne um grande DevOps
Seja um desenvolvedor disruptivo, e se torne um grande DevOps
 
TDD direto das trincheiras
TDD direto das trincheirasTDD direto das trincheiras
TDD direto das trincheiras
 
Sobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis Uberlândia
 
Os Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareOs Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de software
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Treinamento TDD - Atech
Treinamento TDD - AtechTreinamento TDD - Atech
Treinamento TDD - Atech
 
Como TDD pode influenciar na construção do seu Produto?
Como TDD pode influenciar na construção do seu Produto?Como TDD pode influenciar na construção do seu Produto?
Como TDD pode influenciar na construção do seu Produto?
 
MVCSummit - DDD e ASP NET MVC na prática com o LiteFx
MVCSummit - DDD e ASP NET MVC na prática com o LiteFxMVCSummit - DDD e ASP NET MVC na prática com o LiteFx
MVCSummit - DDD e ASP NET MVC na prática com o LiteFx
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Engenharia Ágil
Engenharia ÁgilEngenharia Ágil
Engenharia Ágil
 
Behavior Driven Development - Unificando propostas de negócio com testes e có...
Behavior Driven Development - Unificando propostas de negócio com testes e có...Behavior Driven Development - Unificando propostas de negócio com testes e có...
Behavior Driven Development - Unificando propostas de negócio com testes e có...
 
TDD e sua influência no design
TDD e sua influência no designTDD e sua influência no design
TDD e sua influência no design
 
Instituto Stela S&T#001, Projeto de software com testes unitários
Instituto Stela S&T#001, Projeto de software com testes unitáriosInstituto Stela S&T#001, Projeto de software com testes unitários
Instituto Stela S&T#001, Projeto de software com testes unitários
 
Teste automatizados e tdd
Teste automatizados e tddTeste automatizados e tdd
Teste automatizados e tdd
 
O que devo procurar em um code review
O que devo procurar em um code review O que devo procurar em um code review
O que devo procurar em um code review
 
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
 
Pensando TDD
Pensando TDDPensando TDD
Pensando TDD
 
São Paulo MuleSoft Meetups - DevOps
São Paulo MuleSoft Meetups - DevOpsSão Paulo MuleSoft Meetups - DevOps
São Paulo MuleSoft Meetups - DevOps
 
xDD
xDDxDD
xDD
 

Mais de Everton Tavares

Mais de Everton Tavares (7)

BFF - Best Friends Forever?
BFF - Best Friends Forever?BFF - Best Friends Forever?
BFF - Best Friends Forever?
 
Apresentando o Apache Camel
Apresentando o Apache CamelApresentando o Apache Camel
Apresentando o Apache Camel
 
Arquitetura Orientada a Eventos
Arquitetura Orientada a EventosArquitetura Orientada a Eventos
Arquitetura Orientada a Eventos
 
Minha api deve ser rest?
Minha api deve ser rest?Minha api deve ser rest?
Minha api deve ser rest?
 
Meu Cliente não permite DevOps. E agora?
Meu Cliente não permite DevOps. E agora?Meu Cliente não permite DevOps. E agora?
Meu Cliente não permite DevOps. E agora?
 
Expression Language 3.0
Expression Language 3.0Expression Language 3.0
Expression Language 3.0
 
Criando Entidades "Like a Boss"
Criando Entidades "Like a Boss"Criando Entidades "Like a Boss"
Criando Entidades "Like a Boss"
 

Tdd como uma ferramenta de arquitetura