这篇文章介绍jenkis jmeter的持续集成,利用jenkins定时任务去批处理执行jmeter的jmx脚本文件,而且生成测试报告web
1:jmeter的安装这里我就不在赘述了,若有问题可参考个人jmeter系列博文之-jmeter命令行运行-单节点和jmeter命令行运行-分布式测试shell
2:若是jmeter是单节点部署的,那么jenkins的安装只需安装在jmeter所在的单节点机器上便可;若是jmeter要进行分布式测试,那么将jenkins安装在jmeter的master所在机器上便可apache
这里我以分布式测试为例进行讲解,个人jmeter的master机器为134.64.14.95机器,jenkins安装只须要安装在该机器上便可浏览器
3:jenkins安装,下载tomcat和jenkins包,上传到master机器(134.64.14.95),这里给出个人云盘地址:http://pan.baidu.com/s/1nuCbopz 密码:dxeztomcat
解压缩tomcat包,而后将jenkins.war放到tomcat目录webapps文件夹下网络
4:修改tomcat的conf/server.xml配置文件(3处端口号和一处utf-8编码)app
5:保存后,启动tomcat,日志打印会给出admin用户的密码以及密码存储文件的路径webapp
5:启动tomcat后,在浏览器中打开网址:http://134.64.14.95:50002/jenkins分布式
在密码栏输入以前日志中给出的密码或打开对应路径下的文件也能够找到密码内容:41a4494785314e62ae7c48bc9e292cce性能
输入密码后点击下一步,会让你选择是配置网络插件仍是跳过,这里咱们选择跳过
而后选择继续使用admin用户,完成jenkins启动的准备工做,点击start using jenkins
这样咱们就进入了jenkins的页面:
6:在jenkins页面配置jdk,进入系统管理-Global Tool Configuration中,点击新增JDK按钮,去掉自动安装前面的勾选框,此时会显示别名和JAVA_HOME
7:新建job,构建一个自由风格的项目,名称为:jenkins_jmeter_test
8:配置job,上图点击ok后,会跳转到job的配置页面
这里我将我想要执行的jmx脚本都放在了自定义的工做空间中/home/tester/jenkins_jmx
在jenkins页面execute shell栏输入shell命令,注意这里根据须要修改路径和jmx以及jtl文件路径及名称:
1 cd /home/tester/apache-jmeter-3.0/bin
2 ./jmeter -n -t /home/tester/jenkins_jmx/crm_test_20.jmx -r -l /home/tester/jenkins_jmx/crm_test_20.jtl && ./jmeter -n -t /home/tester/jenkins_jmx/crm_test_10.jmx -r -l /home/tester/jenkins_jmx/crm_test_10.jtl
下载该插件,在jenkins界面中系统管理-管理插件下,在管理插件页面点击高级,在高级页面,找到上传插件栏,上传该插件
安装完成后重启tomcat,而后在首页中,进入刚刚保存的job中继续继续job构建后操做
添加构建后操做,选择publish performace test result report
选择后,页面会出现关于该项的一系列信息,选择performance report为jmeter
输入全部测试结果的存放地址: **/*.jtl,并勾选上展现 throughput 图标框
点击保存,这样一个定时15分钟批量处理jmx脚本的jenkins的job就配置好了。
8:验证job,配置完成后咱们能够点击当即构建,看该任务是否能正常执行生成报告
观察build history栏下面会出现一个构建任务,而且闪烁和出现滚动条进度信息,待滚动条完成且任务不在闪烁,表明任务执行完成,点击该任务进入该次构建,点击console output能够看到该次构建控制台的日志信息
这样就实现/home/tester/jenkins_jmx路径下的脚本批量执行,咱们能够去看生成的测试报告:性能趋势图中会展现每一个jtl的趋势图包括吞吐量、响应时间、错误率
点击last report能够详细展现最后一次的结果详情信息:
点击右侧的response time trends for build 会详细展现该次构建每一个请求方法的具体响应时间趋势图:
9:附录,构建触发器日程表语法解析
MINUTE:指分钟,范围为0-59
HOUR:指小时,范围为0-23
DOM:指day of month,日,范围为1-31
MONTH:指月,范围为1-12
DOW:指day of week,星期几,范围为0-7,0和7表示的都是sunday即周日
*:指定全部有效的值
M-N:指定值的范围为M-N
M-N/X:指定值的范围为M-N,步长为X
*/X:指定按X步长来取值
A,B..Z:枚举多个值
jenkins中周期性任务在系统中执行时发生负载,因此咱们应尽量的使用H符号('散列'),使得系统任务不会在同一时间同时发生,更好利用系统资源,举个例子来讲, 0 0 * * *和H H * * *,
0 0 * * *会使得任务天天在晚上12:00点同时都触发执行,而H H * * *为天天执行一次,可是不会让任务在同一时间同时触发执行,这样有利于系统空闲时的利用,避免大量任务在同一时刻触发发生负载。
H符号可使用范围,如H H(0-7) * * *表示0点即天天晚上12:00到上午7:59之间触发一次任务
H符号可使用步长,如H */2 * * * 表每两个小时触发一次任务
H符号可使用步长+范围,如H H(0-7)/2 * * * 表示晚上12点到上午7:59之间的时间每2个小时触发一次任务如1:,3:,5:,这些间隔的时间取值均在0-7小时范围内
@hourly和H * * * *执行效果是同样的,都是每小时执行一次,意味着任务将在小时中的任意一个时间内被执行
@midnight指的是晚上12:00到2:59分这段时间
如下用不一样的例子来讲明cron的强大:
1:* * * * *
每分钟执行一次
2:5 * * * *
每小时第5分钟执行一次
3:H/15 * * * *
每15分钟执行一次
4:45 10 * * 1-5
每周一到周五10点45执行一次
5:H(0-29)/10 * * * *
每隔10分钟执行一次,可是间隔时间的值须要在0-29分钟范围内,如 :05,:15,:20这几种取值均在0-29分钟内
6:45 9-16/2 * * 1-5
周一到周五,9点45分到16点45之间每隔2小时执行一次
7:H H(9-16)/2 * * 1-5
周一到周五,每隔2小时执行一次,可是间隔时间的值须要在9-16小时内,如:9:35,11:35,13:35,15:35
8:H H 1,15 1-11 *
1月到11月里,每个月的第一天和第15天执行一次
好了,以上就是jenkins+jmeter持续集成的所有内容了。