Árvore de páginas

01. DADOS GERAIS

Produto:

TOTVS Logística Recintos Aduaneiros

Linha de Produto:

Linha Logix

Segmento:

Logística

Módulo:Teste de Estresse - Recintos Aduaneiros
Função:Teste de Estresse - Recintos Aduaneiros
Ticket:
Requisito/Story/Issue (informe o requisito relacionado) :
  1. DLOGPORTOS-16646
  2. DLOGPORTOS-16647


02. SITUAÇÃO/REQUISITO

Para assegurar a estabilidade e escalabilidade dos serviços desenvolvidos utilizando APIs RESTful, foi desenvolvida uma aplicação de testes que permite realizar requisições em massa às APIs, permitindo avaliar seu comportamento, estabilidade e escalabilidade. Por efetuar requisições paralelas (multithread), a aplicação efetua requisições simultaneamente no mesmo endpoint, "bombardeando" a API.

A conexão, feita através de requisições HTTP, envia ao endpoint testado uma requisição a ser processada. Ao processá-la, a API envia sua resposta, a qual não é considerada para o sucesso do teste - qualquer retorno diferente da classe 500 é considerado um sucesso. Caso o servidor apresente erros da classe 500 ou não efetive uma resposta dentro de um tempo hábil, o teste é considerado falho, apontando instabilidade no endpoint testado.

03. SOLUÇÃO

A solução, uma aplicação no modelo desktop para o sistema operacional Microsoft Windows de 64 bits, opera de forma autônoma, sem nenhuma dependência, facilitando sua utilização. Por estar em estado de MVP (Minimun Valuable Product), nem todas as funcionalidades projetadas estão disponíveis. Até o momento, é possível testar endpoints GET e POST, sendo estes últimos com corpo em formato JSON, podendo adicionar cabeçalhos à requisição em ambos os métodos.




Para executar um teste de estresse em um endpoint GET é necessário configurar, conforme a imagem abaixo:

  1. A URL completa para o endpoint, incluindo parâmetros URL ou por Query String;
  2. Os parâmetros de execução, sendo:
    1. Threads: o número de requisições simultâneas a serem executadas, entre 1 e 5.000;
    2. Repetições: o número de vezes em que cada requisição é executada, entre 1 e 5.000;
    3. Intervalo: o intervalo, em milissegundos, entre as requisições cíclicas, quando Repetições for maior do que 1, entre 50 e 500 e;
  3. Os cabeçalhos, quando aplicáveis.

URL deve conter toda a rota exposta pelo endpoint, uma vez que, se ela não estiver completa, o endpoint pode não ser encontrado, fazendo com que o teste acuse uma falha. Sendo assim, caso ela possua parâmetros de URI - https://viacep.com.br/ws/{cep}/{formato}, por exemplo -, estes devem ser adicionados, assim como quando o endpoint possuir parâmetros do tipo Query String.

Ao clicar no botão para adicionar um cabeçalho, é possível adicionar os cabeçalhos exigidos pelo endpoint, como Authorization, por exemplo. Cabeçalhos são enviados nos testes para validação de seu tratamento, uma vez que não enviá-los não implicaria em uma falha de processamento no teste. Contudo, não enviar cabeçalhos para um endpoint que espera recebê-los pode indicar, na API, uma falha de tratamento da sua ausência, o que ajuda a resolver problemas relacionados à segurança no endpoint.

Para incluí-los, basta preencher os campos conforme a imagem abaixo, sendo:

  1. Cabeçalho: o nome do cabeçalho. Ex.: Authorization;
  2. Valor: o valor relativo ao cabeçalho. Ex.: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJSZWNpbnRvcyBBZHVhbmVpcm9zIiwiaXNzIjoiU0FSQSIsInN1YiI6IlNBUkFMb2dpbiIsImV4cCI6MTUxNjIzOTAyMn0.w8ze3iCo537hWi-VN40mMEsVYuOOwXyQ2tByYp_3d34 e;
  3. Ativo: flag que indica se o cabeçalho está ativo durante a requisição.

Após adicionado ao teste, o cabeçalho pode ser desativado, editado ou excluído, a qualquer momento, através das ferramentas disponíveis na barra lateral direita painel de cabeçalhos.

Para executar o teste, basta clicar no botão Iniciar e selecionar a opção Iniciar (F9) ou usar sua tecla de atalho F9, conforme imagem abaixo.

Assim como o procedimento para realizar o teste com endpoints GET, a aplicação permite que também seja feito o teste com endpoints POST. Para tanto, nas configurações do endpoint, basta selecionar a opção POST na caixa de seleção do método a ser executado. Isso habilitará a opção para inclusão do corpo da requisição, no formato JSON, conforme imagens abaixo.

Após determinados os parâmetros de protocolo, rota e corpo, assim como numa requisição GET, basta selecionar a opção para iniciar o teste e aguardar os resultados.

Após a execução de um teste, a aplicação mostrará os resultados obtidos. Em uma lista, ela exibira o Handle (identificador da thread executada), seu menor, médio e maior tempo, em milissegundos, além da taxa de sucesso e erro e o tempo total do teste, conforme imagem abaixo.

Após a execução do teste e a apresentação do resultado, a aplicação disponibilizará um log com as ocorrências de erros durante os testes, conforme imagem abaixo.

Assim como a aplicação exibe seus resultados e o log de erros durante a execução dos testes, ela também exibe as estatísticas de ocorrências, separadas por sucessos e por cada ocorrência de erro, conforme imagem abaixo.


04. DEMAIS INFORMAÇÕES

  • Norma RFC 7231 - Protocolo HTTP/1.1: Semântica e Conteúdo
  • Norma RFC 9205 - Construção de protocolos HTTP