1、前言
在软件开发的生命周期中,API
文档的自动生成以及接口的性能测试是提升开发效率和确保产品质量的关键步骤。随着smart-doc
工具在3.0.1
版本后新增了生成JMeter
性能压测脚本的能力,开发者可以更加便捷地完成这两项任务。本文将介绍如何利用smart-doc
和JMeter
进行有效的性能压测。
2、Smart-doc生成JMeter
生成 JMeter 脚本
使用 Smart-doc
生成 JMeter
性能压测脚本,可以大大减少性能测试脚本的编写时间,提升测试效率。Smart-doc
自动生成的 JMeter
脚本,可以直接在JMeter
中运行,无需经过复杂的配置和调试,让性能测试变得更加简单快捷。
首先,确保你的项目中已经包含了smart-doc
插件。然后,在项目的pom.xml
文件中配置smart-doc
插件的相关参数,例如:
<plugin>
<groupId>com.ly.smart-doc</groupId>
<artifactId>smart-doc-maven-plugin</artifactId>
<version>3.0.3</version>
<configuration>
<configFile>./src/main/resources/smart-doc.json</configFile>
<projectName>${project.description}</projectName>
</configuration>
<executions>
<execution>
<!--如果不需要在执行编译时启动smart-doc,则将phase注释掉-->
<phase>compile</phase>
<goals>
<!--smart-doc提供了html、openapi、markdown等goal,可按需配置-->
<goal>jmeter</goal>
</goals>
</execution>
</executions>
</plugin>
运行mvn -Dfile.encoding=UTF-8 smart-doc:jmeter
命令,smart-doc
将扫描项目源代码,提取注释信息,并自动创建相应的JMeter
性能压测脚本。
不熟悉使用可以查阅smart-doc
官方文档https://smart-doc-group.github.io/#/zh-cn/integrated/jmeter
导入JMeter 脚本
打开 JMeter
,点击 “File” -> “Open”,选择第一步生成的 JMeter
脚本文件,点击 “Start” 按钮,JMeter
就会开始按照脚本进行性能压测。
配置prometheus监控
Prometheus
是一款开源的监控和警告工具,用于处理时间序列数据。通过结合这两款工具,我们可以实现对 JMeter
测试过程的实时监控,从而提高性能测试的可观测性。
以下是实现步骤:
1. 安装 JMeter Prometheus 插件
首先,你需要在 JMeter
的lib/ext
目录下安装 Prometheus
插件。你可以从 JMeter Plugins Manager
或者官方网站 https://jmeter-plugins.org/ 下载插件。也可以从Github
下载,https://github.com/johrstrom/jmeter-prometheus-plugin/releases 。本次选择从Github下载最新的0.7.1
注意: JMeter
默认监听的IP地址是127.0.0.1
,默认会导致Prometheus
无法连接到 JMeter Prometheus
的监听端口,因此需要注意在jmeter.properties
里加个配置prometheus.ip=0.0.0.0
2. 在 JMeter 中配置 Prometheus 插件
打开 JMeter
,添加Prometheus Listener
到你的测试计划中。这可以通过右键点击"测试计划" -> “添加” -> “监听器”-> Prometheus Listener
来完成。
监听器的配置可以参考官方的配置,参考如下(smart-doc
支持配置添加生成Prometheus Listener
):
3. 配置 Prometheus
在Prometheus
的配置文件(prometheus.yml
)中,添加一个新的 scrape_config
来从 JMeter Prometheus
插件中抓取数据。例如:
scrape_configs:
- job_name: 'jmeter'
static_configs:
- targets: ['<Your JMeter machine IP>:9270']
其中, 是运行 JMeter
测试的机器的 IP
地址,9270
是 JMeter Prometheus
插件的默认监听端口。
4. 启动JMeter
本文中为了方便验证,压测时线程组设置为“无限循环” ,可根据实际需求去调整。
启动成功后, JMeter Prometheus
会默认在本地创建一个端口为9270
的服务。
访问网址:http://localhost:9270/metrics 看到如下内容就说明成功了
5. 启动 Prometheus
启动Prometheus
,Prometheus
将开始从 JMeter Prometheus
插件中抓取数据。如下图配置和启动成功后能在Prometheus
中看到设置的target
6. 配置Grafana
到Grafana
官网,查找官网提供的prometheus-jmeter
监控面板。这里选用ID
为14927
的模版导入到Grafana
中。
点击Load之后选择Promethues
数据源。
注意: 测试中发现14927
原始模版存在一些错误,本文编写过程中做了修复,需要的同学可以通过下面链接下载修复后的模版导入:
https://github.com/smart-doc-group/smart-doc-demo/blob/master/jmeter/grafana-template/jmeter-prometheus-14972.json
模版导入成功后我们就可以在Grafana
中看到整个性能压测的监控数据了。
为了大家可以快速的感受整个的压测流程,smart-doc
社区也整理提供一个采用docker-compose
一键启动体验的模版。如果想通过k8s
部署来体验,也可以借助一些国内大模型AI工具直接把docker-compose
的模版转化成k8s
部署模版。
体验项目中也包含使用说明
3、Smart-doc在性能压测实践中的优点
使用 Smart-doc
与 JMeter
的组合进行性能压测,有以下几个优点:
自动化:Smart-doc
可以自动从源码中提取 API
信息,自动生成 JMeter
性能压测脚本,无需手动编写,大大提高了效率。
精确: Smart-doc
自动生成的JMeter
性能压测脚本,与源码中的 API
定义完全保持一致,避免了手动编写脚本时可能出现的错误。
灵活:Smart-doc
支持多种配置选项,可以根据测试需求定制生成的 JMeter
脚本。
后续smart-doc也会持续完善对JMeter的支持优化。请持续关注smart-doc开源项目:
https://github.com/TongchengOpenSource/smart-doc
4、总结
通过结合smart-doc
和JMeter
,我们不仅可以自动化生成API
文档,还能快速创建性能测试脚本并进行压测。这种集成的工作流程显著提高了开发和测试效率,同时帮助团队更容易地维护和优化软件系统的性能。希望本文为你提供了实用的参考,以便在日常工作中更加高效地应用这两个强大的工具。
我们也欢迎大家持续关注和支持smart-doc
开源社区,未来我们也在探索更多语言的支持,为更多开发者赋能提效。
共同学习,写下你的评论
评论加载中...
作者其他优质文章