Jenkins+Jmeter+Ant接口持续集成

   

修改时间css

修改内容html

修改人前端

2016.5.22node

建立mysql

刘永志git

2016.6.15sql

完成数据库

刘永志apache

   

前言:

为何要用Jmeter作接口测试:

当选择这套方案的时候,不少人会问,为何选择Jmeter作Case管理?为何不本身写框架?说实话,本身写框架有很大优点,好比易于拓展,易于定制。Testhome上也有不少很牛逼的框架,看着就让人流口水的。不少大公司都是本身写的框架,有WEB界面(我对界面有偏心),有简洁的Case编写方式,有很好用的录制方法以致于我曾经也尝试写过一个(Java+Testng执行+Xml管理Case),可是过程很坎坷,遇到了不少坑(技术积累不足是很重要的一方面)。例如编写Case的时候调试很麻烦,后续拓展须要不断维护(不断封装新的参数获取方法)等等。因此,最终选择了它,你们能够本身尝试体会下。编程

Jmeter作接口测试的优点:

  1. Jmeter支持录制,工具备Gui界面,入手相对简单。
  2. Gui便于调试,本地调试经过上传,管理容易。
  3. 维护成本很小,Jmeter功能比较全面,不会让本身陷入不停的维护框架的坑。
  4. Jmeter Case是基于xml的(虽而后缀是jmx格式),执行结果也能够导出xml格式(结果为jtl后缀)

Jmeter作接口测试的缺陷:

  1. 单条Case执行依赖本地
  2. Jmeter编写Case有必定学习成本
  3. 拓展性稍差,Case基于xml格式管理,后续若是想要本身编写平台,导出这些Case是个不小的工做量。

Jmeter+Jenkins+Ant实施方案的适用范围:

  1. 小型公司或小团队,大公司有本身的平台,后续需求也多,仍是本身写一套吧。
  2. 测试团队较小,没有专门的测试开发部门支持。
  3. 编程不是很牛逼的,若是你很厉害,本身能搞定全部前端,后台,本身搞比较好。
  4. 须要马上出活的,不想将有限的精力放到后期维护当中的。

Jmeter相关插件安装:

插件安装:

Jmeter的插件安装很简单,只须要下载对应插件解压便可。

  • 下载地址:http://jmeter-plugins.org/downloads/all/
  • 下载后解压放入:apache-jmeter-2.12\lib\ext\目录下
  • 重启jmeter

    ps:数据库连接驱动若是须要须要专门下载,例如mysql须要jdbc的jar包,地址:http://dev.mysql.com/downloads/file/?id=462850

用例生成与导出:

Jmeter的用例格式为jmx文件,实际为xml格式,感兴趣能够学习下本身定制生成想要的jmx文件。

  • 生成原则:
    • 每一个功能模块为一个独立的jmx文件。增长可维护性。(尽可能不要将一个jmx文件放入太多功能,后期维护成本会很高。)
    • 模块的私有变量保存在模块中,多模块共有的(例如服务器ip端口等)能够考虑存在单独的文件中读取。
    • 接口测试不要放太多线程,毕竟不是作压力测试,意义也不大。
  • 导出方法:
    • 编写测试用例
    • 文件——保存为——肯定:

