JMeter+Ant實現(xiàn)性能測試自動化

一、前言

?? ?? 2017年中旬,有幸接手了公司新產(chǎn)品的測試,領(lǐng)導(dǎo)通知說該項目需要進行功能測試、性能測試和接口測試,頓時壓力倍增(于是我把壓力(鴨梨)放在了冰箱里,就變成了動力(凍梨)),此前對性能測試一無所知,了解程度只能用“聽過”來形容。

?????? 性能測試首選的工具是JMeter,在此不多做介紹,但是不得不說JMeter也是一款非常好的接口測試工具。性能測試過程中手工重復(fù)的活動非常多,為了給客戶提供一個性能測試報告,我用了一周時間進行并發(fā)測試、數(shù)據(jù)整理、數(shù)據(jù)分析、最后生成測試報告,真的是手工重復(fù)到懷疑人生;于是萌生了實現(xiàn)性能測試自動化的想法。之前用Robot framework框架做過WEB自動化、安卓端自動化、接口自動化,但是始終未正真明白自動化的意義或是價值,現(xiàn)在突然頓悟,測試工作中最大的痛點就是重復(fù),減少工作中的痛點才是自動化最大的價值。所以自動化的第一步不是選用什么語言或是框架,而是能真正分析出自己工作中的痛點。

二、性能測試范圍

????? 簡言之,性能測試的目的就是分析性能瓶頸和調(diào)優(yōu),可是如何分析性能瓶頸?性能測試過程中應(yīng)該關(guān)注那些指標(biāo)?這些問題都是在我性能測試學(xué)習(xí)過程中比較迷茫的問題,于是按照自己的理解,整理了性能測試的主要范圍,詳見下圖:

?

性能測試范圍

??? 實際項目過程中,我主要是做接口性能測試,因此主要關(guān)注的是系統(tǒng)指標(biāo)和服務(wù)端資源占用率。

、性能測試過程

性能測試可以過程可以簡單的分為四個步驟,如下圖:

性能測試流程

????? 性能測試的實際過程中遇到了兩個難點:“明確性能指標(biāo)”和“結(jié)果分析調(diào)優(yōu)”;前者的難點在于沒有人可以給我提供性能指標(biāo),性能良好的指標(biāo)是什么?怎樣的并發(fā)數(shù)、吞吐率或是響應(yīng)時間符合性能預(yù)期標(biāo)準?一切都是未知數(shù),感覺自己在摸石頭過河。后者的難點不言而喻,也是整個性能測試的難點。性能分析的目的在于分析出系統(tǒng)的性能瓶頸,性能調(diào)優(yōu)的目的則是使系統(tǒng)可以具備高可用性、高可靠性和高并發(fā)性。

?????? 同樣,在性能測試過程中也遇到了兩個痛點:“運行測試腳本”和“生成測試報告”;前者主要是測試場景復(fù)雜,需要不斷的重復(fù)運行腳本,后者是需要手工整理數(shù)據(jù)、分析測試結(jié)果然后生成測試報告。前文中有提及到“自動化最大的價值就是減少工作中的痛點”,經(jīng)常重復(fù)運行腳本是否可以批量執(zhí)行?測試報告是否可以自動生成?因此針對這兩個痛點,如何實現(xiàn)自動化將在下文解析。

、自動化框架介紹

JMeter+Ant是比較常見的自動化測試框架,由于JMeter、Ant都是由java開發(fā)的,所以此性能測試框架具有良好的跨平臺性;下圖是按自己的理解繪制的自動化框架圖:

JMeter+Ant自動化測試框架

大體邏輯如下:

(1)Ant通過XML文件進行構(gòu)建,所有的構(gòu)建信息配置在build.xml文件中,通過調(diào)用target樹來執(zhí)行各種任務(wù);因此,性能測試過程中,可以按照不同的測試場景,設(shè)計測試腳本,然后通過Ant進行構(gòu)建,實現(xiàn)批量執(zhí)行。

(2)Ant通過測試結(jié)果(jtl文件)構(gòu)建生成html測試報告,并且輸出在指定路徑下;這一步即可解決第二個痛點“手工整理性能測試報告”。

(3)根據(jù)build.xml文件中配置的郵件信息,將html測試報告自動發(fā)送到指定的郵箱;

五、環(huán)境搭建

Java安裝

1、Java下載地址:https://www.java.com/zh_CN/

2、Java 環(huán)境變量配置

(1)設(shè)置路徑:我的電腦—>屬性—>高級—>環(huán)境變量;

(2)在【系統(tǒng)變量】新增JAVA_HOME,變量為JDK的路徑;

(3)PATH中添加 C:\Program Files\Java\jdk1.8.0_05\bin;

3、檢驗是否配置成功

(1)cmd進入命令行,輸入:java -version,顯示出java 的版本信息即配置成功;

JMeter安裝

1、JMeter下載地址:http://jmeter.apache.org/download_jmeter.cgi

2、JMeter 環(huán)境變量配置

(1)設(shè)置路徑:我的電腦—>屬性—>高級—>環(huán)境變量:

(2)在【系統(tǒng)變量】新增JMETER_HOME,變量為jmeter的路徑

(3)PATH中添加%JMETER_HOME%\bin;

3、檢驗是否配置成功

(1)cmd進入命令行,輸入:jmeter -v,顯示出JMETER的版本信息即配置成功;

Ant安裝

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

2、Ant 環(huán)境變量配置

(1) 設(shè)置路徑:我的電腦—>屬性—>高級—>環(huán)境變量:

