Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

Preview:

DESCRIPTION

 

Citation preview

globo.com Test Driven DevelopmentTrabalhe tranquilo e maximize sua produtividade

Friday, December 9, 2011

Sobre Mim‣ Flávio Ribeiro

‣ Graduado em Engenharia Elétrica pelo IFPB

‣ Engenheiro de Software na Globo.com

@flavioribeiro

Friday, December 9, 2011

Sobre a Palestra‣ Vamos falar de ...

Friday, December 9, 2011

Problemas ReaisFriday, December 9, 2011

Entregas Cíclicascontinous delivery

Friday, December 9, 2011

Modelagemdesign

Friday, December 9, 2011

Profissionalismo?Friday, December 9, 2011

Test Driven Development

Friday, December 9, 2011

Friday, December 9, 2011

Friday, December 9, 2011

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

‣ Na fase de treinamento é importante seguir as regras.

‣ Baby Steps.

Friday, December 9, 2011

Modelagem/Testedesign

Friday, December 9, 2011

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

Escreva o código

Friday, December 9, 2011

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

Refatorar

Friday, December 9, 2011

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

Quando refatorar?‣ Código duplicado

‣ Métodos longos

‣ Classes grandes (o famoso sacolão)

‣ Muitos parâmetros

Friday, December 9, 2011

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

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

Friday, December 9, 2011

Friday, December 9, 2011

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

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

Bom

RápidoBarato

O Problema

Friday, December 9, 2011

TDD ajuda a equalizar

Friday, December 9, 2011

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

Entregas Cíclicas

Friday, December 9, 2011

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

Ops, quebraram o build!

Friday, December 9, 2011

‣ Mocks, stubs e fakes

‣ Outros testes

‣ Teste de Intregração

Ainda temos tempo?

Friday, December 9, 2011

@flavioribeiro

Perguntas?

Friday, December 9, 2011

@flavioribeiro

Obrigado! ;)

Friday, December 9, 2011

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