接口自动化测试环境搭建

平时在服务端测试时,我们需要涉及2方面的内容:

  1. 基于JAVA白盒的单元测试;
  2. 基于Jmeter黑盒的接口测试&性能测试;

不管是黑盒还是白盒,我们一旦实现代码或脚本的测试,就可以做到可持续集成,这在接口的日常回归和冒烟测试中非常的高效。

下面开始介绍如何实现以上2个方面的可持续集成环境搭建。

1. Jenkins+Ant+Jmeter框架

1.1 环境搭建

环境配置(仅代表本文作者搭建环境时相关配置):
JDK:jdk1.8.0_144
Ant:apache-ant-1.9.9
Jmeter: apache-jmeter-3.0
Jenkins: jenkins-2.60.2

1.1.1 Jenkins环境搭建

  1. 下载最新的版本(一个 WAR 文件)。Jenkins官方网址: http://Jenkins-ci.org/

  2. 运行 Java -jar jenkins.war
    注意:Jenkins 需要运行 Java 5以及以上的版本。
    还有一种安装方式就是将下载的war包文件部署到 servlet 容器,然后启动容器,在浏览器的URL地址栏中输入类似http://localhost:8080/jenkins/这样的地址即可。下图是安装成功后的界面(使用的是Linux+Tomcat6+Java6环境):

  3. Jenkins配置
    写在配置前的一些话:Jenkins的配置不可能全部都说到的,大部分配置是有英文说明的,点击输入框后面的问号就可以看见了。英文不会用翻译工具,连蒙带猜的,多测试几次,你就懂了。

  4. Jenkins服务默认端口为8080,如与其他服务冲突,可在..\Jenkins\jenkins.xml中修改默认端口,如我这里修改为--httpPort=8081;


另外一种修改端口号方式:

  1. 安装Jenkins时运行“Java -jar jenkins.war” 命令,出现下列问题
    点击查看大图

    只是因为8080端口已经有程序占用了,需要修改端口号。
    解决方法是:
    运行“java -jar jenkins.war --ajp13Port=-1 --httpPort=8089”命令。
    8089是新的端口号,可以换成任何你想要的,但是不要和其他程序冲突哦。
    OK啦。
    2、安装jenkins服务,这样每次不用每次敲命令,开机自启动
    (Jenkins->Manage Jenkins->Installing Jenkins as Windows service, 安装到你指定目录D:\jenkins)
    关掉启动的窗口,试着启动安装的服务
    控制面板->管理工具->服务, 可以看到jenkins, 右击启动

Jenkins服务默认是自动启动的,如果想修改为手动启动,请自行管理->服务,找到Jenkins服务,修改为手动启动即可。


打开Jenkins,首次进入会默认让你选择安装插件(此处如果完全不清楚自己需要什么插件,建议全选)。插件安装完成之后,需要设置登录用户,按照自己喜好设置即可。

1.1.2 Ant环境搭建

  1. 解压apache-ant-1.9.7-bin.zip到D:\Progrom Files目录下;


  2. 配置Ant环境变量
    新建以下环境变量:
    ANT_HOME:D:\Progrom Files\apache-ant-1.9.7,此为你的ANT安装路径;设置完成后,点击"确认"来保存。

  3. 在环境变量PATH的最后面添加一下内容:
    ;%ANT_HOME%\bin 注意前面的分号,如果PATH中最后没有分号";"的话要加上,有的话就可去除。

  4. 进入cmd命令窗口,在CMD窗口中输入ant -version,敲击回城键,会显示出你安装的ANT版本,如果成功显示,说明你的配置应该是成功了.

  5. 本地调试使用ant构建运行Jmeter,并且生成jtl、Html报告;
    jmeter默认保存的是.csv格式的文件,所以我们先要设置一下bin/jmeter.properties文件内容,修改jmeter.properties文件 jmeter.save.saveservice.output_format=xml;
    将apache-jmeter-2.13\extras\ant-jmeter-1.1.1.jar拷贝到apache-ant-1.9.7\lib目录下;

  6. 在\apache-jmeter-2.13\extras目录下打开CMD,运行"ant.bat -file build.xml -Dtest=Test" . 查看\apache-jmeter-2.13\extras目录下是否出现Test.jtl、Test.html文件,若有,则构建成功。注意:Test.jmx是默认存在的Sample脚本文件。
    若构建失败,请分析cmd打印的日志消息,定位问题;

  7. build文件推荐设置:

