> 文章列表 > 21100颗星的Locust性能测试工具到底有多牛!

21100颗星的Locust性能测试工具到底有多牛!

21100颗星的Locust性能测试工具到底有多牛!

一句话:用普通的Python编写可扩展的负载测试,就够了,懂得自然懂!

Locust是一个易于使用、可编写脚本和可扩展的性能测试工具。你在常规的Python代码中定义你的用户的行为,而不是受制于一个UI或领域特定的语言,只是假装是真正的代码。这使得Locust具有无限的可扩展性,对开发者非常友好。

用普通的Python编写用户测试方案

如果你想让你的用户进行循环,执行一些条件行为或做一些计算,你只需使用Python提供的常规编程结构。Locust在它自己的greenlet(一个轻量级的进程/程序)中运行每个用户。这使你能够像正常的(阻塞的)Python代码一样编写你的测试,而不是使用回调或其他机制。因为你的场景 “只是Python”,你可以使用你的常规IDE,并将你的测试作为常规代码进行版本控制(相对于其他一些使用XML或二进制格式的工具)。

from locust import HttpUser, task, betweenclass QuickstartUser(HttpUser):wait_time = between(1, 2)def on_start(self):self.client.post("/login", json={"username":"foo", "password":"bar"})@taskdef 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-based UI

Locust有一个用户友好的网络界面,实时显示你的测试进度。你甚至可以在测试运行时改变负载。它也可以在没有用户界面的情况下运行,使其易于用于CI/CD测试。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

可以测试任何系统

尽管Locust主要工作在网站/服务上,但它几乎可以用来测试任何系统或协议。只要为你想测试的东西写一个客户端,或者探索一些由社区创建的客户端。

可扩展

Locust的代码库有意保持小规模,并不解决所有开箱即用的问题。相反,我们试图让它容易适应你可能遇到的任何情况,使用常规的Python代码。没有什么可以阻止你:

将实时报告数据发送到TimescaleDB并在Grafana中进行可视化处理
包裹调用以处理你的REST API的特殊性
使用一个完全自定义的负载形状/配置文件

如果想要了解够多,甚至完全掌握,不妨来看看下面教程,因为我敢笃定你终究用到那一天。

从零开始,打造高效可靠的Locust性能测试

在这里插入图片描述

从零开始,打造高效可靠的Locust性能测试

在这里插入图片描述

书到用书方恨少,加油吧,兄嘚~~~~