此前的性能測試進(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盤。
接下來配置環(huán)境變量:
1. ANT_HOME: 安裝路徑;
2. path: %ANT_HOME%\bin
cmd 命令行執(zhí)行 ant -version 驗(yàn)證ant的安裝情況。
接下來,?找到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文件如下:
配置工作完成之后,就可以正式進(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菜鳥到全棧工程師的蛻變。