视频讲解

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

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. QT 序列化/串行化/对象持久化

    本文以一个实例讲解Qt的序列化方法: Qt版本 4.8.0 Qt序列化简介 Qt采用QDataStream来实现序列化,QT针对不同的实例化对象有不同的要求.这里主要分两类,即:QT中原生的数据类型, ...

  2. 微软Skype实时口译增加中文

    直击现场 在机器翻译技术上,微软的 Skype 业务也算是行业内名列前茅.日前其实时口语翻译技术再次跃升一个台阶,新增了对中文(普通话)的翻译支持. 据美国科技新闻网站 TheVerge 报道,此前, ...

  3. 实现js与Qt程序的交互(使用QtWebkit)

    在QtWebkit的javascript里访问QObject的最关键的关键就是下面这个方法: void QWebFrame::addToJavaScriptWindowObject ( const Q ...

  4. qt截获html请求(继承QNetworkAccessManager和QNetworkReply)

    QtWebkit加载html页面,html中会有很多的请求,比如<img id="testImg" src="http://*.jpg" width=&q ...

  5. c# Lambda扩展

    扩展类 public static class LinqExtensions { /// <summary> /// 创建lambda表达式:p=>true /// </sum ...

  6. python文件及路径管理函数

    glob模块 说明: 1.glob是python自己带的一个文件操作相关模块,用它可以查找符合自己目的的文件,就类似于Windows下的文件搜索, 支持通配符操作 *.?.[] 这三个通配符,*代表0 ...

  7. python trojan development 2nd —— use python to send mail and listen to the key board then combine them

    请勿用于非法用途!!!!!本人概不负责!!!原创作品,转载说明出处!!!!! from pynput.keyboard import Key,Listener import logging impor ...

  8. 视频直播:Windows中各类画面源的截取和合成方法总结

    当今,视频直播技术和实时音视频技术已经是很多行业必备,典型的应用场景有教育直播.远程视频会议.互联网娱乐等.在移动端发起直播,其画面源的种类是十分有限的,无非是取摄像头.截屏等.PC端由于其系统资源充 ...

  9. JS中 【“逻辑运算”,“面试题:作用域问题”,“dom对象”】这些问题的意见见解

    1.逻辑运算 ||  &&  ! ||:遇到第一个为true的值就中止并返回 &&:遇到第一个为false的值就中止并返回,如果没有false值,就返回最后一个不是fa ...

  10. 23 | 知其然知其所以然:聊聊API自动化测试框架的前世今生