Locust 接口性能测试 - 转载一 (后期熟悉实践自己出一套完整的)
转载大佬 ,。。
另外一篇:https://www.cnblogs.com/imyalost/p/9758189.html
记录一下接口性能测试的学习
先熟悉一下概念:
Locust是使用Python开发的支持分布式的一款开源压力测试工具,Locust在测试时,会产生大量的用户对系统进行访问,每个用户的行为是通过Python代码控制的,并且整个测试过程可以在Web的UI界面实时观察测试数据。
Locust在单台机器上能够支持几千并发用户访问,Locust内部采用了协程gevent,通过采用分布式的方式,理论上Locust工具能够模拟无数的用户。
1.安装locust:直接$ pip install locustio 即可
安装的过程中会安装其他一些依赖的库,不要慌张,安装结束如上图,查看是否安装可以用 locust -h 来验证,当现实各种命令就是安装成功了!
2.安装完成后开始来写一个性能测试脚本
解释一下:baiduy_page()方法表示一个用户行为,使用@task修饰该方法是一个事务,client.get()用于指定请求路径,因为是百度首页所以用‘/’指定为根路径
websiteuser类用于设置性能测试
task_set :定义一个用户行为类
min_wait :执行事务之间用户等待时间的下界(ms)
max_wait: 用户等待时间的上界
下面来启动性能测试:
-f :指定性能测试脚本文件
--host :指定被测试应用的url地址,注意,访问百度使用的是https协议
然后通过该浏览器访问 http://127.0.0.1:8089 locust默认使用8089端口
如图所示:
啊啊啊啊,报错啊,没解决呢,愁死了!默认是8089端口,我改成别的端口还是不行!下班吧!回家思考一下!
3.昨天下班没解决的问题今早搞定啦,不知什么原因,地址输入localhost:8089端口就可以了,有时候就是这么简单:如下图:
number of user to simulate:设置模拟的用户数
hatch rate :每秒产生的虚拟用户数
输入用户数100,每秒产生10
下面作解释一下:
type: 请求类型
name: 请求路径,这里是百度首页,https://www.baidu.com
requests: 当前请求的数量
fails:当前请求失败的数量
median: 中间值,单位毫秒 一半的服务器响应时间低于该值,另一半高于该值
average: 平均值,单位ms 所有请求的平均响应时间
min: 请求服务器最小响应时间 ms
content size : 单个请求的大小,单位字节
reqs/sec: 每秒钟请求的个数
总结:由于这是百度首页的测试,性能需求不明,服务器配置未知,没有分析的必要!
下面拿自己公司的后台管理系统作一个简单的性能测试:
这是脚本内容
所有的操作都要先登录,所以先写一个on_start方法定义了每个用户开始做的第一件事
@task方法装饰的是一个事务
下面启动执行:
此时打开localhost:8089 查看:
这就是我司的后台的测试结果:
进入charts查看折线图:
然后我又把用户数设置为1000,每秒启动20,但是,但是,,此时,我司的后台管理系统就挂掉了,我了割草啊,吓死我了。吓得我赶紧关掉locust,尼玛,吓了我一身冷汗!哎
由此可以看出我司的后台管理系统还是比较渣渣的哈!
php写的,不过这件事只有我自己知道,哈哈哈!好了,这次的练习就到此为止吧!有机会再继续学习locust!
讲解到这里小伙伴应该都会用了;locust做简单的性能测试了啊,有不明白的可以加群,一起学习!
最后附上一个大牛写的关于locust的东西,值得深入学习,有机会仔细阅读!
以下部分为2018年8月9日更新!
由于我司下期项目要新增一个直播的模块,直播嘛想想就只到要做压力测试啦,所以今天把locust有稍微研究了下(半天时间),因为手上有项目不能耽误太久时间!
今天我要做的就是课程的详情页。就是模拟多人并发请求这个课程的详情页,也就相当于同时多个人进入这个课程.
当一切准备就绪时开始执行locust -f locustfile2.py --host=xxx 后一直给我报错,说找不到一个叫common的模块。我一想不对呀,怎么会找不到呢,因为我在locust文件中导入我的公共模块都是正常的啊,为什么执行报错呢?百思不得解!
最后在一边文章中看出了一些端倪:https://www.jianshu.com/p/ec210fd6ca4b
所以我特地根据这个改了一下我的项目结构(真够奇葩的)
把locust文件和要导入用到的文件圈放在根目录,然后执行命令
居然这就成功了,我也是醉了,对于这块我觉得可能是locust对于文件层级目录还是有要求的!还需要好好研究!
还有一种方法就是这种结构:
下次尝试吧!!
————————————————
版权声明:本文为CSDN博主「xgh1951」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xgh1951/article/details/80511365