准备环境

1.安装Jmeter 2.安装Jenkins

3.安装JDK

4.jenkins配置JDK

系统管理-全局工具配置

jenkins执行maven clean jenkins执行jmeter脚本_测试计划


5.下载jmeter-plugins插件

下载jmeter-plugins插件JMeterPlugins-Standard-1.4.0.zip,解压后将其中的jar包拷贝至jmeter安装目录/lib/ext/目录。

这个插件的作用是,当通过no-GUI方式执行测试之后,将生成的测试结果文件*.jtl解析成图片的形式。

jenkins处理jmeter脚本

1.构建一个自由风格的项目

jenkins执行maven clean jenkins执行jmeter脚本_测试计划_02


2.配置项目构建生存期配置

jenkins执行maven clean jenkins执行jmeter脚本_jenkins集成jmeter_03


点击“Advanced”,配置jenkins运行结果文件的存放地址

jenkins执行maven clean jenkins执行jmeter脚本_测试报告_04


如果不在这里定义的workspace,那系统默认jenkins的workspace

构建触发器“H/30 * * * * ”表示30分钟执行一次

jenkins执行maven clean jenkins执行jmeter脚本_jenkins集成jmeter_05


构建环境如果之前执行过jmeter脚本,并且生成了测试报告文件,需要先删除

jenkins执行maven clean jenkins执行jmeter脚本_测试计划_06


或者通过shell脚本的方法,如下所示:

rm -rf /home/tester/jenkins_jmx/test_cas_01.jtl
rm -rf /home/tester/jenkins_jmx/test_cas_02.jtl

构建

点击增加构建步骤:execute shell 利用shell命令来批处理执行jmeter脚本

rm -rf /home/tester/jenkins_jmx/test_cas_01.jtl
rm -rf /home/tester/jenkins_jmx/test_cas_02.jtl
cd /app/apache-jmeter-5.0/bin
./jmeter -n -t /home/tester/jenkins_jmx/test_cas_01.jmx -r -l /home/tester/jenkins_jmx/test_cas_01.jtl && 
./jmeter -n -t /home/tester/jenkins_jmx/test_cas_02.jmx -r -l /home/tester/jenkins_jmx/test_cas_02.jtl
参数说明:

-n : 非GUI 模式执行JMeter
-t : 执行测试文件所在的位置及文件名
-r : 远程将所有agent启动用在分布式测试场景下,不是分布式测试只是单点就不需要-r
-l : 指定生成测试结果的保存文件, jtl 文件格式
-e : 测试结束后,生成测试报告
-o : 指定测试报告的存放位置
-o 指定的文件及文件夹,必须不存在 ,否则执行会失败,对应上面的命令就是resultReport文件夹必须不存在否则报错

jenkins执行maven clean jenkins执行jmeter脚本_java_07

构建后操作

要想将jtl文件生成测试报告,需要安装一个插件performance

jenkins执行maven clean jenkins执行jmeter脚本_测试计划_08


但是,我在下载插件的过程中,总是失败,所以,选择了插件上传的方式。

jenkins执行maven clean jenkins执行jmeter脚本_java_09


添加构建后操作,选择publish performace test result report

jenkins执行maven clean jenkins执行jmeter脚本_测试计划_10


点击保存,至此定时30分钟处理jmx脚本的jenkins项目就配置好了。

3.构建项目

查看是否能正常执行生成报告

jenkins执行maven clean jenkins执行jmeter脚本_测试计划_11


4.查看生成的图形报告

jenkins执行maven clean jenkins执行jmeter脚本_测试报告_12

配置过程遇到的问题

1.启动jmeter报错

启动 jmeter-server 服务时出现异常,系统提示如下:

Created remote object: UnicastServerRef2 [liveRef: [endpoint:[127.0.0.1:38577](local),objID:[-b703f17:169b3449ca7:-7fff, 7985153725079567134]]]
    Server failed to start: java.rmi.RemoteException: Cannot start. localhost.localdomain is a loopback address.
    An error occurred: Cannot start. localhost.localdomain is a loopback address.

