hyload 使用方法
检查响应中的数据
性能测试,我们不能只是检查是否收到了响应就行了。
我们还需要检查响应消息对不对。
要检查HTTP响应消息是否正确,就是检查 各个部分
是否正确,比如状态码、响应消息头、消息体等等。
这些 hyload 有响应的自动代码生成条目, 如下
比如,你要检查响应消息的状态码,如下图箭头处,点击 响应状态码
在当前光标处,会自动产生 如下
我们就知道了 response.status 就是从响应中获取状态码的。
所以我们就可以写出如下代码
from hyload import *
client = HttpClient()
# 发送请求
response = client.send('POST',
'http://127.0.0.1/api/mgr/signin3',
data={'up':'123'},
debug = True
)
# 检查状态码,必须是200
if (response.status_code != 200):
print('状态码不是200,本次操作无法继续')
# 汇报错误,加入统计结果中,日志写入详细信息,方便性能测试定位问题
Stats.one_error('/api/mgr/signin 状态码不是200')
最后一行代码:
也可以通过点击 代码助手的 报告一个错误
条目产生。
hyload代码 检查到 服务端响应数据 有错,就应该记录下来。
Stats.one_error
是告诉hyload控制台,有错误,这样会在统计图里面显示出一个错误统计。
如果该方法传入参数, 参数就是同时需要记录到日志文件里面的信息。
有时,即使没有错误,也需要额外写入日志一些信息。
可以通过点击 代码助手的 写入日志文件
条目,产生如下的代码
TestLogger.write()
是立即把错误信息写入测试日志中(日志文件在项目目录的log文件夹中)。
写日志功能 非常有用
:
- 可以方便开发人员定位问题
比如 出现错误时,可以写入详细的错误信息,请求消息的sessionid号, 对应的用户id,设备号等。
这样开发人员就可以根据 日志中的信息 定位产品的问题。
- 还可以灵活的添加统计信息,实现各种特殊的需求
比如,要统计整个测试过程中 响应时长 的各种范围,以及各范围内 API请求数量和对应的用户
就可以自行添加如下代码:
response = client.send('GET', "/api/mgr/signin")
rt = response.response_time # 获取响应时长
if rt > 1000: # 大于1秒
TestLogger.write(f'API list_order >1s|{username}')
elif rt > 500: # 大于0.5秒
TestLogger.write(f'API list_order >0.5s|{username}')
elif rt > 100: # 大于0.1秒
TestLogger.write(f'API list_order >0.1s|{username}')
elif rt > 50: # 大于0.05秒
TestLogger.write(f'API list_order >0.05s|{username}')
在测试结束后, 分析测试日志,即可得知。
怎么分析日志? 写Python程序啊,数据文件分析是Python最擅长的了,请看白月黑羽Python基础教程
前后消息数据关联
模拟性能测试的过程中,经常需要将 前面一个响应消息的一些数据 进行处理传入到后续的请求中。
比如,我们的bysms系统, 要创建一个订单,必须先创建一个客户和药品
而创建订单的API接口里面要使用 创建客户和药品返回的: 客户ID 和 药品ID。
这就涉及到前后消息数据的关联。
hyload是用代码实现测试的,并且有取出响应数据的代码助手。
所以数据关联非常的简单,请大家根据视频讲解学习。
您需要高效学习,找工作? 点击咨询 报名实战班
点击查看学员就业情况
抓包导入场景
前面讲解了使用 hyload 做API服务的压力测试的做法。
那如果不仅仅是 API服务, 而是一个网站, 怎么做压力测试呢?
当然也可以针对某个测试用例, 在浏览器开发者工具栏,查看出系统中产生了哪些HTTP请求对系统产生的压力。
但是由于 HTTP请求的数量往往比较多, 这样手工一个个创建比较麻烦。
这时可以采用 浏览器导入请求文件, hyload 导入的方法。
比如下面这个性能测试用例
具体操作请看视频讲解。
监控主机的系统资源占用
在性能测试的时候,我们往往需要监控 被测服务 主机的 CPU/内存/磁盘IO
使用情况,并且需要在测试结束时产生 性能图表。
这些目前有很多工具,比如 nmon, glances 这些。
但是这些要么太复杂(安装依赖的包特别多),要么没有测试期间资源监控数据保存功能。
hyload 自带了监控工具脚本完成这些工作
具体的操作,请观看讲解视频。
其中, SSH密钥登录的设置原理,参考这个教程
分布式运行压力测试
有时,我们被测系统在远程,hyload控制台界面直接发起本地加压,离被测系统太远,不适合做压力源。
这时,可以 部署hyload 到多台远程Linux机器上。
另外,如果被测系统的性能指标特别高, 需要有更多的测试机器,同时给被测系统加压力。
这时,我们可以 部署hyload 到多台远程Linux机器上,分布式运行压力测试。
具体的操作,请观看讲解视频。