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

一、前言

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

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

二侯养、性能測試范圍

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

?

性能測試范圍

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

患整、性能測試過程

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

性能測試流程

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

?????? 同樣斟览,在性能測試過程中也遇到了兩個痛點:“運行測試腳本”和“生成測試報告”毁腿;前者主要是測試場景復雜,需要不斷的重復運行腳本苛茂,后者是需要手工整理數(shù)據(jù)已烤、分析測試結(jié)果然后生成測試報告。前文中有提及到“自動化最大的價值就是減少工作中的痛點”妓羊,經(jīng)常重復運行腳本是否可以批量執(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聚合報告的預覽進行查看添谊,見截圖:

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

七扎瓶、報告優(yōu)化

1所踊、報告增加性能指標

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

(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復制到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)系作者
  • 序言:七十年代末太伊,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子逛钻,更是在濱河造成了極大的恐慌僚焦,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件曙痘,死亡現(xiàn)場離奇詭異芳悲,居然都是意外死亡,警方通過查閱死者的電腦和手機边坤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門名扛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人茧痒,你說我怎么就攤上這事肮韧。” “怎么了旺订?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵弄企,是天一觀的道長。 經(jīng)常有香客問我区拳,道長拘领,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任樱调,我火速辦了婚禮约素,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘笆凌。我一直安慰自己圣猎,他們只是感情好,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布菩颖。 她就那樣靜靜地躺著样漆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪晦闰。 梳的紋絲不亂的頭發(fā)上放祟,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天,我揣著相機與錄音呻右,去河邊找鬼跪妥。 笑死,一個胖子當著我的面吹牛声滥,可吹牛的內(nèi)容都是我干的眉撵。 我是一名探鬼主播侦香,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼纽疟!你這毒婦竟也來了罐韩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤污朽,失蹤者是張志新(化名)和其女友劉穎散吵,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蟆肆,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡矾睦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了炎功。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片枚冗。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蛇损,靈堂內(nèi)的尸體忽然破棺而出赁温,到底是詐尸還是另有隱情,我是刑警寧澤州藕,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布束世,位于F島的核電站,受9級特大地震影響床玻,放射性物質(zhì)發(fā)生泄漏毁涉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一锈死、第九天 我趴在偏房一處隱蔽的房頂上張望贫堰。 院中可真熱鬧,春花似錦待牵、人聲如沸其屏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽偎行。三九已至,卻和暖如春贰拿,著一層夾襖步出監(jiān)牢的瞬間蛤袒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工膨更, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留妙真,地道東北人。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓荚守,卻偏偏與公主長得像珍德,于是被迫代替她去往敵國和親练般。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理锈候,服務(wù)發(fā)現(xiàn)薄料,斷路器,智...
    卡卡羅2017閱讀 134,665評論 18 139
  • ANT build.xml文件詳解(一) Ant的概念 可能有些讀者并不連接什么是Ant以及入可使用它晴及,但只要使用...
    SkTj閱讀 4,003評論 0 2
  • 前言 軟件開發(fā)的V模型大家都不陌生都办,其中測試階段分為單元測試→功能測試→系統(tǒng)測試→驗收測試嫡锌。其中單元測試一般...
    伊人風采_690d閱讀 3,353評論 12 55
  • 妻是個堅韌的人虑稼。那年孩子剛滿周歲,一手抱著鬧騰中的我們家大哥势木,一手執(zhí)筆脫產(chǎn)學習大專中藥學蛛倦,白天里還要上班,居...
    青小河10閱讀 215評論 0 0
  • 17:05啦桌。 晴溯壶,9°/-4°。 銀川甫男。 我是個不怎么提問的孩紙且改,也不太會提問。一直想知道別人怎么能提出那么好的問...
    文小輝cool閱讀 410評論 0 1