接口性能测试工具Locust介绍_接口和性能的测试要点
cac55 2025-09-14 15:13 3 浏览 0 评论
接口性能测试工具其实挺多的,小型有apache的ab工具,大型的有Jmeter、Locust... ...
这里要介绍的是Locust,相对于Jmeter进行了比较完善的封装,Locust可以就显的更自由一些。
简介
Locust是一个开源的、易于使用、可编写脚本且可扩展的性能测试工具。
工具优点
Locust被很多公司认可并使用,具有以下优点:
- Locust使用python编写,可以在常规的python代码中定义用户的行为;
- 用户脚本可以串行方式编写,Locust会通过轻量级进程/协程产生并发,无需自己做并发编程;
- 用它可以模拟百万级的并发用户访问你的系统,支持分布式运行,使用gevent支持协程处理,单个进程可以处理数千个并发用户,并且开销低;
- 带有web用户界面,实时显示测试进度,甚至可以在测试运行时更改负载;
- 也可以在没有UI的情况下运行,易于CI/CD测试。
安装
Locust的安装非常简单,直接使用pip命令就行:
pip install locust
安装后,使用这个命令可以检验安装是否成功:
locust -V
能正常显示Locust的版本信息就代表安装成功。在安装的时候,还会自动将一些依赖的库也一起安装进来,比如flask、gevent等等。
脚本演示
这里演示一个单接口性能测试案例:
from locust import HttpUser, between, task
# 这里为所有虚拟用户定义了一个继承自HttpUser的类,每个虚拟用户都提供了一个client属性
# 这个client属性是HttpSession的实例,可以用于向我们需要测试的目标发起http请求
class QueryMenuTest(HttpUser):
# 模拟用户在每个任务执行后等待时间,这里设置的是1-3秒
wait_time = between(1, 3)
# 设置接口地址,也可以用目标机器的ip,不一定要在脚本里设置,在ui界面上也会让你设置
# 如果在脚本中设置了,在ui界面上会自动显示脚本中设置的地址
host = 'http://apis.juhe.cn'
# 每个task执行前都会调用一次on_start,可以不写
def on_start(self):
print('test start!')
# 每个task执行结束后都会调用一次on_stop,可以不写
def on_stop(self):
print('test end!')
# task任务,可以理解成一个用户行为,或者真正的测试逻辑
# 对于每个运行的用户,locust都会创建一个greenlet(协程)
# 当多个task一起执行的时候,可以通过@task(3)传数字,用于设置task的权重,数字越大,被执行的几率越大
@task
def query_menu(self):
url = '/cook/query.php'
params = {'menu': '红烧肉',
'key': '9c1618d6f4065f52xxxx64a48c42418',
'dtype': 'json',
'pn': '1',
'rn': '2'}
response = self.client.get(url, params=params)
assert response.status_code == 200
ui模式执行
在dos中切换到脚本所在目录,执行命令:
locust -f locust_test.py
执行成功后会提示这些内容:
然后访问ui界面:
在界面上可以设置最大并发数、每秒启动并发数、host地址,其中每秒启动并发数是从0并发到最大并发之间爬坡的速度。
设置好后,就可以点击start按钮,然后会进入执行界面:
这个界面里有6个tab页面,默认是统计页面,显示的是具体的统计数据。
第二个是图表页面:
图表的数据来源就是统计页面中的数据。
第三个是失败用例展示页面,如果有失败的task,就会在这里进行展示统计:
第四个是异常展示页面,这里的异常区别与第三个失败,第三个是断言失败,这里是脚本直接报异常(exception):
第五个是执行率页面,会显示各个task的执行比例:
第六个是数据下载页面,提供了执行结果下载的按钮:
对于测试结果的传递提供了便利。
无ui模式运行
无ui模式,也就是命令行方式执行Locust,命令格式如下:
locust -f locust_test.py --no-web -c 100 -r 20 -t 120
# --headless:指定无 web UI模式
# -u:起多少 locust 用户(最大并发数)
# -r:指定每秒启动的用户数
# -t:脚本运行多少时间,单位s
执行结果:
指定配置文件运行
可以弄一个配置文件locust.conf,用于存放原来需要通过命令行传递的参数,类似这样:
# locust.conf
locustfile = locust_test.py
headless = true
users = 1
spawn-rate = 1
run-time = 1s
执行这个命令:
locust --config=locust.conf
执行结果其实和通过命令行传递参数没什么区别:
分布式运行
分布式运行这里通过命令行演示一下,其实通过配置文件也是可以运行的。
# master 启动命令,ui运行
locust -f locust_test.py --master
# 非web页面启动时,主节点等待子节点链接,子节点数量满足后才会执行
locust -f locust_test.py --master --headless --expect-workers=3
# slave 启动命令
locust -f locust_test.py --worker --master-host=192.168.56.1
FastHttpUser
当你的硬件无法满足你需要的测试环境(指定并发量)时,你可以尝试将前面继承的HttpUser换成FastHttpUser。
FastHttpUser和HttpUser在底层的实现上有点区别,但是都提供了非常相似的 API。FastHttpUser使用的 CPU 时间要少得多,有时可以将给定硬件上每秒的最大请求数增加 5 到 6 倍。
在同样的、相对理想的情况下,使用FastHttpUsers每个核心每秒可以处理接近5000个请求,而 HttpUser大约850个请求。
相关推荐
- Protel电路设计常用设计编辑器案例2——创建元件
-
#大有学问#今天介绍一下Protel常用设计编辑器的电气连接工具栏。单击主工具栏上的工具按钮或选择【查看】|【工具栏】|【配线工具栏】菜单命令可以关闭或打开【电气连接(WiringTools)】工具...
- Protel调整元器件的位置(1)——移动和对齐元器件
-
今天介绍调整元器件位置的方法。首先介绍移动和对齐元器件的方法。在绘制电路原理图时,放置完了的电路图可能位置不太合适,需要进行移动。原理图中的所有对象都可以被移动,移动方法相似。对于元器件的移动来说又分...
- 电路仿真软件详谈(八),proteus电路仿真软件和protel的区别
-
电路仿真软件是常用工具类型之一,proteus更是电路仿真软件中的佼佼者。但是对于proteus电路仿真软件和protel,二者总是被弄混淆。例如,protel是电路仿真软件吗?proteus电路仿真...
- PCB文件转换生产文件Protel 99SE_pcb格式转换
-
为何要将PCB文件转换为GERBER文件和钻孔数据?因为GERBER文件是一种国际标准的光绘格式文件,它包含RS-274-D和RS-274-X两种格式,其中RS-274-D称为基本GERBER格式,并...
- PCB设计项目教程 -PDF_pcb设计作品
-
PCB设计项目教程》及相关PCB设计教材详细介绍:一、核心教材《PCB设计项目教程》该教材由徐凯、王威担任主编,于2017年由北京理工大学出版社出版。其采用“项目导向、任务驱动”的教学模式,...
- 最受欢迎的pcb设计软件Protel99se到底怎么样?
-
Protel99se是一款国内非常实用且流行的设计行业的pcb设计软件,其由pcb原理图设计和多层板电路设计两大功能组成,其最大的特点是好获取,在网上可以随便的找到,且Protel99se软件适用于w...
- 人人都是网络雇佣兵,一种基于路由器的ddos平台设计思路
-
本文灵感来自于三个方面优酷路由宝,迅雷宝这种路由器流量兑现方式Anonymous匿名者的ddos方式传统木马ddos方案先说路由宝迅雷宝,这种以用户网络为节点的CDN网络中,会传输大量的流量,我上月优...
- 接口性能测试工具Locust介绍_接口和性能的测试要点
-
接口性能测试工具其实挺多的,小型有apache的ab工具,大型的有Jmeter、Locust......这里要介绍的是Locust,相对于Jmeter进行了比较完善的封装,Locust可以就显的更自...
- 华硕笔记本电脑安装系统实战心得体会
-
故障:某某的电脑叫人安装系统至一半就蓝屏死机.拿来给我安装,发现光驱无效,不能用光盘安装.电脑启动蓝屏.解决方法:用了半天时间安装也出现类似问题.后来考虑用U盘来装.1.首先制作U盘系统,把U盘资...
- dos命令systeminfo图文教程,显示操作系统配置信息msinfo32
-
大家好,我是老盖,首先感谢观看本文,本篇文章做的有视频,视频讲述的比较详细,也可以看我发布的视频。今天我们学习systeminfo命令,该工具显示本地或远程机器(包括服务包级别)的操作系统配置的信息,...
- 玩家展示现代硬件上运行的MS-DOS 拥有令人难以置信的向后兼容性
-
一位YouTuber展示了在现代计算机硬件上直接运行古老的MS-DOS操作系统和经典游戏的能力。这段视频由YouTuberInkbox发布,向观众展示了如何启动古老的、前Windows...
- 比微PE还干净还强大,带网络:USBOS V3.0超级PE装机工具20221031
-
期待已久的USBOSV3.0超级PE装机工具20221031又和大家见面了,用过的朋友都知道他的确很强大,对于新旧电脑的支持很好,目前为止还没有电脑不支持的,包括苹果PC。很多朋友还在用诸如大白菜、...
- 大童保险李晓婧:保险的本位是风险管理应在四方面进行建设
-
经济观察网记者姜鑫5月17日,大童保险服务宣布升级了风险管理模式,推出DOSM(DemandOriented,SolutionModel)需求导向型解决方案5.0版本。新解决方案从原有“六位...
- DOS常用命令及简介_dos常用命令大全及用法
-
DOS是英文DiskOperatingSystem的缩写,意思是“磁盘操作系统”。我是在95年开始学的电脑,当时学校的机房里,还没有一台WINDOWS操作系统的电脑,当时都是用DOS、UC-DOS...
- Windows 忘记开机密码?不用任何工具,1招轻松破解
-
出现忘记Windows密码的情况,概率有多大?对此,小电只能回答忘记开机密码的情况,说来就来,没有规律,也不会提前告诉你一声~而忘记Windows开机密码的时候,很多朋友都会想起可以使用u盘启动盘来破...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- 如何绘制折线图 (52)
- javaabstract (48)
- 新浪微博头像 (53)
- grub4dos (66)
- s扫描器 (51)
- httpfile dll (48)
- ps实例教程 (55)
- taskmgr (51)
- s spline (61)
- vnc远程控制 (47)
- 数据丢失 (47)
- wbem (57)
- flac文件 (72)
- 网页制作基础教程 (53)
- 镜像文件刻录 (61)
- ug5 0软件免费下载 (78)
- debian下载 (53)
- ubuntu10 04 (60)
- web qq登录 (59)
- 笔记本变成无线路由 (52)
- flash player 11 4 (50)
- 右键菜单清理 (78)
- cuteftp 注册码 (57)
- ospf协议 (53)
- ms17 010 下载 (60)