接口功能測(cè)試之jmeter+Ant測(cè)試結(jié)果優(yōu)化

寫在前面:

jmeter的自帶的測(cè)試報(bào)告格式偏向于性能測(cè)試形式,那如果進(jìn)行接口功能測(cè)試,想去查問(wèn)題并追溯每一個(gè)接口的請(qǐng)求、響應(yīng)呢?
那就需要對(duì)jmeter默認(rèn)的結(jié)果進(jìn)行優(yōu)化,這里使用的原始結(jié)果采用xml格式(因?yàn)閏sv格式不支持顯示響應(yīng)結(jié)果)。

首先需要配置jmeter報(bào)告的屬性,打開(kāi)bin目錄的jmeter.properties
修改如下的一行(去掉注釋標(biāo)識(shí)符#)

jmeter.save.saveservice.output_format=xml

然后執(zhí)行jmeter NoGUIDriver:命令如下:

./jmeter -n -t /test.jmx -l ./result_jtl/test_result.jtl -e -o ./test_report

執(zhí)行命令后報(bào)錯(cuò)了:

Error in NonGUIDriver java.lang.IllegalArgumentException: Report generation requires csv output format, check 'jmeter.save.saveservice.output_format' property

查了下報(bào)錯(cuò)的原因,原因是如果命令行執(zhí)行必須要csv格式。
但是對(duì)于需要查看接口的響應(yīng)結(jié)果,必須使用xml格式(jmeter.properties注釋中說(shuō)明了response_data is not currently supported for CSV output),那么怎么使結(jié)果生成為xml格式呢?

這就需要用到Ant,就是我們的重頭戲咯~~~

二、配置Ant

1、mac上如果安裝了brew,可以直接用“brew install ant”來(lái)安裝ant,安裝完成后安裝文件在目錄/usr/local/Cellar/ant/

2、將jmeter的extras目錄中ant-jmeter-1.1.1.jar包拷貝至ant安裝目錄下的lib目錄中

3、修改bin目錄的jmeter.properties,修改如下的一行(去掉注釋標(biāo)識(shí)符#)
jmeter.save.saveservice.output_format=xml

4、配置ant的環(huán)境變量,首先“cd ~”回到home目錄,然后輸入命令“open -e .bash_profile”,打開(kāi)了配置用戶環(huán)境變量的文件,增加如下配置保存

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export ANT_HOME=/usr/local/Cellar/ant/1.10.0
export PATH=${PATH}:${ANT_HOME}/bin

5、配置ant的build.xml文件,新建一個(gè)build文件,可以放到任意目錄,到時(shí)候執(zhí)行的時(shí)候,先切換工作目錄到build.xml文件所在目錄,再使用“ant -buildfile build.xml”命令執(zhí)行jmeter

需要修改的地方下面有詳細(xì)注釋

<?xml version="1.0" encoding="utf-8"?>
<project name="ant-jmeter-test" default="run" basedir=".">
    <!-- 需要改成自己本地的 Jmeter 目錄-->  
    <property name="jmeter.home" value="/Users/fish/gf/08.autotest/apache-jmeter-4.0" />
    <property name="report.title" value="wjs-test"/>
    <!-- jmeter生成jtl格式的結(jié)果報(bào)告的路徑--> 
    <property name="jmeter.result.jtl.dir" value="/Users/fish/gf/autotest接口用例/ant-build/jmeter_result" />
    <!-- jmeter生成html格式的結(jié)果報(bào)告的路徑-->
    <property name="jmeter.result.html.dir" value="/Users/fish/gf/autotest接口用例/ant-build/jmeter_result" />
    <!-- 生成的報(bào)告的前綴-->  
    <property name="ReportName" value="wjs-test" />
    <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}.jtl" />
    <property name="jmeter.result.htmlNamedetail" value="${jmeter.result.html.dir}/${ReportName}detail.html" />

    <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}">
            <!-- 聲明要運(yùn)行的腳本"*.jmx"指包含此目錄下的所有jmeter腳本-->
            <testplans dir="/Users/fish/gf/autotest接口用例/" 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.htmlNamedetail}"
              <!-- 生成報(bào)告的模板文件,需要拷貝到j(luò)meter安裝文件extras目錄下-->
              style="${jmeter.home}/extras/jmeter.results.shanhe.me3.xsl">
              <param name="dateReport" expression="${report.datestamp}"/>
              <param name="titleReport" expression="${report.title}:${detailreport.datestamp}"/>

       </xslt>

                <!-- 因?yàn)樯厦嫔蓤?bào)告的時(shí)候,不會(huì)將相關(guān)的圖片也一起拷貝至目標(biāo)目錄,所以,需要手動(dòng)拷貝 --> 
        <copy todir="${jmeter.result.html.dir}">
            <fileset dir="${jmeter.home}/extras">
                <include name="collapse.png" />
                <include name="expand.png" />
            </fileset>
        </copy>
    </target>

</project>

6、修改jmeter安裝目錄bin下面的jmeter.properties文件,將輸出內(nèi)容格式改成xml,將其他修改為true


image.png

三、執(zhí)行測(cè)試

切換工作目錄到build.xml文件所在目錄,再使用“ant -buildfile build.xml”命令執(zhí)行jmeter

執(zhí)行成功后,會(huì)生成2個(gè)結(jié)果,一個(gè)為jtl文件,一個(gè)為html的報(bào)告(報(bào)告的內(nèi)容為樣式文件jmeter.results.shanhe.me3.xsl定義的格式,可以自行修改)


執(zhí)行結(jié)果之html
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容