开发者友好的负载测试框架
项目描述
Locust
Locust是一个开源的性能/负载测试工具,适用于HTTP和其他协议。它以开发者友好的方式允许您使用常规Python代码定义测试。
Locust测试可以从命令行或使用其基于Web的UI运行。吞吐量、响应时间和错误可以实时查看并/或导出以供以后分析。
您可以将常规Python库导入到测试中,并且通过Locust的可插拔架构,它可以无限扩展。与使用大多数其他工具不同,您的测试设计将不会受到GUI或特定领域语言的限制。
要立即开始,请访问文档。
功能
使用普通的Python编写用户测试场景
如果您希望用户进行循环、执行一些条件行为或进行一些计算,您只需使用Python提供的常规编程结构。Locust在每个用户内部运行自己的greenlet(轻量级进程/协程)。这使得您可以像编写正常的(阻塞)Python代码一样编写测试,而不必使用回调或其他机制。因为您的场景“只是Python”,您可以使用您的常规IDE,并将测试版本控制为常规代码(与一些使用XML或二进制格式的其他工具相反)
from locust import HttpUser, task, between
class QuickstartUser(HttpUser):
wait_time = between(1, 2)
def on_start(self):
self.client.post("/login", json={"username":"foo", "password":"bar"})
@task
def hello_world(self):
self.client.get("/hello")
self.client.get("/world")
@task(3)
def view_item(self):
for item_id in range(10):
self.client.get(f"/item?id={item_id}", name="/item")
分布式且可扩展 - 支持数百万用户
Locust简化了在多台机器上运行负载测试的过程。它是基于事件的(使用gevent),这使得单个进程可以处理数千个并发用户。虽然可能存在其他工具可以在特定硬件上每秒执行更多请求,但每个Locust用户低开销的特点使其非常适合测试高并发工作负载。
基于Web的UI
Locust拥有一个用户友好的Web界面,可以实时显示测试的进度。您甚至可以在测试运行时更改负载。它还可以在没有UI的情况下运行,这使得它非常适合CI/CD测试。
可测试任何系统
尽管Locust主要与网站/服务一起使用,但它可以用于测试几乎任何系统或协议。只需编写您要测试的客户端,或探索社区创建的一些内容。
可修改
Locust的代码库有意识地保持小巧,并不解决所有问题。相反,我们试图使其适应您可能遇到的任何情况,使用常规Python代码。没有阻止您
链接
- 文档:docs.locust.io
- 支持/问题:StackOverflow
- Github讨论:Github Discussions
- 聊天/讨论:Slack (注册)
作者
- 维护者:Lars Holmberg
- UI:Andrew Baldwin
- 原始创建者:Jonatan Heyman
- 向所有贡献者表示衷心的感谢:所有贡献者
许可
开源许可,MIT许可证(有关详细信息,请参阅LICENSE文件)。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定该选择哪个,请了解有关安装包的更多信息。