实际上这不是3步,而是3层-每一层都在帮测试脚本升级:从一个人用鼠标点来点去,到脱离手动、批量执行,再到Jenkins自动调度全自动运行。
准备环境
所有工具都依赖Java环境(JDK 1.8+兼容性最好,建议选1.8版本)。
分别安装并配置环境变量:
JMeter:设置JMETER_HOME为安装途径,在PATH中添加%JMETER_HOME%\bin
Ant:设置ANT_HOME为解压途径,在PATH中添加%ANT_HOME%\bin
测试是否成功安装:命令行分别输入jmeter -v和ant -version,能看到版本信息即配置成功
打通JMeter和Ant
Ant本身不知道JMeter的存在需要帮它们牵线搭桥:
拷贝jar包:将JMeter安装目录/extras/ant-jmeter-1.1.1.jar复制到Ant安装目录/lib/下,这样Ant运行时才能找到触发JMeter脚本所需的JMeterTask类
修改配置:打开JMeter安装目录/bin/jmeter.properties,将jmeter.save.saveservice.output_format=csv改为xml并去掉前面的#注释符,保证测试结果以.xml格式保存
避坑:配置完必须重新打开命令行终端测试,环境变量才能生效。否则Ant运行时可能会因找不到jmeter而导致创建失败。
用build.xml把JMeter脚本管起来
build.xml是Ant的配置文件,用它定义执行什么JMX脚本、结果放哪儿、怎么生成报告等任务。
编写build.xml配置
xml
<?xml version="1.0" encoding="utf-8"?>
<project name="Jmeter-Ant-Test" default="all" basedir=".">
<!-- 时间戳:保证每次生成的报告文件名唯一 -->
<tstamp>
<format property="time" pattern="yyyyMMddHHmmss" />
</tstamp>
<!-- 指定JMeter安装途径(必须和你的实际途径一致)[reference:4] -->
<property name="jmeter.home" value="C:\Program Files\apache-jmeter-5.5" />
<!-- 定义结果和报告的存放途径 -->
<property name="jmeter.result.jtl.dir" value="D:\JmeterTest\result\jtl" />
<property name="jmeter.result.html.dir" value="D:\JmeterTest\result\html" />
<!-- 报告文件名(带时间戳) -->
<property name="ReportName" value="TestReport" />
<property name="jmeter.result.jtlName"
value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
<property name="jmeter.result.htmlName"
value="${jmeter.result.html.dir}/${ReportName}${time}.html" />
<!-- 批量执行所有测试脚本 -->
<target name="all">
<antcall target="test" />
<antcall target="report" />
</target>
<!-- 执行JMeter测试脚本(这一步把JMX脚本跑起来) -->
<target name="test">
<!-- 注册JMeter Task,让Ant认识JMeter[reference:5] -->
<taskdef name="jmeter"
classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
<jmeter jmeterhome="${jmeter.home}"
resultlog="${jmeter.result.jtlName}">
<!-- 批量执行script目录下所有.jmx脚本 -->
<testplans dir="D:\JmeterTest\script" includes="*.jmx" />
</jmeter>
</target>
<!-- 将.jtl原始文件转换为.html报告(便于人看) -->
<target name="report">
<xslt in="${jmeter.result.jtlName}"
out="${jmeter.result.htmlName}"
style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" />
</target>
</project>
以上配置是基础的批量执行和报告生成流程。
批量执行和报告生成
批量执行:<testplans dir="D:\JmeterTest\script" includes="*.jmx" />一行代码,Ant就会自动跑完script目录下所有.jmx脚本,特别适合回归测试场景-写完多个用例,一次命令全部跑完
报告美化:默认的报告样式比较简陋,可以下载jmeter.results.shanhe.me.xsl(即 shanhe(山河)美化模板)替换上述build.xml中的style属性,获得带有详细图表、请求明细和JSON格式化展示的美化版报告
发送邮件:在build.xml中添加<mail>任务,Ant执行完毕后自动将报告以邮件形式发送给相关成员
参数动态传递:如果要在执行时动态修改线程数、循环次数等参数,在JMX脚本中使用${__P(threads,1)}引用参数,Ant中通过<jmeter>标签内的<property>子标签传递-Jthreads=10即可
Jenkins配置让测试任务每天自己跑
安装必要的Jenkins插件
登录Jenkins → 系统管理 → 插件管理,搜索并安装:
Performance Plugin:分析JMeter的.jtl结果文件,生成趋势图、响应时间、错误率等可视化报表
HTML Publisher Plugin:在Jenkins创建页面中直接展示美化后的HTML报告(如下图)
Email Extension Plugin(可选):邮件通知,当测试失败或性能标准异常时自动告警
Git Plugin(可选):从Git仓库拉取测试脚本和build.xml,便于团队协作
工具配置
Jenkins需要知道Ant安装在哪里。进入系统管理 → Global Tool Configuration(全局工具配置),找到Ant区域,点击新增Ant,输入一个名称(如Ant-1.9.7),并指定Ant安装途径,Jenkins后续创建时会自动识别。
新建任务并配置创建触发
在Jenkins仪表板点击新建任务,输入任务名称,选择Freestyle project
源码管理:如果使用Git版本控制,填入仓库地址和认证信息
创建触发器:设置定时任务(如每天早上8点执行)或Git Webhook触发(代码提交后自动测试)
创建步骤:添加创建步骤,选择Invoke Ant(调用Ant)。在Targets输入框填写all(即在build.xml中default="all"对应的target组合)。高级选项中配置Ant Version—选择在全局工具配置中设置的Ant版本(如Ant-1.9.7)
Post-build Actions创建后操作:
添加Publish HTML Report(发布HTML报告):HTML目录指向你build.xml中定义的结果存放目录
添加Publish Performance test result report:设置.jtl文件途径,Jenkins会自动生成性能趋势图表
可选:添加Editable Email Notification配置邮件模板,测试完成后自动发送报告
创建前建议在创建步骤中添加执行Shell/Windows批处理命令,用于清理上次测试遗留的旧报告,避免历史数据干扰。
整个流程跑通后就完成了三层自动化升级
第一层:JMeter,编写接口测试脚本(.jmx文件),用手动点的方式录制脚本
第二层:Ant,通过build.xml批量执行JMX + 生成HTML报告,把手动点变成敲一行ant命令
第三层:Jenkins,定时/按需调度Ant来执行测试,把人敲命令变成机器自动跑
当团队规模扩大、测试脚本增多时,可进一步将build.xml和脚本提交至Git仓库统一管理,创建前Jenkins自动拉取最新代码。同时在Post-build阶段引入DingTalk Plugin,创建完成后将成功率、耗时等标准直接推送至群,实现更及时的测试反馈。