一、服务器分别安装JDK、Jenkins、Ant、Git、Jmeter

1、JDK安装参考:https://www.cnblogs.com/xiaoxitest/p/6168045.html

2、Jenkins安装参考:https://www.cnblogs.com/xiaoxitest/p/11947309.html

3、Ant安装参考:https://www.cnblogs.com/xiaoxitest/p/11947205.html

4、Git安装参考:https://www.cnblogs.com/xiaoxitest/p/10106302.html

5、Jmeter安装参考:https://www.cnblogs.com/xiaoxitest/p/6208940.html

二、Ant配置

1、将jmeter的extras目录下ant-jmeter-1.1.1.jar文件拷贝到ant的lib目录下

2、创建存放测试报告目录:/opt/apache-jmeter-5.1.1/report/html 和 /opt/apache-jmeter-5.1.1/report/jtl

3、由于默认的报告内容不够丰富,下载style文件:jmeter.results.shanhe.me.xsl,把下载的文件放到jmeter的extras目录下

4、修改jmeter.properties文件如下部分,这样执行完脚本后就会保存这些结果到.jtl文件里面:

jmeter.save.saveservice.data_type=true
jmeter.save.saveservice.label=true
jmeter.save.saveservice.response_code=true
# response_data is not currently supported for CSV output
jmeter.save.saveservice.response_data=true
# Save ResponseData for failed samples
jmeter.save.saveservice.response_data.on_error=false
jmeter.save.saveservice.response_message=true
jmeter.save.saveservice.successful=true
jmeter.save.saveservice.thread_name=true
jmeter.save.saveservice.time=true
jmeter.save.saveservice.subresults=true
jmeter.save.saveservice.assertions=true
jmeter.save.saveservice.latency=true
# Only available with HttpClient4
jmeter.save.saveservice.connect_time=true
jmeter.save.saveservice.samplerData=true
jmeter.save.saveservice.responseHeaders=true
jmeter.save.saveservice.requestHeaders=true
jmeter.save.saveservice.encoding=false
jmeter.save.saveservice.bytes=true
# Only available with HttpClient4
#jmeter.save.saveservice.sent_bytes=true
jmeter.save.saveservice.url=true
jmeter.save.saveservice.filename=true
jmeter.save.saveservice.hostname=true
jmeter.save.saveservice.thread_counts=true
jmeter.save.saveservice.sample_count=true
jmeter.save.saveservice.idle_time=true

5、创建build.xml文件:vim /opt/apache-jmeter-5.1.1/report/build.xml

内容如下,根据自己的路径修改:

 <?xml version="1.0" encoding="UTF-8"?>

 <project name="ant-jmeter-test" default="run" basedir=".">