**[html]** [view plain](http://blog.csdn.net/qi_lin7/article/details/52045713#) [copy](http://blog.csdn.net/qi_lin7/article/details/52045713#)

<!-- 这个是推荐build,至于原理,大家可以查看ant-jmeter-1.1.1.jar源码 -->    

**[html]** [view plain](http://blog.csdn.net/qi_lin7/article/details/52045713#) [copy](http://blog.csdn.net/qi_lin7/article/details/52045713#)
<?xml version="1.0" encoding="UTF-8"?>  
  
<project name="ant-jmeter-test" default="run" basedir=".">  
      
    <tstamp>  
        <format property="time" pattern="yyyyMMddhhmm" />  
    </tstamp>  
    <property name="basedirectory" value="D:\Program Files\apache-jmeter-3.1\extras" />  
    <!-- 需要改成自己本地的 Jmeter 目录-->    
    <property name="jmeter.home" value="D:\Program Files\apache-jmeter-3.1" />  
    <!-- jmeter生成jtl格式的结果报告的路径-->   
    <property name="jmeter.result.jtl.dir" value="${basedirectory}" />  
    <!-- jmeter生成html格式的结果报告的路径-->  
    <property name="jmeter.result.html.dir" value="${basedirectory}" />  
    <!-- Name of test (without .jmx) -->  
    <property name="test" value="Test"/>  
    <!-- 生成的报告的前缀-->    
    <property name="ReportName" value="TestReport" />  
    <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${test}.jtl" />  
    <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${test}.html" />  
      
    <path id="xslt.classpath">  
        <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>  
        <fileset dir="${jmeter.home}/lib" 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="${basedirectory}" includes="${test}.jmx" />  
        </jmeter>  
    </target>  
          
    <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>  
        <copy todir="${jmeter.result.html.dir}">  
            <fileset dir="${jmeter.home}/extras">  
                <include name="collapse.png" />  
                <include name="expand.png" />  
            </fileset>  
        </copy>  
    </target>  
      
</project>  

1.1.3 Jmeter环境搭建

  1. 解压apache-jmeter-2.13.zip到D:\Progrom Files目录下。


  2. Jmeter插件的安装。解压JMeterPlugins-Extras-1.3.0.zip、JMeterPlugins-Standard-1.3.0.zip,将对应ext目录下的文件拷贝到D:\Progrom Files\apache-jmeter-2.13\lib\ext目录下;


  3. 配置jmeter环境变量:

  • 设置环境变量,新建系统变量在变量名中输入:JMETER_HOME,变量值中输入:D:\Progrom Files\apache-jmeter-2.13,点击确定即可。
  • 在环境变量CLASSPATH中添加%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-1.2.jar;
    在环境变量Path中添加%JMETER_HOME%\bin3) 检验是否配置成功 运行cmd 输入 jmeter -v (jmeter和 -v 之间有空格)
    若如图所示 显示版本信息 则说明安装和配置成功。


1.2 项目实战

步骤1:

Jmeter脚本设计,包括性能测试脚本和接口测试脚本test.jmx

步骤2:

将Jmeter脚本放在文件夹 *D:\apache-jmeter-3.0\extras *;

步骤3:

本地登陆http://121.40.190.131:1080/ ,构建测试环境,可复制已经搭建好的test例子(项目路径:http://121.40.190.131:1080/job/test), 然后进入配置更改以下2项即可:

image.png
image.png

如上图,红色框内的信息需要跟你的脚本名称一致,这样可易于识别不同的脚本,不同的结果。如我们的脚本为test.jmx,那么我们只需更改红框内信息为 test.jtl、test.html,其他无需更改,点击构建即可;

步骤4:

查看测试结果,如图:

image.png

同时,可以可以点击进入每次构建的Performance Report,查看具体的jtl文件信息,如下图:

image.png

如上图,可以查看本次构建,线程数、响应时间、错误率与上次相比,增减量。

2. Jenkins+Java+Maven+Junit+Git框架

2.1 环境搭建

//

2.2 项目实战

步骤1:

Java单元测试——基于主干拉取autotest分支,然后基于autotest代码进行白盒测试。在每次新项目提测时,将新代码合并至autotest分支即可,不会覆盖我们的单测代码;同时,也可以用于每日的业务回归测试。

步骤2:

提交本地代码至autotest分支,复制已经搭建好的 jingqi_center项目(http://test.cxjc.youzibuy.com/jenkins/view/%E6%8E%A5%E5%8F%A3%E8%87%AA%E5%8A%A8%E5%8C%96/job/jingqi_center/), 只需修改git的路径和分支号即可,如下图:

image.png

步骤3:

构建完成后,可查看测试结果及历来构建的趋势,如下图:

image.png

同时,点击最新测试结果,可查看具体信息:

image.png

如上图,会列出Failed Tests的接口,点击 + ,可展示具体信息:

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

推荐阅读更多精彩内容