zoukankan      html  css  js  c++  java
  • JDK+Jmeter+Ant+Jenkins接口自动化持续集成环境搭建与运行

    一、简介

    本文章主要是介绍接口自动化持续集成环境搭建以及测试实例,Apache JMeter是Apache组织开发的基于Java的接口和性能测试工具。

    Apache Jmeter是一个100%的纯java桌面应用,主要是针对web的压力和性能测试,但后来扩展到其他测试领域。Jmeter可以用于测试FTP、HTTP、RPC、JUNIT、JMS、LDAP、WebService(Soap) Request以及Mail和JDBC(数据库压力测试)。
     

    二、集成环境搭建

    1、安装JDK:

    由于jmeter是100%的纯java编写的,需要有java的运行环境,所以我们需要安装jdk,官网链接:https://www.oracle.com/technetwork/java/javase/downloads/index.html版本要求:最好是1.8以上

    1.1、下载jdk:

    1.2、安装jdk:Java SE 8u191 

    1.3、配置jdk环境变量

    我的电脑”>鼠标右键菜单>"属性">"高级系统设置">"环境变量"。

    a、在系统变量里新建“JAVA_HOME”变量,变量值为:D:jdk1(注:具体路径根据自己实际安装路径填写)   
             其为jdk的安装路径       
    b、新建“classpath”变量,变量值为:.;%JAVA_HOME%lib;%JAVA_HOME%lib ools.jar;%CATALINA_HOME%lib;
             其为java加载类路径,只有类在classpath中java命令才能识别,在路径前加了个"."表示当前路径
    c、在path变量里添加变量值:%JAVA_HOME%in;%JAVA_HOME%jrein(注:变量值之间用“;”隔开

     1.4、在命令窗口输入Java -version,可以查看到jdk版本说明安装正确。

    2、安装Jmeter:

     2.1、下载Jmeter:官网地址:http://jmeter.apache.org/download_jmeter.cgi

    解压就可以用,前提条件是必须是已经安装jdk,

    2.2、插件下载:官网地址:http://jmeter-plugins.org/downloads/all/

    插件下载后解压:找到JMeterPlugins-Extras.jar,把JMeterPlugins-Extras.jar放到apache-jmeter-2.12libext目录。

    2.3、配置环境变量

    具体操作位置同刚jdk一样,把jdk的java_home相应的换成jmeter的地址即可。

    我的电脑”>鼠标右键菜单>"属性">"高级系统设置">"环境变量";

    JMETER_HOME=D:Auto_Testapache-jmeter-5.0(注:具体路径根据自己实际安装路径填写)   

    CLASSPATH=%JMETER_HOME%libextApacheJMeter_core.jar; %JMETER_HOME%libjorphan.jar;  

    PATH=%JMETER_HOME%in

    2.4、启动jmeter 在命令窗口输入jmeter或者在 apache-jmeter-2.12injmeter.bat启动 (打开后的命令窗口不能关闭,否则jmeter的GUI也不能使用)

    两种方式都能够成功启动说明jmeter安装成功

    3、安装Ant:

    Ant是一个代码构建工具,在这里主要作用是为了构建我们写的jmeter脚本,然后再后面安装Jenkins上可以持续集成监控到我们的脚本情况。

    3.1、下载Ant,官网下载地址:https://ant.apache.org/bindownload.cgi

     3.2、配置Ant环境变量

    具体操作位置同刚jdk一样,把jdk的java_home相应的换成jmeter的地址即可。

    ANT_HOME=D:Auto_Testapache-ant-1.9.13(注:具体路径根据自己实际安装路径填写)   

    PATH=%ANT_HOME%in

    CLASSPATH=%ANT_HOME%lib

    3.3、验证Ant是否安装成功

    在命令窗口输入ant,出现下面提示说明安装成功,还可以通过ant -version查看ant版本。

    4、安装Jenkins

    jenkins是基于java开发一个持续集成工具,在这是用于我们监控我们跑jmeter写的接口测试用例。

    4.1、安装jenkins,官网地址:https://jenkins.io/download/

    4.2、配置jenkins

    通过在浏览器访问localhost:8080/jenkins既可以进入到jenkins页面(后面加了jenkins后访问不不了,是bug,直接去掉jenkins,如果你的8080端口没有被占用的话)

     
     
    初始的管理员密码,jenkins自动生成的,根据上面红色的路径找到密码,拷到下面的输入框中。
    然后弹出安装jenkins插件的页面,如果出现无法自动安装插件,查看是否有防火墙和网络,实在不行得通过离线方式进行安装,我这是在线自动安装的。
    接下来是创建用户和密码。

     然后就可以创建任务了。

    这个是我们百度云的安装包,有需要的朋友可以下载:

    链接:https://pan.baidu.com/s/1MANCRvZg9BinUyso1DXCKA 
    提取码:wqbo 

    三、Python开发http接口(这个可以不关注)

    一般公司接口测试,开发会提供明确的接口文档,包含接口地址、请求方式、入参、出参等以及各个返回值的对应的含义。

    具体开发不做详细介绍哈,有兴趣的朋友可以一起探讨下。

     

    四、Jmeter设计接口测试的脚本以及用例场景

    1、打开jmeter,创建测试计划,在测试计划下面创建线程组,线程组本质就是并发用户数。

    在这边简单介绍一个http接口用jmeter开发的脚本

    在测试计划组件下,鼠标右键添加线程组

    2、添加取样器,我们这篇文章主要介绍http请求,jmeter支持其他ftp、jdbc、tcp请求,都是类似的操作,后续会更新。

    3、根据接口文档维护http取样器参数

    4、判断请求结果是否正确,我们可以添加响应断言,

     5、为了能够很直观的查看到测试结果,我们可以添加监听器,其中可以添加查看结果树和聚合报告

     这样一个很简单的接口测试脚本就完成了,像我们这边做接口测试进行测试时是需要考虑接下来几个场景:

    5、接口测试用例设计

    a、功能测试:正常场景(通过性验证)、参数测试(参数组合)、异常场景(空)等

    b、性能测试:响应时间、吞吐量、并发数等

    c、安全测试:敏感信息、权限、数据加密、SQL注入等

    6、一个完整的接口测试脚本

    a、添加http头信息管理器,用于处理请求中存在中文的编码问题

    b、添加用户自定义变量,相当于我们的全局变量,在整个测试计划中都可以使用

    c、添加功能测试场景用例

    d、添加性能测试场景

    e、参数化不可变数据,为了模拟真实的用户场景,使数据不重复

    g、添加后置处理器BeanShell PostProcessor,用于处理响应中存在中文的编码问题

    h、添加监听器、(聚合报告、查看结果树)

    整个测试计划结构如下:

     

    五、连接ant和jmeter配置(注意点

    (1)将 jmeter的extras目录中ant-jmeter-1.1.1.jar包拷贝至ant安装目录下的lib目录中,这一步操作使Ant运行时能够找到"org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"这个类,从而成功触发JMeter脚本。

    (2)修改Jmeter的bin目录下jmeter.properties文件的配置:jmeter.save.saveservice.output_format=xml,同时去掉前面的注释,这一步操作使Jmeter报告输出文件格式为xml。

    (3)生成的测试报告可能会有三个指标显示NAN,那么复制jmeter的lib目录下的xalan-2.7.2.jar和serializer-2.7.2.jar copy到Ant的lib包里,重新生成就会成功!

    (4)如果生成jmeter报告数据为空,是因为jmeter的extra目录中缺少jmeter-results-detail-report_21.xsl文件导致,下载拷贝即可。

     好了,所有的环境以及配置还有脚本都已经准备好了,接下来就是配置jenkins

    六、build文件配置

    ant工具主要是根据build.xml文件来执行,build.xml默认存放于jmeter下的extras文件下,我们可以对build.xml文件进行修改来指定测试脚本、测试结果存放路径等。

    我的bulid.xml放在jmeter下的D:Auto_Testapache-ant-1.9.13目录下

    我的bulid.xml文件如下所示,把相应的路径改成自己的的就可以运行。

    <?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="TestReport" />
        <!-- 需要改成自己本地的 Jmeter 目录--> 
        <property name="jmeter.home" value="D:Auto_Testapache-jmeter-5.0" />
        <!-- jmeter生成jtl、html格式的结果报告的路径--> 
        <property name="jmeter.result.dir" value="${env.WORKSPACE}/results/${env.BUILD_ID}" />
        <!-- jmeter生成html格式的结果报告的路径-->
        <property name="jmeter.result.html.dir" value="${env.WORKSPACE}/results/${env.BUILD_ID}" />
        <!-- 生成的报告的前缀-->  
        <property name="ReportName" value="TestReport" />
        <property name="jmeter.result.jtlName" value="${jmeter.result.dir}/${ReportName}.jtl" />
        <property name="jmeter.result.htmlName" value="${jmeter.result.dir}/${ReportName}.html" />
        
        <target name="run">
            <echo message="start..."/>
            <antcall target="clean" />
            <antcall target="test" />
            <antcall target="report" />
        </target>
        
        <target name="clean">
            <mkdir dir="${env.WORKSPACE}/results/${env.BUILD_ID}" />
        </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="D:Auto_Testapache-jmeter-5.0demo" 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="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>

    七、创建job构建脚本

    1、创建配置如下:

    2、构建

    然后再D:Auto_Testjenkins-2.138.3workspacejobs esults目录下会生成测试报告

    其中有一个失败是用例就是这么设置的场景。

    好了,到这为止我们接口测试的部分已经完成,关于测试报告的分析,在后面我会做进一步的分析和总结,谢谢!

    参考博客:https://www.cnblogs.com/puresoul/p/4737716.html

  • 相关阅读:
    CXF.bat
    终于懂了:FWinControls子控件的显示是由Windows来管理,而不是由Delphi来管理(显示透明会导致计算无效区域的方式有所不同——透明的话应减少剪裁区域,所以要进行仔细计算)
    DELPHI语法基础学习笔记-Windows 句柄、回调函数、函数重载等(Delphi中很少需要直接使用句柄,因为句柄藏在窗体、 位图及其他Delphi 对象的内部)
    Delphi体系内部的4种消息传递办法(Send,Post,Perform,Dispatch)
    delphi高手突破之异常及错误处理
    Android 短信模块分析(三) MMS入口分析
    delphi如何加上spliter分割条,任意调整大小
    浅拷贝与深度拷贝(原型模式)
    delphi高手突破学习笔记之面向对象类和对象的本质(有汇编解释 good)
    delphi模态窗体最小化会隐藏的问题
  • 原文地址:https://www.cnblogs.com/jianghuyixiao/p/10018404.html
Copyright © 2011-2022 走看看