<tstamp>
<format property="time" pattern="yyyy-MM-dd_HHmm" />
</tstamp>
<!-- 需要改成自己本地的 Jmeter 目录-->
<property name="jmeter.home" value="/opt/apache-jmeter-5.1.1" />
<!-- jmeter生成jtl格式的结果报告的路径-->
<property name="jmeter.result.jtl.dir" value="/opt/apache-jmeter-5.1.1/report/jtl" />
▽ <!-- jmeter生成html格式的结果报告的路径-->
<property name="jmeter.result.html.dir" value="/opt/apache-jmeter-5.1.1/report/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="run">
<antcall target="test" />
<antcall target="report" />
</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="/opt/apache-jmeter-5.1.1/test" 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.shanhe.me.xsl"> <param name="dateReport" expression="${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>
</project>

三、jenkins配置

下载插件 HTML Publisher Plugin
下载插件 email extension plugin(可选)、performance plugin

1、新建job

2、选择构建记录要保留的天数或个数

3、配置多套测试环境

4、配置Git,从Git拉取最新脚本

5、定时构建,当前设置为:每周一至周五,早上10点至下午18点,每隔1小时构建一次

6、为方便查看,这里选择把将时间戳添加到控制台输出

7、在/opt/apache-jmeter-5.1.1/test目录下创建3个不同的shell脚本文件,分别为test1,test2和test3,目的是更改jmeter脚本文件中用户定义的变量启用和禁用来切换环境,根据自己设置的名称填写

vim /opt/apache-jmeter-5.1.1/test/test1

sed -i 's/testname="用户定义的变量-test1" enabled="false"/testname="用户定义的变量-test1" enabled="true"/g' /opt/apache-jmeter-5.1./test/test.jmx
sed -i 's/testname="用户定义的变量-test2" enabled="true"/testname="用户定义的变量-test2" enabled="false"/g' /opt/apache-jmeter-5.1./test/test.jmx
sed -i 's/testname="用户定义的变量-test3" enabled="true"/testname="用户定义的变量-test3" enabled="false"/g' /opt/apache-jmeter-5.1./test/test.jmx

vim /opt/apache-jmeter-5.1.1/test/test2

sed -i 's/testname="用户定义的变量-test1" enabled="true"/testname="用户定义的变量-test1" enabled="false"/g' /opt/apache-jmeter-5.1./test/test.jmx
sed -i 's/testname="用户定义的变量-test2" enabled="false"/testname="用户定义的变量-test2" enabled="true"/g' /opt/apache-jmeter-5.1./test/test.jmx
sed -i 's/testname="用户定义的变量-test3" enabled="true"/testname="用户定义的变量-test3" enabled="false"/g' /opt/apache-jmeter-5.1./test/test.jmx

vim /opt/apache-jmeter-5.1.1/test/test3

sed -i 's/testname="用户定义的变量-test1" enabled="true"/testname="用户定义的变量-test1" enabled="false"/g' /opt/apache-jmeter-5.1./test/test.jmx
sed -i 's/testname="用户定义的变量-test2" enabled="true"/testname="用户定义的变量-test2" enabled="false"/g' /opt/apache-jmeter-5.1./test/test.jmx
sed -i 's/testname="用户定义的变量-test3" enabled="false"/testname="用户定义的变量-test3" enabled="true"/g' /opt/apache-jmeter-5.1./test/test.jmx

8、新建两个shell文件,删除旧的报告,只保留最新的10个

vim /opt/apache-jmeter-5.1.1/report/rm_html

#!/bin/bash
#保留文件数
ReservedNum=10
FileDir=/opt/apache-jmeter-5.1.1/report FileNum=$(ls -l $FileDir/*.html |grep ^- |wc -l) while(( FileNum > ReservedNum))
do
OldFile=$(ls -rt $FileDir/*.html| head -1)
echo "Delete File:" $OldFile
rm -f $OldFile
let "FileNum--"
done

vim /opt/apache-jmeter-5.1.1/report/rm_jtl

#!/bin/bash
#保留文件数
ReservedNum=
FileDir=/opt/apache-jmeter-5.1./report FileNum=$(ls -l $FileDir/*.jtl |grep ^- |wc -l) while(( FileNum > ReservedNum))
do
OldFile=$(ls -rt $FileDir/*.html| head -1)
echo "Delete File:" $OldFile
rm -f $OldFile
let "FileNum--"
done

9、增加构建步骤,执行shell,删除旧的测试报告和根据选择的环境,执行不同的shell脚本

10、增加构建步骤,Execute system Groovy script(报告显示非HTML格式时配置该选项)

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")

11、增加构建步骤,invoke Ant,选择自己配置的ant和build.xml文件路径

12、增加构建步骤,再次选择执行shell,因为无论报告结果是否正确,jenkins都会认为构建成功,我们断言执行结果的jtl文件,如果存在断言失败,就认为构建失败

内容如下,根据自己路径填写:

#!/bin/bash
file=$(ls -t /opt/apache-jmeter-5.1./report/jtl/*.jtl | head -1)
if grep -qE "<failure>true</failure>" $file ;then
echo "Build Fail"
exit 1
else
echo "Build Success"
exit 0
fi

13、增加构建后操作,用来查看测试报告

14、配置钉钉通知,只在构建失败时通知。由于前面设置过,如果断言失败就当做构建失败处理,所以如果构建失败,就存在接口执行不通过,需要关注接口不通过原因,不需要每次执行通过也要去看。

15、接口测试不通过,发送通知

16、生成多个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" /> <!-- 生成第二个报告-->
<property name="detail" value="_detail" />
<property name="jmeter.result.jtlNamedetail" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
<property name="jmeter.result.htmlNamedetail" value="${jmeter.result.html.dir}/${ReportName}${time}${detail}.html" />

另在原先报告下新增一个xslt标签

<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="dateReport" expression="${report.datestamp}"/>
</xslt> <xslt
classpathref="xslt.classpath"
force="true"
in="${jmeter.result.jtlNamedetail}"
out="${jmeter.result.htmlNamedetail}"
style="${jmeter.home}/extras/jmeter.results.shanhe.me.xsl">
<param name="dateReport" expression="${report.datestamp}"/>
</xslt>

运行成功后会生成两个html报告

第一个汇总报告

第二个详细报告

附:钉钉access token查看

进入钉钉群,选择添加机器人-自定义-添加-复制Webhook链接(钉钉通知只填写access_token=后面部分)-安全设置(选择自定义关键字:构建)-完成

Jenkins+Ant+Git+Jmeter接口自动化的更多相关文章

  1. Jenkins+Ant+Git+Jmeter实现持续集成

    个人记录: 基本的配置与Jenkins+Ant+SVN+Jmeter实现持续集成的配置一样,主要在Jenkins的配置上的区别会有所不同 安装的插件: enkins安装好之后,需要为其安装gitlab ...

  2. Jenkins+Ant+Jmeter接口自动化集成测试实例

    Jenkins+Ant+Jmeter接口自动化集成测试实例 一.Jenkins安装配置 1.安装配置JDK1.6+环境变量: 2.下载jenkins.war,放入C:\jenkins目录下,目录位置随 ...

  3. 第9期《jmeter接口自动化实战》零基础入门!

    2019年 第9期<jmeter接口自动化实战>课程,12月6号开学! 上课方式:QQ群视频在线教学 本期上课时间:12月6号-1月18号,每周五.周六晚上20:00-22:00 报名费: ...

  4. JMeter接口自动化发包与示例

    JMeter接口自动化发包与示例 近期需要完成对于接口的测试,于是了解并简单做了个测试示例,看了看这款江湖上声名远播的强大的软件-Jmeter靠不靠谱. 官网:https://jmeter.apach ...

  5. Jenkins+ant+Jmeter接口自动化框架搭建

    工具准备 JDK: jdk1.8.0_111 Ant: apache-ant-1.9.9 Jmeter: apache-jmeter-3.1 Jenkins: jenkins-2.7.4 JDK安装 ...

  6. Jenkins+Ant+Jmeter接口自动化集成测试

    一.Jmeter+ant 1.首先我们默认Jmeter脚本已经录制好了,并测试通过,存在(查询模块.jmx)脚本 2.将JMeter所在目录下extras子目录里的ant-JMeter-1.1.1.j ...

  7. 【转】Jenkins+Ant+Jmeter接口自动化集成测试实例

    出处:https://my.oschina.net/MrToStudy/blog/742251 一.Jenkins安装配置 1.安装配置JDK1.6+环境变量: 2.下载jenkins.war,放入C ...

  8. Jenkins+ant+jmeter接口自动化

    1.Jenkins新建slave节点 2.Jenkins新建job,配置job,关联到slave, 3.执行构建 build文件如下 <?xml version="1.0" ...

  9. jenkins+ant+jmeter接口自动化的持续集成

    一.jmeter.jenkins安装 这里不再说明,请看上一个随笔!!! 链接:https://www.cnblogs.com/magicYJ/p/11839646.html 二.ant安装 下载地址 ...

随机推荐

  1. (十二)easyUI之表单和验证完成登录页面

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  2. LinearSearch Java

    Java LinearSearch /** * <html> * <body> * <P> Copyright 1994-2018 JasonInternation ...

  3. Zookeeper 安装及集群配置注意点

    Zookeeper在ubuntu下安装及集群搭建,关于集群搭建,网上很多文章 可以参考:https://www.ibm.com/developerworks/cn/opensource/os-cn-z ...

  4. 超详细Nginx的安装和配置教程

    一. 编译安装nginx 下载nginx安装包 wget http://nginx.org/download/nginx-1.8.0.tar.gz 也可以选择其他版本,官网:http://nginx. ...

  5. 一步一步教你实现iOS音频频谱动画(二)

    如果你想先看看最终效果再决定看不看文章 -> bilibili 示例代码下载 第一篇:一步一步教你实现iOS音频频谱动画(一) 本文是系列文章中的第二篇,上篇讲述了音频播放和频谱数据计算,本篇讲 ...

  6. C语言程序经过编译链接后形成二进制映像文件的组成

    C语言程序经过编译链接后形成二进制映像文件由栈,堆,数据段,代码段组成,其中数据段又分为:只读数据段,已经初始化读写数据段,未初始化数据段(BSS段).如下图所示: 1.栈区(stack):由编译器自 ...

  7. 5.Redis的持久化

    Redis中数据的持久化有两种方式:RDB(Redis DataBsse) 和 AOF(Append Only File),默认采取的是RDB方式 RDB 1.是什么:在指定的时间间隔内将内存中的数据 ...

  8. moment——日期格式化常用示例

    <template> <div id="app" style="text-align: center;"> <h1>{{ m ...

  9. Hadoop集群搭建(cluster setup),ssh免密后一直要求输入密码的原因

    前段时间,网上有言SHA-1加密技术,已经被谷歌公司破解,在linux系统中,集群间加密的技术是用DSA秘钥,秘钥本身其实是一种算法,就像前面说的SHA-1也是加密算法的一种. 免密在linux系统中 ...

  10. 第五章、Celery分布式系统

    Celery 官方 Celery 官网:http://www.celeryproject.org/ Celery 官方文档英文版:http://docs.celeryproject.org/en/la ...