jenkins执行maven clean jenkins执行jmeter脚本_测试报告_13


解决方法

方法1:通过终端命令指定来启动

[root@localhost ~]#cd /app/apache-jmeter-5.0/bin
[root@localhost bin]# ./jmeter-server -Djava.rmi.server.hostname=10.20.126.100

方法2:编辑jmeter-server文件,设置固定的代理服务器主机IP

[root@localhost ~]#cd /app/apache-jmeter-5.0/bin
[root@localhost bin]# vim jmeter-server

jenkins执行maven clean jenkins执行jmeter脚本_测试报告_14


验证是否启动成功启动jmeter

jenkins执行maven clean jenkins执行jmeter脚本_测试报告_15


查看jmeter进程

jenkins执行maven clean jenkins执行jmeter脚本_测试报告_16


2.jenkins构建项目报错:java.io.FileNotFoundException: rmi_keystore.jks (系统找不到指定的文件)

解决方法:

编辑jmeter的配置文件jmeter.properties

[root@localhost ~]# vim /app/apache-jmeter-5.0/bin/jmeter.properties

修改内容如下所示:

jenkins执行maven clean jenkins执行jmeter脚本_jenkins集成jmeter_17


重新启动jmeter,问题解决。

3.jenkins构建项目报错:java.net.ConnectException: 拒绝连接 (Connection refused)

Creating summariser <summary>
Created the tree successfully using /home/tester/jenkins_jmx/test_cas_01.jmx
Configuring remote engine: 127.0.0.1
Connection refused to host: 127.0.0.1; nested exception is: 
	java.net.ConnectException: 拒绝连接 (Connection refused)
Failed to configure 127.0.0.1
Stopping remote engines
Remote engines have been stopped
Error in NonGUIDriver java.lang.RuntimeException: Following remote engines could not be configured:[127.0.0.1]

解决思路:
思路1.没有安装系统资源监控插件ServerAgent,下载ServerAgent-2.2.1.zip,,并在被服务器上启动startAgent.sh
链接:https://pan.baidu.com/s/1ejxdRJyW_go4-b-DvY_3Dw 提取码:83wj

[root@localhost ~]# sh /app/ServerAgent-2.2.1/startAgent.sh

jenkins执行maven clean jenkins执行jmeter脚本_测试计划_18


如果启动之后,依旧报错,那么可以参考思路2

思路2.查看jmeter脚本,是否被赋予“执行”的权限

[root@localhost ~]# cd /home/tester/jenkins_jmx

jenkins执行maven clean jenkins执行jmeter脚本_java_19


果然,是两个jmeter脚本没有执行的权限

[root@localhost jenkins_jmx]# chmod a+x test_cas_03.jmx
[root@localhost jenkins_jmx]# chmod a+x test_cas_04.jmx

jenkins执行maven clean jenkins执行jmeter脚本_java_20


再次构建,问题解决。

4.jenkins构建项目报错:Error in NonGUIDriver java.lang.NullPointerException

这个问题真的是让人很无语的,因为关系到大家对于jmeter的熟悉程度了。

导致这个错误的原因是:

在保存jmeter脚本时,选择的是“保存为”,这种情况下,生成的测试脚本只是“线程组”下面的元素,而这种方式下保存的测试用例,不包括需要运行测试所需的“TestPlan”元素。

jenkins执行maven clean jenkins执行jmeter脚本_测试报告_21


解决方法:

在保存测试用例的时候,不要只保存某子元素,而是保存整个测试计划。直接点击工具栏上的“保存测试计划”按钮;或者在文件菜单中单击“保存测试计划”/“保存测试计划为”选项。

jenkins执行maven clean jenkins执行jmeter脚本_jenkins集成jmeter_22