50
Ramon Gonçalves TDD & CI Teste ajuda? Design orientado a testes? Integração Contínua? O que é isso?

Tdd & CI

Embed Size (px)

Citation preview

Page 1: Tdd & CI

R a m o n G o n ç a l v e s

TDD & CITeste ajuda? Design orientado a testes?

Integração Contínua? O que é isso?

Page 2: Tdd & CI

A - NOT SO - LONG TIME AGO…

!2

Page 3: Tdd & CI

COMO ASSIM TESTE?

!3

AUTOMATIZA!

Page 4: Tdd & CI

POR QUE EU PRECISO DISSO?

!4

FEEDBACKS, MA FRIEND, FEEDBACKS =D

Page 5: Tdd & CI

!5

Page 6: Tdd & CI

!6

Page 7: Tdd & CI

!7

Page 8: Tdd & CI

QUEM ESCREVE ESSE TREM?

!8

Page 9: Tdd & CI

!9

Page 10: Tdd & CI

PERA; SEM SEPARAÇÃO DE TIME?

!10

Page 11: Tdd & CI

!11

Page 12: Tdd & CI

HMM, MAS QUANDO ESCREVER ESSES TESTES?

!12

ANTES OU DEPOIS?

Page 13: Tdd & CI

NENHUM DOS DOIS!YEEEH YEEEH!

!13

Page 14: Tdd & CI

CICLO MALDITO DA FRUSTRAÇÃO GARANTIDA

!14

Page 15: Tdd & CI

CICLO LINDO DA RECOMPENSA IMEDIATA

!15

Page 16: Tdd & CI

E SE EU QUISER TESTAR DEPOIS?uai…

!16

Page 17: Tdd & CI

SÓ QUE TDD NÃO É SOBRE TESTESish…

!17

Page 18: Tdd & CI

TDD É SOBRE DESIGN!eita jeovana!

!18

Page 19: Tdd & CI

!19

Page 20: Tdd & CI

COMO ASSIM, RAMON?

e esse ‘teste' aí?

!20

TEST-DRIVEN DEVELOPMENT

Page 21: Tdd & CI

“CLEAN CODE THAT WORKS"código limpo que funciona!

!21

Page 22: Tdd & CI

UP-FRONT DESIGN (TRADICIONAL)

!22

Page 23: Tdd & CI

TEST DRIVEN DEVELOPMENT / TEST DRIVEN DESIGN

!23

Page 24: Tdd & CI

COMO?

!

!

1 - Adicione um teste 2 - Rode os testes 3 - Mude algo pequeno 4 - Rode tudo outra vez (agora tudo deve ser sucesso) 5 - Refatore

!24

Page 25: Tdd & CI

VERMELHO - VERDE - REFATORAÇÃO

!25

Page 26: Tdd & CI

!26

Page 27: Tdd & CI

ISOLAMENTO! estamos falando de Testes Unitários

!27

Page 28: Tdd & CI

TESTES DEVEM ENSINARtem que dizer algo

!28

Page 29: Tdd & CI

SEU TESTE DEVE DIZER ALGO

“public void testaValidacao()” - NOPE! !

!

!

!

!

“public void deveRetornarUmErroXSeAEntradaForEssaEquisitaAqui()” - isso é algo feliz e que te diz um comportamento relevante =D

!29

Page 30: Tdd & CI

TESTAMOS COMPORTAMENTOS“o que” é mais importante do que "como"

!30

Page 31: Tdd & CI

EMERGENT DESIGN

ASSIM NOSSO DESIGN EMERGE!

Page 32: Tdd & CI

E AÍ, O QUE CONSEGUIMOS COM ISSO TUDO?

!32

Page 33: Tdd & CI

APRENDEMOS COM O CÓDIGOnão implementamos só o que veio na cabeça de primeira…

!33

Page 34: Tdd & CI

QUALIDADE, QUALIDADE, QUALIDADE!todo mundo mais feliz…

!34

Page 35: Tdd & CI

CONFIANÇA!

!35

medo pra quê se eu tenho meus testes!?

Page 36: Tdd & CI

HMM, MAS ESSA TALK NÃO ERA SÓ SOBRE TDD, NÉ?

!36

Page 37: Tdd & CI

c l i e n t e b r a v o !

INTEGRAÇÃO CONTÍNUAo tal do CI (continuous integration)

Page 38: Tdd & CI

MAIS UMA TÉCNICA CHATA?integrar que é chato, não?

!38

Page 39: Tdd & CI

VAMOS INTEGRAR TUDO DIARIAMENTE!toda hora é dia de manter todo mundo no mesmo barco!

!39

Page 40: Tdd & CI

NÃO É SÓ MAIS UMA PRÁTICA!tem princípios nisso!

!40

Page 41: Tdd & CI

PRÁTICAS

- um único repositório com tudo que tem que existir; - build automático; - tudo auto-testável; - todo commit roda todos os testes automatizados; - o build deveria estar o mais rápido possível; - todo mundo sabe o que está acontecendo; - deploy automático

!41

Page 42: Tdd & CI

QUE DIABOS É UM BUILD?

!42

Page 43: Tdd & CI

!43

Integração Contínua

Page 44: Tdd & CI

SNAP CI

!44

Page 45: Tdd & CI

SE NÃO TEM TESTE, NÃO É CI.o resto é blá-blá-blá

!45

Page 46: Tdd & CI

E AGORA AGORA A COISA FICOU SÉRIA

!46

Page 47: Tdd & CI

ALGUMAS COISINHAS A MAIS…

- todo mundo cuida do build, isso é responsabilidade do time; !

- build quebrado não vai pra produção; !

- muito menos recebe novo commit; !

- se está quebrado, fix it!; !

- ninguém faz push de código sem teste (e que deve ser testado); !

- olha esse trem o tempo todo! (coloca isso numa TV onde todo mundo vê, manda e-mail, integra com o

chat do time. Ninguém deve ficar afastado do build =D)!47

Page 48: Tdd & CI

!48

Page 49: Tdd & CI

NÃO DEIXE ISSO ACONTECER…

!49

Page 50: Tdd & CI

Perguntas?

OBRIGADO!