jinkens+ant+jmeter搭建接口测试环境

序:首先要说下为什么要用jinkens+ant+jmeter这一套来构建接口测试框架,首先是因为喜欢jmeter,那么问题来了,为什么喜欢jmeter呢,是因为jmeter写接口省心、操作简单可通过纯UI页面完成接口Case,更神奇的是,如果测web的话还可以借助badboy录制脚本导入jmeter。本着less is more的观念,对接口测试持续集成进行操作,于是有了搭建这一套环境的想法。后来百度后发现了jinkens+ant+jmeter果然行的通而且有挺多教程,就开始学习起来,但实行起来问题不少且不能直接行的通,于是总结了搭建过程中遇到的难点写了此篇文章,若对以后有此需求的同学能提供一丢丢的帮助,就很开心了啦。

*———— 割 割 割,割掉小丁丁 , 废话不多少,开始正文:—————–
设备Mac mini / macOS Serria 10.12.2
全部软件 /配置文件下载地址:https://pan.baidu.com/s/1c4BL8a

*前提:搭建过程依赖Java环境,确保已先配置,不会的具体百度吧~

1、搭建环境-jmeter

1-1、下载,打开http://jmeter.apache.org/,点击Download Releases->选择Binaries->apache-jmeter-*.zip进行下载,这里下载的是apache-jmeter-3.1.zip,下载后解压并重名文件夹为jmeter,然后移动到自定义目录,本地配置的是 /Users/longchen/work/jmeter(本文默认软件都是在/Users/longchen/work目录下,按照实际情况自定义即可)

1-2、插件安装,解压JMeterPlugins-Extras-1.3.0.zip、JMeterPlugins-Standard-1.3.0.zip,将解压的文件夹中对应的ext目录下的文件拷贝到/Users/longchen/work/jmeter/lib/ext目录下

1-3、配置环境变量,打开terminal输入open ~/.bash_profile,新建JMETER_HOME=/Users/longchen/work/jmeter,把$PATH:$JMETER_HOME/bin: 追加到PATH,保存后terminal 中输入source ~/.bash_profile,立即生效新添加的配置。

1-4、检验是否配置成功,打开terminal 输入 jmeter -v (jmeter和 -v 之间有空格),获得jmeter版本则表示配置成功。

1-5、准备测试用例*.jmx,保存成功移动到目录/Users/longchen/work/test
这里写图片描述

2、搭建环境-ant

2-1、下载,打开http://ant.apache.org/,点击Download->Binary Distributions->,选择一个版本进行下载,这里下载的是apache-ant-1.10.1-bin.zip,下载后解压并重名文件夹为ant,然后移动到自定义目录,这里定义的是 /Users/longchen/work/ant

2-2、配置环境变量,打开terminal输入open ~/.bash_profile,建立ANT_HOME=/Users/longchen/work/ant,添加$PATH:$ANT_HOME/bin:到PATH配置,保存后terminal 中输入 source ~/.bash_profile,立即生效新添加的配置。

2-3、检验是否配置成功,打开terminal 输入 ant -version (ant和 -version之间有空格),获得ant版本则表示配置成功。

2-4、本地调试使用ant构建运行jmeter,并且生成jtl、Html报告

a). jmeter默认保存的是.csv格式的文件,所以我们先要设置一下/Users/longchen/work/jmeter/bin/jmeter.properties,修改jmeter.properties文件, jmeter.save.saveservice.output_format=xml;

b).进入jmeter的目录,把/Users/longchen/work/jmeter/extras/ant-jmeter-1.1.1.jar拷贝到/Users/longchen/work/ant/lib目录下

c). 打开terminal,切换到/Users/longchen/work/jmeter/extras目录,输入”ant -file build.xml -Dtest=Test” . 查看\apache-jmeter-2.13\extras目录下是否出现Test.jtl、Test.html文件,若有,则构建成功。
注意:Test.jmx是默认存在的Sample脚本文件。若构建失败,请分析terminal中打印的日志消息,定位问题。

