Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

01. DADOS GERAIS

Produto:

Solucoes_totvs
SolucaoTOTVS Logística Recintos Aduaneiros

Solucoes_totvs_cross
SolucaoCross

Solucoes_totvs_parceiros
SolucaoParceiros

Solucoes_totvs_parceirosexptotvs
SolucaoParcsExpsTOTVS

Linha de Produto:

Linhas_totvs
SegmentoDistribuição
RegionConstrução Projetos
LinhaLinha Logix

Segmento:

Segmentos_totvs
SegmentoLogí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.

...

Totvs custom tabs box
tabsRequisição GET,Requisição POST,Resultado,Log,Estatísticas
idsrequisicaoget,requisicaopost,resultado,log,estatisticas
Totvs custom tabs box items
defaultyes
referenciarequisicaoget
Totvs custom tabs box
tabsFormatando a requisição,Adicionando cabeçalhos,Executando o teste
idsprincipal,addheader,executar
Totvs custom tabs box items
defaultyes
referenciaprincipal

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.

Totvs custom tabs box items
defaultno
referenciaaddheader

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.

Totvs custom tabs box items
defaultno
referenciaexecutar

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.

Totvs custom tabs box items
defaultno
referenciarequisicaopost

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.

Totvs custom tabs box items
defaultno
referenciaresultado

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.

Totvs custom tabs box items
defaultno
referencialog

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.

Totvs custom tabs box items
defaultno
referenciaestatisticas

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

...