Artillery.io: testes de carga e geração de relatórios HTML
Em um post anterior abordei o uso da ferramenta Artillery.io como alternativa para a execução de testes de carga em projetos Web:
ASP.NET Core: dicas úteis para o dia a dia de um Desenvolvedor - Parte 8
Este utilitário pode ser facilmente instalado via npm, além de empregado para testes em ambientes Windows, Linux e Mac:
npm install -g artillery
A seguir temos um exemplo baste simples de utilização do Artillery.io em um site para contagem de acessos:
- A simulação de 20 usuários simultâneos com o parâmetro --count;
- Com o envio de 50 requisições cada (parâmetro -n).
artillery quick --count 20 -n 50 -k http://localhost:5000/
Ao final da execução desta instrução teremos o resultado printado em tela, com um sumário dos códigos de retorno HTTP gerados pelas requisições (200 - OK e 500 - Internal Server Error para este exemplo):
Podemos ainda ir além, com a escrita de testes por meio de scripts YAML:
- Testes para vários ambientes podem ser definidos na seção environments (para este exemplo foi especificado o ambiente local);
- O endereço-base da aplicação em cada ambiente é indicado em target;
- Foram especificados 20 usuários simultâneos a cada segundo em arrivalRate, com uma duração de 50 segundos;
- Em flow dentro da seção scenarios está o tipo de requisição HTTP a ser enviada (GET), além da rota empregada (apenas / neste caso).
Ao executar o comando a seguir indicando o arquivo YAML com as definições de teste, além do ambiente (por meio da opção -e):
artillery run -e local load-tests-sitecontagem.yml
Teremos como resultado:
Mais possibilidades ainda existem, com a gravação dos resultados dos testes em um arquivo JSON indicado pelo parâmetro -o:
artillery run -o results.json -e local load-tests-sitecontagem.yml
Tal resultado pode ser finalmente convertido para um relatório HTML por meio do comando artillery report:
artillery report -o results.html results.json
Temos assim um relatório bem completo, diferentes aspectos relativos à performance da aplicação:
Estas capacidades abrem caminho para a utilização do Artillery.io em cenários como:
- A detecção de eventuais degradações de performance em uma Web App, permitindo assim uma análise da saúde da aplicação;
- Verificar num ambiente de staging uma eventual queda da performance após alterações no projeto.
Lembrando ainda que tudo isto pode ser conseguido com facilidade por meio de uso de soluções como Azure DevOps e GitHub Actions, com o agendamento dos testes em pipelines e workflows de automação.
E finalizo este post com um convite…
No dia 07/06/2021 (segunda) às 21:00 — horário de Brasília — teremos mais um evento online e gratuito no Canal .NET.
Nesta live será demonstrada a implementação de testes automatizados de APIs REST com Postman + Newman, incluindo o suporte oferecido pelo Azure DevOps e GitHub Actions. Ao longo da live será coberto ainda o uso de tecnologias como .NET 5, ASP.NET Core, Visual Studio 2019, npm, JavaScript, Kubernetes e serviços do Microsoft Azure.
Para participar faça sua inscrição no link a seguir, a transmissão acontecerá via YouTube: