Linux环境下搭建:ANT+JMETER+Jenkins 接口自动化

一、准备环境:

1、下载 JDK1.8

JDK下载地址:https://www.oracle.com/java/technologies/downloads/

# 配置jdk环境变量:
# 下载相应的jdk软件包,然后解压安装,我这里包名称为:
jdk-8u102-linux-x64.tar.gz
[root@localhost ~]# tar -zxvf  jdk-8u102-linux-x64.tar.gz -C /usr/local/ #解压到/usr/local/下面

[root@localhost ~]# vi /etc/profile  最后面加入以下语句:

export JAVA_HOME=/usr/local/jdk1.8.0_102    
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib      
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin
  [root@localhost ~]# source /etc/profile   #使环境变量马上生效
  [root@localhost ~]# java  --version     #查看java版本,看到jdk1.8.0_102版本即代表java jdk安装成功。

2、下载 ANT

ANT下载地址:https://ant.apache.org/bindownload.cgi

# ant环境变量:
# ant包名称为:apache-ant-1.9.14-bin.tar.gz
[root@localhost data]# tar -zxvf apache-ant-1.9.14-bin.tar.gz
# 比如放到:/data/apache-ant-1.9.14
[root@localhost opt]# vi /etc/profile      #加入如下内容
 
export ANT_HOME=/data/apache-ant-1.9.14
export CLASSPATH=$CLASSPATH:$ANT_HOME/lib
export PATH=$ANT_HOME/bin:$PATH:$HOMR/bin [root@localhost ~]# #source /etc/profile   #使环境变量马上生效
[root@localhost apache-jmeter-5.1.1]#ant -v
 命令行输入:ant -v        出现如下提示说明安装成功

3、下载:Jmeter

Jmter下载地址:https://jmeter.apache.org/download_jmeter.cgi

# 配置jmeter环境变量
# Jmeter:apache-jmeter-5.1.1.zip
# 解压到一个目录下面:unzip apache-jmeter-5.1.1.zip
# 比如:/data/apache-jmeter-5.1.1 [root@localhost opt]# vi /etc/profile      #加入如下内容
export JMETER_HOME=/data/apache-jmeter-5.1.1
export CLASSPATH=$CLASSPATH:$JMETER_HOME/lib
export PATH=$JMETER_HOME/bin:$PATH:$HOMR/bin

[root@localhost apache-jmeter-5.1.1]# source /etc/profile

[root@localhost apache-jmeter-5.1.1]#jmeter -v

命令行输入:jmeter –v

# 将 jmeter的extras目录中ant-jmeter-1.1.1.jar包拷贝至ant安装目录下的lib目录中
[root@localhost extras]# cp ant-jmeter-1.1.1.jar /data/apache-ant-1.9.14/lib/
# 修改Jmeter的bin目录下jmeter.properties文件的配置:
[root@localhost bin]# vi jmeter.properties
jmeter.save.saveservice.output_format=xml # 发邮件需要把(activation.jar,commons-email-1.2.jar,mail.jar)这几个jar包放到ant的lib下面

二、Jmeter脚本:

# 脚本目录:可以在jmeter的bin下面新建一个目录,比如为:jmeter_scripts
[root@localhost bin]# mkdir jmeter_scripts # 上传本地的脚本
[root@localhost bin]# cd jmeter_scripts
[root@localhost jmeter_scripts]# rz

三、build.xml代码:

