Artillery.io: automatizando testes de carga com Azure DevOps

Renato Groffe
3 min readJun 21, 2021

--

Em um artigo anterior abordei a execução de testes de carga (load tests) com o Artillery.io, uma ferramenta de linha de comando gratuito e que pode ser facilmente instalada via npm. Uma das capacidades extremamente úteis que o Artillery.io nos oferece é a possibilidade de geração dos resultados dos testes em um arquivo HTML formatado, o que simplifica em muito a visualização das métricas obtidas (número requisições com sucesso ou erro, requisições por segundo, tempos médios de resposta…).

Este conteúdo foi publicado aqui no blog e pode ser acessado através do link:

Artillery.io: testes de carga e geração de relatórios HTML

Neste novo post trago um exemplo de como automatizar a execução destes testes de carga, incluindo a geração dos relatórios HTML com os resultados. Farei uso para isto de recursos de agendamento oferecidos pelo Azure DevOps.

Como já mencionei no artigo anterior, temos como possíveis cenários para a necessidade de agendamento de load tests baseados no Artillery.io e outras ferramentas similares:

  • A detecção de eventuais degradações de performance em uma aplicação Web, permitindo deste modo uma análise da saúde da aplicação;
  • Verificar num ambiente de staging eventuais quedas de performance após modificações em um projeto.

Aproveito esse espaço para um convite…

Dia 30/06 (segunda) às 21:00 horário de Brasília — teremos mais um evento online e gratuito no canal Canal .NET.

Ao longo desta live abordarei dicas, truques e alternativas úteis para o desenvolvimento Back-End e de APIs REST com .NET 5, ASP.NET Core, Azure Functions. Ao longo da apresentação será coberto o uso de diferentes frameworks, serviços na nuvem, mensageria, bancos de dados e boas práticas de forma a facilitar e tornar mais dinâmica a implementação de soluções baseadas na plataforma .NET no seu dia a dia.

Teremos também algumas novidades do .NET 6 demonstradas na prática!

Para participar faça sua inscrição no link a seguir, a transmissão acontecerá via YouTube:

https://bit.ly/live-backend-dotnet-jun-2021

Exemplo no Azure DevOps

O Azure Pipelines também oferece dentro do Azure DevOps a alternativa de pré-agendar processos, facilitando assim a configuração de pipelines que envolvam a execução de tarefas periódicas. Podemos inclusive também tirar proveito dos inúmeros recursos pré-instalados nos virtual environments (utilizei Linux/Ubuntu aqui), caso este do npm (essencial para a execução do Artillery.io).

Na listagem a seguir temos um exemplo de pipeline criado no Azure DevOps, para a execução de testes a cada 5 min. Tomei como base nesta automação uma aplicação Web criada com o .NET 5 + ASP.NET Core e hospedada por meio do Azure App Service:

  • Em schedules foi especificado no parâmetro cron a Cron Expression indicando a execução a cada 5 min;
  • O arquivo load-tests-sitecontagem.yml contém os testes a serem executados, com uma simulação de envio de 30 a 50 requisições por segundo durante 20 segundos;
  • A task replacetokens atualiza o arquivo load-tests-sitecontagem.yml com a URL de testes associada à variável urlTarget;
  • Os steps envolvem a instalação do npm localmente no virtual environment (ubuntu-latest), com as execuções do Artillery.io via npx;
  • Por fim teremos a publicação do relatório HTML, com isto acontecendo a partir da task PublishHtmlReport.

O conteúdo do arquivo load-tests-sitecontagem.yml pode ser observado na próxima listagem:

Produzi recentemente um vídeo gratuito e que está publicado no canal Azure na Prática detalhando passo a passo este exemplo. O vídeo está no YouTube e pode ser assistido gratuitamente (recomendo fortemente para que você o faça, a fim de entender toda a dinâmica deste processo):

Este exemplo de pipeline foi disponibilizado no GitHub:

https://github.com/renatogroffe/AzureDevOps-AzurePipelines-Schedule-Artillery-LoadTests_YAML-HtmlReport

O projeto empregado nos testes também está no GitHub:

https://github.com/renatogroffe/ASPNETCore5-RazorPages-LoadTesting-Artillery_SiteContagem

--

--

Renato Groffe
Renato Groffe

Written by Renato Groffe

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

No responses yet