测试开发系列(功能+接口+性能+自动化)
性能测试资源下载链接
Locust是一个开源的性能测试工具,主要思想就是模拟一群用户访问你的系统。
安装命令:
pip install locustio==0.12.2
某系统包含以下接口:
实现步骤:
locust里发送请求是基于requests实现的,请求方法、参数、响应对象和requests使用方式一样。
def index(l):
l.client.get("/index")
def login(l):
l.client.post("/login", data={
"username": "admin", "password": "123456"})
定义一个用户行为(任务集),包含多个具体的任务。
from locust import TaskSet
class UserBehavior(TaskSet):
tasks = {
index: 3, profile: 1}
def on_start(self):
login(self)
def on_stop(self):
logout(self)
如何定义?
一个用户行为类,要继承TaskSet类,表示一个任务集
on_start:前置方法(前置任务),在所有任务之前调用
on_stop:后置方法(后置任务),当任务集停止时调用
tasks:用来添加任务,它是一个dict类型,key表示任务的方法名,value表示挑选执行的权重,数值越大执行频率越高
定义一个Locust类,这个类代表用户。
from locust import HttpLocust
class WebsiteUser(HttpLocust):
task_set = UserBehavior
min_wait = 2000
max_wait = 3000
host = "http://182.92.81.159:1880/bms"
weight = 10
如何定义?
自定义的Locust类继承了 HttpLocust 类,这个类代表用户,生成一个实例,模拟用户发送http请求
task_set:该属性指向 TaskSet 类,定义用户的行为
min_wait:用户执行任务之间等待时间的下界,单位:毫秒,默认值:1000
max_wait:用户执行任务之间等待时间的上界,单位:毫秒,默认值:1000
host:被测应用的网址,例如:http://localhost:8080/bms
weight:用户被选中的概率,权重越大,被选中的机会就越大。默认值:10
from locust import HttpLocust, TaskSet
def login(l):
l.client.post("/login", data={
"username": "admin", "password": "123456"})
def logout(l):
l.client.post("/logout")
def index(l):
l.client.get("/index")
def profile(l):
l.client.get("/profile")
class UserBehavior(TaskSet):
tasks = {
index: 3, profile: 1}
def on_start(self):
login(self)
def on_stop(self):
logout(self)
class WebsiteUser(HttpLocust):
task_set = UserBehavior
min_wait = 5000
max_wait = 9000
host = "http://182.92.81.159:1880/bms"
运行命令:
locust -f locust_files/my_locust_file.py --host=http://example.com
参数介绍:
-f:用来指定locust文件所在路径
--host:用来指定测试应用的网址
使用上面的命令行启动Locust之后,打开浏览器并访问:http://localhost:8089 (如果你在本地运行Locust)。可以看到如下界面
参数说明:
Number of users to simulate:要模拟的用户数量
Hatch rate (users spawned/second):孵化率(用户生成/秒),即每秒启动虚拟用户数
点击Start swarming 开始运行性能测试
效果展示:设置虚拟用户数10,每秒启动2个用户,点击Start swarming 开始运行
界面说明:
Type:请求类型
Name:请求路径
Requests:当前请求的数量
Fails:当前请求失败的数量
Median (ms):中间值,单位毫秒,一半服务器响应时间低于该值,而另一半高于该值
Average (ms):所有请求的平均响应时间,毫秒
Min (ms):请求的最小的服务器响应时间,毫秒
Max (ms):请求的最大服务器响应时间,毫秒
Average size (bytes):平均单个请求的大小,单位字节
Current RPS:每秒钟请求的个数
点击Edit可以编辑请求用户数
点击STOP按钮可以停止测试
点击New test可以重新开始测试
三个图标分别是:
Total Requests per Second:每秒发送请求数
Response Times(ms):平均响应时间
Number of Users:虚拟用户数