视频讲解

点击下方链接,观看 讲解视频

https://www.bilibili.com/video/av60089015/

动机

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

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

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

大家有问题可以到白月黑羽官方网站 http://www.python3.vip 反馈。

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

特点

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

  • 简单易用

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

  • 性能强

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

下载地址

最新版本下载地址在官方网站  http://www.python3.vip/doc/tutorial/hyload/01/

安装过程

下载的是一个 自解压安装程序,直接拷贝到安装目录(比如 d:\tools 目录)下,双击打开,就会解压出一个 HyLoad_1.x.x 的目录。

进入该目录,双击可执行程序HyLoad.exe,即可运行 黑羽压测。

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

快速开始

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

第1步 创建项目

HyLoad 的界面如下图所示

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

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

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

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

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

点击左边菜单栏 这里,

定义单个客户端行为。

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

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

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

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

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

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

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

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

大家可以按照上面的箭头所示,依次从上到下,点击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')} ")

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

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

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

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

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

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

第3步 定义性能测试场景

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

]

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

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

如下所示

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

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

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

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

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

监控统计

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

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

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

  • rps , 每秒发送请求数

  • tps , 每秒接收响应数

  • eps, 每秒错误响应数

  • tops, 每秒超时请求个数

  • avgresptime, 每秒平均响应时长

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

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

]

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

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

黑羽压测 比 jmeter、locust、loadrunner 更简便,性能更强的更多相关文章

  1. 黑羽压测 做 API接口功能测试

    做功能测试 黑羽压测 是一款性能测试工具,但是我们也可以使用它,很方便的做 API接口功能测试 . 点击下方链接,观看 讲解视频 https://www.bilibili.com/video/av60 ...

  2. HTTP 2.0 之压测工具 Jmeter

    年后,德国总部工业平台要做中国本地化,德国的同事过来给我们展示日志的时候,无意间看到了他们应用日志里的 HTTP/2,下意识到,原来他们都已经提供Http 2.0的服务了. 那么问题来了,除了h2lo ...

  3. 压测工具 jmeter入门教程及汉化修改

    Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件.相比Loadrunner而言,JMeter小巧轻便且免费,逐渐成为了主流的性能测试工具,是每个测试人员都必须要掌握的工 ...

  4. 压测工具-Jmeter

    server压力测试首选: Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域. 1 JMet ...

  5. python压测工具Locust

    python压测工具Locust Locust介绍 Locust作为基于Python语言的性能测试框架. 其优点在于他的并发量可以实现单机10倍于LoadRunner和Jmeter工具.他的工作原理为 ...

  6. JMeter分布式压测实战(2020年清明假期学习笔记)

    一.常用压力测试工具对比 简介:目前用的常用测试工具对比 1.loadrunner 性能稳定,压测结果及颗粒度大,可以自定义脚本进行压测,但是太过于重大,功能比较繁多. 2.Apache ab(单接口 ...

  7. Jmeter让压测随时做起来(转载)

    为什么要压测 这个问题问的其实挺没有必要的,做开发的同学应该都很清楚,压测的必要性,压力测试主要目的就是让我们在上线前能够了解到我们系统的承载能力,和当前.未来系统压力的提升情况,能够评估出当前系统的 ...

  8. JMETER并发压测-自定义不同请求参数

    背景 虽然可以请求相同的接口做测试,但是请求参数每次都是相同的.为了模拟不同的用户,请求不同的参数,所以要自定义参数来做多线程并发压力测试. 点赞再看,关注公众号:[地藏思维]给大家分享互联网场景设计 ...

  9. 【Java分享客栈】未来迈向高级工程师绕不过的技能:JMeter压测

    前言 因为工作需要,久违的从自己的有道云笔记中去寻找压测相关的内容,翻开之后发现还不错,温故一遍后顺便整理出来分享给大家. 题外话,工作8年多,有道云笔记不知不觉都6G多了,扫一眼下来尽是云烟过往,竟 ...

随机推荐

  1. Scintilla开源库使用指南

    http://www.cnblogs.com/superanyi/archive/2011/04/07/2008636.html http://download.csdn.net/detail/den ...

  2. How to Capture the Integer-Divide-By-Zero Error in C++(提前定义信号)

    How to Capture the Integer-Divide-By-Zero Error in C++? MANUAL CAPTURE The simple and straightforwar ...

  3. c#编写的基于Socket的异步通信系统封装DLL--SanNiuSignal.DLL

    SanNiuSignal是一个基于异步socket的完全免费DLL:它里面封装了Client,Server以及UDP:有了这个DLL:用户不用去关心心跳:粘包 :组包:发送文件等繁琐的事情:大家只要简 ...

  4. 微信公众号开发系列-13、基于RDIFramework.NET框架整合微信开发应用效果展示

    1.前言 通过前面一系列文章的学习,我们对微信公众号开发已经有了一个比较深入和全面的了解. 微信公众号开发为企业解决那些问题呢? 我们经常看到微信公众号定制开发.微信公众平台定制开发,都不知道这些能给 ...

  5. spring3升级到spring4通用异常处理返回jsonp多了/**/的解决办法

    问题描述 在spring3中定义了通用的异常处理,具体代码如下: public class CommonExceptionHandler implements HandlerExceptionReso ...

  6. java集合框架collection(2)ArrayList和LinkedList

    ArrayList是基于动态数组实现的list,而LinkedList是基于链表实现的list.所以,ArrayList拥有着数组的特性,LinkedList拥有着链表的特性. 优缺点 ArrayLi ...

  7. vue+element——父级元素fixed,遮罩会在上方

    前言 这种场景还是蛮场景的 一个共用的head组件,组件里面通常是当前系统登录账号名 退出登录 修改密码这样的弹框 但是现在我又想head不跟着main内容上下滑动.所以用了fixed 定位. 问题来 ...

  8. CSS样式规范

    一般团队都有对CSS样式的规范,因为只有写的规范些,维护层本低,易懂.我们开发并不一次性的,往往都是要迭代的,如果这次随便写,下次迭代的时候将付出高昂的代价.而团队的规范一般都大同小异,往往都包含一下 ...

  9. Python自学day-6

    一.编程范式       编程:程序员用特定的语法.数据结构和算法告诉计算机如何执行任务的过程.实现任务有很多不同的方式,根据编程方式的特点进行归纳总结出来的编程方式类别,就叫编程范式.大多数语言只支 ...

  10. mysql索引结构

    mysql中索引的数据结构: 1.基本上所有的索引都是B-Tree结构,一部分还有HASH索引. 2.索引分类(功能) 主键索引:一张表中最多有一个主键索引,而且该字段值不能为NULL,不能重复. 唯 ...