轻量级自动化-Jmeter+Maven+Ant集成-4

2022-04-07 14:08:11 浏览数 (1)

前言

这是轻量级自动化-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

  1. 定时构建语法

* * * * *(五颗星,中间用空格隔开)

第一颗*表示分钟,取值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分钟检查一次源码变化,有变化就执行

0 人点赞