标签归档:load-testing

Locust-用Python编写的可伸缩用户负载测试工具

Locust是一个易于使用、可编写脚本和可扩展的性能测试工具。您可以使用常规Python代码定义用户的行为,而不是使用笨重的UI或特定于域的语言。这使得Locust具有无限的可扩展性,并且对开发人员非常友好

功能

用普通老式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的用户界面

Locust有一个用户友好的Web界面,可以实时显示您的测试进度。您甚至可以在测试运行时更改负载。它还可以在没有UI的情况下运行,便于用于CI/CD测试

可以测试任何系统

即使Locust主要与网站/服务一起工作,它也可以用来测试几乎任何系统或协议。只是write a client您想要测试的内容,或者explore some created by the community

可黑客攻击

蝗虫很小,非常灵活,我们打算保持这种状态。如果你想send reporting data to that database & graphing system you like,包装对睡觉api的调用以处理系统的细节或运行totally custom load pattern,没有什么能阻止你!

链接

作者

许可证

根据麻省理工学院许可许可的开放源码(请参阅许可证有关详细信息,请参阅文件)