Locust vs k6: qual ferramenta de teste de carga para CI?
Locust escreve testes de carga em Python e escala com um modelo de workers distribuído; k6 usa JavaScript e é um single binary leve e nativo de CI.
Locust é um testador de carga baseado em Python onde você define o comportamento do usuário em código e escala via um modelo master/worker, com uma UI web ao vivo. k6 (Grafana) é um binário Go com script em JavaScript, otimizado para baixo uso de recursos e thresholds de CI.
| Locust | k6 | |
|---|---|---|
| Linguagem de scripting | Python | JavaScript |
| Runtime | Python | Go (single binary) |
| Modelo de escala | Master/worker distribuído | Single binary (k6 cloud para escala) |
| UI ao vivo | Sim (UI web) | CLI + Grafana |
| Adequação a CI | Boa (headless) | Excelente (thresholds) |
No CI
k6 é um single binary com thresholds de CLI de primeira classe, o que torna direto o gating de pass/fail no CI e mantém baixo o uso de recursos. Locust atrai times Python - o comportamento é Python puro - e escala horizontalmente via workers, o que é útil para carga muito alta, embora sua configuração master/worker adicione orquestração de CI. Escolha pela preferência de linguagem e por como você pretende escalar a carga.
Rode no CI
Faça o gate em thresholds (k6) ou assertions (Locust) para que regressões quebrem o build, e rode perfis distribuídos/de carga alta em runners capazes. A geração de carga consome muitos recursos; runners gerenciados maiores e mais rápidos geram mais carga por runner e terminam execuções pesadas mais cedo.
O veredito
Time Python ou precisa de um modelo de workers distribuído para carga muito alta: Locust. Quer um single binary leve com thresholds de CI limpos: k6. Faça o gate em thresholds/assertions no CI e dimensione os runners para a carga que você gera.