接口性能测试工具Locust介绍

接口性能测试工具Locust介绍接口性能测试工具其实挺多的 小型有 apache 的 ab 工具 大型的有 Jmeter Locust 这里要介绍的是 Locust 相对于 Jmeter 进行了比较完善的封装 Locust 可以就显的更自由一些

欢迎大家来到IT世界,在知识的湖畔探索吧!

接口性能测试工具其实挺多的,小型有apache的ab工具,大型的有Jmeter、Locust… …

这里要介绍的是Locust,相对于Jmeter进行了比较完善的封装,Locust可以就显的更自由一些。

简介

Locust是一个开源的、易于使用、可编写脚本且可扩展的性能测试工具。

工具优点

Locust被很多公司认可并使用,具有以下优点:

  • Locust使用python编写,可以在常规的python代码中定义用户的行为;
  • 用户脚本可以串行方式编写,Locust会通过轻量级进程/协程产生并发,无需自己做并发编程;
  • 用它可以模拟百万级的并发用户访问你的系统,支持分布式运行,使用gevent支持协程处理,单个进程可以处理数千个并发用户,并且开销低;
  • 带有web用户界面,实时显示测试进度,甚至可以在测试运行时更改负载;
  • 也可以在没有UI的情况下运行,易于CI/CD测试。

安装

Locust的安装非常简单,直接使用pip命令就行:

pip install locust

欢迎大家来到IT世界,在知识的湖畔探索吧!

安装后,使用这个命令可以检验安装是否成功:

欢迎大家来到IT世界,在知识的湖畔探索吧!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中切换到脚本所在目录,执行命令:

欢迎大家来到IT世界,在知识的湖畔探索吧!locust -f locust_test.py

执行成功后会提示这些内容:

接口性能测试工具Locust介绍

脚本启动成功



欢迎大家来到IT世界,在知识的湖畔探索吧!

然后访问ui界面:

接口性能测试工具Locust介绍

ui界面

在界面上可以设置最大并发数、每秒启动并发数、host地址,其中每秒启动并发数是从0并发到最大并发之间爬坡的速度。

设置好后,就可以点击start按钮,然后会进入执行界面:

接口性能测试工具Locust介绍

执行界面

这个界面里有6个tab页面,默认是统计页面,显示的是具体的统计数据。

第二个是图表页面:

接口性能测试工具Locust介绍

图表页面

图表的数据来源就是统计页面中的数据。

第三个是失败用例展示页面,如果有失败的task,就会在这里进行展示统计:

接口性能测试工具Locust介绍

失败统计页面

第四个是异常展示页面,这里的异常区别与第三个失败,第三个是断言失败,这里是脚本直接报异常(exception):

接口性能测试工具Locust介绍

异常统计页面

第五个是执行率页面,会显示各个task的执行比例:

接口性能测试工具Locust介绍

执行率页面

第六个是数据下载页面,提供了执行结果下载的按钮:

接口性能测试工具Locust介绍

下载页面

对于测试结果的传递提供了便利。

无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介绍

无ui执行结果

指定配置文件运行

可以弄一个配置文件locust.conf,用于存放原来需要通过命令行传递的参数,类似这样:

欢迎大家来到IT世界,在知识的湖畔探索吧!# locust.conf locustfile = locust_test.py headless = true users = 1 spawn-rate = 1 run-time = 1s

执行这个命令:

locust --config=locust.conf

执行结果其实和通过命令行传递参数没什么区别:

接口性能测试工具Locust介绍

执行结果

分布式运行

分布式运行这里通过命令行演示一下,其实通过配置文件也是可以运行的。

欢迎大家来到IT世界,在知识的湖畔探索吧!# 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个请求。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/138713.html

(0)
上一篇 39分钟前
下一篇 4分钟前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信