(2)在【系統(tǒng)變量】新增ANT_HOME,變量為ANT的路徑

(3)PATH中添加 D:\apache-ant-1.9.9\bin;

3、檢驗是否配置成功

(1)cmd進入命令行輸入:ant -version,顯示出Ant的版本信息即配置成功;

六、構(gòu)建步驟

1、測試準備

(1)JMeter腳本按測試計劃選中進行保存,如果按線程進行保存,構(gòu)建時會報錯,后面問題匯總模塊會提到,例如保存為TestPlan.jmx。

(2)新增構(gòu)建文件的文件夾,例如在D盤根目錄下新增文件夾“JMeterTest”,里面再新增以下文件夾

(3)修改配置文件:jmeter.properties

文件路徑:%JMETER_HOME%\bin\jmeter.properties

將jmeter.save.saveservice.output_format=csv改為

jmeter.save.saveservice.output_format=xml,去掉前面?zhèn)渥⒌?號。

2、Ant構(gòu)建

????? Ant是用xml格式來進行構(gòu)建的,默認文件名稱為build。構(gòu)建文件的默認地址為%JMETER_HOME%\extras\build.xml,但是為了構(gòu)建方便,我們將xml文件放在我們自己目錄下,并且根據(jù)自己的需要自定義構(gòu)建內(nèi)容。

(1)在新增目錄D:\JMeterTest\XML下新增build.xml,ant來定義測試活動,具體的內(nèi)容都在build.xml中進行配置。

(2)build.xml中構(gòu)建活動定義完成后,cmd進入命令行,進入build.xml的目錄下輸入ant,回車執(zhí)行,如下圖提示BUILD SUCCESSFUL即可成功。

(3)本地目錄下 D:\JMeterTest\HTML,可查看到測試報告;查收郵件,附件也收到了HTML測試報告,如下截圖:

(4)本地目錄下 D:\JMeterTest\JTL,可看的生成的測試結(jié)果文件,可用Jmeter聚合報告的預(yù)覽進行查看,見截圖:

截止目前,我們已經(jīng)基本實現(xiàn)了接口測試自動化,如果要實現(xiàn)性能測試自動化,還要對生成測試報告模板的代碼進行優(yōu)化。

七、報告優(yōu)化

1、報告增加性能指標(biāo)

JMeter性能測試中,我們主要會關(guān)注聚合報告中Average time、Throughput、90% Line等指標(biāo),因此我們在測試報告中增加TPS(Throughput)90% Line等指標(biāo),

(1)在build.xml的代碼中可以看出測試報告調(diào)用的模板是%JMETER_HOME%\extras 路徑下的jmeter-results-detail-report_21文件,

(2)因此我們在jmeter-results-detail-report_21文件中進行修改,小編自己修改了很久,但是TPS得值總是不顯示,最后參考了以下博客文章得以解決,參考文章https://www.cnblogs.com/jaychang/p/5881525.html在此感謝作者無私的代碼分享。

(3)由于該模板的代碼非常多,優(yōu)化后的模板代碼可以在我的CSDN上進行下載;下載地址:http://download.csdn.net/download/okkczf/10233753

2、加接口詳情的報告

該報告的原始模板也可以在網(wǎng)上進行下載,下載地址:http://blog.csdn.net/luozhuwang/article/details/51889159(感謝作者的分享)

(1)將該模板 jmeter.results.detail.me.xls 放在%JMETER_HOME%\extras路徑下;

(2)要想調(diào)用該模板輸出測試報告需要在build.xml文件中增加以下代碼,我用reportdetail定義該測試活動;

(3)cmd進入命令行,進入build.xml的目錄下輸入ant,回車執(zhí)行后,郵件即可收到兩個HTML附件,第一個附件為測試報告,第二個附件即為增加的接口測試詳情;

接口測試詳情如下截圖:

以上代碼也可以在我的CSDN上下載:

http://download.csdn.net/download/okkczf/10220295

八、遇到問題

本文為JMeter+Ant實現(xiàn)性能測試自動化過程所有遇到的問題的整理匯總

(1)ant構(gòu)建遇到問題:1字節(jié)的UTF-8序列的字節(jié)1無效;

解決方法:build.xml中UTF-8改為UTF8;

(2)ant構(gòu)建遇到問題:運行ant 報錯Could not find the TestPlan class!

解決辦法:運行的jmeter腳本 TestPlan.jmx要測試計劃層做保存,而不是在threads層做保存。

(3)ant構(gòu)建時遇到如下報錯:

解決辦法:下載mail-1.4.7.jar,放在 D:\apache-ant-1.9.9\lib 目錄下

(4)生成報告存在的問題:

生成的報告中Min time 和Max time的時間顯示為NaN,Date report: date not defined ,如下截圖:

解決辦法:

(1)將apache-jmeter-3.2\lib中的serializer-2.7.2.jar、xalan-2.7.2.jar復(fù)制到apache-ant-1.9.9\lib中即可解決問題(1);

(2)build.xml代碼中增加以下內(nèi)容


注意事項:變量${time}在代碼中的定義 ,如果兩處名稱不一致則構(gòu)建失??;







????? 截止目前,Jmeter+Ant的性能自動化框架已經(jīng)搭建完成,如果需要你也可以使用Jenkins集成,本文中暫不介紹Jenkins的配置。文章依然存在很多的不足,沐沐會繼續(xù)努力爭取以后分享更多有價值的干貨。古人云“The more we share, ??the more we have”,將分享進行到底...

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容