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!

Tdd como uma ferramenta de arquitetura