美文网首页关于MacBook Pro
jmeter+ant+Jenkins持续性能测试

jmeter+ant+Jenkins持续性能测试

作者: 龙猫六六 | 来源:发表于2018-08-22 17:35 被阅读263次

    jdk安装

    jmeter基于Java,所以使用jmeter前需要安装jdk,目前最新jmeter版本需要JDK8

    jmeter安装

    下载jmeter zip包
    jmeter官网:https://jmeter.apache.org/
    下载最新版本jmeter zip包,2018/8/22当前最新版本为4.0,需要JDK8,如下图:

    jmeter安装.jpg

    解压jmeter zip包
    mac环境下,将zip解压到/user/loacal路径下


    jmeter解压路径.jpg

    jmeter环境变量配置
    修改mac的.bash_prifile配置文件,便于直接唤起jmeter

    # add jmeter
    export JMETER=/usr/local/apache-jmeter-4.0
    export CLASSPATH=$JMETER/lib/ext/ApacheJMeter_core.jar:$JMETER/lib/jorphan.jar:$JMETER/lib/logkit-2.0.jar:$CLASSPATH
    export PATH=$PATH:$JMETER/bin
    

    jmeter安装验证
    iTerm中输入:jmeter -v 查看jmeter版本

    jc@jc:~$ jmeter -v
        _    ____   _    ____ _   _ _____       _ __  __ _____ _____ _____ ____
       / \  |  _ \ / \  / ___| | | | ____|     | |  \/  | ____|_   _| ____|  _ \
      / _ \ | |_) / _ \| |   | |_| |  _|    _  | | |\/| |  _|   | | |  _| | |_) |
     / ___ \|  __/ ___ \ |___|  _  | |___  | |_| | |  | | |___  | | | |___|  _ <
    /_/   \_\_| /_/   \_\____|_| |_|_____|  \___/|_|  |_|_____| |_| |_____|_| \_\ 4.0 r1823414
    
    Copyright (c) 1999-2018 The Apache Software Foundation
    
    

    iTerm中输入:jmeter 启动jmeter的GUI mode

    jc@jc:~$ jmeter
    ================================================================================
    Don't use GUI mode for load testing !, only for Test creation and Test debugging.
    For load testing, use NON GUI Mode:
       jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
    & increase Java Heap to meet your test requirements:
       Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file
    Check : https://jmeter.apache.org/usermanual/best-practices.html
    ================================================================================
    

    jmeter用例编写

    线程组

    作用:设置并发用户数,循环次数,循环时间的模块
    新建路径: TestPlain -> Threads(Users) -> Thread Group


    线程组.jpg

    模块属性:

    number of Threads(users):并发用户数
    Ramp-Up Period(in seconds):全量并发启动的完成时间
    Loop Count: Forver/n, Forver:一直运行;n:执行次数
    Duration(seconds):循环时间
    

    如下图,设置为10并发,持续30秒,其中1秒内并发数达到10


    线程组设置举例.jpg

    HTTP Request

    作用:新建http请求
    新建路径:
    线程组 -> Add -> Sampler -> HTTP Request


    http.jpg

    模块属性:

    Protocol [http]   //协议类型,默认为http,可选择https
    Server Name or IP   //请求域名,或IP+端口号
    Method   // GET / POST请求
    Path   //请求路径
    Send Parameters   //请求参数
    

    如下请求
    https://xxx.xxx.163.com?_tdchannel={tdchannel} & sdkAuth={sdkAuth}
    设置如下图,其中{tdchannel},{sdkAuth}采用CSV文件读取,稍后会介绍

    http请求.jpg

    CSV参数读取

    作用:从CSV文件中读取数据,作为HTTPS的请求
    新建路径:
    线程组 -> Config ELement -> CSV Data Set Config


    csv参数读取.jpg

    模块属性:

    Filename  //CSV文件路径
    Variable Name  //定义变量名
    Delimiter  //CSV分割符,模式使用","
    Sharing mode  //作用域,默认选择全域,All thread
    

    如下图,
    从指定路径读取csv文件,
    csv文件第一列变量名定义为channel,第二列变量定义为sdkAuth
    分割符为","
    作用域为全域
    定义参数变量channel,sdkAuth后,可在请求中使用该变量


    csv设置.jpg

    正则表达式提取

    作用:从请求结果中按正则表达式提取参数,即动态提取参数
    新建路径:
    Http请求 -> Add -> Post Processors -> Regular Expression Extractor


    正则参数提取.jpg

    模块属性:

    Apply to  //使用作用域,默认选择 Main sample only 
    Field to check  //匹配作用域,如选择Response Headers, 在响应请求头匹配正则表达式
    Name of created variable //参数变量名
    Regular Expression  //正则表达式
    Template //匹配参数
    

    如下图,定义正则匹配参数:
    定义参数名为ch5sdk
    参数使用域:请求全局
    正则匹配范围为Response Headers
    正则表达式为:_ch5sdk.us.c.v.online=(.*); Domain=,即匹配online的值


    正则参数简介.jpg

    观察结果树

    作用:查看性能测试结果

    新建路径:
    线程组 -> Listener -> View Result Tree


    结果树.jpg

    模块属性:

    Sampler result // 请求基本信息
    Request // Request数据
    Response data //  Response 数据
    
    结果树rs.jpg

    ant安装

    官网:
    http://ant.apache.org/bindownload.cgi
    下载最新版本的ant zip安装包

    antZip.jpg

    解压ant zip包到指定文件


    ant安装路径.jpg

    环境变量设置

    # add ant
    export ANT_HOME=/usr/local/apache-ant-1.10.5
    export PATH=$PATH:$ANT_HOME/bin
    

    安装验证

    ant -version
    
    ant验证.jpg

    Ant 运行jmeter脚本

    配置

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


    jmeter的jar设置.jpg

    2)修改Jmeter的bin目录下jmeter.properties文件的配置:jmeter.save.saveservice.output_format=xml
    作用使Jmeter报告输出文件格式为xml


    jmeterxml.jpg

    Ant执行jmeter脚本

    1.jmeter安装目录下新建文件夹
    TestReport文件夹:用于保存html的结果报告
    TestScrip文件夹:用于保存jmeter的测试脚本


    jmeter新建文件夹.jpg

    2.运行jmeter脚本
    如下图,需要注意2个文件


    antBuild.jpg

    build.xml:ant根据该文件运行jmeter脚本
    build.xml通用模版如下:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <project name="ant-jmeter-test" default="run" basedir=".">
        <tstamp>
            <format property="time" pattern="yyyyMMddHHmm" />
        </tstamp>
        <!-- 需要改成自己本地的 Jmeter 目录-->
        <property name="jmeter.home" value="/usr/local/apache-jmeter-4.0" />
        <!-- jmeter生成jtl格式的结果报告的路径-->
        <!-- <property name="jmeter.result.jtl.dir" value="/usr/local/apache-jmeter-4.0/TestReport/testToken/jtl"/> -->
        <property name="jmeter.result.jtl.dir" value="/Users/jc/.jenkins/workspace/helloWorld/test_token/jtl" />
        <!-- jmeter生成html格式的结果报告的路径-->
            <!-- <property name="jmeter.result.jtl.dir" value="/usr/local/apache-jmeter-4.0/TestReport/testToken/html"/> -->
        <property name="jmeter.result.html.dir" value="/Users/jc/.jenkins/workspace/helloWorld/test_token/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" />
        <!-- 输出生成的报告名称和存放路径-->
        <echo message="${jmeter.result.jtlName}"/>
        <echo message="${jmeter.result.htmlName}"/>
        <echo message="${jmeter.result.html.dir}"/>
    
        <target name="run">
            <antcall target="test"/>
            <antcall target="report"/>
        </target>
    
        <!--加载jar包,解决显示时间问题-->  
        <path id="xslt.classpath">  
            <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>  
            <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>  
        </path> 
        
        <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="/usr/local/apache-jmeter-4.0/TestScrip" includes="test.jmx" />
                
                <property name="jmeter.save.saveservice.output_format" value="xml"/>
            </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">
                  <!--显示dateReport的时间--> 
                  <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>
    

    根据个人环境的不同,上述需要修改的模版参数为:

    <!-- 需要改成自己本地的 Jmeter 目录-->
    <property name="jmeter.home" value="/usr/local/apache-jmeter-4.0" />
    
    <!-- jmeter生成jtl格式的结果报告的路径-->
    <property name="jmeter.result.jtl.dir" value="/Users/jc/.jenkins/workspace/helloWorld/test_token/jtl" />
    
    <!-- jmeter生成html格式的结果报告的路径-->
    <property name="jmeter.result.html.dir" value="/Users/jc/.jenkins/workspace/helloWorld/test_token/html" />
    
    <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本-->
    <testplans dir="/usr/local/apache-jmeter-4.0/TestScrip" includes="test.jmx" />
    

    jmeter脚本xx.jmx
    根据build.xml中的testplans节点配置,运行test.jmx

    3.运行结果
    对应build.xml的路径,输入

    ant run
    

    运行结果结果


    ant运行结果.jpg

    4.查看运行报告
    build.xml中设置的jmeter生成html格式的结果报告的路径查看结果


    ant测试结果.jpg

    html测试结果浏览器查看


    html结果.jpg

    Jenkins安装

    安装Jenkins
    官网:https://jenkins.io/index.html
    安装方式
    1.官网下载zip包
    2.brew install jenkins

    jenkins环境变量配置
    mac 命令行编辑.bash_profile

    # add jmeter
    export JMETER=/usr/local/apache-jmeter-4.0
    export CLASSPATH=$JMETER/lib/ext/ApacheJMeter_core.jar:$JMETER/lib/jorphan.jar:$JMETER/lib/logkit-2.0.jar:$CLASSPATH
    export PATH=$PATH:$JMETER/bin
    

    JDK配置
    配置路径:
    系统管理 -> 全局工具配置 -> JDK


    jdk配置.jpg

    Ant配置
    配置路径:
    系统管理 -> 全局工具配置 -> JDK


    ant配置.jpg

    1.构建一个自由风格的项目


    image.png

    2.配置构建步骤
    参数说明

    Ant Version //jenkins全局工具配置过Ant后,点击表单会出现在下拉框中,直接选中即可;
    Targets //前一章中提到的build.xml文件中的targets的名字;
    Build File //指定build.xml文件的路径以及文件名
    
    image.png

    3.jmeter.log授权
    命令行输入

    ls -lh
    chmod 777 jmeter.log
    

    如下图,jmeter.log为可执行文件


    image.png

    4.运行Jenkins任务


    image.png

    5.邮件配置
    全局配置邮件发送者:
    配置路径:
    Jenkins的系统管理 -> 系统设置 -> Extended E-mail Notification


    image.png

    项目配置邮件接收者:
    配置路径:
    Jenkins项目 -> 配置 -> 构建后操作
    参数配置

    Project Recipient List //邮件接收者列表,间隔符为","
    Content Type //邮件格式,选择“HTML(text/html)”
    Default Content //默认邮件模版
    Attachments //邮件附件,如test_token/html/*.html,表明html文件夹下所有html都会作为邮件附件
    Triggers //高级设置的选项,建议选择运行success/failure-any 都Send To Reciplent List
    

    邮件配置截图如下:


    image.png
    image.png

    附件路径说明
    1.Jenkins主目录
    查看路径:系统管理 -> 系统设置 -> 主目录


    image.png

    2.Jenkins工作共建
    Jenkins主目录/workspace


    image.png

    3.Ant执行build.xml配置
    Jenkins能够获取工作区间的文件,因此需要修改builder.xml中的参数,将测试结果保存到Jenkins对应项目的工作区间,附件就能正确读取
    如下

    工作空间路径:
    /Users/jc/.jenkins/workspace/helloWorld/
    对应build.xml的参数设置为:
    <property name="jmeter.result.jtl.dir" value="/Users/jc/.jenkins/workspace/helloWorld/test_token/jtl" />
    <!-- jmeter生成html格式的结果报告的路径-->
    <property name="jmeter.result.html.dir" value="/Users/jc/.jenkins/workspace/helloWorld/test_token/html" />
    

    验证方法
    运行对应项目,查看工作区间是否生成目标附件,如下图


    image.png

    相关文章

      网友评论

        本文标题:jmeter+ant+Jenkins持续性能测试

        本文链接:https://www.haomeiwen.com/subject/iipeiftx.html