39
Peça seu código em casamento: TDD do jeito certo! @rafaelcaricio quinta-feira, 30 de junho de 2011

Peça seu código em casamento: TDD do jeito certo!

Embed Size (px)

DESCRIPTION

Todo desenvolvedor de software deveria ter um relacionamento de intimidade com seu código, cuidar muito bem dele e declarar votos para selar este relacionamento. Será apresentada a mais nova suite de testes da linguagem Python que permite qualquer desenvolvedor pedir seu código em casamento fazer ele jurar que está fazendo o que deveria fazer e do jeito certo.

Citation preview

Page 1: Peça seu código em casamento: TDD do jeito certo!

Peça seu código em casamento:TDD do jeito certo!@rafaelcaricio

quinta-feira, 30 de junho de 2011

Page 2: Peça seu código em casamento: TDD do jeito certo!

Quem sou eu?

@rafaelcaricio

quinta-feira, 30 de junho de 2011

Page 3: Peça seu código em casamento: TDD do jeito certo!

Quando você ama e confia...

quinta-feira, 30 de junho de 2011

Page 4: Peça seu código em casamento: TDD do jeito certo!

pede em casamento...

quinta-feira, 30 de junho de 2011

Page 5: Peça seu código em casamento: TDD do jeito certo!

Não vou ensinar a consseguir uma noiva (ou namorada)...

quinta-feira, 30 de junho de 2011

Page 6: Peça seu código em casamento: TDD do jeito certo!

Como confiar e amar seu código e assim casar com ele...

TDD, Votos e Tópicos

quinta-feira, 30 de junho de 2011

Page 7: Peça seu código em casamento: TDD do jeito certo!

Qual o problema?

Dificio manutençãoCódigo obscuro

Bugs...

quinta-feira, 30 de junho de 2011

Page 8: Peça seu código em casamento: TDD do jeito certo!

O que é Test Driven Development?

quinta-feira, 30 de junho de 2011

Page 9: Peça seu código em casamento: TDD do jeito certo!

O que é Test Driven Development?

quinta-feira, 30 de junho de 2011

Page 10: Peça seu código em casamento: TDD do jeito certo!

Test Test

Implement

Design

Fluxo de desenvolvimento

quinta-feira, 30 de junho de 2011

Page 11: Peça seu código em casamento: TDD do jeito certo!

O que é um teste?

Um bloco de código que descreve um comportamento desejado. *

quinta-feira, 30 de junho de 2011

Page 12: Peça seu código em casamento: TDD do jeito certo!

from friends import Tarsis

def test_falar_bonito(): tarsisazevedo = Tarsis() palavras = tarsisazevedo.fala(2) assert 2 == len(palavras)

Exemplo

quinta-feira, 30 de junho de 2011

Page 13: Peça seu código em casamento: TDD do jeito certo!

from friends import Tarsis

def test_falar_bonito(): tarsisazevedo = Tarsis() palavras = tarsisazevedo.fala(2) assert 2 == len(palavras)

Exemplo

O que você espera que vai acontecer!

quinta-feira, 30 de junho de 2011

Page 14: Peça seu código em casamento: TDD do jeito certo!

TDD não garante o melhor código!

def fala(o): c = None return [“foco”] * o

class Tarsis():

def __init__(self, *args, **kwargs): pass

def fala(self, o): print “aqui: ” + str(o) a = fala(o) return a

quinta-feira, 30 de junho de 2011

Page 15: Peça seu código em casamento: TDD do jeito certo!

Faça refactorydo seu código!

quinta-feira, 30 de junho de 2011

Page 16: Peça seu código em casamento: TDD do jeito certo!

class Tarsis():

def fala(self, numero_palavras): return [“foco”] * numero_palavras

quinta-feira, 30 de junho de 2011

Page 17: Peça seu código em casamento: TDD do jeito certo!

class Tarsis():

def fala(self, numero_palavras): return [“foco”] * numero_palavras

quinta-feira, 30 de junho de 2011

Page 18: Peça seu código em casamento: TDD do jeito certo!

class Tarsis():

def fala(self, numero_palavras): return [“foco”] * numero_palavras

quinta-feira, 30 de junho de 2011

Page 19: Peça seu código em casamento: TDD do jeito certo!

O que eu posso usar para testar meu código?

- unittest- Nose- pytest- pyVows

quinta-feira, 30 de junho de 2011

Page 20: Peça seu código em casamento: TDD do jeito certo!

