Testes de Carga: automações com o package loadtest em Azure DevOps e GitHub Actions

Renato Groffe
4 min readSep 19, 2022

Neste novo artigo trago 2 exemplos relativos à automação de testes de carga, utilizando para isto o pacote npm loadtest. Já abordei inclusive o uso desta ferramenta em outro post deste blog:

Testes em projetos Back-End: o pacote npm loadtest, testes de integração com Azure Functions | pt 3

Os exemplos aqui apresentados envolvem um Workflow do GitHub Actions e um Pipeline do Azure DevOps. E por que então empregar uma solução de automação, quando poderíamos muito bem executar manualmente um conjunto de testes a partir de nossos próprios ambientes de Desenvolvimento?

A resposta está na possibilidade de desonerarmos nossas máquinas de um consumo mais acentuado de recursos computacionais (memória e processamento), tomando como exemplo testes com cenários de escalabilidade na nuvem. Podemos também nos valer dessa estratégia para checar periodicamente a performance de nossas aplicações, através da execução automatizada destes testes.

E aproveito este espaço para um convite…

Nesta segunda 19/09 às 21:00 horário de Brasília — teremos mais um evento online e gratuito no canal Canal .NET.

Acompanhe esta live e fique por dentro de diversas dicas e truques extremamente úteis no dia a dia da orquestração de containers com Kubernetes, ferramentas auxiliares, além da integração com serviços em nuvem — incluindo o suporte ao AKS — Azure Kubernetes Service!

Alguns temas previstos:

- k9s: novas dicas para monitoramento, gerenciamento e testes em um cluster Kubernetes
- Criando clusters Kubernetes localmente com kind e configurando serviços para testes
- Kubernetes + Testes de Integração: automação descomplicada no Azure DevOps com kind

Faça sua inscrição em:

https://bit.ly/live-kubernetes-dicas-truques-pt4

Exemplo com GitHub Actions

Na próxima listagem está o código para o Workflow do GitHub Actions, em que é possível destacar:

  • O uso do virtual environment ubuntu-latest, que já conta com versões atualizadas do Node.js e do npm para utilização durante a execução do Workflow;
  • O package loadtest foi instalado via npm localmente, já que o modo global não é permitido em virtual environments (tanto no GitHub Actions, quanto no Azure DevOps/Azure Pipelines);
  • A execução do package loadtest será via comando npx, com as variáveis endpoint, concurrentUsers e totalRequests indicando, respectivamente, a URL para testes, o número simulado de usuários acessando este endereço simultaneamente e o total de requisições a serem produzidas;
  • A cláusula workflow_dispatch possibilitará a execução manual do Workflow.

Para a criação deste Worflow utilizei o template Simple workflow:

Clique nesta imagem para visualizar com uma melhor resolução

Uma vez criado o Workflow, notaremos a opção para a execução manual do mesmo (graças ao uso da cláusula workflow_dispatch):

Clique nesta imagem para visualizar com uma melhor resolução

Na imagem a seguir podemos observar que a sequência de passos/steps definida no job loadtests foi corretamente executada:

Clique nesta imagem para visualizar com uma melhor resolução

Bem como temos a condição de navegar pelos logs observando o resultado dos testes:

Clique nesta imagem para visualizar com uma melhor resolução

O repositório com o Workflow já foi disponibilizado no GitHub:

https://github.com/renatogroffe/GitHubActions-TestesCarga-loadtest_npm

Caso achem útil este Workflow do GitHub Actions, peço por favor um ⭐️ no repositório apoiando. Fica também o convite para que vocês me sigam lá no GitHub!

Exemplo com Azure DevOps

A próxima listagem traz a mesma implementação de testes de carga com o package loadtest, já considerando agora um Pipeline do Azure DevOps:

Utilizei aqui o template Starter pipeline:

Clique nesta imagem para visualizar com uma melhor resolução

Ao acessar o Pipeline teremos o seu histórico de execuções, assim como a possibilidade de executá-lo manualmente (botão Run):

Na próxima imagem temos um exemplo de execução do Pipeline concluída com sucesso:

Clique nesta imagem para visualizar com uma melhor resolução

Há também no Azure Pipelines uma funcionalidade para visualização dos logs gerados pela ferramenta/package loadtest:

Clique nesta imagem para visualizar com uma melhor resolução

O repositório com este Pipeline foi disponibilizado no GitHub:

https://github.com/renatogroffe/AzureDevOps-Pipeline-TestesCarga-loadtest_npm

Caso achem útil este Pipeline do Azure DevOps, peço por favor também um ⭐️ no repositório apoiando. Fica ainda o convite para que vocês me sigam lá no GitHub!

Estes 2 exemplos de uso do package loadtest foram apresentados em uma live que participei recentemente:

--

--

Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker