黑羽压测 HyLoad

动机

目前市场上对API接口做性能测试工具有 Jmeter、LoadRunner、AB、Locust等。

白月黑羽用过之后,觉得它们各有优点和不足,总体不是很满意。

所以 决定 开发一款免费的性能测试工具,希望集上面这些工具的优点,提供给大家使用。并且根据大家的反馈 不断的改进。

于是就有了 这款 HyLoad ,中文名叫 黑羽压测

特点

黑羽压测 这款工具,立足 简单易用 和 性能强 两个特性。

  • 简单易用

    点击就可以产生 测试代码模板,修修改改 就能进行测试

  • 性能强

    单机可达 每秒 一万个请求,并发连接数可达 数万

下载地址



  • 或者访问百度网盘:

https://pan.baidu.com/s/1c6AVTqx0gWVqdBEk7w6sgw

提取码:f4br

安装过程

安装非常简单,双击安装程序,就会自行安装了。

安装好以后,黑羽压测 会自行启动。

黑羽压测 需要 监听获取性能统计数据,所以初次启动,Windows会有防火墙提示,如下,选择允许即可。

image

快速开始

HyLoad做性能测试通常分为如下几步:


第1步 创建项目

HyLoad 的界面如下图所示

image

这个界面 就是让用户选择或者创建项目的。

HyLoad 项目 就是一个目录,里面包含了性能测试的定义文件。

点击 界面 新建项目 按钮,在弹出界面 输入 项目的 目录名, 并且为项目选择上级路径。比如,下图所示

image


点击确定,上方就会出现当前的项目路径,如下所示

image


第2步 定义单个客户端行为

点击左边菜单栏 这里,

image

定义单个客户端行为。

性能测试是 模拟 大量的客户端 大批量的发送请求消息 给 被测的服务器。

那么,其中每个 客户端的行为 是怎样的? 需要我们先定义好。

单个客户端行为定义好 以后, 我们在第3步只要指定产生 多少个 这样的客户端就可以了。


首先,我们点击这里,添加一个客户端的行为定义。

image

这样会创建一个名为 act-1 的客户端的行为定义文件。


客户端的行为定义 其实就是一段 Python代码。

不会写Python代码的小朋友们,不用害怕,我们的工具会帮你自动产生代码哦。

点击右边的这些栏目,就会产生 对应的代码。

image

大家可以按照上面的箭头所示,依次从上到下,点击3个条目,就会产生如下所示的代码

# 创建客户端     
client = HttpClient('127.0.0.1', # 目标地址:端口
                    timeout=10    # 超时时间,单位秒
                       ) 

# 发送 GET 请求
response = client.sendAndRecv(
    'GET',        # 请求方法 GET/POST/PUT/DELETE等
    "/api/path1"  # 请求URL
    )
        
print(f"消息体字符串为 {response.string('utf8')} ") 

显然,这是创建 客户端、发送请求给服务器、获取服务器响应消息体内容(如果是json格式的话)。

注意,点击右边条目的时候,代码会插入在当前光标处,所以务必注意光标在编辑窗口中的位置。


我们以新浪的股票接口为例,它的API 服务 url是 http://hq.sinajs.cn/list=sh601006

最后list的值是股票代码。

那么我们只要简单修改一下上面自动生成的代码,如下所示,注意注释的解释

# 目标地址改为新浪服务器地址
client = HttpClient('hq.sinajs.cn', 
                        timeout=10
                       ) 

response = client.sendAndRecv(
    'GET',        
    "/list=sh601006"  # 请求URL修改
    )

# 由于服务端返回的json格式数据是gbk编码
# 所以改为gbk
print(f"消息体字符串为 {response.string('gbk')} ") 

这就是 客户端行为定义, 做好了以后,点击 右上方的运行按钮,就会先执行一下单个用户的测试。

工具会打开终端窗口,运行该代码, 结果如下

image


当然,我们做性能测试,一个客户端,通常也是要反复地发送消息,这时,可以选择循环发送请求,

image

然后,修改一下代码,变成下面这样

client = HttpClient('hq.sinajs.cn', 
                        timeout=10
                       ) 

while True:
    response = client.sendAndRecv(
        'GET',
        "/list=sh601006", # 修改url
        duration=1 # 接收到响应后等待,确保本操作耗时1秒
    )

这样的修改,就是要求这个客户端每隔一秒钟,发送一个 HTTP请求 给被测的服务器。


第3步 定义性能测试场景

单个客户端定义好了, 要做性能测试,只要点击左侧菜单栏这里,定义性能测试场景

image

同样,点击下图处,添加一个性能场景定义。

image

然后,点击这里,插入 创建10个客户端 的示例代码

image

如下所示

# 定义性能场景,点击右边条目,可自动插入功能代码

createClient(
    'act-1', # 客户端名称
    10,      # 启动客户端数量
    0.1      # 每隔多少秒,启动一个客户端
    )

当然,你可以自行修改客户端的数量。

这里,如果就是10个客户端,每个客户端每秒发送一个请求,10个客户端就是每秒10个请求。

随后,点击右上角运行按钮,就会打开一个窗口,按照我们的定义,运行该 性能测试了。如下

image


监控统计

点击左边菜单栏的 监控统计 图标,可以查看本次性能测试的实时监控,如下所示

image


如果你想结束本次性能测试,只需要关闭 运行性能测试的命令行窗口即可。

等整个性能测试结束,通常你需要产生这次性能测试的 统计图表,包括如下数据的图表

  • rps , 每秒发送请求数

  • tps , 每秒接收响应数

  • eps, 每秒错误响应数

  • tops, 每秒超时请求个数

  • avgresptime, 每秒平均响应时长

这些统计数据, 都保存在项目的目录中的数据文件里面。

只需要点击 数据文件统计 按钮,然后选择刚刚产生的数据文件(文件名就是当前日期时间),如下所示

image

这样,就会产生统计图,如下所示

image

你可以点击上图箭头处,将统计图最终存为图片,方便放到测试报告中。



视频讲解



扫码分享给朋友,一起学更有动力哦




下一页