SlideShare uma empresa Scribd logo
1 de 18
Baixar para ler offline
Python Ágil - Campus Party - 2011.




Apresentação
 • Python Ágil - Campus Party - 2011
 • Ramiro Batista da Luz - ramiroluz@gmail.com
 • Twitter: @ramiroluz
 • http://www.slideshare.net/ramiroluz/python-agil

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




                     © Ramiro Batista da Luz, 2010.
Python Ágil - Campus Party - 2011.




O que é agilidade?
  Capacidade de mudar de direção rapidamente.
  Habilidade de adaptar-se a mudanças com eficiência.




                    © Ramiro Batista da Luz, 2010.
Python Ágil - Campus Party - 2011.




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.




                      © Ramiro Batista da Luz, 2010.
Python Ágil - Campus Party - 2011.




Por que Python ágil?
  Fácil de adaptar.
  Muitas bibliotecas fáceis de aprender.
  Fácil de entender e aprender.




                       © Ramiro Batista da Luz, 2010.
Python Ágil - Campus Party - 2011.




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 e
      a XGH, que é igual à errada, só que mais rápida.
   3. Quanto mais XGH você faz, mais precisará fazer.
   4. XGH é totalmente reativo.




                   © Ramiro Batista da Luz, 2010.
Python Ágil - Campus Party - 2011.




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




                   © Ramiro Batista da Luz, 2010.
Python Ágil - Campus Party - 2011.




TDD - Test Driven Development(2)

    • Execute os testes automatizados e veja-os executarem com sucesso
    • Refatorar código
    • Repita tudo




                     © Ramiro Batista da Luz, 2010.
Python Ágil - Campus Party - 2011.




BDD - Behavior Driven Development(1)
  http://pt.wikipedia.org/wiki/Behavior_Driven_Development

     • Envolver as partes interessadas no processo através de Outside-in
       Development (Desenvolvimento de Fora pra Dentro)
     • Usar exemplos para descrever o comportamento de uma aplicação
       ou unidades de código
     • Automatizar os exemplos para prover um feedback rápido e testes
       de regressão




                    © Ramiro Batista da Luz, 2010.
Python Ágil - Campus Party - 2011.




BDD - Behavior Driven Development(2)

    • Usar deve (should em inglês) na hora de descrever o
      comportamento      de    software      para    ajudar    esclarecer
      responsabilidades e permitir que funcionalidades do software sejam
      questionadas
    • Usar dublês de teste (mocks, stubs, fakes, dummies, spies) para
      auxiliar na colaboração entre módulos e códigos que ainda não
      foram escritos




                   © Ramiro Batista da Luz, 2010.
Python Ágil - Campus Party - 2011.




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




                      © Ramiro Batista da Luz, 2010.
Python Ágil - Campus Party - 2011.




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




                     © Ramiro Batista da Luz, 2010.
Python Ágil - Campus Party - 2011.




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/




                      © Ramiro Batista da Luz, 2010.
Python Ágil - Campus Party - 2011.




Integração Continua(Continuos
Integration)
  http://www.getwindmill.com/
  http://martinfowler.com/articles/continuousIntegration.html
  http://www.jetbrains.com/teamcity/
  https://github.com/heynemann/skink
  http://hudson-ci.org/




                      © Ramiro Batista da Luz, 2010.
Python Ágil - Campus Party - 2011.




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




                    © Ramiro Batista da Luz, 2010.
Python Ágil - Campus Party - 2011.




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




                     © Ramiro Batista da Luz, 2010.
Python Ágil - Campus Party - 2011.




Agradecimentos
  Bruce Eckel
  Adriano Petrich
  Rodrigo Bernardo Pimentel




                     © Ramiro Batista da Luz, 2010.
Python Ágil - Campus Party - 2011.




Contato e perguntas
  e-mail e gtalk: ramiroluz@gmail.com
  twitter: @ramiroluz




                        © Ramiro Batista da Luz, 2010.
