日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

对 Jenkins+ANT+Jmeter 接口测试的实践

發布時間:2023/11/27 生活经验 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对 Jenkins+ANT+Jmeter 接口测试的实践 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載地址:https://testerhome.com/topics/5262

?

1、前言

最近感覺大家都在講Jenkins+jmeter+ant或maven的使用,但沒有說到具體怎么投入到項目使用,只有比較基本的流程說說,所以我今天要說的就是我是怎么將這個方案投入到實際中使用的,先說明一下,本人是今年4月份才開始學jmeter和ant,之前做性能測試是用loadrunner,接口測試使用RobotFramework+Request來做的,loadrunner用來做簡單接口測試太笨重而且成效不高,RobotFramework+Request雖然可以使用數據驅動模式,但測試報告就會顯示很雞肋,因為基本是一個測試用例在循環,所以后面使用了Jenkins+jmeter+ant的方案

2、框架與數據準備

在做接口測試框架之前,我研究了一下jmeter工具特征和本身項目接口的特征,jmeter是以請求為單位,不是以腳本或測試用例為單位,既然這樣,我就可以每次循環獲取接口或對應數據進行測試了,加上之前在testerhome上看到一些大神寫的接口測試框架,其實框架是死的,思想是活的,利用這個活的特點,后面就想了一套比較簡單的框架,可以看下圖

是的,我的測試數據是用Excel管理的,Excel的測試數據可看下圖


從數據格式可以看出,做了用例的執行標識,選中為YES時才執行,NO時不執行,這是一個用例選擇執行的簡單設計,還有請求的方法也是可以選擇的,目前項目中的主要用POST和GET,除此之外之后要獲取的還有用例名,調用的接口和具體的測試請求數據,這就是使用excel管理測試用例的模塊
數據準備好以后做一些全局或初始的配置,一般就是改jmeter.properties里面對應的配置


是的,里面這行本來是默認指定為user.properties,但有自己個性化的需求,例如服務器和測試賬號


配置基本完成,之后就是項目的目錄架構,conf就是放配置文件的,如myuser.properties,jmx就是對應的腳本,report是輸出的測試報告路徑,res是一些上傳文件所用的測試資源等,test_data是為后期性能測試作準備的,現在先忽略,test_suite就是放excel表格的,build.xml就不多說了,就是ant的執行文件

3、腳本設計

好吧,接下來就是jmx腳本的設計,如下圖,這是一些變量的設置

還有上文提到用myuser.properties配置的,這些在jmeter中作為變量來使用

然后對于讀取數據,我是用了beanshell寫了簡單的java讀取excel的腳本構建起與測試數據的連接,首先是先獲取測試用例數,用于設置執行循環請求的次數,這里是用前置處理器的方式獲取數據的,前置處理器需要sampler緊接著在其后使用,不然是不會執行的,所有我把它放在了登錄的請求里面


具體的代碼:

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是因為我標題行不取,為了后面從第二行開始取 String data=rows.toString(); vars.put("row",data); //用例行數 wb.close();

然后獲取正常的測試數據是用beanshell sampler,這個有個大坑,就是用sampler來獲取數據的話到時在測試報告會顯示出來,但實際上其不是測試用例,后面會說我目前是怎么破的,反正取數據的操作最好就是不要顯示在測試報告的統計上,這里就是取到剛才所說的測試用到的值,執行標識load,用例名稱testcase,調用接口inter,請求方法method,請求數據request以及預期結果斷言response,之前就將他們作為變量傳到腳本當中


具體的代碼(補充說明一下,取excel我是用jxl.jar去讀的,但有部分小伙伴喜歡用POI去讀,反正原理都是一樣的,像在平時編寫代碼那樣導入包就好了):

    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]); //標識 vars.put("testcase",datalist[1]); //用例名稱 vars.put("inter",datalist[2]); //接口 vars.put("method",datalist[3]); //請求方法 vars.put("request",datalist[4]); //請求數據 vars.put("response",datalist[5]); ///斷言校驗 return content;

執行的效果如下圖,開始在登錄完之后拿到測試用例的數量,作為循環的次數,做個計數器用來excel行的遍歷,使用if控制器判斷執行方法,如果是YES的話才執行請求,如果method是POST就是執行POST請求的http sampler,GET就執行GET請求的http sampler,然后輸出的請求結果會有對應的用例名稱,最后在響應斷言中填上response變量,基本的腳本設計就完成了



具體http請求也是很簡單的


4、整理測試報告

腳本設計完以后,用ant去執行jmx就可以了,至于怎么用ant去執行我就不多說了,去網上搜一下大把的教程,我這里是同時輸出了兩份測試報告,一份是作簡單的統計用,就是jmeter-results-detail-report_21.xsl那份


還有是查看測試數據詳情用的,就是jmeter-results-shanhe-me.xsl,兩份報告之間做了一個比較簡單的跳轉,方便查看


其實在這里我是用了比較取巧的方法把之前取數據的sampler過濾掉了,不輸出到html測試報告,打開輸出的jtl看一下你就懂了


所以兩份測試報告我也做了一些手腳,但這個不是明智的方法,只不過是沒有辦法中的辦法,就是去改上文的兩個xsl
統計的

查看數據的


其實這些也是我之后要優化的地方,只是目前太急要出個方案罷了

說了那么多,還沒說到jenkins,至于怎么使用,可以看我之前寫的文章:https://testerhome.com/topics/5099,大同小異,就是這樣用就好

5、結束語

目前我所說的設計耗時不到兩天,因為時間比較緊,就只能想出目前這個方案了,大家可以也留意到其實有很多地方是可以優化的,不過目前時間實在有點緊,所以目前只能在接口自動化測試的過程中不斷地去優化框架,優化設計,畢竟目前對jmeter的使用也不是非常熟悉,才用了2個月,也希望大家多給我建議,讓我可以用更好地方法去實踐接口自動化測試,我只是個工作不到一年的新人,很多東西想不全是會有的,這里有很多大牛,都很值得我去學習,最后還是說那句,工具是死的,思想是活的,利用工具把自己的思想實例化為框架投入到實際應用中,這才是根本的道理,1000個人對jmeter可能有1000種用法,反正結合自己的思想和實際,總可以找到工具的價值,好,歡迎大家賣力地吐槽我,讓我能好好反思一下設計上的問題,繼續優化

?

?

=======================================================================================================================

?

是的,我感覺自己寫也是會好一些,但寫了還要自己維護,而且只有兩天時間,寫的話不僅是腳本,還有測試報告數據關聯等東西要考慮,既然都做接口測試了,為何不把性能測試也留個切入點,如果能用兩天把unittest和multi_mechanize或locust結合起來做接口性能測試框架的話,那也是可以的呀,但考慮的東西就沒那么簡單了,有時候工具能用就直接用了,沒必要去搞那么多耗成本的,工具弄出來還不是自己用的,要結合自己項目實際和team的實際考慮,有現成的,還是先用著吧

轉載于:https://www.cnblogs.com/cherry1993/p/8650757.html

總結

以上是生活随笔為你收集整理的对 Jenkins+ANT+Jmeter 接口测试的实践的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。