<?xml version="1.0" encoding="UTF-8"?>
<project name="线上接口性能监控" default="all" basedir=".">
<tstamp>
<format property="time" pattern="yyyyMMddhhmm" />
</tstamp>
<property name="encoding" value="UTF-8" />
<!-- 需要改成自己本地的 Jmeter 目录-->
<property name="jmeter.home" value="/data/apache-jmeter-5.1.1/" />
<property name="report.title" value="线上接口性能监控"/>
<!-- jmeter生成jtl格式的结果报告的路径-->
<property name="jmeter.result.jtl.dir" value="${jmeter.home}/work/resultLog/jtl" />
<!-- jmeter生成html格式的结果报告的路径-->
<property name="jmeter.result.html.dir" value="${jmeter.home}/work/resultLog/html" />
<!-- 生成的报告的前缀-->
<property name="ReportName" value="TestReport" />
<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" /> <target name="all">
<antcall target="test" />
<antcall target="report" />
<antcall target="mail" />
</target> <target name="test">
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
<!-- 声明要运行的脚本"*.jmx"指包含此目录下的所有jmeter脚本-->
<testplans dir="${jmeter.home}/bin/jmeter_scripts/易捷支付" includes="*.jmx" /> <property name="jmeter.save.saveservice.output_format" value="xml"/>
</jmeter>
</target> <path id="xslt.classpath">
<fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
<fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
</path> <target name="report">
<tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" /></tstamp>
<xslt
classpathref="xslt.classpath"
force="true"
in="${jmeter.result.jtlName}"
out="${jmeter.result.htmlName}"
style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl"> <param name="showData" expression="${show-data}"/> <param name="dateReport" expression="${report.datestamp}"/>
<param name="titleReport" expression="${report.title}:${report.datestamp}"/> </xslt> <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->
<copy todir="${jmeter.result.html.dir}">
<fileset dir="${jmeter.home}/extras">
<include name="collapse.png" />
<include name="expand.png" />
</fileset>
</copy>
</target>
<property name="mail_from" value="发送邮件的地址" />
<property name="password" value="邮箱密码" />
<!--mail_to:发送列表,多个之间逗号间隔 --> <property name="mail_to" value="接收邮件地址" />
<property name="mailport" value="25" />
<!--邮箱需要开通smtp服务-->
<property name="mailhost" value="smtp邮件服务器地址" /> <target name="mail"> <loadfile property="report" srcFile="${jmeter.result.htmlName}" encoding="${encoding}" />
<mail from="${mail_from}" tolist="${mail_to}" mailport="${mailport}" mailhost="${mailhost}" user="${mail_from}" password="${password}" subject="TestReport-${ant.project.name}" messagemimetype="text/html">
<message>
本轮构建的结果如下:
${report}
</message>
</mail>
<delete file="${jmeter.result.htmlName}" />
</target>
</project>

四、运行脚本:

cd进入脚本目录:/data/apache-ant-1.9.14/bin

输入:ant  或  ant -buildfile build.xml,执行结果:

测试结果邮件发送:

五、部署到持续集成平台

部署到持续集成平台可以实现脚本的定时运行,这是接口测试的核心。
这里我们选用了jenkins,jenkins是一个强大的持续集成系统,使用起来也很简单。
使用步骤如下:
1、 安装jenkins
把Jenkins的war包复制到tomcat的webapps下面
 
