性能測試進(jìn)階(三)——使用jmeter+ant進(jìn)行接口集成性能自動(dòng)化測試

此前的性能測試進(jìn)階文章中內(nèi)容提到,近期我已經(jīng)成功完成分布式的性能測試、單機(jī)輸出報(bào)告等操作。與此同時(shí),最近利用JMeter寫腳本來進(jìn)行Web的性能測試,最終寫了很多份腳本。可是這么多腳本,我不可能一個(gè)個(gè)的手動(dòng)去點(diǎn)啊,有沒有什么辦法來批量運(yùn)行JMeter腳本呢?

這個(gè)時(shí)候想起了一個(gè)在阿里游戲工作的測開大神提到過,可以借助Ant。接下來我就借助jmeter+ant進(jìn)行接口集成性能自動(dòng)化測試。


前期準(zhǔn)備:安裝與配置Jmeter和Ant

Jmeter的安裝和配置在這就不多說了,和之前是一樣的。那么在這里重點(diǎn)說說Ant的安裝與配置。

首先到官網(wǎng)去下載Ant,網(wǎng)址鏈接:下載Ant,并且解壓放到D盤。

Ant下載頁面


接下來配置環(huán)境變量

1. ANT_HOME: 安裝路徑;

2. path: %ANT_HOME%\bin

ANT_HOME


path


cmd 命令行執(zhí)行 ant -version 驗(yàn)證ant的安裝情況。

驗(yàn)證版本


接下來,?找到JMeter所在目錄下extras子目錄里的ant-JMeter-1.1.1.jar這個(gè)文件。


將其復(fù)制到Ant所在目錄lib子目錄之下,復(fù)制完如下。


這樣Ant運(yùn)行時(shí)才能找到”org.programmerplanet.ant.taskdefs.jmeter.JMeterTask”這個(gè)類,從而成功觸發(fā)JMeter腳本。


核心過程:編寫配置文件

環(huán)境準(zhǔn)備好之后,剩下的就是編寫配置文件了,讓Ant找到所有的JMeter文件。默認(rèn)的配置文件,命名為build.xml,下面就介紹一下,如何編寫這個(gè)xml文件。

配置build.xml文件如下:

build.xml文件


配置工作完成之后,就可以正式進(jìn)入壓測環(huán)節(jié)了。


重中之重:壓測填坑之路

首先打開cmd命令行,cd到build.xml目錄,運(yùn)行ant命令,就會(huì)啟動(dòng)JMeter進(jìn)行壓測。JMeter運(yùn)行完畢后,會(huì)自動(dòng)執(zhí)行將生成的jtl文件分析為csv文件的工作。

然而,填坑之路就此開啟。

ant執(zhí)行后,發(fā)現(xiàn)報(bào)錯(cuò)了,提示“build failed, UTF-8序列字節(jié)無效”。


這個(gè)是因?yàn)?b>build.xml文件中存在編碼不同的字符,接著我就把build.xml文件中'UTF-8'的編碼方式改成'GB2312',成功消除此報(bào)錯(cuò)。


再次執(zhí)行ant,又報(bào)錯(cuò)了,這次提示:jtl文件不存在。


這個(gè)場景似曾相識,在單機(jī)性能測試輸出報(bào)告有類似情況,有可能是目標(biāo)jtl文件和report文件和測試腳本放在一起的原因。然后我新建一個(gè)文件夾專門存放report和jtl,此時(shí)報(bào)錯(cuò)成功解決。


再次執(zhí)行ant,發(fā)現(xiàn)出現(xiàn)test的標(biāo)志了,仿佛成功的曙光就在眼前。


過程中看著都很順利,結(jié)果到了最后一個(gè)節(jié)點(diǎn)還是報(bào)錯(cuò):build failed, GG(卒)。


這又是哪門子問題呢?認(rèn)真看一下報(bào)錯(cuò)信息:jmeter-results-detail-report_21.xsl這個(gè)文件不存在。

在網(wǎng)上查了一下,Jmeter3.X是需要將Jmeter2.X的\extras\jmeter-results-detail-report_21.xsl文件,復(fù)制到F:\apache-jmeter-3.0\extras文件夾中的,否則的話report的樣式就生成不了。

可是我沒有Jmeter2.X的版本啊,這怎么辦?

我用全盤搜索我的PC看看有沒有類似東西,還好在我的Jmeter4.X的版本找到了,立馬復(fù)制過來用一用。


拷貝完成后,繼續(xù)執(zhí)行ant,又報(bào)錯(cuò)了(還有完沒完?),這次提示“前言中不允許有內(nèi)容”。


這又是什么鬼東西呢?百度了一下,常見錯(cuò)誤:前言中不允許有內(nèi)容,解決辦法如下:

1.在JMeter的bin目錄中找到j(luò)meter.properties;

2.將文件中#jmeter.save.saveservice.output_format=csv改為jmeter.save.saveservice.output_format=xml

(注意:去掉前面的#號,后面的xml要小寫。)

這個(gè)是用于修改Jmeter默認(rèn)保存文件的格式。



修改完成之后,重新執(zhí)行ant,提示'build successful',總算是成功了!



構(gòu)建ant完成后,我迫不及待就打開report文件夾查看一下報(bào)告,結(jié)果發(fā)現(xiàn)這份報(bào)告有bug:date report 顯示date not defined,min time 和 max time 處都是NaN。


接下來就需要優(yōu)化一下這份報(bào)告了。將配置文件build.xml優(yōu)化代碼如下,即可解決上述問題。


優(yōu)化完成后,這次我們不采用cmd命令行的方式,采用另外一種方式執(zhí)行:

在build.xml配置文件的文件夾新建一個(gè)build.bat批處理文件,此文件只需寫入"ant"保存,然后雙擊build.bat就會(huì)自動(dòng)批量執(zhí)行自動(dòng)化的腳本。


執(zhí)行完成打開報(bào)告可以看到,report的時(shí)間有了,min time 和 max time 也有數(shù)值了。至此,使用jmeter+ant進(jìn)行接口集成性能自動(dòng)化測試的任務(wù)順利完成了!



讀更多的好書,拍更美的照片,寫更酷的代碼,遇見更有趣的人,愿望是實(shí)現(xiàn)從IT菜鳥到全棧工程師的蛻變。

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

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