Python Ágil - Campus Party - 2011.




Encerramento
  http://www.python.org.br
  http://associacao.python.org.br
  http://groups.google.com/group/grupy-pr




                     © Ramiro Batista da Luz, 2010.

Mais conteúdo relacionado

Mais procurados

Python com baterias incluídas v2.0
Python com baterias incluídas v2.0Python com baterias incluídas v2.0
Python com baterias incluídas v2.0
Jonh Edson
 

Mais procurados (20)

Por que Python?
Por que Python?Por que Python?
Por que Python?
 
Workshop de introdução ao python - TADS 2015
Workshop de introdução ao python - TADS 2015Workshop de introdução ao python - TADS 2015
Workshop de introdução ao python - TADS 2015
 
Minicurso: Python e suas baterias incluídas
Minicurso: Python e suas baterias incluídasMinicurso: Python e suas baterias incluídas
Minicurso: Python e suas baterias incluídas
 
Palestra BrOffice.org
Palestra BrOffice.orgPalestra BrOffice.org
Palestra BrOffice.org
 
Globo.com - Porque amamos open-source?
Globo.com - Porque amamos open-source?Globo.com - Porque amamos open-source?
Globo.com - Porque amamos open-source?
 
Python Módulo Básico - Introdução a linguagem Python
Python Módulo Básico - Introdução a linguagem PythonPython Módulo Básico - Introdução a linguagem Python
Python Módulo Básico - Introdução a linguagem Python
 
The zen of python 2010
The zen of python 2010The zen of python 2010
The zen of python 2010
 
Matando o Java e Mostrando o Python
Matando o Java e Mostrando o PythonMatando o Java e Mostrando o Python
Matando o Java e Mostrando o Python
 
Oficina Mergulhando no Plone 4
Oficina Mergulhando no Plone 4Oficina Mergulhando no Plone 4
Oficina Mergulhando no Plone 4
 
Python com baterias incluídas v2.0
Python com baterias incluídas v2.0Python com baterias incluídas v2.0
Python com baterias incluídas v2.0
 
Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE
Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPEMini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE
Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE
 
Canivete python
Canivete pythonCanivete python
Canivete python
 
Canivete suíço do Python
Canivete suíço do PythonCanivete suíço do Python
Canivete suíço do Python
 
Apresentação Python Poli
Apresentação Python PoliApresentação Python Poli
Apresentação Python Poli
 
Robowiki
RobowikiRobowiki
Robowiki
 
Python WTFAQ?
Python WTFAQ?Python WTFAQ?
Python WTFAQ?
 
4º Encontro do Grupo de Testes Carioca - Testes de Carga com Locust
4º Encontro do Grupo de Testes Carioca - Testes de Carga com Locust4º Encontro do Grupo de Testes Carioca - Testes de Carga com Locust
4º Encontro do Grupo de Testes Carioca - Testes de Carga com Locust
 
Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?
 
Como tornar-se um programador Python melhor
Como tornar-se um programador Python melhorComo tornar-se um programador Python melhor
Como tornar-se um programador Python melhor
 
Não se repita - Django Generic Views - Semana Acadêmica TADS 2015.
Não se repita - Django Generic Views - Semana Acadêmica TADS 2015.Não se repita - Django Generic Views - Semana Acadêmica TADS 2015.
Não se repita - Django Generic Views - Semana Acadêmica TADS 2015.
 

Destaque

Aminha Empresa [Recovered]
Aminha Empresa [Recovered]Aminha Empresa [Recovered]
Aminha Empresa [Recovered]
guest32a691
 
La Tierra Chaleco 7 D 25 27
La Tierra Chaleco 7 D 25 27La Tierra Chaleco 7 D 25 27
La Tierra Chaleco 7 D 25 27
davidfarevalo97
 