2、启动tomcat,访问URL:http://ip:端口/jenkins
注意:请将jenkins安装到一个空间比较大的系统盘中。因为jenkins运行起来,生成的文件比较占空间。 3、 用户注册:默认情况下是不启用任何安全策略,即任何人都可以访问页面且有读写权限。比较常用的安全配置方式即安全矩阵。
首先开启用户注册权限,默认情况下,我们在首页点击“系统管理”后,页面上方会有这个提示:
点击“安全设置”,(对应 url: http://ip:8080/configureSecurity/) -“启用安全”,进入下面页面并选择:
 
4、 保存后系统管理中就出现管理用户的选项。页面右上角也会出现登录/注册的选项。 点击注册:
 
5、 安全策略:
点击“系统管理-Configure Global Security” 进入安全设置页面,简单常用的安全策略就是安全矩阵:
 
6、 添加用户之后保存,这个安全矩阵即生效了。至于应该勾选哪些和不勾选哪些,则根据实际需求来决定了  说明 1:
其中: Overall 是全局权限, slave 是集群权限, job,run,view,scm 是业务权限。
其中 overall 中的 read 要勾选,否则用户登陆后什么也看不到。
overall:
Administer:系统管理员权限
read:浏览框架
job:
read:查看 job
build:执行构建
ancel:取消构建
run:
Delete:删除某次构建
Update:编辑某次构建信息
SCM:
Tag:为某次构建在 svm 上打标签。
1、安装完成后,配置一个项目
输入项目名称后,选择第一个选项:构建一个自由风格的软件项目, 同样,按语义理解“复制已有的 Item”只适用于已经创建了类似的项目 2、旧的构建保存了你在一次构建中的所有临时文件,如果构建没有保留的必要,就勾选丢弃旧的构建,同时设置保持构建天数和保持构建的最大个数两个参数。
注意:三个设置必须同时设置,否则无效
 
3、构建触发器,设置定时运行间隔,这里,设置间隔时间为每天8点运行一次
第一个参数代表的是分钟 minute,取值 0~59; 
第二个参数代表的是小时 hour,取值 0~23; 
第三个参数代表的是天 day,取值 1~31;
第四个参数代表的是月 month,取值 1~12; 
最后一个参数代表的是星期 week,取值 0~7,0 和 7 都是表示星期天 特殊格式;
* 指所有有效的值 M-N指定值的范围 M-N/ X或*/ X是指以X为步长,指定的区域
或整个有效范围区间的值 A,B,...,Z列举多个值
eg:
H/15 * * * * 每十五分钟执行一次
H(0-29)/10 * * * * 每小时的0-29分内每隔十分钟执行一次
H 9-16/2 * * 1-5 每个工作日的9-16点内每隔两小时执行一次 
H H 1,15 1-11 * 1-11月的每月1号和15号各执行一次
0 10 * * * 每天10点执行一次 4、在构建》添加构建步骤下面,选择invoke ant,这里由于Jenkins和ant在一台机器上面,在build file里面直接填写ant的build.xml路径就可以了

5、 在项目页面,点击“立即构建”按钮,在相关连接页面,可以看到成功或失败的信息

6、 查看报告

最新文章

  1. Atitit 图像处理 调用opencv 通过java &#160;api &#160;&#160;attilax总结
  2. MongoDB学习笔记—02 MongoDB入门
  3. Sql Server中常见的数据类型
  4. ssh远程连接ubuntu
  5. Scala 中的函数式编程基础(三)
  6. asp.net 网站 或者web Api 发布
  7. 【测试】使用hr用户下的employees表写一条SQL语句,执行计划走索引全扫描
  8. SQL Server 字符串函数
  9. poj3258
  10. 对LockWindowUpdate与GetDCEx的理解(以前不知道还可以锁住刷新)
  11. 使用glob()查找文件(转)
  12. ComM(通信管理)和CanNm(network)
  13. python之设计模式
  14. mysql引擎,完整的见表语句,数据库模式, 常用数据类型,约束条件
  15. SDWebImage 的简单使用方法
  16. 课程三(Structuring Machine Learning Projects),第二周(ML strategy(2)) —— 1.Machine learning Flight simulator:Autonomous driving (case study)
  17. stark组件之多级过滤
  18. numpy 矩阵变换 reshape ravel flatten
  19. 面试题28:单链表一次遍历删除从后往前的第n个节点
  20. Webpack 配置示例

热门文章

  1. Mybatis的几种传参方式
  2. cookie,session,token,drf-jwt
  3. OI常见缩写
  4. monkey自动化脚本
  5. linux挂载磁盘步骤
  6. Win11 win10系统分区时出现defrag事件怎么解决?
  7. uni-app学习笔记之----不同平台,独立设置
  8. ubuntu下ntp时间同步
  9. 前端导出文件流[object Object]
  10. Jenkins+maven+gitlab+harbor+Rancher