18

Click here to load reader

Python agil

Embed Size (px)

DESCRIPTION

Apresentação de bibliotecas usadas para desenvolvimento dirigido por testes com Python.

Citation preview

Page 1: Python agil

Apresentação

• Python Ágil - Python Brasil[6] - 2010

• Ramiro Batista da Luz - [email protected]

• Twitter: @ramiroluz

• http://www.slideshare.net/ramiroluz/python-agil

• Códigos exemplo: http://www.ramiroluz.eti.br/python-agil/ ehttp://www.python.org.br/wiki/PythonAgil

Python Ágil - PythonBrasil[6] - 2010.

© Ramiro Batista da Luz, 2010.

Page 2: Python agil

O que é agilidade?

Capacidade de mudar de direção rapidamente.

Habilidade de adaptar-se a mudanças com eficiência.

Python Ágil - PythonBrasil[6] - 2010.

© Ramiro Batista da Luz, 2010.

Page 3: Python agil

O que é desenvolvimento ágil?

Metodologia de desenvolvimento.

Alta participação do(s) cliente(s).

Adaptação rápida à mudanças.

Software funcional entregue com grande freqüência.

Python Ágil - PythonBrasil[6] - 2010.

© Ramiro Batista da Luz, 2010.

Page 4: Python agil

Por que Python ágil?

Fácil de adaptar.

Muitas bibliotecas fáceis de aprender.

Fácil de entender e aprender.

Python Ágil - PythonBrasil[6] - 2010.

© Ramiro Batista da Luz, 2010.

Page 5: Python agil

XGH - eXtreme Go Horse

http://gohorseprocess.wordpress.com/extreme-go-horse-xgh/

1. Pensou, não é XGH.

2. Existem 3 formas de se resolver um problema, a correta, a errada ea XGH, que é igual à errada, só que mais rápida.

3. Quanto mais XGH você faz, mais precisará fazer.

4. XGH é totalmente reativo.

Python Ágil - PythonBrasil[6] - 2010.

© Ramiro Batista da Luz, 2010.

Page 6: Python agil

TDD - Test Driven Development(1)

http://pt.wikipedia.org/wiki/Test_Driven_Development

• Adicione um teste

• Execute todos os testes e veja se algum deles falha

• Escrever código

Python Ágil - PythonBrasil[6] - 2010.

© Ramiro Batista da Luz, 2010.

Page 7: Python agil

TDD - Test Driven Development(2)

• Execute os testes automatizados e veja-os executarem com sucesso

• Refatorar código

• Repita tudo

Python Ágil - PythonBrasil[6] - 2010.

© Ramiro Batista da Luz, 2010.

Page 8: Python agil

BDD - Behavior Driven Development(1)

http://pt.wikipedia.org/wiki/Behavior_Driven_Development

• Envolver as partes interessadas no processo através de Outside-inDevelopment (Desenvolvimento de Fora pra Dentro)

• Usar exemplos para descrever o comportamento de uma aplicaçãoou unidades de código

• Automatizar os exemplos para prover um feedback rápido e testesde regressão

Python Ágil - PythonBrasil[6] - 2010.

© Ramiro Batista da Luz, 2010.

Page 9: Python agil

BDD - Behavior Driven Development(2)

• Usar deve (should em inglês) na hora de descrever ocomportamento de software para ajudar esclarecerresponsabilidades e permitir que funcionalidades do software sejamquestionadas

• Usar dublês de teste (mocks, stubs, fakes, dummies, spies) paraauxiliar na colaboração entre módulos e códigos que ainda nãoforam escritos

Python Ágil - PythonBrasil[6] - 2010.

© Ramiro Batista da Luz, 2010.

Page 10: Python agil

Padrões de projeto(Design Pattern)(1)

Decorators: decoradores.py

python-3-patterns-idioms/code/PythonDecorators/entry_exit_class.py

http://en.wikipedia.org/wiki/Python_syntax_and_semantics#Decorators

Iterators: iteradores.py

http://docs.python.org/tutorial/classes.html#iterators

Python Ágil - PythonBrasil[6] - 2010.

© Ramiro Batista da Luz, 2010.

Page 11: Python agil

Padrões de projeto(Design Pattern)(2)

Generators: generators.py

http://docs.python.org/tutorial/classes.html#generators

Compreensão de listas: compreensao_listas.py

Singleton: python-3-patterns-idioms/code/Singleton/SingletonPattern.py

Factory:python-3-patterns-idioms/code/Factory/shapefact1/ShapeFactory1.py

Python Ágil - PythonBrasil[6] - 2010.

© Ramiro Batista da Luz, 2010.

Page 12: Python agil

Ferramentas

PyUnit: http://docs.python.org/library/unittest.html

DocTest: http://docs.python.org/library/doctest.html

Nose+TDaemon:http://isnomore.net/2010/08/01/automated-python-testing-nose-and-tdaemon/

Python Ágil - PythonBrasil[6] - 2010.

© Ramiro Batista da Luz, 2010.

Page 13: Python agil

Integração Continua(ContinuosIntegration)

http://www.getwindmill.com/

http://martinfowler.com/articles/continuousIntegration.html

http://www.jetbrains.com/teamcity/

https://github.com/heynemann/skink

http://hudson-ci.org/

Python Ágil - PythonBrasil[6] - 2010.

© Ramiro Batista da Luz, 2010.

Page 14: Python agil

Demonstração

Testes Unitários: testes_unitarios.py

Testes e Documentação(DocTests): doctests.py

Testes com Django:

http://www.slideshare.net/fractalk/tdd-em-django-sem-desculpas

Python Ágil - PythonBrasil[6] - 2010.

© Ramiro Batista da Luz, 2010.

Page 15: Python agil

Conclusão

Outros exemplos:

Plone: http://plone.org/documentation/kb/richdocument/unit-testing

web2py:http://www.web2py.com/examples/default/examples#testing_examples

http://web2py.com/AlterEgo/default/show/260

pylons: http://wiki.pylonshq.com/display/pylonsdocs/Unit+Testing

Python Ágil - PythonBrasil[6] - 2010.

© Ramiro Batista da Luz, 2010.

Page 16: Python agil

Agradecimentos

Bruce Eckel

Adriano Petrich

Rodrigo Bernardo Pimentel

Python Ágil - PythonBrasil[6] - 2010.

© Ramiro Batista da Luz, 2010.

Page 17: Python agil

Contato e perguntas

e-mail e gtalk: [email protected]

twitter: @ramiroluz

Python Ágil - PythonBrasil[6] - 2010.

© Ramiro Batista da Luz, 2010.

Page 18: Python agil

Encerramento

http://www.python.org.br

http://associacao.python.org.br

http://groups.google.com/group/grupy-pr

Python Ágil - PythonBrasil[6] - 2010.

© Ramiro Batista da Luz, 2010.