Jmeter+ant+jenkins性能接口自动化平台

一、平台简介

一个完整的接口自动化测试平台需要支持接口的自动执行,自动生成测试报告,以及持续集成。 Jmeter 支持接口的
测试, Ant 支持自动构建,而 Jenkins 支持持续集成,所以三者组合在一起可以构成一个功能完善的接口自动化测试平台。

二、环境准备

jenkins插件

1 .下载插件: Manage Jenkins--- Manage Plugins---高级 ---可选插件 搜索 ant 下载安装

  • 我这里是我已经安装好了


    image.png

2. 全局配置 ant的目录

  • Manage Jenkins--Global Tool Configuration--搜 ant
image.png

三、平台搭建

依赖文件配置

1. 首先在 Jmeter bin目录下面新建一个文件夹 testcase (文件夹名称不要使用下划线,空格字符),并将 Jemter 测试脚本放置到该文件夹中

2. 将 Jmeter extras 文件中的 ant-jmeter-1.1.1.jar 放到 Ant 中的 lib 文件夹中

image.png

3. 将 Jmeter extras 文件中的 build.xml 放到 第一步testcase下面。

image.png

上面的build.xml用下面百度网盘下载的,内容比较丰富点

链接:https://pan.baidu.com/s/1chMgBy2dbmR5JjahF4cNSw
提取码:p7mi
复制这段内容后打开百度网盘手机App,操作更方便哦

4. jmeter.properties 修改 jmeter.save.saveservice.output_format=csv 成 jmeter.save.saveservice.output_format=xml

(修改原因: jmeter执行结果文件默认保存的是csv格式,不是xml格式,csv无法转化成html格式)

image.png

5 配置 D:\software\JMETER4.0\apache-jmeter-4.0\bin\testcase目录下的文件

image.png

build文件解析

image.png

image.png
image.png

创建工程 构建处 可以写上需要执行的命令

image.png

mail解析

image.png

  • qq邮箱的 mailport 要设置为25,我设置465一直报错。

完整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="D:\software\JMETER4.0\apache-jmeter-4.0" /> 
    <property name="report.title" value="阿登接口性能测试"/>
    <!-- jmeter生成jtl格式的结果报告的路径--> 
    <property name="jmeter.result.jtl.dir" value="${jmeter.home}/bin/testcase/report/jtl" />
    <!-- jmeter生成html格式的结果报告的路径-->
    <property name="jmeter.result.html.dir" value="${jmeter.home}/bin/testcase/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="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/testcase" 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="1774080833@qq.com" />
    <property name="password" value="owfcgrvbddgpebfi" />
    <!--mail_to:发送列表,多个之间逗号间隔 -->
    
    <property name="mail_to" value="330524840@qq.com,1774080833@qq.com" /> 
    <property name="mailport" value="25" />
    <!--邮箱需要开通smtp服务-->
    <property name="mailhost" value="smtp.qq.com" />

    <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 到jmeter bin目录的testcase下面 运行 ant命名--会在report下面 html和jtl 生成报告

image.png

image.png
image.png

四、 使用Jenkins构建自动化平台

1.打开Jenkins,新建job,选择“构建一个自由风格的软件项目”:

image.png

2. 安装插件: 进入系统管理- 管理插件- 可选插件,安装 Performance plugin、HTML Publisher plugin、Ant Plugin

比如:

image.png

3. 配置过程

1) 源码管理,没有通过GIT或者SVN管理,所以选择“无”:


image.png

2) 构建,点击【增加构建步骤】按钮,选择“invoke Ant”,用来执行Ant:

image.png

3)配置invoke Ant参数,其中Build File填写build.xml文件路径


image.png
image.png

4)在构建后的操作中,点击【增加构建后操作步骤】,Publish HTML report 和 Publish Performance test result report


image.png
  1. 配置“Publish html reports”,其中HTML directory to archive填写html报告保存路径:
image.png
  1. 配置“Publish Performance test result report”,其中Source data files填写jtl格式报告的保存路径:
image.png
image.png
image.png

7) 也可以添加构建触发器

image.png

image.png

链接:https://pan.baidu.com/s/1pnGteA3HlERVXeS-CkDskA
提取码:mii2

踩坑处理

  1. java.lang.ClassNotFoundException: javax.mail.internet.MimeMessage


    image.png

解决办法:下载4个插件的jar包 放在ant lib下面,可在下面网盘下载。


image.png

下面是百度网盘下载jar包地址
链接:https://pan.baidu.com/s/11Msl5jeNOFLsPEVfXDcECg
提取码:a78i

2.Could not connect to SMTP host: smtp.qq.com, port: 465, response: -1


image.png

解决: 端口设置成 25

报告优化 释放洪荒之力

进入 Jmeter 的 bin 目录,找到 jmeter.properties 文件打开。然后将以下代码取消注释状态,并改为 true

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=true
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=true
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

image.png

最后执行即可生成最新的报告:样式如下,可以清晰看到每一个请求发送,响应内容.

cd 到jmeter bin目录的testcase下面 运行 ant命名--会在report下面 html和jtl 生成报告

image.png

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342