Campus party 2011_medicoes_qualidade
Campus party 2011_medicoes_qualidadeCampus party 2011_medicoes_qualidade
Campus party 2011_medicoes_qualidade
Campus Party Brasil
 
Itécia - cidade virtual
Itécia - cidade virtualItécia - cidade virtual
Itécia - cidade virtual
Colmeias
 
13. November December 2008 Nutrition Newsletter
13. November  December 2008  Nutrition Newsletter13. November  December 2008  Nutrition Newsletter
13. November December 2008 Nutrition Newsletter
Regine du Plessis
 
Palestra arquitetura de processamento em tempo real
Palestra arquitetura de processamento em tempo realPalestra arquitetura de processamento em tempo real
Palestra arquitetura de processamento em tempo real
Campus Party Brasil
 

Destaque (20)

Bonsais
BonsaisBonsais
Bonsais
 
informe
informeinforme
informe
 
slide
slideslide
slide
 
Aminha Empresa [Recovered]
Aminha Empresa [Recovered]Aminha Empresa [Recovered]
Aminha Empresa [Recovered]
 
Cmrb Lied Proj
Cmrb Lied ProjCmrb Lied Proj
Cmrb Lied Proj
 
32122
3212232122
32122
 
35893
3589335893
35893
 
34306
3430634306
34306
 
La Tierra Chaleco 7 D 25 27
La Tierra Chaleco 7 D 25 27La Tierra Chaleco 7 D 25 27
La Tierra Chaleco 7 D 25 27
 
Campus party 2011_medicoes_qualidade
Campus party 2011_medicoes_qualidadeCampus party 2011_medicoes_qualidade
Campus party 2011_medicoes_qualidade
 
Itécia - cidade virtual
Itécia - cidade virtualItécia - cidade virtual
Itécia - cidade virtual
 
Pictures of Cuba
Pictures of CubaPictures of Cuba
Pictures of Cuba
 
Ist Evillar
Ist EvillarIst Evillar
Ist Evillar
 
R4 Mapa Sistemico Cdi 22 Mar 2010 V2
R4   Mapa Sistemico   Cdi  22 Mar  2010 V2R4   Mapa Sistemico   Cdi  22 Mar  2010 V2
R4 Mapa Sistemico Cdi 22 Mar 2010 V2
 
La Religion Ante La Cultura Actual
La Religion Ante La Cultura ActualLa Religion Ante La Cultura Actual
La Religion Ante La Cultura Actual
 
13. November December 2008 Nutrition Newsletter
13. November  December 2008  Nutrition Newsletter13. November  December 2008  Nutrition Newsletter
13. November December 2008 Nutrition Newsletter
 
Bloque Académico
Bloque AcadémicoBloque Académico
Bloque Académico
 
Palestra arquitetura de processamento em tempo real
Palestra arquitetura de processamento em tempo realPalestra arquitetura de processamento em tempo real
Palestra arquitetura de processamento em tempo real
 
R5 Mapa Sistemico Cdi 05abr2010 V3 1
R5    Mapa Sistemico   Cdi  05abr2010 V3 1R5    Mapa Sistemico   Cdi  05abr2010 V3 1
R5 Mapa Sistemico Cdi 05abr2010 V3 1
 
Trabalho final - Escambo musical
Trabalho final - Escambo musicalTrabalho final - Escambo musical
Trabalho final - Escambo musical
 

Semelhante a Cp2011 python agil-ramiroluz

Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e django
Igor Sobreira
 
O poder do Python/Django
O poder do Python/DjangoO poder do Python/Django
O poder do Python/Django
Átila Bezerra
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.com
ricobl
 
Django: um framework web para perfeccionistas com prazo
Django: um framework web para perfeccionistas com prazoDjango: um framework web para perfeccionistas com prazo
Django: um framework web para perfeccionistas com prazo
Bernardo Fontes
 
