Jmeter 作为一个老牌测试工具,有着很强大的功能和其他工具无法比肩的可扩展性。每当遇到一个新的测试场景或者测试工具,我都会去尝试一下使用 Jmeter 去实现。后续有可能的话我会出一个系列来介绍其他测试工具的功能如何使用 Jmeter 实现,给喜欢“简约法则”的朋友们多一个选择。
一、安装
Jmeter 安装与配置
Jmeter 运行依赖 JDK 环境,安装 Jmeter 之前需要先安装JDK。JDK的安装配置方式在此就不再介绍。
Jmeter 在 MacOS 下可以直接使用 Homebrew 进行安装,在终端中执行 brew install jmeter 即可。也可以从官网下载最新版本的 binary包 进行安装:
wget https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.4.1.tgz
tar -zxvf apache-jmeter-5.4.1.tgz
安装完成后需要配置一下Jmeter环境变量:
# JMETER_HOME 是Jmeter根目录的路径 我的长这样:~/apache-jmeter-5.4.1
export JMETER_HOME=path/to/jmeter_home
export PATH=$JAVA_HOME/bin:$PATH:.:$JMETER_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar
然后在终端输入Jmeter
即可打开 Jmeter GUI界面。
Jmeter gRPC Request 插件安装
插件安装有两种方式,选择其一即可:
- 使用 Jmeter Plugins Manager
- 下载 plugins-manager.jar 放到JMETER_HOME下的 lib/ext 目录下并重启 Jmeter (已安装可跳过此步):
cd $JMETER_HOME/lib/ext
curl -L https://jmeter-plugins.org/get/ -o ./jmeter-plugins-manager-1.6.jar
- 点击菜单栏 Options 菜单中的 Plugins Manager ,选择 Available Plugins ,搜索
Jmeter gRPC Request
并勾选第一项,等待安装完毕后点击Apply Changes and Restart Jmeter
,等待 Jmeter 重启即可。
当然如果你也像我一样在公司内网得到一个下图这样报错的话,请看 Plan B 。
- 自己通过 Github 下载链接 下载插件将 jar 包放在 lib/ext 目录下并重启 Jmeter 。
cd $JMETER_HOME/lib/ext
wget -k https://github.com/zalopay-oss/jmeter-grpc-request/raw/master/dist/bin/jmeter-grpc-request-1.1.2.jar
二、配置和使用
创建请求
-
右键测试计划,添加一个线程组。
-
右键新添加的线程组,添加一个 gRPC 请求。
-
配置 gRPC请求:
必填字段:
| | |
|–|–|
| | |
字段 | 字段解释 |
---|---|
Server Name or IP gRPC | 服务器的域名或者 ip |
Port Number gRPC | 服务运行在的端口 |
Proto Root Directory | proto 文件所在的文件夹路径(路径下可以存在多个 proto 文件) |
Full Method | 被测方法,选择 proto 文件夹后可通过下拉列表选择 |
Deadline | 请求超时时间,超时会收到DEADLINE_EXCEEDED异常,默认1000ms |
Send JSON Format With the Request | JSON 格式的请求入参,根据方法定义的结构传入。 |
发起及分析请求
- 在线程组下新增两个常用监听器 查看结果树 和 聚合报告。建议将线程组名修改为服务名,请求名修改为被测方法名:
- 使用
⌘ + R
/Ctrl + R
或者点击工具栏的运行按钮执行请求。 - 使用监听器查看请求的响应数据、执行时间等指标。
三、为什么 Jmeter
市面上也有不少其他优秀的 gRPC 调试或测试工具(BloomRPC/grpcui/gRPCurl
等),各有其千秋。那么 Jmeter 的优势体现在哪里呢?我总结为以下几点:文章来源:https://www.toymoban.com/news/detail-620389.html
- 工具复用。Jmeter 作为常用测试工具,直接使用它避免了我们多安装一个单独的 gRPC 工具。
- 性能测试。Jmeter 本身支持并发、参数化以及请求性能数据的收集,可以用来做 gRPC 的性能测试。
- 可扩展性。Jmeter gRPC 请求完美兼容 Jmeter 自带的各种前后置处理组件,可以像处理 http 请求一样使用各种前置处理器进行数据准备,然后使用各种后置处理器进行数据的后置处理和提取,有较强的可扩展性。
- 断言功能。Jmeter gRPC 请求完美兼容 Jmeter 自带的各种断言组件,适合配合各种参数化工具进行 gRPC 的自动化测试。特别是在功能重构的时候,可以把老版本的请求结果作为断言,验证新版本是否引入了 bug,非常实用。
- 脚本持久化。可以向 http 请求的脚本一样,把待测请求脚本写好保存下来,供后续使用。
当然,在 gRPC 调用上,对比其他工具 Jmeter 当前也有一些缺点。比如: - 依赖 proto 文件却又不能像 BloomRPC 一样提供请求入参示例。
- 异常查看不方便,需要依赖控制台的日志。
- 受限于 Jmeter 本身的功能,在一个脚本中单独执行某个请求时需要把其他请求禁用。
- 不能像 Jmeter http 请求一样设置请求默认值,处理域名更换这种需求会比较麻烦(当然这可以配合用户自定义变量解决)。
所以这里也只是提供另外一种选择给,工作中还是根据自己的实际需求去选择适合自己的工具。
参考资料:
https://github.com/zalopay-oss/jmeter-grpc-request文章来源地址https://www.toymoban.com/news/detail-620389.html
到了这里,关于【Jmeter】Jmeter的gRPC调用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!