​测试开发干货分享:locust压测带你小试牛刀

测试开发干货分享:locust压测带你小试牛刀

locust简介

locust是一个基于python的开源的性能测试框架,一个易于使用的基于事件的分布式用户负载工具。

优点是并发高,即一个locust节点也可以在一个进程中支持数千并发用户,资源占用小,不使用回调,通过gevent使用轻量级过程。缺点是报告简陋,如果想得到详细的报告内容则需要使用人员进行定制的二次开发,不支持资源监控。

Python通过yield提供了对协程的基本支持,但是不完全。而第三方的gevent为Python提供了比较完善的协程支持。gevent是第三方库,通过greenlet实现协程,其基本思想是:

当一个greenlet遇到IO操作时,比如访问网络,就自动切换到其他的greenlet,等到IO操作完成,再在适当的时候切换回来继续执行。由于IO操作非常耗时,经常使程序处于等待状态,有了gevent为我们自动切换协程,就保证总有greenlet在运行,而不是等待IO。

注意:使用gevent,可以获得极高的并发性能,但gevent只能在Unix/Linux下运行,在Windows下不保证正常安装和运行。

locust与jmeter3的区别

工具

区别

jmeter

需要在UI界面上通过选择组件来“编写”脚本,模拟的负载是线程绑定的,意味着模拟的每个用户,都需要一个单独的线程。单台负载机可模拟的负载数有限

locust

通过编写简单易读的代码完成测试脚本,基于事件,同样配置下,单台负载机可模拟的负载数远超jmeter

安装locust

前提:已经搭建安装好python环境,查看是否安装命令:python --version

1.1 安装locust,直接pip安装,打开终端输入:pip install locust

1.2 安装完毕后,验证是否安装成功的命令:locust --version

操作步骤

第一步:以下创建一个简单的demo程序进行测试,此处我将该程序命名为:locust file.py,并且放在D盘根目录下。

# -*- coding: utf-8 -*- # @Time:2022/4/30 17:45 # @Author: xiaodong from locust import HttpUser,task import logging class point(HttpUser):  @task  def login(self): logging.captureWarnings(True) palyed2 = {"email": "org589", "password": "Abc12345"} # https请求添加verify response=self.client.post(f'/api/auth/login/',json=palyed2,verify=False) # 断言 if response==200: response.success() else: response.failure('Failed!') # 在5-15秒区间内随机取值 wait_time = between(5, 15)

相关参数介绍如下:

①@task:是添加一个task的最简单的方式,相当于jmeter中的http sampler。如果使用的是@task(n),n代表的是weight,用于指定task执行的比率,也即权重。

②wait_time:User类中包含一个可选项wait_time,用于设置在每个task运行之后的等待时间,如果不设置wait_time,会马上执行下一个task。

更多详细参数可查阅:

https://blog.csdn.net/Telfort/article/details/114686675

第二步:直接进入文件所在路径,以下有3种方式进入该路径:

(1)windows打开cmd窗口,命令为:cd D:\locust file.py

(2)linux打开terminal

(3)pycharm等编码工具打开terminal,也即控制台

第三步:在terminal中输入以下命令,启动Locust服务。

(1)打开GUI界面

locust -f locustfile.py locust -f locustfile.py --host=https://xxx.com

--host:被测试的url

通过浏览器访问localhost:8089,即可通过简易的web界面输入一些目标测试参数,并执行测试,实时展示相关测试结果。

执行测试完毕后,结果展示如下:

(2)无GUI界面

locust -f locustfile.py --headless -u 100 -r 10 -t 10s  --csv=result --html=report.html

--headless 表示不启动界面

-u [数量] 设置虚拟用户数

-r [时间] 每秒钟启动虚拟用户数

-t [时间] 设置测试多长时间

----秒,数字后面加上 s ,例如 10s

----分钟,数字后面加上 m,例如 1m

----小时,数字后面加上 h,例如 1h

--csv:保存csv报告,默认会保存4个,如下图

--html:保存HTML格式报告

如果感觉不错的话麻烦点个关注,跪谢,欢迎关注我们的公众号:橙好测试开发!

相关推荐

​“李陵碑”一个现实与理想的缩影

​“李陵碑”一个现实与理想的缩影

187

“李陵碑”一个现实与理想的缩影 李陵碑是中国历史上一个重要的文化遗迹,它不仅承载着一个将领的传奇故事,更是对西汉时期历史背景的真实反映。李陵,这位西汉名将,因其卓越...

​宋丹丹小品中的经典语录,满满的回忆(上)

​宋丹丹小品中的经典语录,满满的回忆(上)

65

宋丹丹小品中的经典语录,满满的回忆(上) 宋丹丹老师是家喻户晓的小品演员,她曾多次登上春晚舞台,创作了无数个经典小品,陪伴了一代人的成长,直到今天,她的小品还经常被...

​您有一份最新最权威的反传销攻略,请查收

171

您有一份最新最权威的反传销攻略,请查收 “ 传销的危害不言而喻, 2017年因求职而误入传销组织的大学生李某某, 还没来得及灿烂的生命定格在了23岁。 如今传销这个毒瘤又盯上了...

​“羊毛群”出没,“花式”炒金风险暗藏

​“羊毛群”出没,“花式”炒金风险暗藏

106

“羊毛群”出没,“花式”炒金风险暗藏 “群里每天发礼金券,十点开抢,手慢无!”在一个“黄金羊毛交流群”里,群助手正在分享低价买黄金攻略。 今年年初以来,黄金市场行情...

​中国县市旅行第173篇——河北省.行唐县

​中国县市旅行第173篇——河北省.行唐县

117

中国县市旅行第173篇——河北省.行唐县 一、行唐简介 行唐县,地处河北省西南部,县境西北部属于太行山浅山区,东南部则是华北平原的西缘,总面积966平方千米。 行唐县内主要河流...

​带你走进夏季皮炎的“前世今生”

​带你走进夏季皮炎的“前世今生”

197

带你走进夏季皮炎的“前世今生” 中医称夏季皮炎为暑热疮,是由于夏季炎热而引起的一种季节性炎症性皮肤病。在持续的高温、高湿环境下很容易发病,每年6月到8月是夏季皮炎的高...

​“谣言”变“谣盐”?再谈“抢盐”风波

​“谣言”变“谣盐”?再谈“抢盐”风波

79

“谣言”变“谣盐”?再谈“抢盐”风波 这两天,和“日本启动福岛核废水排海计划”同时冲上热搜的,还有各地疯狂“抢盐”的行为,“抢盐”已不是什么新词了,似乎每一次世界遭...

​江苏·泰州·兴化

​江苏·泰州·兴化

132

江苏·泰州·兴化 兴化市是江苏泰州管辖下的县级市,著名的鱼米之乡,江苏省历史名城,国家卫生城市,全国百强县,全国环保模范城市,中国农村综合百强县(市),工业百强县(市)...