def test_sum_returns_42():    result = add_two_numbers(41, 1)     assert result    assert int(result)    assert result == 42

Vamos a um exemplo...

quinta-feira, 30 de junho de 2011

Page 21: Peça seu código em casamento: TDD do jeito certo!

def test_sum_returns_result():    result = add_two_numbers(41, 1)    assert result def test_sum_returns_a_number():    result = add_two_numbers(41, 1)    assert int(result) def test_sum_returns_42():    result = add_two_numbers(41, 1)    assert result == 42

Uma forma mais organizada...

quinta-feira, 30 de junho de 2011

Page 22: Peça seu código em casamento: TDD do jeito certo!

Muitos testes executando o mesmo código desnecessariamente

Repetição de código

Um teste com inúmeros asserts

Código ilegível

Alguns problemas identificados

quinta-feira, 30 de junho de 2011

Page 23: Peça seu código em casamento: TDD do jeito certo!

Muitos testes executando o mesmo código desnecessariamente

Repetição de código

Um teste com inúmeros asserts

Código ilegível Votos

Tópicos

Alguns problemas identificados

quinta-feira, 30 de junho de 2011

Page 24: Peça seu código em casamento: TDD do jeito certo!

class SumContext(Vows.Context):     def topic(self):        return add_two_numbers(41, 1)     def we_get_a_result(self, topic):        expect(topic).Not.to_be_null()     def we_get_a_number(self, topic):        expect(topic).to_be_numeric()     def we_get_42(self, topic):        expect(topic).to_equal(42)

Uma boa ideia ...

quinta-feira, 30 de junho de 2011

Page 25: Peça seu código em casamento: TDD do jeito certo!

quinta-feira, 30 de junho de 2011

Page 26: Peça seu código em casamento: TDD do jeito certo!

quinta-feira, 30 de junho de 2011

Page 27: Peça seu código em casamento: TDD do jeito certo!

Um exemplo prático...

quinta-feira, 30 de junho de 2011

Page 28: Peça seu código em casamento: TDD do jeito certo!

Xiii... mas eu não gostei desse “expect”

quinta-feira, 30 de junho de 2011

Page 29: Peça seu código em casamento: TDD do jeito certo!

Xiii... mas eu não gostei desse “expect”

Use o assert! :)

quinta-feira, 30 de junho de 2011

Page 30: Peça seu código em casamento: TDD do jeito certo!

Xiii... mas eu não gostei desse “expect”

Use o assert! :)

class SumContext(Vows.Context):     def topic(self):        return add_two_numbers(41, 1)     def we_get_a_result(self, topic):        assert None != topic

quinta-feira, 30 de junho de 2011

Page 31: Peça seu código em casamento: TDD do jeito certo!

Gostei do “expect”, mas não tem um que atenda minha necessidade!

quinta-feira, 30 de junho de 2011

Page 32: Peça seu código em casamento: TDD do jeito certo!

Gostei do “expect”, mas não tem um que atenda minha necessidade!

Crie um! :)

quinta-feira, 30 de junho de 2011

Page 33: Peça seu código em casamento: TDD do jeito certo!

Gostei do “expect”, mas não tem um que atenda minha necessidade!

Crie um! :)

@Vows.assertiondef to_be_less_than_2(topic): assert topic < 2

class SumContext(Vows.Context):     def topic(self):        return add_two_numbers(41, 1)     def we_get_a_result(self, topic):        expect(topic).to_be_less_than_2()

quinta-feira, 30 de junho de 2011

Page 34: Peça seu código em casamento: TDD do jeito certo!

Certo, mas como instalo o pyVows?

$ pip install pyvows

quinta-feira, 30 de junho de 2011

Page 35: Peça seu código em casamento: TDD do jeito certo!

•Tornado

•Django*

•...

Extensões

quinta-feira, 30 de junho de 2011

Page 37: Peça seu código em casamento: TDD do jeito certo!

Hora de jogar o buquê!

quinta-feira, 30 de junho de 2011

Page 38: Peça seu código em casamento: TDD do jeito certo!

Peça seu código em casamento:TDD do jeito certo!

quinta-feira, 30 de junho de 2011

Page 39: Peça seu código em casamento: TDD do jeito certo!

@rafaelcaricio

[email protected]

Dúvidas? A hora é agora!

Peça seu código em casamento:TDD do jeito certo!

quinta-feira, 30 de junho de 2011