Transcript
Page 1: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

globo.com Test Driven DevelopmentTrabalhe tranquilo e maximize sua produtividade

Friday, December 9, 2011

Page 2: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

Sobre Mim‣ Flávio Ribeiro

‣ Graduado em Engenharia Elétrica pelo IFPB

‣ Engenheiro de Software na Globo.com

@flavioribeiro

Friday, December 9, 2011

Page 3: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

Sobre a Palestra‣ Vamos falar de ...

Friday, December 9, 2011

Page 4: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

Problemas ReaisFriday, December 9, 2011

Page 5: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

Entregas Cíclicascontinous delivery

Friday, December 9, 2011

Page 6: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

Modelagemdesign

Friday, December 9, 2011

Page 7: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

Profissionalismo?Friday, December 9, 2011

Page 8: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

Test Driven Development

Friday, December 9, 2011

Page 9: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

Friday, December 9, 2011

Page 10: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

Friday, December 9, 2011

Page 11: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

Antes de Comecar...‣ TDD não é ensinado, TDD é praticado!

‣ Na fase de treinamento é importante seguir as regras.

‣ Baby Steps.

Friday, December 9, 2011

Page 12: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

Modelagem/Testedesign

Friday, December 9, 2011

Page 13: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

Modelagem / Teste‣ Seja cliente do código que irá escrever

‣ O que eu vou entregar e o que eu quero de volta?

‣ Escreva um teste com o design concebido

Friday, December 9, 2011

Page 14: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

Escreva o código

Friday, December 9, 2011

Page 15: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

Escreva o código‣ Gaste um tempo pensando no seu problema, planeje

até ter uma solução limpa e elegante.

‣ Mantenha o foco. O target é fazer o teste passar.

‣ Faça o teste passar.

Friday, December 9, 2011

Page 16: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

Refatorar

Friday, December 9, 2011

Page 17: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

Refatorar‣ Use nomes que façam sentido.

‣ Aplique otimizações.

‣ Pair Programming

‣ Honre seu nome, o git blame pode te entregar.

‣ “Qualquer um escreve código que computadores entendem. Bons programadores escrevem código que humanos podem entender.” - Martin Fowler

Friday, December 9, 2011

Page 18: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

Quando refatorar?‣ Código duplicado

‣ Métodos longos

‣ Classes grandes (o famoso sacolão)

‣ Muitos parâmetros

Friday, December 9, 2011

Page 19: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

Quando refatorar?‣ Beautiful is better than ugly.

‣ Simple is better than complex.

‣ Sparse is better than dense.

‣ Readability counts.

.. do Zen of Python (Tim Peters)

Friday, December 9, 2011

Page 20: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

“Talk is cheap.. show me the code.”

Friday, December 9, 2011

Page 21: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

Friday, December 9, 2011

Page 22: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

Placar de Boliche‣ 10 “frames”, 2 arremessos cada

‣ 10 pinos

‣ Strike: Se o primeiro arremesso derrubar os 10 pinos

‣ Os dois próximos arremessos serão “dobrados”

‣ Spare: Derrubar todos os pinos com os 2 arremessos

‣ O próximo arremesso será “dobrado”Friday, December 9, 2011

Page 23: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

Legal! Mas... pra que serve mesmo? Friday, December 9, 2011

Page 24: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

Bom

RápidoBarato

O Problema

Friday, December 9, 2011

Page 25: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

TDD ajuda a equalizar

Friday, December 9, 2011

Page 26: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

TDD ajuda a equalizar‣ Testar é mais barato que debugar.

‣ (Tempo = Dinheiro)

‣ Código é documentado pelos testes.

‣ Menos bugs em produção.

‣ Software mais consistente. Mude o que quiser com segurança. Trabalhe tranquilo.

‣ Entregas cíclicas.

Friday, December 9, 2011

Page 27: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

Entregas Cíclicas

Friday, December 9, 2011

Page 28: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

Entregas Cíclicas‣ Feedback imediado.

‣ Pequenas entregas.

‣ Alertas sobre build. (verde/vermelho)

‣ Alinhamento de expectativas.

‣ Manutenção do escopo.

continuous delivery

Friday, December 9, 2011

Page 29: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

Ops, quebraram o build!

Friday, December 9, 2011

Page 30: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

‣ Mocks, stubs e fakes

‣ Outros testes

‣ Teste de Intregração

Ainda temos tempo?

Friday, December 9, 2011

Page 31: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

@flavioribeiro

Perguntas?

Friday, December 9, 2011

Page 32: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

@flavioribeiro

Obrigado! ;)

Friday, December 9, 2011

Page 33: Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

Linkshttp://programmers.stackexchange.com/questions/93302/spending-too-much-time-debugginghttp://www.slideshare.net/Skud/test-driven-development-tutorialhttp://www.ime.usp.br/~pf/algoritmos/aulas/footnotes/epigraphs.htmlhttp://tonygodoy.blog.com/files/2010/12/macaco-pensativo.jpghttp://python.orghttp://www.slideshare.net/redigon/refactoring-1658371http://speakerdeck.com/u/tarsisazevedo/p/refactoring-comece-agorahttp://www.slideshare.net/osantana/tdd-com-pythonhttp://www.klauslaube.com.br/wp-content/uploads/2011/01/TestDrivenGameDevelopment.pnghttp://speakerdeck.com/u/tarsisazevedo/p/refactoring-comece-agorahttp://www.flickr.com/photos/kalavinka/4617897952/sizes/o/in/photostream/http://disciplinas.dcc.ufba.br/pub/MATB14/TDDComRuby/tdd-cycle.jpghttp://designcipta.com/wp-content/uploads/2011/02/architect_2.jpghttp://cdn02.cdnwp.celebuzz.com/wp-content/uploads/legacy/celebuzz/default/msg-127981724976-3.jpghttp://markmail.org/message/jmvo3hedwp3zrcoohttp://se.inf.ethz.ch/old/teaching/2010-S/0276/slides/pletikosa.pdfhttp://www.agile-itea.org/public/deliverables/ITEA-AGILE-D2.7_v1.0.pdfhttp://stackoverflow.com/questions/787172/what-is-a-good-sample-class-to-demonstrate-tddhttp://www.objectmentor.com/resources/articles/xpepisode.htmhttp://galeri.uludagsozluk.com/49/linus-torvalds_64902.jpghttp://3.bp.blogspot.com/_Hep8dtfRKAg/TNgEf6kvmzI/AAAAAAAAABk/BTo3MqMFl1U/s1600/bowling.jpghttp://pt.wikipedia.org/wiki/Boliche

Friday, December 9, 2011