1. 程式人生 > 其它 >JMeter-JMeter+ant進行介面自動化測試並生成HTML測試報告2021-07-05

JMeter-JMeter+ant進行介面自動化測試並生成HTML測試報告2021-07-05

前言

小夥伴們,用python做介面自動化是不是寫程式碼比較繁瑣,而且沒有python程式碼基礎的小夥伴根本無從下手對吧!今天我們來學習一下如何使用JMeter工具實現介面自動化測試。

jmeter指令碼:

1、安裝JDK,配置java環境變數(安裝過程略)

2、安裝Jmeter(安裝過程略)

3、安裝ANT

3.1、下載安裝

下載地址:http://ant.apache.org/bindownload.cgi

3.1.1丶下載後解壓到指定位置即可,比如:F:\apache-Ant

3.1.2丶將jmeter所在的目錄下extras子目錄裡的ant-jmeter-1.1.1.jar複製到ant所在目錄lib子目錄之下,這樣ant執行時才能找到”org.programmerplanet.ant.taskdefs.jmeter.JMeterTask”這個類,從而成功觸發JMeter指令碼。

3.2、配置環境變數

新增環境變數(以windows為例)

ANT_HOME F:\apache-Ant

CLASSPATH %ANT_HOME%\lib

Path %ANT_HOME%\bin

3.3丶驗證安裝結果,命令列輸入ant -version,出現版本資訊則安裝成功

4.配置ANT與Jmeter的配置檔案

4.1.1丶配置ANT配置ant編譯檔案build.xml

拷貝下面的內容與新建的txt檔案中,並將此檔案改名為: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="D:\apache-jmeter-5.3\apache-jmeter-5.3" />

<!-- jmeter生成jtl格式的結果報告的路徑-->

<property name="jmeter.result.jtl.dir" value="D:\apache-jmeter-5.3\apache-jmeter-5.3\bin\case_run\report\jtl" />

<!-- jmeter生成html格式的結果報告的路徑-->

<property name="jmeter.result.html.dir" value="D:\apache-jmeter-5.3\apache-jmeter-5.3\bin\case_run\report\html" />

<!-- 生成的報告的字首-->

<property name="ReportName" value="裝置管理中臺介面自動化報告" />

<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" />

<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="D:\apache-jmeter-5.3\apache-jmeter-5.3\bin\case_run\Script" 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.shanhe.me.xsl" />

<!-- 因為上面生成報告的時候,不會將相關的圖片也一起拷貝至目標目錄,所以,需要手動拷貝 -->

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

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

<include name="collapse.png" />

<include name="expand.png" />

</fileset>

</copy>

</target>

</project>

4.1.2丶修改build.xml檔案,路徑:D:\apache-jmeter-5.3\apache-jmeter-5.3\bin\case_run

4.1.3 丶配置jmeter.properties

配置jmeter報告輸出格式為xml,在jmeter/bin目錄下jmeter.properties檔案中修改jmeter.save.saveservice.output_format=csv為jmeter.save.saveservice.output_format=xml,並去掉前面的註釋符號#

4.1.4丶準備測試指令碼資料

新建資料夾:D:\apache-jmeter-5.3\apache-jmeter-5.3\bin下建立case_run

case_run下建立:Report

case_run下建立:Script

Report下建立:Html和Jtl資料夾

case_run資料夾下放入build.xml檔案和要執行的檔案

Html資料夾裝的是ant 轉化後的結果

Jtl檔案裝的是Jmeter生成的結果

Script:Jmeter執行的指令碼

5丶開啟命令列進入build.xml檔案所在的目錄

輸入ant run即可生成報告,報告存放在report \html資料夾裡

6丶測試報告優化

用jmeter自帶的測試報告得到的測試報告資訊並不是很全,這裡參考網上的方法,做一個優化

連結: https://pan.baidu.com/s/1pMazoig-hOz5O9hulYSdtw 提取碼: 7efe ,提取jmeter-results-shanhe-me.xsl模板

6.1.1、下載優化模板jmeter-results-shanhe-me.xsl,拷貝到jmeter的extras目錄中,如D:\apache-jmeter-5.3\apache-jmeter-5.3\extras

6.2.2、設定測試輸出報告要輸出的內容,同樣在jmeter.properties中,設定需要輸出的內容為true,並去掉前面的註釋符號#,這裡全部設定成true

修改後:

jmeter.save.saveservice.output_format=xml

# The below properties are true when field should be saved; false otherwise

#

# assertion_results_failure_message only affects CSV output

#jmeter.save.saveservice.assertion_results_failure_message=true

#

# legitimate values: none, first, all

#jmeter.save.saveservice.assertion_results=none

#

jmeter.save.saveservice.data_type=true

jmeter.save.saveservice.label=true

jmeter.save.saveservice.response_code=true

# response_data is not currently supported for CSV output

jmeter.save.saveservice.response_data=true

# Save ResponseData for failed samples

jmeter.save.saveservice.response_data.on_error=false

jmeter.save.saveservice.response_message=true

jmeter.save.saveservice.successful=true

jmeter.save.saveservice.thread_name=true

jmeter.save.saveservice.time=true

jmeter.save.saveservice.subresults=true

jmeter.save.saveservice.assertions=true

jmeter.save.saveservice.latency=true

# Only available with HttpClient4

#jmeter.save.saveservice.connect_time=true

jmeter.save.saveservice.samplerData=true

jmeter.save.saveservice.responseHeaders=true

jmeter.save.saveservice.requestHeaders=true

jmeter.save.saveservice.encoding=true

jmeter.save.saveservice.bytes=true

# Only available with HttpClient4

#jmeter.save.saveservice.sent_bytes=true

jmeter.save.saveservice.url=true

jmeter.save.saveservice.filename=true

jmeter.save.saveservice.hostname=true

jmeter.save.saveservice.thread_counts=true

jmeter.save.saveservice.sample_count=false

jmeter.save.saveservice.idle_time=true

# Timestamp format - this only affects CSV output files

# legitimate values: none, ms, or a format suitable for SimpleDateFormat

jmeter.save.saveservice.timestamp_format=ms

jmeter.save.saveservice.timestamp_format=yyyy/MM/dd HH:mm:ss.SSS

6.2.3、設定build檔案的報告模板為優化後的模板jmeter-results-shanhe-me.xsl

6.2.4、按前面的方式再次用ant構建測試,檢視優化後的測試報告