Locust接口性能测试
前言:
locust完全基于python语言,采用pure python描述测试脚本,并且http请求完全基于requests库。除了http/https协议外,locust还可以测试其他协议的系统,只需采用python调用对应的库进行请求描述即可,an open source load testing tool
locust与lr、jmeter的区别:
locust的并发机制摒弃了进程和线程,采用协程(gevent)的机制,协程避免了系统级的资源调度,因此可以大幅提高单机的并发能力
locust的安装:
可以在cmd或pycharm里的Terminal里pip install locust,当我们在安装locust时,它会检测我们当前的python环境是否已经安装了这些库,如果没有安装,那么它会先把这些库一一装上,并且对这些库版本有要求,有些是必须等于某版本,有些是大于某版本,检查是否安装成功,打开cmd或pycharm里的Terminal里输入locust --help,回车,会把所有的命令都列出来,安装的过程中会看到gevent>=1.2.2,flask>=0.10.1,msgpack>=0.4.2,six>=1.10.0,requests>=2.9.1,pyzmq>=16.0.2
gevent:在python中实现协程的一个第三方库,协程又称微线程,使用gevent可以获得极高的并发性能
flask:python的一个web开发框架,他与django的地位相当
msgpack:一种快速、紧凑的二进制序列化格式,适用于类似json的数据
six:它提供了一些简单的工具用来封装python2和python3之间的差异性
pyzmq:如果你打算把locust运行在多个进程/机器,建议你安装pyzmq
requests:使用该库来做http接口测试
下面对公司的一个接口压测的例子,文件名是locust_test.py,脚本代码如下:
首先启动性能测试服务,在pycharm里的运行代码,启用服务,端口号是8089
-f:指定性能测试脚本文件
--host:指定被测试应用的主机地址,注意访问销售易crm使用的https协议
接下来,通过浏览器访问localhost:8089,就可以看到locust页面。如下图:
Number of users to simulate:设置模拟用户数
Hatch rate(users spawned/second):每秒产生(启动)的虚拟用户数
Host:就是要压测的url
输入模拟用户数和每秒产生的虚拟用户数,单击Start swarming按钮,开始运行性能测试,这个是通过浏览器测试的形式,可以通过测试场景设计的时间长度运行
也可以点击Edit更改虚拟用户数和每秒启动用户数,点击成功后弹窗:
可以对两个文本框进行修改,增加用户数,也可以不更改,直接Close该弹窗
压力测试时间足够后,需要手动点击STOP按钮,结束压力测试,状态变成STOPPED
1、Type:请求的类型,例如GET/POST
2、Name:请求的路径,这里为销售易生产环境首页
3、Requests:当前已完成的请求数量
4、Fails:当前失败的请求数量
5、Median:响应时间的中间值,即50%的响应时间在这个数值范围内,单位毫秒
6、90%ile:根据正态分布,90%的响应时间在正态分布平均值下方,即小于这个值,
7、99%ile:根据正态分布,99%的响应时间在正态分布平均值下方,即小于这个值,
8、Average:平均值,单位毫秒,所有请求的平均响应时间
9、Min:最小响应时间,单位毫秒
10、Max:最大响应时间,单位毫秒
11、Average Size:平均每个请求的数据量,单位为字节
12、Current RPS(requests per second):每秒钟处理请求的数量,即RPS
13、Current Failures/s:当前每秒失败的请求数量
这是Statistics里面的展示,也可以看一下Charts、Failures、Exceptions、Tasks和Download Data
Charts里的图表:
Failures里的图表(因为压测过程中没有报错,所以Failures里为空):
Exceptions里的图表(因为压测过程中没有报异常,所以Exceptions里为空):
Tasks里的图表,如下图:
Download Data里的图表,如下图:
Download Data里有4个,3个CSV文件和1个报告,可以下载到本地查看