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構建測試,檢視優化後的測試報告