前言
最近项目上由于上线初期没有很好的进行压力,故项目验收阶段需要对项目进行重新压力测试。由于供应商采用的Jmeter进行压力测试,且压测人员没有很好的掌握压力测试场景脚本编写和把握导致压测一直延期,特此需求一款简容易上手的压测软件“黑羽压测软件”。
软件介绍
官方地址:http://www.python3.vip/doc/tutorial/hyload/01/
特点
黑羽压测 这款工具的特色是: 简单易用、性能强悍、灵活性高 。
-
简单易用
点击就可以产生 测试代码模板,修修改改 就能进行测试
-
性能强
单机可达 每秒 一万个请求,并发连接数可达 数万
-
灵活性高
使用Python代码编写测试场景,可以灵活适应各种测试需求。
下载
具体地址详见官方文档,我目前下载的版本,1.3.3。具体安装过程很简单,不做过多介绍了。
压测脚本制作
定义客户端
# 定义客户端行为,点击右边条目,可自动插入功能代码
# 创建客户端
client = HttpClient('127.0.0.1:7777', # 目标地址:端口
timeout=10 # 超时时间,单位秒
)
response = client.sendAndRecv(
'POST',
'/demo/login',
# 通过headers传入指定消息头
headers={
'Auth-Menu':'/login'
},
# 通过json传入指定json格式的消息体参数
json={
"reqData" : {"loginName" : "admin","password" : "admin"}
}
)
print(f"响应状态码为 {response.status} ")
定义性能场景
# 定义性能场景,点击右边条目,可自动插入代码
createClientsAndKeep(
'client-1', # 客户端名称
100, # 客户端数量
0.01, # 启动间隔时间,秒
)
以上100客户端在0.01秒内全部启动完成,并保持持续发送请求
压力情况监控
数据文件统计
token/cookie
# 导入产生md5的库
import hashlib
m = hashlib.md5()
# 创建客户端
client = HttpClient('127.0.0.1',
timeout=10
)
# 发送请求1
response = client.sendAndRecv(
'GET',
"/getopcode")
# 获取opcode
opcode = response.json('utf8')['opcode']
# 传入md5源数据
m.update(opcode.encode())
# 产生哈希值的十六进制表示
opcode-md5= m.hexdigest()
# 发送请求2
response = client.sendAndRecv(
'POST',
"/bugdevice",
json={
'opcode-md5':opcode-md5,
'action':'bug_sword'
})