Locust é uma ferramenta de teste de desempenho/carga de código aberto para HTTP e outros protocolos. Sua abordagem amigável ao desenvolvedor permite definir seus testes em código Python normal.
Os testes do Locust podem ser executados na linha de comando ou usando sua interface de usuário baseada na web. O rendimento, os tempos de resposta e os erros podem ser visualizados em tempo real e/ou exportados para análise posterior.
Você pode importar bibliotecas Python regulares para seus testes e, com a arquitetura conectável do Locust, ela é infinitamente expansível. Ao contrário da maioria das outras ferramentas, o design do seu teste nunca será limitado por uma GUI ou linguagem específica de domínio.
Para começar imediatamente, consulte a documentação.
Se você deseja que seus usuários façam loops, executem algum comportamento condicional ou façam alguns cálculos, basta usar as construções de programação regulares fornecidas pelo Python. O Locust executa cada usuário dentro de seu próprio greenlet (um processo/corrotina leve). Isso permite que você escreva seus testes como código Python normal (de bloqueio) em vez de usar retornos de chamada ou algum outro mecanismo. Como seus cenários são “apenas python”, você pode usar seu IDE normal e controlar a versão de seus testes como código normal (em oposição a algumas outras ferramentas que usam formatos XML ou binários).
from locust import HttpUser, task, betweenclass QuickstartUser(HttpUser):wait_time = between(1, 2)def on_start(self):self.client.post("/login", json={"username":"foo", " senha":"barra"})@taskdef hello_world(self):self.client.get("/hello")self.client.get("/world")@task(3)def view_item(self):para item_id no intervalo(10):self.client. get(f"/item?id={item_id}", nome="/item")
O Locust facilita a execução de testes de carga distribuídos em várias máquinas. É baseado em eventos (usando gevent), o que possibilita que um único processo lide com milhares de usuários simultâneos. Embora possa haver outras ferramentas capazes de fazer mais solicitações por segundo em um determinado hardware, a baixa sobrecarga de cada usuário do Locust o torna muito adequado para testar cargas de trabalho altamente simultâneas.
Locust possui uma interface web amigável que mostra o andamento do seu teste em tempo real. Você pode até alterar a carga enquanto o teste está em execução. Ele também pode ser executado sem a IU, facilitando o uso para testes de CI/CD.
Embora o Locust funcione principalmente com sites/serviços, ele pode ser usado para testar praticamente qualquer sistema ou protocolo. Basta escrever um cliente para o que deseja testar ou explorar alguns criados pela comunidade.
A base de código do Locust é intencionalmente mantida pequena e não resolve tudo imediatamente. Em vez disso, tentamos facilitar a adaptação a qualquer situação que você possa encontrar, usando código Python normal. Não há nada que impeça você de:
Envie dados de relatórios em tempo real para o TimescaleDB e visualize-os no Grafana
Encapsule chamadas para lidar com as peculiaridades da sua API REST
Use um formato/perfil de carga totalmente personalizado
...
Documentação: docs.locust.io
Suporte/Perguntas: StackOverflow
Discussões do Github: Discussões do Github
Bate-papo/discussão: Slack (inscrição)
Mantenedor: Lars Holmberg
UI: Andrew Baldwin
Criador original: Jonatan Heyman
Muito obrigado a todos os nossos colaboradores
Código aberto licenciado sob a licença MIT (consulte o arquivo LICENSE para obter detalhes).