0|1简介:
An open source load testing tool.
一个开源性能测试工具。
define user behaviour with python code, and swarm your system with millions of simultaneous users.
使用Python代码来定义用户行为。用它可以模拟百万计的并发用户访问你的系统。
Locust 完全基本 Python 编程语言,采用 Pure Python 描述测试脚本,并且 HTTP 请求完全基于 Requests 库。
除了 HTTP/HTTPS 协议,Locust 也可以测试其它协议的系统,只需要采用Python调用对应的库进行请求描述即可。
LoadRunner 和 Jmeter 这类采用进程和线程的测试工具,都很难在单机上模拟出较高的并发压力。
Locust 的并发机制摒弃了进程和线程,采用协程(gevent)的机制。协程避免了系统级资源调度,由此可以大幅提高单机的并发能力
安装:
0|2通过PIP命令安装:
pip install locust
0|3编写脚本:
from locust import HttpUser, TaskSet, task
class UserBehavior(TaskSet):
@task(1)
def baidu(self):
self.client.get("/")
class WebsiteUser(HttpUser):
task_set = UserBehavior
min_wait = 3000
max_wait = 6000
创建UserBehavior()类继承TaskSet类,为用户行为。
创建baidu() 方法表示一个行为,访问百度首页。用@task() 装饰该方法为一个任务。1表示一个Locust实例被挑选执行的权重,数值越大,执行频率越高。在当前UserBehavior()行为下只有一个baidu()任务,所以,这里的权重设置为几,并无影响。
WebsiteUser()类用于设置性能测试。
task_set :指向一个定义了的用户行为类。
min_wait :用户执行任务之间等待时间的下界,单位:毫秒。
max_wait :用户执行任务之间等待时间的上界,单位:毫秒。
0|4运行脚本:
locust -f .\locustfile.py --host=https://www.baidu.com
-f 指定性能测试脚本文件。
–host 指定被测试应用的URL的地址
输出:
[2020-06-20 11:16:09,859] WINDOWS-8TS3PNG/WARNING/locust.main: System open file limit setting is not high enough for load testing, and the OS wouldnt allow locust to increase it by itself. See https://docs.locust.io/en/stable/installation.html#increasing-maximum-number-of-open-files-limit for more info.
[2020-06-20 11:16:09,860] WINDOWS-8TS3PNG/INFO/locust.main: Starting web interface at http://:8089
[2020-06-20 11:16:09,874] WINDOWS-8TS3PNG/INFO/locust.main: Starting Locust 1.0.3
0|5进行测试:
通过浏览器访问:http://localhost:8089(Locust启动网络监控器,默认为端口号为: 8089)
Number of users to simulate 设置模拟用户数。
Hatch rate(users spawned/second) 每秒产生(启动)的虚拟用户数。
点击 “Start swarming” 按钮,开始运行性能测试。
运行结果:
参数 | 说明 |
---|---|
Type | 请求的类型,例如GET/POST |
Name | 请求的路径。 |
request | 当前请求的数量 |
fails | 当前请求失败的数量 |
Median | 中间值,单位毫秒,一半的服务器响应时间低于该值,而另一半高于该值 |
Average | 平均值,单位毫秒,所有请求的平均响应时间 |
Min | 请求的最小服务器响应时间,单位毫秒 |
Max | 请求的最大服务器响应时间,单位毫秒 |
Content Size | 单个请求的大小,单位字节 |
reqs/sec | 是每秒钟请求的个数 |
1|0Charts
吞吐量/每秒响应事务数(rps)实时统计
平均响应时间/平均事务数实时统计
虚拟用户数运行
基本测试完成,重点是测试脚本的编写