Portal Padrão - passado . presente . futuro, #WPD 2014
Portal Padrão - passado . presente . futuro, #WPD 2014Portal Padrão - passado . presente . futuro, #WPD 2014
Portal Padrão - passado . presente . futuro, #WPD 2014
Tania Andrea
 

Semelhante a Cp2011 python agil-ramiroluz (20)

Python agil
Python agilPython agil
Python agil
 
python-agil-IVEnGitec
python-agil-IVEnGitecpython-agil-IVEnGitec
python-agil-IVEnGitec
 
Python-Fenalivre-Imed
Python-Fenalivre-ImedPython-Fenalivre-Imed
Python-Fenalivre-Imed
 
Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...
Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...
Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...
 
Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...
Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...
Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...
 
Python Zope Plone - Ftec
Python Zope Plone - FtecPython Zope Plone - Ftec
Python Zope Plone - Ftec
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e django
 
Uma experiência acadêmica com Python
Uma experiência acadêmica com PythonUma experiência acadêmica com Python
Uma experiência acadêmica com Python
 
Treinamento no Portal Padrão com streaming do Serpro
Treinamento no Portal Padrão com streaming do SerproTreinamento no Portal Padrão com streaming do Serpro
Treinamento no Portal Padrão com streaming do Serpro
 
Por que python? fisl 14 - 2013
Por que python?   fisl 14 - 2013Por que python?   fisl 14 - 2013
Por que python? fisl 14 - 2013
 
Os1
Os1Os1
Os1
 
MNT2014 - Python para Iniciantes - Luciana Mota
MNT2014 - Python para Iniciantes - Luciana MotaMNT2014 - Python para Iniciantes - Luciana Mota
MNT2014 - Python para Iniciantes - Luciana Mota
 
O poder do Python/Django
O poder do Python/DjangoO poder do Python/Django
O poder do Python/Django
 
Python django7semestre
Python django7semestre Python django7semestre
Python django7semestre
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.com
 
G.O. - Grafos Online
G.O. - Grafos OnlineG.O. - Grafos Online
G.O. - Grafos Online
 
python_para_desenvolvedores.pdf
python_para_desenvolvedores.pdfpython_para_desenvolvedores.pdf
python_para_desenvolvedores.pdf
 
Apresentação do V Workshop Demoiselle
Apresentação do V Workshop DemoiselleApresentação do V Workshop Demoiselle
Apresentação do V Workshop Demoiselle
 
Django: um framework web para perfeccionistas com prazo
Django: um framework web para perfeccionistas com prazoDjango: um framework web para perfeccionistas com prazo
Django: um framework web para perfeccionistas com prazo
 
Portal Padrão - passado . presente . futuro, #WPD 2014
Portal Padrão - passado . presente . futuro, #WPD 2014Portal Padrão - passado . presente . futuro, #WPD 2014
Portal Padrão - passado . presente . futuro, #WPD 2014
 

Mais de Campus Party Brasil

Tempestades solares: mitos e verdades
Tempestades solares: mitos e verdadesTempestades solares: mitos e verdades
Tempestades solares: mitos e verdades
Campus Party Brasil
 
A busca por planetas além do sistema solar
A busca por planetas além do sistema solarA busca por planetas além do sistema solar
A busca por planetas além do sistema solar
Campus Party Brasil
 
Construção de uma luneta a baixo custo
Construção de uma luneta a baixo custoConstrução de uma luneta a baixo custo
Construção de uma luneta a baixo custo
Campus Party Brasil
 
Hardware livre Arduino: eletrônica e robótica com hardware e software livres
Hardware livre Arduino: eletrônica e robótica com hardware e software livresHardware livre Arduino: eletrônica e robótica com hardware e software livres
Hardware livre Arduino: eletrônica e robótica com hardware e software livres
Campus Party Brasil
 
Robótica e educação inclusiva
Robótica e educação inclusivaRobótica e educação inclusiva
Robótica e educação inclusiva
Campus Party Brasil
 
