Meios de testar seu código
Requisitos para continuar
- Verificar se foram feitos os procedimentos de provisionamento da sua máquina ou caso você não queira provisionar sua máquina, verificar se você executou os procedimentos relacionados ao iniciando no git itflex
- Será necessário a instalação do editor de códigos VSCode
- A virtualenv do python criada
Não executamos o backend na máquina de desenvolvimento.
Por se tratar de um produto de INFRA e depender de vários serviços do linux, não recomendados e em algumas situações não conseguimos executar em máquina local, deve-se rodar sempre em uma VM com CentOS 8 ou em um dos nossos ambientes de teste.
Como funciona a nossa rotina no desenvolvimento do backend
- Realizamos alterações no código (correções, novas implementações ou refatorações)
- Substituímos o código na VM
- Testamos o código dentro da VM
1. Realizar alteração no código
Quando realizamos qualquer modificação no código, seja uma nova funcionalidade ou uma correção, precisamos de alguma maneira testar a parte do backend e/ou a integração com o frontend, para isso o melhor cenário é utilizando uma Máquina Virtual (VM). Antes de movermos o código alterado para alguma VM, precisamos fazer a alteração de acordo com a nossa atividade, durante o nosso desenvolvimento devemos nos atentar a escrever e estruturar um código legível e bem indentado, para isso temos à nossa disposição os linters que servem para melhorar a legibilidade do nosso código, e os testes unitários que nos ajudam a garantir a funcionalidade e corretude de nossas alterações. Após escrever seus testes unitários, podemos executar dois scripts para executar os linters e os testes, ou executar as ferramentas de forma direta.
Para executar os linters, utilizando o script você deve:
- Entrar no diretório
itflex/server/backend
- Ativar a virtualenv (caso você ainda tenha alguma dúvida a respeito do funcionamento, e como criar acesse a documentação através deste link):
source venv/bin/activate
- Executar o script/helper:
../helpers/python-lint.sh
Você pode também executar diretamente os linters, para entender como fazer isso, verifique a documentaćão deles aqui
Diferença entre executar o Script e utilizar direto às ferramentas de linter
Nosso script serve unicamente para informar onde estão os erros que os linters irão apontar, utilizar diretamente as ferramentas irá dar a você a opção de conceder a ferramenta de lint o “poder” de corrigir o código para você.
Para executar os testes unitários, utilizando o script você deve:
- Entrar no diretório
itflex/server/backend
- Ativar a virtualenv (caso você ainda tenha alguma dúvida a respeito do funcionamento, e como criar acesse a documentação através deste link):
source venv/bin/activate
- Executar o script/helper:
../helpers/python-test.sh
Você pode também executar diretamente os testes através do pytest, segue abaixo algumas formas de executar os testes unitários:
Para executar todos os testes do FwFlex
pytest
Para executar somente os testes de uma pasta
pytest -vv itflex_auth
Para executar um teste em específico de acordo com o nome
pytest -vv itflex_auth -k test_delete_user
Diferença entre executar o Script e utilizar direto a ferramenta de testes
Nosso script executa todos os testes existentes no produto, utilizando diretamente a ferramenta permite que você especifique a pasta de testes do módulo em específico, assim como permite que você especifique qual teste deseja executar.
Com os testes unitários passando, podemos seguir para a próxima etapa.
2. Substituindo o código na VM
Para realizarmos o teste de integração, precisamos substituir o código na VM local ou servidor que será utilizado no teste.
Para que você possa copiar o código para uma VM e acessar ela, você precisa que seu usuário SSH esteja incluído no provisionamento das máquinas. Caso seu usuário ainda não esteja incluso, você pode utilizar o usuário root
e a senha semprelinux
para acessar as VMs, estas credenciais são as padrões para nossos ambientes de testes.
Você precisa também saber o IP ou Hostname da VM, todos nossos ambientes de testes compartilhados possuem um hostname, você pode verificar quais são estes acessando a documentação sobre os ambientes aqui.
Caso seja sua VM, você pode acessar ela através do seu gerenciador de máquinas virtuais e executar o seguinte comando para identificar o ip e verificar qual o ip da segunda interface de rede:
ip a
Um exemplo de retorno seria este:
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 6a:3d:29:e1:6f:65 brd ff:ff:ff:ff:ff:ff
inet 192.168.47.69/24 brd 192.168.47.255 scope global noprefixroute ens18
valid_lft forever preferred_lft forever
Neste caso o IP da nossa VM é 192.168.47.69
Segue abaixo os passos.
Estrutura do comando para copiar o código para o tmp da VM
scp -r {{ Diretório que deseja copiar }} {{ Seu usuário }}@{{ IP do servidor }}:/tmp
Exemplo
scp -r itflex_auth itflex@192.168.47.69:/tmp
Estrutura do comando para acessar a VM via SSH
ssh {{ Seu usuário }}@{{ IP do servidor }}
Exemplo
ssh itflex@192.168.47.69
Substituindo a pasta no site-packages do python.
Após mover o código para o tmp (diretório do sistema Linux que serve para armazenar os arquivos temporários), precisamos mover nossos arquivos .py para o diretório onde está nosso projeto sendo executado, o site-packages é o diretório de destino dos pacotes Python que são construídos manualmente.
cd /usr/lib/python3.6/site-packages/
rm itflex_auth -Rf && cp /tmp/itflex_auth . -Rf
Todo o código escrito em itflex/server/backend
, quando movido para uma VM e executado, se encontra no diretório /usr/lib/python3.6/site-packages
.
3. Testando o código na VM
Para facilitar os testes e visualização dos erros, a melhor maneira de debugar é executando o serviço do itflex-admin
na mão. Este serviço é gerenciado pelo systemd, é um sistema de inicialização (init system) composto por um conjunto de programas executado em segundo plano no sistema Fedora.
Segue abaixo os passos para executar o itflex-admin na mão.
Primeiro é necessário parar o serviço do itflex-admin
systemctl stop itflex-admin
Iniciar o serviço do itflex-admin na mão
cd /usr/lib/python3.6/site-packages/
python3 -m itflex.run
3.1 Como testar a funcionalidade nova ou que foi alterada
Deve ser testado de duas formas, uma utilizando uma ferramenta de API Client para testar a API e o fluxo do backend como Postman ou Insomnia. Outra é acessar a interface do FwFlex, entrando nas telas e executando a funcionalidade que foi alterada.
Esta segunda forma só é possível quando temos o frontend funcionando para aquela alteração.
Podemos acessar a interface do FwFlex pelas portas 9292 ou 9293 da VM.
3.1.1 Porta 9293
Ao acessar https://{{ Ip do servidor }}:9293
, o navegador vai solicitar um certificado SSL para permitir o acesso ao FwFlex. Esse certificado é fornecido pela itflex, para conseguir logar nos servidores de cliente sem usuário e senha.
3.1.2 Porta 9292
Ao acessar https://{{ Ip do servidor }}:9292
, vai aparecer a tela de login para informar o usuário e senha.
Se o banco estiver vazio, é necessário criar um usuário para ter acesso às telas. Segue abaixo o procedimento para acelerar esta etapa:
- Copiar o
itflex/server/backend/create_user.py
para VM.
scp create_user.py {{ Seu usuário }}@{{ Ip do servidor}}:/tmp
- Executar o script na vm.
python3 /tmp/create_user.py
Se não foi alterado o script, o usuário para login será admin
e senha admin123
Esse script ignora algumas validações de objeto, pois insere diretamente no banco os dados.
O script create_user.py só pode ser executado em ambiente de teste, nunca execute em servidor de cliente/produção.