Locust 接口性能测试

记录一下接口性能测试的学习

先熟悉一下概念:

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做简单的性能测试了啊,有不明白的可以qq问我,970185127,一起学习!

最后附上一个大牛写的关于locust的东西,值得深入学习,有机会仔细阅读!

以下部分为2018年8月9日更新!

由于我司下期项目要新增一个直播的模块,直播嘛想想就只到要做压力测试啦,所以今天把locust有稍微研究了下(半天时间),因为手上有项目不能耽误太久时间!

今天我要做的就是课程的详情页。就是模拟多人并发请求这个课程的详情页,也就相当于同时多个人进入这个课程.

当一切准备就绪时开始执行locust -f locustfile2.py --host=xxx 后一直给我报错,说找不到一个叫common的模块。我一想不对呀,怎么会找不到呢,因为我在locust文件中导入我的公共模块都是正常的啊,为什么执行报错呢?百思不得解!

最后在一边文章中看出了一些端倪:https://www.jianshu.com/p/ec210fd6ca4b

所以我特地根据这个改了一下我的项目结构(真够奇葩的)

把locust文件和要导入用到的文件圈放在根目录,然后执行命令

居然这就成功了,我也是醉了,对于这块我觉得可能是locust对于文件层级目录还是有要求的!还需要好好研究!

还有一种方法就是这种结构:

下次尝试吧!!

猜你喜欢

转载自blog.csdn.net/xgh1951/article/details/80511365