2-5、jmeter默认报告展示的信息比较少,如果出错了,不方便定位问题,通过查询得知.jtl格式转换为.html格式时,修改style可获得更详细的信息,这里用的是jmeter.results.shanhe.me.xsl。

a).先下载jmeter.results.shanhe.me.xsl,可从本文开始的url下载

b). 把下载的文件放到/Users/longchen/work/jmeter/extras/目录下

c).修改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=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
> 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 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

2-6、编辑ant所需的build.xml文件,保存后移动到/Users/longchen/work/test,目录根据实际情况修改即可

<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter-test" default="run" basedir=".">
    <tstamp>
         <format property="time" pattern="yyyyMMddhhmm" />
     </tstamp> 
    <property environment="env"/>
     <property name="ReportName" value="接口测试详情报告" />
     <property name="ReportName1" value="接口测试总览" />
    <!-- 需要改成本地的 Jmeter 目录--> 
     <property name="jmeter.home" value="/Users/longchen/work/jmeter" />
    <!-- jmeter生成jtl、html格式的结果报告的路径,需要修改成自己的路径--> 
     <property name="jmeter.result.jtl.dir" value="/Users/longchen/work/test/report/${env.BUILD_ID}/jtl" />
     <property name="jmeter.result.html.dir" value="/Users/longchen/work/test/report/${env.BUILD_ID}/html" />
    <!-- 生成的报告的前缀-->  
    <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}[#${env.BUILD_ID}]${time}.jtl" />
    <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}[#${env.BUILD_ID}]${time}.html" />
    <property name="jmeter.result.htmlName.summary" value="${jmeter.result.html.dir}/${ReportName1}[#${env.BUILD_ID}]${time}.html" />
        <target name="run">
        <echo message="start..."/>
        <antcall target="clean" />
        <antcall target="test" />
        <antcall target="report" />
     </target>

      <target name="clean">
        <!-- 记录buildId--> 
        <mkdir dir="/Users/longchen/work/jmeter/test/temp/temp_id/${env.BUILD_ID}" />
        <!-- 需要改成本地的接口测试结果-输出目录--> 
         <mkdir dir="/Users/longchen/work/test/report/${env.BUILD_ID}" />
         <mkdir dir="/Users/longchen/work/test/report/${env.BUILD_ID}/jtl" />
         <mkdir dir="/Users/longchen/work/test/report/${env.BUILD_ID}/html" />
     </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="/Users/longchen/work/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-2.7.2.jar"/>
        <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
    </path>

    <target name="report">
        <xslt in="${jmeter.result.jtlName}"
              out="${jmeter.result.htmlName}"
              style="${jmeter.home}/extras/jmeter.results.shanhe.me.xsl" />
        <xslt 
              classpathref="xslt.classpath"
              force="true"
              in="${jmeter.result.jtlName}"
              out="${jmeter.result.htmlName.summary}"
              style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" >
                <param name="showData" expression="${show-data}"/>
                <param name="titleReport" expression="${ReportName1}[#${env.BUILD_ID}]${time}.html"/>
                <param name="dateReport" expression="${time}"/>
        </xslt>
         <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 --> 
         <copy todir="${jmeter.result.html.dir}">
             <fileset dir="${jmeter.home}/extras">
                 <include name="collapse.png" />
                 <include name="expand.png" />
             </fileset>
         </copy>
     </target> 
</project>

3、搭建环境-Tomcat

3-1、下载,打开http://tomcat.apache.org/,下载tomcat,这里选择的8.5.11版本,下载后解压并重名文件夹为Tomcat,然后移动到目录:/Library/Tomcat (Tomcat个人习惯放置到/Library目录,此处没有放置到work目录,哈哈)

3-2、启动Tomcat,打开terminal输入:sh /Library/Tomcat/bin/startup.sh,输入http://localhost:8080/,展示Tomcat主页则表示Tomcat搭建成功
启动tomcat成功

4、搭建环境-Jinkens

4-1、下载,打开https://jenkins.io/index.html,点击Download Jenkins->选择*.war进行下载,这里下载的是LTS release版本2.32.2.war
下载Jenkins

4-2、下载成功后把jenkins.war文件(*.war是tomcat可识别的工程)移动到目录:/Library/Tomcat/webapps/Jenkins.war

4-3、关闭Tomcat并重新启动,依次输入sh /Library/Tomcat/bin/shutdown.sh、
sh /Library/Tomcat/bin/startup.sh,输入http://localhost:8080/jenkins/,展示进入Jenkins页面则表示Jinkens搭建成功
注意 : jenkins配置成功后,jenkins.war文件不能立即删除,可以停止Tomcat服务,然后删除jenkins.war后再次启动即可,如果直接删除会把生成的/Library/Tomcat/webapps/Jenkins文件夹也一起删除的

4-4、配置Jenkins,启动后按照安装引导,设置用户名和密码,选择安装插件,可以默认安装即可,也可以都不选择(选择none),然后等引导完成后进入系统设置->管理插件,增加实际需要的插件。本文安装引导时选择了none,设置引导完成后单独安装的。需要安装的插件包含:Ant Plugin、Email Extension Plugin、Performance plugin

4-5、进入系统设置->Global Tool Configuration,配置JDK和ant,如下图配置jdk和ant

4-6、进入系统管理->系统设置,按照实际需求配置邮箱,此处有一定点要特别注意,系统管理员地址处要填写用户名,否则不能发送成功。
配置邮箱

通过发送测试邮件测试配置调试下,可以发送并成功收到即可。但默认邮件通知功能不多,建议用Extended E-mail Notification插件,配置信息同默认邮件通知即可。
配置邮箱2

5、环境基本准备Okay,开始正式进行~

5-1、查看/Users/longchen/work/test,确保准备好所有文件:
test目录
- build.xml是已经准备好的
- mvfile.sh是自定义的shell脚本,为优化测试报告准备的(可从本文开始的url下载,另外脚本中路径需要适当修改哈)
- 新创建report文件夹
- testbaidu.jmx是已经准备好的测试用例
- temp文件夹是shell脚本运行过后生成的,可忽略

5-2、进入jinkens,新建一个项目,如下图,填写名称后,选择构建一个自由风格的软件项目,进入下一步
构建项目
项目名称选择->高级设置->使用自定义的工作空间,此处填写本地设置的目录
自定义目录

5-3、构建触发器
构建器

5-4、增加构建步骤->invoke ant
ant

5-5、增加构建步骤->Excute shell,执行自定义的shell脚本
shell

5-6、增加构建后操作步骤->archive the artifacts,用户存档的文件填写**/temp/temp_report/html/*.html
ar

5-7、增加构建后操作步骤->Publish performance test result report,选择Add a new report->Jmeter,进入下一步,
jmeter
Reprot files填写**/temp/temp_report/jtl/*.jtl
jtl

5-8、增加构建后操作步骤->Editable Email notification,选择Advance Settings, 编辑Triggers
mail

5-9,此时所有工作完成了,进入项目,点击立即构建查看结果吧
测试结果

查看接口测试总览:
summary

查看详细报告:
detailReport

————— done —————
后记:
初始搭建时,shell脚本中通过计算/Users/longchen/work/test/report目录中最大值来确定最新一次报告测试结果,这个结果再传递jinkens发送邮件,但是这样存在一个性能问题,若测试结果太多时有性能问题。

最新优化获取报告方式 :
build.xml每次创建一个buildId目录,然后shell脚本获取buildId并复制/Users/longchen/work/test/report/buildId/下的html和jtl到指定文件夹,最后再传递jinkens发送邮件,这样可以避免性能问题,哈哈哈。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值