Loading deck

BDD com Python,

Facilite a vida de todos!

Daniel Bastos

http://daniellbastos.com.br

danielfloresbastos@gmail.com

Apresentação

Programador Python
Freelancer

Acadêmico

 

Eventos:

PySM (2014/2015)

Trilha de Python (TDC 2014/2015)

Aviso importante

Desenvolvimento de software na vida real

Técnico

Não técnio

  • Tecnologias
  • Qualidade do software
  • Softwares em constante evolução
  • Entender as necessidades do negócio
  • Levantamento dos requisitos técnicos
  • Analisar a evolução do software

O Problema do telefone sem fio

Desenvolvedor

Cliente

Python

  • Criada em 20 de Fevereiro de 1991
  • Tipagem dinâmica e forte
  • Multiplataforma
  • Fácil aprendizagem
  • Utilizada no meio acadêmico
  • Utilizada no meio científico
  • ...

Guido van Rossum

Quem usa Python?

Exemplo de código Python

Django

  • Framework fullstack
  • MTV
  • Possui uma ótima ORM
  • Plugable apps
  • Possui diversos recursos:
    • Sistema de Autenticação
    • Sistema de Permissão
    • Painel de Administração
    • Faz introspecção de banco

Projeto de exemplo com Django

Iniciando o projeto

http://daniellbastos.com.br/iniciando-um-projeto-django.html

Criando banco com dados do framework

Projeto exemplo com Django

Iniciando nossa app de Clientes com o comando
django-admin startapp clients

Projeto exemplo com Django

CRUD

clients/views.py

clients/forms.py

clients/urls.py

Projeto exemplo com Django

CRUD

clients/templates/clients/client_form.html

clients/templates/clients/client_list.html

TDD

  • Reduz bugs em produção
  • Facilita a escrita de um código bem escrito
  • Reduz a produtividade da equipe (no início)
  • Da confiança para realizar alterações

TDD

Cenário 1:

    Permitir desativar os clientes do sistema

TDD com Django

Novo campo no model (tabela) de cliente

TDD com Django

Criar manager que retorna clientes ativos

clients/managers.py

clients/models.py

TDD com Django

Testando o manager

clients/factories.py

clients/tests.py

TDD com Django

Rodando os testes

TDD

Cenário 2:

    Permitir a remoção lógica dos clientes do sistema

TDD com Django

clients/models.py

clients/factories.py

TDD com Django

Atualizando e rodando os testes

TDD com Django

Atualizando e rodando os testes

TDD Win!!

Analisando um arquivo de teste

Resultado na análise

BDD

  • Reduz ruido entre cliente e desenvolvedores
  • Facilita o entendimento de features completas
  • Padroniza a comunicação cliente/equipe
  • Diminui o entendimento do sistema para novos membros da equipe

BDD

Escrevendo os cenários de teste

BDD

Parser dos cenários

BDD

Rodando os cenários: ./manage.py behave

BDD

Atualizando a view

BDD

Cenário 3:

    Permitir visualizar clientes inativos

BDD

Escrevendo novo cenário

BDD

Resolvendo o novo cenário

clients/views.py

clients/urls.py

clients/templates/clients/client_list.html

BDD

SPLINTER_DRIVER=firefox ./manage.py behave

Conclusão