Jenkins+ANT+Jmeter 接口测试的实践(转载)
轉(zhuǎn)載地址:https://testerhome.com/topics/5262
1、前言
最近感覺大家都在講Jenkins+jmeter+ant或maven的使用,但沒有說到具體怎么投入到項目使用,只有比較基本的流程說說,所以我今天要說的就是我是怎么將這個方案投入到實際中使用的,先說明一下,本人是今年4月份才開始學(xué)jmeter和ant,之前做性能測試是用loadrunner,接口測試使用RobotFramework+Request來做的,loadrunner用來做簡單接口測試太笨重而且成效不高,RobotFramework+Request雖然可以使用數(shù)據(jù)驅(qū)動模式,但測試報告就會顯示很雞肋,因為基本是一個測試用例在循環(huán),所以后面使用了Jenkins+jmeter+ant的方案
2、框架與數(shù)據(jù)準(zhǔn)備
在做接口測試框架之前,我研究了一下jmeter工具特征和本身項目接口的特征,jmeter是以請求為單位,不是以腳本或測試用例為單位,既然這樣,我就可以每次循環(huán)獲取接口或?qū)?yīng)數(shù)據(jù)進(jìn)行測試了,加上之前在testerhome上看到一些大神寫的接口測試框架,其實框架是死的,思想是活的,利用這個活的特點,后面就想了一套比較簡單的框架,可以看下圖
是的,我的測試數(shù)據(jù)是用Excel管理的,Excel的測試數(shù)據(jù)可看下圖
從數(shù)據(jù)格式可以看出,做了用例的執(zhí)行標(biāo)識,選中為YES時才執(zhí)行,NO時不執(zhí)行,這是一個用例選擇執(zhí)行的簡單設(shè)計,還有請求的方法也是可以選擇的,目前項目中的主要用POST和GET,除此之外之后要獲取的還有用例名,調(diào)用的接口和具體的測試請求數(shù)據(jù),這就是使用excel管理測試用例的模塊
數(shù)據(jù)準(zhǔn)備好以后做一些全局或初始的配置,一般就是改jmeter.properties里面對應(yīng)的配置
是的,里面這行本來是默認(rèn)指定為user.properties,但有自己個性化的需求,例如服務(wù)器和測試賬號
配置基本完成,之后就是項目的目錄架構(gòu),conf就是放配置文件的,如myuser.properties,jmx就是對應(yīng)的腳本,report是輸出的測試報告路徑,res是一些上傳文件所用的測試資源等,test_data是為后期性能測試作準(zhǔn)備的,現(xiàn)在先忽略,test_suite就是放excel表格的,build.xml就不多說了,就是ant的執(zhí)行文件
3、腳本設(shè)計
好吧,接下來就是jmx腳本的設(shè)計,如下圖,這是一些變量的設(shè)置
還有上文提到用myuser.properties配置的,這些在jmeter中作為變量來使用
然后對于讀取數(shù)據(jù),我是用了beanshell寫了簡單的Java讀取excel的腳本構(gòu)建起與測試數(shù)據(jù)的連接,首先是先獲取測試用例數(shù),用于設(shè)置執(zhí)行循環(huán)請求的次數(shù),這里是用前置處理器的方式獲取數(shù)據(jù)的,前置處理器需要sampler緊接著在其后使用,不然是不會執(zhí)行的,所有我把它放在了登錄的請求里面
具體的代碼:
String filename=vars.get("test_data");
String [] datalist=new String[20];
String content;
InputStream openfile = new FileInputStream(filename);
Workbook wb = Workbook.getWorkbook(openfile);
Sheet FirstSheet = wb.getSheet(0);
int totalRows=FirstSheet.getRows();
int rows=totalRows-1; //減1是因為我標(biāo)題行不取,為了后面從第二行開始取
String data=rows.toString();
vars.put("row",data); //用例行數(shù)
wb.close();
然后獲取正常的測試數(shù)據(jù)是用beanshell sampler,這個有個大坑,就是用sampler來獲取數(shù)據(jù)的話到時在測試報告會顯示出來,但實際上其不是測試用例,后面會說我目前是怎么破的,反正取數(shù)據(jù)的操作最好就是不要顯示在測試報告的統(tǒng)計上,這里就是取到剛才所說的測試用到的值,執(zhí)行標(biāo)識load,用例名稱testcase,調(diào)用接口inter,請求方法method,請求數(shù)據(jù)request以及預(yù)期結(jié)果斷言response,之前就將他們作為變量傳到腳本當(dāng)中
具體的代碼(補(bǔ)充說明一下,取excel我是用jxl.jar去讀的,但有部分小伙伴喜歡用POI去讀,反正原理都是一樣的,像在平時編寫代碼那樣導(dǎo)入包就好了):
int i;
int k=0;
String [] datalist=new String[20];
String content;
String filename=vars.get("test_data");
String str=vars.get("rownum");
int row = Integer.parseInt(str);
InputStream openfile = new FileInputStream(filename);
Workbook wb = Workbook.getWorkbook(openfile);
Sheet FirstSheet = wb.getSheet(0);
for(i=1;i<9;i++){ //9是因為我表格就是9列的
if (i!=5&&i!=6){ //表格中白色的兩行不取
Cell oCell= FirstSheet.getCell(i,row);
content=oCell.getContents();
datalist[k]=content;
k++;
}
}
vars.put("load",datalist[0]); //標(biāo)識
vars.put("testcase",datalist[1]); //用例名稱
vars.put("inter",datalist[2]); //接口
vars.put("method",datalist[3]); //請求方法
vars.put("request",datalist[4]); //請求數(shù)據(jù)
vars.put("response",datalist[5]); ///斷言校驗
return content;
執(zhí)行的效果如下圖,開始在登錄完之后拿到測試用例的數(shù)量,作為循環(huán)的次數(shù),做個計數(shù)器用來excel行的遍歷,使用if控制器判斷執(zhí)行方法,如果是YES的話才執(zhí)行請求,如果method是POST就是執(zhí)行POST請求的http sampler,GET就執(zhí)行GET請求的http sampler,然后輸出的請求結(jié)果會有對應(yīng)的用例名稱,最后在響應(yīng)斷言中填上response變量,基本的腳本設(shè)計就完成了
具體http請求也是很簡單的
4、整理測試報告
腳本設(shè)計完以后,用ant去執(zhí)行jmx就可以了,至于怎么用ant去執(zhí)行我就不多說了,去網(wǎng)上搜一下大把的教程,我這里是同時輸出了兩份測試報告,一份是作簡單的統(tǒng)計用,就是jmeter-results-detail-report_21.xsl那份
還有是查看測試數(shù)據(jù)詳情用的,就是jmeter-results-shanhe-me.xsl,兩份報告之間做了一個比較簡單的跳轉(zhuǎn),方便查看
其實在這里我是用了比較取巧的方法把之前取數(shù)據(jù)的sampler過濾掉了,不輸出到html測試報告,打開輸出的jtl看一下你就懂了
所以兩份測試報告我也做了一些手腳,但這個不是明智的方法,只不過是沒有辦法中的辦法,就是去改上文的兩個xsl
統(tǒng)計的
查看數(shù)據(jù)的
其實這些也是我之后要優(yōu)化的地方,只是目前太急要出個方案罷了
說了那么多,還沒說到j(luò)enkins,至于怎么使用,可以看我之前寫的文章:https://testerhome.com/topics/5099,大同小異,就是這樣用就好
5、結(jié)束語
目前我所說的設(shè)計耗時不到兩天,因為時間比較緊,就只能想出目前這個方案了,大家可以也留意到其實有很多地方是可以優(yōu)化的,不過目前時間實在有點緊,所以目前只能在接口自動化測試的過程中不斷地去優(yōu)化框架,優(yōu)化設(shè)計,畢竟目前對jmeter的使用也不是非常熟悉,才用了2個月,也希望大家多給我建議,讓我可以用更好地方法去實踐接口自動化測試,我只是個工作不到一年的新人,很多東西想不全是會有的,這里有很多大牛,都很值得我去學(xué)習(xí),最后還是說那句,工具是死的,思想是活的,利用工具把自己的思想實例化為框架投入到實際應(yīng)用中,這才是根本的道理,1000個人對jmeter可能有1000種用法,反正結(jié)合自己的思想和實際,總可以找到工具的價值,好,歡迎大家賣力地吐槽我,讓我能好好反思一下設(shè)計上的問題,繼續(xù)優(yōu)化
總結(jié)
以上是生活随笔為你收集整理的Jenkins+ANT+Jmeter 接口测试的实践(转载)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 水质监测部门:水质监测实施和数据采集@2
- 下一篇: 浮标水质监测系统:及时采取措施保护水环境