前言
这是轻量级自动化-Jmeter Maven Ant集成的第三篇
第一篇见:轻量级自动化-Jmeter Maven Ant集成-1
第二篇见:轻量级自动化-Jmeter Maven Ant集成-2
第三篇见:轻量级自动化-Jmeter Maven Ant集成-3
验证jenkins、Ant与jmeter集成结果
1.下载jenkins
###启动jenkins、指定端口启动
# java -jar jenkins.war --ajp13Port=-1 --httpPort=8080
访问地址:http://172.16.87.168:8080/
jenkins插件安装:安装推荐插件
2.配置登陆用户邮箱地址
用户列表-->admin-->设置-->E-mail-->11353268@qq.com
3.全局工具配置
###JDK
###ANT
示例:
Name:jdk1.8.0_211
ANT_HOME: /usr/java/jdk1.8.0_211
Name:apache-ant-1.9.7
ANT_HOME: /usr/apache-ant-1.9.7
4.配置E-mail
##设置QQ邮箱生成授权码
接收邮件服务器:imap.qq.com,使用SSL,端口号993
发送邮件服务器:smtp.qq.com,使用SSL,端口号465或587
在jenkins的“系统管理”->“系统设置”中的”设置邮件服务器相关的参数:
##系统消息
示例:
各位,新版应用已发布到服务器上,此次更新的是xxx接口;
##Jenkins Location
示例:
Jenkins URl:http://172.16.87.168:8080/
系统管理员E-mai地址:11353268@qq.com
###Extended E-mail Notification
邮件模版下载:https://www.cnblogs.com/Alexr/p/10813936.html
###邮件处罚机制
###邮件通知
特别提示:
1)用户名”要和“系统管理员邮件地址”中的保持一致,否则会在“通过发送测试邮件配
置”进行测试时会报异常:
com.sun.mail.smtp.SMTPSendFailedException: 501 mail from address must be same as authorization user
2)密码”填写第一步中获取的授权码,否则会报异常:
javax.mail.AuthenticationFailedException: 535 Error
###邮件测试
5.创建任务
NEW-->自由风格项目-->OK
##构建
Ant Version:
Build File:/opt/report/build.xml
##构建后操作:HTML Publisher plugin
###邮件通知
##在构建后操作选项新增Editable Email Notification在高级设置中。删除下列两个功能构建;
6.Build构建结果
三个傻屌合体实现并发梯度压测
1.验证ANT集成的jmeter
##前置条件:大纲3.1、3.2配置就绪;
在/usr/apache-jmeter-3.1/extras目录下,运行"ant -file build.xml -Dtest=Test" .查看/usr/apache-jmeter-3.1/extras目录下是否出现 Test.jtl、Test.html 文件, 若有,则构建成功。注:Test.jmx是默认存在的Sample 脚本文件。
2.创建测试结果存放目录
###创建目录
# mkdir portal
# mkdir -p portal/perfmon
# mkdir -p portal/reportlog
# mkdir -p portal/scripts
[root@jmeter opt]# tree portal/
portal/
├── build.xml
├── perfmon
│ ├── ResponseTime.jtl
│ └── Transactions.jtl
├── reportlog
│ └── 64
│ ├── html
│ ├── jtl
│ │ ├── ResponseTime.jtl
│ │ ├── TestReport64.jtl
│ │ └── Transactions.jtl
│ └── png
│ ├── AggregateReport.csv
│ ├── AggregateReport.png
│ ├── TestReport64_RTD.png
│ ├── TestReport64_RTP.png
│ └── TestReport64_tps.png
└── scripts
└── report.jmx
7 directories, 12 files
perfmon:存放工具插件监控文件
reportlog:存放jtl,html,png文件,
scripts:存放压测脚本
3.扩展/usr/apache-jmeter-3.1/extras/下jar
###解压,存放到与jmeter/lib下对应的文件目录
JMeterPlugins-Standard-1.3.1.zip
JMeterPlugins-ExtrasLibs-1.3.1.zip
4.配置监控服务器资源(不必要)
##将ServerAgent-2.2.1.zip上传至被压测服务器;
##解压上传到服务器
##启动监控
# nohup ./startAgent.sh &
监控配置完毕;
5.创建job工程
NEW-->自由风格项目-->OK
##丢弃的构建:
##参数化构建过程:
##创建7个字符串参数
##依次输入:
名称:result_home
选项:/opt/portal/reportlog
描述:测试结果保存目录
名称:build_home
选项:/opt/portal
描述:配置ANT需要运行的build.xml和jxm脚本路径
名称:ReportName
选项:TestReport
描述:生产的报告自定义前缀
名称:threads
选项:1
描述:给jmeter传入的线程/并发数
名称:duration
选项:60
描述:脚本执行时间(单位s)
名称:jmeter_home
选项:/usr/apache-jmeter-3.1
描述:jmeter的安装目录
名称:ant_home
选项:/usr/apache-ant-1.9.7
描述:ANT安装目录
执行shell:
cd $ANT_HOME/bin
ant -f build_home/build.xml -Dresult.home=result_home -Dbuild.home=build_home -Dtime=BUILD_ID -DReportName=ReportName -Dthreads=threads -Dduration=duration -DPerMonhome=result_home/BUILD_ID -DbuildId=BUILD_ID -DjobName=
##构建后的操作:
##Publish HTML reports
{result_home}/{BUILD_ID}/png/
AggregateReport.png
聚合报告
聚合报告
{result_home}/{BUILD_ID}/png/
Test*.png
其他指标
其他指标
5.压测脚本配置
###线程组计划配置
线程数:${__P(request.threads,1)}
持续时间:${__P(request.duration,60)}
###输出工具资源指标配置
###配置tps,ART,资源资源
写入文件/opt/portal/perfmon/ResponseTime.jtl
注:输出文件格式一定选择Save As XML
聚合报告中的数据,小数点省略,可以通过configure中的配置文件,配置
7.编写Build.xml
https://www.cnblogs.com/Alexr/
8.结果展示
注意:关于后面小数点不能省略,可以使用jmeter的4.0版本
定时任务解决方案
定时任务可以考虑触发器:Build periodically和Poll SCM
- 定时构建语法
* * * * *(五颗星,中间用空格隔开)
第一颗*表示分钟,取值0~59
第二颗*表示小时,取值0~23
第三颗*表示一个月的第几天,取值1~31
第四颗*表示第几月,取值1~12
第五颗*表示一周中的第几天,取值0~7,其中0和7代表的都是周日
示例:
每30分钟构建一次
H/30 * * * *
每2个小时构建一次
H H/2 * * *
每天早上8点构建一次
0 8 * * *
每天的8点,12点,22点,一天构建3次
0 8,12,22 * * *(多个时间点,中间用逗号隔开)
每个月的1-7号一天构建一次
Build periodically
Build periodically:周期性进行项目构建,这个是到指定的时间必须触发构建任务;
比如我想在每天的9点,17点,朝九晚五各构建一次,在Build periodically里设置。如下:
上面红色字体:Spread load evenly by using ‘H 9,17 * * *’ rather than ‘0 9,17 * * *’,这句话大概意思就是说,用这个语法会比后后面那个好:H 9,17 * * *
下一次构建时间是05时48分06秒,然后再下次是09时48分06秒
Poll SCM
Poll SCM:定时检查源码变更(根据SCM软件的版本号),如果有更新就checkout最新code下来,然后执行构建动作;
如果我想每隔30分钟检查一次源码变化,有变化就执行