Jmeter配置文件修改:

  • 为何要修改配置文件
    • jmeter执行结果文件默认保存的不是xml格式,没法转化成html格式
    • jmeter执行结果文件默认有不少执行数据是不保存的,而测试报告须要这些数据
  • 配置文件路径

    ${jmeterhome}/bin/jmeter.profile

  • 配置文件修改内容:
    • 修改jtl 文件格式:

      去掉注释(#),修改csv为xml

    • 添加jtl文件结果参数:

      根据想要保存的参数修改,若不会可参照后文第三方模板网址给出的参数修改。

      修改后别忘记去掉注释(#)

Jenkins相关插件介绍与配置:

Jenkins插件安装方法本文不作介绍,感兴趣的能够查资料学习下。

Jmeter插件:Performance plugin

  • 功能:用来展现jmeter执行结果
  • 配置截图:

  • 配置说明:
    • Report files:配置jtl文件路径,相对路径与绝对路径都可,图为相对路径
    • 其余选项:配置失败比例显示图形等参数,按需配置

Ant插件:Ant Plugin

  • 功能:用来执行Ant
  • 配置截图:

       

  • 配置说明:
    • Ant Plugin能够在构建步骤中添加,直接执行构建
    • 另一种方式就添加shenll脚本(windows下添加dos脚本)执行构建,截图中就是这样操做
    • 相比用插件构建,命令行构建有如下优缺点:
      • 须要在服务器中直接安装ant并配置环境变量,确保jenkins能够直接执行ant命令
      • 若是Jenkins是放在tomcat容器中,须要在tomcat中配置环境变量,不然会报找不到Ant命令,具体配置以下:
        • 编辑 catalina.sh 文件,加入环境变量,不然 jenkins 会报找不到 Ant 错误

          #See the license for the……

          JAVA_HOME=/usr/lib/jvm/jdk1.8.0_31

          Export JENKINS_HOME="/root/.jenkins"

    • 灵活性更强,能够直接指定 Ant 的执行参数

         

Svn插件:Subversion Plug-in

  • 功能:版本管理,按需使用
  • 配置截图:

  • 配置说明:
    • Reponsitory URL:填写仓库url地址
    • Add按钮:添加svn的用户名密码
    • 其余选项:按需配置

         

Html展现插件:HTML Publisher plugin

  • 功能:html报告展现
  • 配置截图:

  • 配置说明:
    • HTML directory to archive:填写生成html文件的路径
    • index page[s]:填写展现报告的主页
    • 其余选项:按需填写
  • 原理说明:
    • 本插件并不会本身产生html文件,而是经过xslt转化xml生成的报告
    • xslt能够本身在服务器中安装,也能够经过经过Ant配置文件指定jar包,本文就是经过Ant指定jmeter内部集成的jar包
    • 生成的html文件并非在jenkins中默认的报告路径展现,而是会复制到${jenkinshome}/jobs/projectname/htmlreports/HTML_REPORT

      目录下

    • 每次只能展现最新版本的html报告,也就是说上一次编译的html报告会被覆盖
    • 由于jenkins安全性的问题,默认加载出来的报告是无css的,经过如下配置解决:

      HTML Publisher Plugin 插件在新的Jenkins版本中会致使打开的网页中没法加载CSS以及没法点击按钮的状况,因为CSP致使,可在Jenkins控制台中执行:System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")以解决此问题。其余因为CSP缘由致使的html插件也可用此方法解决。

         

         

Git插件:

  • 功能:版本管理,按需使用
  • 配置截图:

  • 配置说明:
    • Reponsitory URL:仓库地址
    • Add添加git的帐号
  • 使用技巧:在只能经过http链接,须要每次输入帐号密码的状况下,能够按以下配置,配置后便可按照填写帐号密码权限获取内容。

cd /root

vim .netrc

添加配置以下:

machine git服务器路径

login git帐号

password git密码

Jenkins项目整体配置:

  • 服务器环境与依赖
    • Jdk:安装并配置环境变量
    • Ant:安装并配置环境变量
    • Jmeter:安装并添加须要的插件
    • 其余:
      • Jmeter+Ant,须要将${jmeterhome}/extras/ant-jmeter-1.1.1.jar文件拷贝到${anthome}/lib目录下,不然编译会报错
      • Jmeter如需连接数据库,需添加jdbc插件
      • 若是不引入jmeter中的xslt,须要手动安装该软件
  • Jenkins项目配置:
    • jenkins的工做路径,一样的jar包均可能会生成不一样的路径。

      jenkins——系统设置——高级

         

   

Ant相关使用:

Ant的具体使用方法本文不详细介绍,感兴趣能够本身阅读相关资料学习一下。

定制集成Ant配置文件:

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

   

<project name="ant-jmeter-test" default="run" basedir=".">

<!-- 须要改为本身本地的 Jmeter 目录-->

<property name="jmeter.home" value="/home/apache-jmeter-2.13" />

<!-- jmeter生成jtl格式的结果报告的路径-->

<property name="jmeter.result.jtl.dir" value="/root/.jenkins/jobs/ApiTest/workspace/report/jtl" />

<!-- jmeter生成html格式的结果报告的路径-->

<property name="jmeter.result.html.dir" value="/root/.jenkins/jobs/ApiTest/workspace/report/html" />

<!-- 生成的报告的前缀-->

<property name="ReportName" value="TestReport" />

<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/report.jtl" />

<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/index.html" />        

<property name="lib.dir" value="${jmeter.home}/lib"/>

   

<path id="xslt.classpath">

<fileset dir="${lib.dir}" includes="xalan*.jar"/>

<fileset dir="${lib.dir}" includes="serializer*.jar"/>

</path>

   

   

<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="/root/.jenkins/jobs/ApiTest/workspace/jmx" includes="*.jmx" />

   

<property name="jmeter.save.saveservice.output_format" value="xml"/>

   

</jmeter>

</target>

          

<target name="report">

<xslt classpathref="xslt.classpath"

force="true"

in="${jmeter.result.jtlName}"

out="${jmeter.result.htmlName}"

style="${jmeter.home}/extras/jmeter-results-lyz.xsl">

<!-- 由于上面生成报告的时候,不会将相关的图片也一块儿拷贝至目标目录,因此,须要手动拷贝 -->

</xslt>

<copy todir="${jmeter.result.html.dir}">

<fileset dir="${jmeter.home}/extras">

<include name="collapse.png" />

<include name="expand.png" />

</fileset>

</copy>

</target>

</project>

  • 如上,标红的文字,为路径信息,须要修改成本身的本地路径
  • style参数为生成html文件的模板文件,能够修改成本身的模板文件,jmeter提供了多个模板文件可供使用

Case管理目录结构:

关于Case的管理,因测试主要依赖Jmeter+Ant来作,结构以下:

  1. ./jmx/目录用来放Jmeter生成的Case文件(编写时注意,不要用绝对路径,不然后续维护成本会提升)
  2. ./res/目录用来放Jmeter测试须要的相关配置文件与资源,例如账号信息,上传图片接口测试所需的图片等
  3. build.xml文件,Ant的配置文件
  4. 阅读build.xml文件,会发先还有一个自动生成的目录./report,该目录下有两个目录jtl以及html,用来放置不一样格式的测试报告。

测试执行与报告优化:

测试报告模板介绍:

  • jmeter 自带模板
    • jmeter自带了4个模板(jmeter3后下降为2个)
    • 模板路径:${jmeterhome}/extras/jmeter-results*.xsl
    • 模板效果(jmeter-result-detail_21.xsl ):

    • 模板使用:
      • 修改${jmeterhome}/bin/jmeter.profile配置文件,添加所需的报告参数
      • build.xml文件中指定,手动操做学习下xslt工具的使用说明
  • 第三方模板(本人只找到了一个第三方模板)
    • 下载地址:http://shanhe.me/node/18/314
    • 模板效果:

    • 注意事项:
      • 千万不要忘记修改jmeter.profile文件
      • 地址中介绍build.xml文件以及jmeter.profile文件具体的参数修改,不要忽视

测试报告模板优化:

  • 为何要优化模板:
    • 第三方模板看起来不够归纳
    • 自定义模板格局比较漂亮,默认没法查看响应数据,不便于调试
  • 修改后结果:
    • 基于自带模板修改
    • 添加展现响应数据内容
    • 添加响应数据过长换行功能
  • 修改步骤:
    • 编辑jmeter-results-detail-report_21.xsl

      查看响应数据,修改成

         

    • 须要删除build 文件中的showData 配置,不然会致使编译出来的仍然不显示

    • 结果

   

关于拓展的思考:

Case管理的优化拓展:

  1. 编写Gui工具导出与生成Case,下降Jmeter学习成本。
  2. jmeter的case其实xml格式,若是想要导出管理,能够编写工具导出存储以及编辑
  3. Jmeter3支持直接生成html 格式的report,目前还没研究,有兴趣的能够学习一下

相关文章
相关标签/搜索