Robótica e educação inclusiva
	Robótica e educação inclusiva	Robótica e educação inclusiva
Robótica e educação inclusiva
Campus Party Brasil
 
Confecção de Circuito Impresso
Confecção de Circuito ImpressoConfecção de Circuito Impresso
Confecção de Circuito Impresso
Campus Party Brasil
 
Virtualização, cloud computig e suas tendencias
Virtualização, cloud computig e suas tendenciasVirtualização, cloud computig e suas tendencias
Virtualização, cloud computig e suas tendencias
Campus Party Brasil
 

Mais de Campus Party Brasil (20)

Wordpress
WordpressWordpress
Wordpress
 
Buracos negros
Buracos negrosBuracos negros
Buracos negros
 
Programação para Atari 2600
Programação para Atari 2600Programação para Atari 2600
Programação para Atari 2600
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App Engine
 
Técnicas forenses para a recuperação de arquivos
Técnicas forenses para a recuperação de arquivosTécnicas forenses para a recuperação de arquivos
Técnicas forenses para a recuperação de arquivos
 
Como ganhar dinheiro no mundo mobile?
Como ganhar dinheiro no mundo mobile?Como ganhar dinheiro no mundo mobile?
Como ganhar dinheiro no mundo mobile?
 
Tempestades solares: mitos e verdades
Tempestades solares: mitos e verdadesTempestades solares: mitos e verdades
Tempestades solares: mitos e verdades
 
A busca por planetas além do sistema solar
A busca por planetas além do sistema solarA busca por planetas além do sistema solar
A busca por planetas além do sistema solar
 
Passeio virtual pelo LHC
Passeio virtual pelo LHCPasseio virtual pelo LHC
Passeio virtual pelo LHC
 
Construção de uma luneta a baixo custo
Construção de uma luneta a baixo custoConstrução de uma luneta a baixo custo
Construção de uma luneta a baixo custo
 
Hardware livre Arduino: eletrônica e robótica com hardware e software livres
Hardware livre Arduino: eletrônica e robótica com hardware e software livresHardware livre Arduino: eletrônica e robótica com hardware e software livres
Hardware livre Arduino: eletrônica e robótica com hardware e software livres
 
Robótica e educação inclusiva
Robótica e educação inclusivaRobótica e educação inclusiva
Robótica e educação inclusiva
 
Fazendo do jeito certo: criando jogos sofisticados com DirectX
Fazendo do jeito certo: criando jogos sofisticados com DirectXFazendo do jeito certo: criando jogos sofisticados com DirectX
Fazendo do jeito certo: criando jogos sofisticados com DirectX
 
Blue Via
Blue ViaBlue Via
Blue Via
 
Linux para iniciantes
Linux para iniciantesLinux para iniciantes
Linux para iniciantes
 
Robótica e educação inclusiva
	Robótica e educação inclusiva	Robótica e educação inclusiva
Robótica e educação inclusiva
 
Gestão e monitoramento de redes e dispositivos com Software Livre
Gestão e monitoramento de redes e dispositivos com Software LivreGestão e monitoramento de redes e dispositivos com Software Livre
Gestão e monitoramento de redes e dispositivos com Software Livre
 
Confecção de Circuito Impresso
Confecção de Circuito ImpressoConfecção de Circuito Impresso
Confecção de Circuito Impresso
 
Vida de Programador
Vida de Programador Vida de Programador
Vida de Programador
 
Virtualização, cloud computig e suas tendencias
Virtualização, cloud computig e suas tendenciasVirtualização, cloud computig e suas tendencias
Virtualização, cloud computig e suas tendencias
 

