今天整理了一下jmeter测试脚本配置到Jenkins执行的步骤,以便查阅。
我用的是win10 64位系统,jmeter为5.2.1版本,Jenkins为2.190.3版本;已提前配置好JAVA环境变量。
一、Jmeter测试脚本
1. 新建线程组
在测试计划的右键菜单中点击【Thread Group】,新建一个线程组;
命名,并设置线程组的参数(我使用的默认参数)。
2. 创建http请求
在线程组的邮件菜单中点击【HTTP Request】,创建一个http请求;
命名,填写http的协议及IP端口,选择请求方式get或post等,输入URL的上下文,在参数下方点击【add】,添加参数名称及参数值,并输入content-type。
在URL或parameter中若需使用自带函数作为参数,如时间戳,可用${__time(,)}调用
3. 获取接口返回值作为变量
在http请求的右键菜单中点击【JSON Extractor】,
输入要创建的变量的名称,以及要获取的json中值的路径($.token表示获取json中key为token的value值),在URL或parameter中使用时,用${token}调用。
选择断言的内容,选择匹配方式,点击【add】添加期望值。下图中,我选择了响应码,匹配方式选择了matches,期望内容为200,表示只有获取的响应码与我预期值200完全一致时断言才通过;
下图中我选择了响应文本,当响应文本中包含期望的文本内容时,断言即为通过。
5. 执行并查看结果
可在线程组右键菜单中点击【View Results Tree】【Assertion Results】【Summary Report】,添加查看结果树,断言结果,简要报告
点击【start】可开始执行,点击【clear】可清除当前的结果;执行后,即可查看结果
6. 保存脚本并执行
保存测试计划到指定路径,它是一个jmx文件。
在cmd中,进入jmeter所在路径cd D:/Program Files/apache-jmeter-5.2.1/bin/,执行以下命令,在指定路径生成测试结果test.jtl,及测试报告html文件:
**********************************************
jmeter.bat -n -tE:/JmeterData/serverServerLogin.jmx -l E:/JmeterData/report/test.jtl -e -oE:/Jm eterData/html
**********************************************
注意要保证test.jtl当前不存在,且html的文件夹是空的,不然会报错
二、接入Jenkins
1. 创建项目并配置
在Jenkins中创建一个自由风格的项目,并命名;
点击【构建】,选择【Execute Windows batch command】,输入以下命令(生成的文件无法覆盖,要先删除指定路径下的文件,避免因为指定路径不为空而报错):
**********************************************
del E:\JmeterData\report\test.jtl
rmdir /s/q E:\JmeterData\html
mkdir E:\JmeterData\html
cd D:/ProgramFiles/apache-jmeter-5.2.1/bin/
jmeter.bat -n -t E:/JmeterData/serverServerLogin.jmx-l E:/JmeterData/report/test.jtl -e -o E:/JmeterData/html
**********************************************
2. 集成html报告
在Jenkins中点击【构建后操作】,选择【Publish HTML reports】,填写html报告的位置、名称及集成到Jenkins后报告的名称
3. 执行测试并查看报告
在项目首页上点击【build now】,待执行完毕后,即可点击报告查看
4. html报告无法加载css问题
查看报告时,发现未加载css文件,导致数据丢失,如下:
解决方法是打开【Manage Jenkins】-【Script Console】,输入以下命令,点击【执行】
**********************************************
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")
**********************************************
这样再执行测试,生成的报告就可以加载css了,如下:
至此,一个jmeter脚本接入Jenkins自动化测试的简单示例完成。
这种方式有一个缺点,无论jmeter的用例是否通过,Jenkins构建的结果都是SUCCESS,若想知道用例通过结果还需要打开报告查看。无法直接通过Jenkins构建的状态获得用例通过结果,感觉这样不太方便。