Teste de Performance com Locust
Ferramenta escalável de teste de carga e performance, programável em Python com interface gráfica interativa.
O que é Locust?
Locust é uma ferramenta de teste de performance e carga fácil de usar, programável através de scripts em Python, e escalonável. Foi desenvolvida devido à frustração com outras ferramentas de teste de carga, que não eram eficazes em gerar cargas realistas para sites dinâmicos, exigindo o uso de interfaces gráficas não intuitivas ou arquivos de configuração detalhados.
Principais características
- Programabilidade: Permite definir o comportamento dos usuários através de scripts em Python.
- Escalabilidade: Suporta centenas de milhares de usuários simultâneos, facilitando testes em ambientes distribuídos.
- Interface Gráfica: Disponibiliza uma interface interativa para visualizar os resultados dos testes em tempo real e ajustar a carga durante a execução.
Vantagens
- Facilidade de uso para desenvolvedores Python: Quem já está familiarizado com Python pode rapidamente começar a criar scripts de teste de performance.
- Escalabilidade: Suporta a execução de testes com uma grande quantidade de usuários simultâneos em ambientes distribuídos.
- Interface gráfica interativa: Apresenta resultados em tempo real e permite ajustar a carga de usuários durante a execução dos testes.
Desvantagens
- Falta de suporte nativo para assertions: Não possui suporte nativo para assertivas, o que pode ser uma limitação para alguns tipos de testes.
- Dependência da habilidade do desenvolvedor: A performance dos testes depende da habilidade do desenvolvedor em escrever código Python eficiente. Iniciantes podem ter dificuldades em desenvolver soluções performáticas.
- Curva de aprendizado para padrões de carga personalizados: Simular cargas específicas com padrões de ramp-up personalizados pode ser demorado e complicado sem experiência prévia ou exemplos reutilizáveis. Outras ferramentas mais conhecidas podem tornar essa tarefa mais simples.
Configurando o Locust e Criando o primeiro teste
-
Criar um ambiente virtual para o app Flask
python3 -m venv venv_testing
-
Ativar o ambiente virtual
venv_testing\Scripts\Activate
. -
Instalar o Locust
pip3 install locust
-
Criar o arquivo para testes
teste.py
.from flask import Flask app = Flask(__name__) # Faz uma requisição no endpoint /name/<nome> e retornará o texto 'Olá, você digitou o nome: <nome>'. @app.route('/name/<name>') def get_name(name): return f"Olá, você digitou o nome: {name}" if __name__ == '__main__': app.run(debug=True)
-
Executar o comando
locust -f teste.py -H http://127.0.0.1:5000
e a interface gráfica irá aparecer no endereçohttp://127.0.0.1:8089/
-
Configurar o número de usuários, o ramp up, o host e o tempo de duração (Advanced options) e em seguida apertar Start para iniciar o teste.
Analisando os resultados
Ao iniciar o teste, essa será a tela em tempo real durante toda a execução do teste, exibindo informações sobre os endpoints, a quantidade de requests, a média por segundo, entre outros.
Na guia charts, podemos analisar o tempo de resposta em segundos, a distribuição dos tempos de resposta (ms) e a evolução do número de usuários ao longo do teste.
Em caso de falhas no teste, os erros irão aparecer na guia failures (falhas)
Já na guia de Download Data, podemos fazer o download do resultado em csv dos requests, failures e exceptions, além de exportar o report em html.
Conclusão
O Locust é uma ferramenta poderosa e flexível para realizar testes de performance e carga, especialmente para desenvolvedores familiarizados com Python. Sua capacidade de escalar e a interface gráfica interativa facilitam a visualização e ajuste dos testes em tempo real. Apesar de algumas limitações, como a falta de suporte nativo para assertivas, o Locust oferece uma alternativa robusta e programável para simular usuários e testar a resiliência de aplicações web. Com a configuração adequada e um bom script de teste, é possível obter insights valiosos sobre o comportamento do sistema sob carga.