Cp2011 python agil-ramiroluz

  • 1. Python Ágil - Campus Party - 2011. Apresentação • Python Ágil - Campus Party - 2011 • Ramiro Batista da Luz - ramiroluz@gmail.com • Twitter: @ramiroluz • http://www.slideshare.net/ramiroluz/python-agil • Códigos exemplo: http://www.ramiroluz.eti.br/python-agil/ e http://www.python.org.br/wiki/PythonAgil © Ramiro Batista da Luz, 2010.
  • 2. Python Ágil - Campus Party - 2011. O que é agilidade? Capacidade de mudar de direção rapidamente. Habilidade de adaptar-se a mudanças com eficiência. © Ramiro Batista da Luz, 2010.
  • 3. Python Ágil - Campus Party - 2011. 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. © Ramiro Batista da Luz, 2010.
  • 4. Python Ágil - Campus Party - 2011. Por que Python ágil? Fácil de adaptar. Muitas bibliotecas fáceis de aprender. Fácil de entender e aprender. © Ramiro Batista da Luz, 2010.
  • 5. Python Ágil - Campus Party - 2011. 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 e a XGH, que é igual à errada, só que mais rápida. 3. Quanto mais XGH você faz, mais precisará fazer. 4. XGH é totalmente reativo. © Ramiro Batista da Luz, 2010.
  • 6. Python Ágil - Campus Party - 2011. 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 © Ramiro Batista da Luz, 2010.
  • 7. Python Ágil - Campus Party - 2011. TDD - Test Driven Development(2) • Execute os testes automatizados e veja-os executarem com sucesso • Refatorar código • Repita tudo © Ramiro Batista da Luz, 2010.
  • 8. Python Ágil - Campus Party - 2011. BDD - Behavior Driven Development(1) http://pt.wikipedia.org/wiki/Behavior_Driven_Development • Envolver as partes interessadas no processo através de Outside-in Development (Desenvolvimento de Fora pra Dentro) • Usar exemplos para descrever o comportamento de uma aplicação ou unidades de código • Automatizar os exemplos para prover um feedback rápido e testes de regressão © Ramiro Batista da Luz, 2010.
  • 9. Python Ágil - Campus Party - 2011. BDD - Behavior Driven Development(2) • Usar deve (should em inglês) na hora de descrever o comportamento de software para ajudar esclarecer responsabilidades e permitir que funcionalidades do software sejam questionadas • Usar dublês de teste (mocks, stubs, fakes, dummies, spies) para auxiliar na colaboração entre módulos e códigos que ainda não foram escritos © Ramiro Batista da Luz, 2010.
  • 10. Python Ágil - Campus Party - 2011. 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 © Ramiro Batista da Luz, 2010.
  • 11. Python Ágil - Campus Party - 2011. 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 © Ramiro Batista da Luz, 2010.
  • 12. Python Ágil - Campus Party - 2011. 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/ © Ramiro Batista da Luz, 2010.
  • 13. Python Ágil - Campus Party - 2011. Integração Continua(Continuos Integration) http://www.getwindmill.com/ http://martinfowler.com/articles/continuousIntegration.html http://www.jetbrains.com/teamcity/ https://github.com/heynemann/skink http://hudson-ci.org/ © Ramiro Batista da Luz, 2010.
  • 14. Python Ágil - Campus Party - 2011. 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 © Ramiro Batista da Luz, 2010.
  • 15. Python Ágil - Campus Party - 2011. 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 © Ramiro Batista da Luz, 2010.
  • 16. Python Ágil - Campus Party - 2011. Agradecimentos Bruce Eckel Adriano Petrich Rodrigo Bernardo Pimentel © Ramiro Batista da Luz, 2010.
  • 17. Python Ágil - Campus Party - 2011. Contato e perguntas e-mail e gtalk: ramiroluz@gmail.com twitter: @ramiroluz © Ramiro Batista da Luz, 2010.
  • 18. Python Ágil - Campus Party - 2011. Encerramento http://www.python.org.br http://associacao.python.org.br http://groups.google.com/group/grupy-pr © Ramiro Batista da Luz, 2010.