Upload
ramon-goncalves
View
213
Download
1
Embed Size (px)
Citation preview
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?
A - NOT SO - LONG TIME AGO…
!2
COMO ASSIM TESTE?
!3
AUTOMATIZA!
POR QUE EU PRECISO DISSO?
!4
FEEDBACKS, MA FRIEND, FEEDBACKS =D
!5
!6
!7
QUEM ESCREVE ESSE TREM?
!8
!9
PERA; SEM SEPARAÇÃO DE TIME?
!10
!11
HMM, MAS QUANDO ESCREVER ESSES TESTES?
!12
ANTES OU DEPOIS?
NENHUM DOS DOIS!YEEEH YEEEH!
!13
CICLO MALDITO DA FRUSTRAÇÃO GARANTIDA
!14
CICLO LINDO DA RECOMPENSA IMEDIATA
!15
E SE EU QUISER TESTAR DEPOIS?uai…
!16
SÓ QUE TDD NÃO É SOBRE TESTESish…
!17
TDD É SOBRE DESIGN!eita jeovana!
!18
!19
COMO ASSIM, RAMON?
e esse ‘teste' aí?
!20
TEST-DRIVEN DEVELOPMENT
“CLEAN CODE THAT WORKS"código limpo que funciona!
!21
UP-FRONT DESIGN (TRADICIONAL)
!22
TEST DRIVEN DEVELOPMENT / TEST DRIVEN DESIGN
!23
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
VERMELHO - VERDE - REFATORAÇÃO
!25
!26
ISOLAMENTO! estamos falando de Testes Unitários
!27
TESTES DEVEM ENSINARtem que dizer algo
!28
SEU TESTE DEVE DIZER ALGO
“public void testaValidacao()” - NOPE! !
!
!
!
!
“public void deveRetornarUmErroXSeAEntradaForEssaEquisitaAqui()” - isso é algo feliz e que te diz um comportamento relevante =D
!29
TESTAMOS COMPORTAMENTOS“o que” é mais importante do que "como"
!30
EMERGENT DESIGN
ASSIM NOSSO DESIGN EMERGE!
E AÍ, O QUE CONSEGUIMOS COM ISSO TUDO?
!32
APRENDEMOS COM O CÓDIGOnão implementamos só o que veio na cabeça de primeira…
!33
QUALIDADE, QUALIDADE, QUALIDADE!todo mundo mais feliz…
!34
CONFIANÇA!
!35
medo pra quê se eu tenho meus testes!?
HMM, MAS ESSA TALK NÃO ERA SÓ SOBRE TDD, NÉ?
!36
c l i e n t e b r a v o !
INTEGRAÇÃO CONTÍNUAo tal do CI (continuous integration)
MAIS UMA TÉCNICA CHATA?integrar que é chato, não?
!38
VAMOS INTEGRAR TUDO DIARIAMENTE!toda hora é dia de manter todo mundo no mesmo barco!
!39
NÃO É SÓ MAIS UMA PRÁTICA!tem princípios nisso!
!40
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
QUE DIABOS É UM BUILD?
!42
!43
Integração Contínua
SNAP CI
!44
SE NÃO TEM TESTE, NÃO É CI.o resto é blá-blá-blá
!45
E AGORA AGORA A COISA FICOU SÉRIA
!46
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
!48
NÃO DEIXE ISSO ACONTECER…
!49
Perguntas?
OBRIGADO!