跳转至

hyload 使用方法

请点击此处,边看讲解视频,边学习下面的内容

检查响应中的数据

性能测试,我们不能只是检查是否收到了响应就行了。

我们还需要检查响应消息对不对。

要检查HTTP响应消息是否正确,就是检查 各个部分 是否正确,比如状态码、响应消息头、消息体等等。

这些 hyload 有响应的自动代码生成条目, 如下

比如,你要检查响应消息的状态码,如下图箭头处,点击 响应状态码

image

在当前光标处,会自动产生 如下

response.status_code

我们就知道了 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')

最后一行代码:

    Stats.one_error('/api/mgr/signin 状态码不是200')

也可以通过点击 代码助手的 报告一个错误 条目产生。


hyload代码 检查到 服务端响应数据 有错,就应该记录下来。

Stats.one_error 是告诉hyload控制台,有错误,这样会在统计图里面显示出一个错误统计。

如果该方法传入参数, 参数就是同时需要记录到日志文件里面的信息。


有时,即使没有错误,也需要额外写入日志一些信息。

可以通过点击 代码助手的 写入日志文件 条目,产生如下的代码

TestLogger.write('这里写日志信息')

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 导入的方法。


比如下面这个性能测试用例

测试 10 管理员同时执行如下操作

- 打开首页进行登录浏览客户第一页

- 3秒后浏览药品第一页

具体操作请看视频讲解。

监控主机的系统资源占用

在性能测试的时候,我们往往需要监控 被测服务 主机的 CPU/内存/磁盘IO 使用情况,并且需要在测试结束时产生 性能图表。

这些目前有很多工具,比如 nmon, glances 这些。

但是这些要么太复杂(安装依赖的包特别多),要么没有测试期间资源监控数据保存功能。

hyload 自带了监控工具脚本完成这些工作

具体的操作,请观看讲解视频。


其中, SSH密钥登录的设置原理,参考这个教程

分布式运行压力测试

有时,我们被测系统在远程,hyload控制台界面直接发起本地加压,离被测系统太远,不适合做压力源。

这时,可以 部署hyload 到多台远程Linux机器上。


另外,如果被测系统的性能指标特别高, 需要有更多的测试机器,同时给被测系统加压力。

这时,我们可以 部署hyload 到多台远程Linux机器上,分布式运行压力测试。

具体的操作,请观看讲解视频。