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
BDD com Python
By Daniel Bastos
BDD com Python
- 2,560