性能測試中如何選取被測對象的業(yè)務(wù)邏輯
很多搞性能測試的人員,只會跟著網(wǎng)上、前輩教導(dǎo)的方法進(jìn)行測試:挑選業(yè)務(wù)邏輯中并發(fā)量、訪問量最高的業(yè)務(wù)邏輯、結(jié)合讀寫等業(yè)務(wù)進(jìn)行測試,然后取整條業(yè)務(wù)邏輯(模擬用戶全流程動作)的邏輯進(jìn)行測試;結(jié)果就是:準(zhǔn)備大堆的測試數(shù)據(jù),復(fù)雜的準(zhǔn)備工作;其實(shí)那些數(shù)據(jù)只是用來滿足業(yè)務(wù)流中的條件,而不是真的能產(chǎn)生壓力的部分;
筆者采用的方法:
1、B/S結(jié)構(gòu)中,用戶操作功能流程其實(shí)是前端js依次調(diào)用不同的CGI接口,后臺實(shí)現(xiàn)上面其實(shí)并沒有強(qiáng)依賴關(guān)系(只要滿足對應(yīng)條件進(jìn)行發(fā)包都能執(zhí)行)。
所以,首先挑選業(yè)務(wù)邏輯中用戶訪問最高的流程,然后從流程中挑選調(diào)用次數(shù)、壓力最大的CGI接口;這樣聚焦于對應(yīng)的測試對象,可以避免很多無用的測試數(shù)據(jù);
2、根據(jù)業(yè)務(wù)邏輯,分析被測對象券流程中,所調(diào)用的接口,對于安全旁路、分支判斷等,根據(jù)情況進(jìn)行取舍(有些業(yè)務(wù)只測試某個CGI,有些是測試全平臺,測試中根據(jù)情況進(jìn)行聚焦)。
3、根據(jù)分析情況直接修改被測對象代碼:通常接口調(diào)用形式都會使用iret方式來判斷,例如:
/*原有代碼----begin*/ iret=xxx.call(args1,args2,args3); if(iret != 0){ print("xxxxx"); break; } /*原有代碼----end*/ iret=0 ---------- 添加iret=0,讓程序繼續(xù)走。 |
這樣不會影響外部接口調(diào)用次數(shù),不會影響網(wǎng)絡(luò)發(fā)包次數(shù),但可能會影響單個網(wǎng)絡(luò)包大小進(jìn)而影響網(wǎng)絡(luò)流量;同時稍微增加cpu負(fù)擔(dān)(賦值造成內(nèi)存讀寫)。但其實(shí)我們要測的是業(yè)務(wù)主流程,而不是外部接口(外部接口如果有需要可單獨(dú)進(jìn)行壓測),所以筆者認(rèn)為也是可以采取此種方案,而不需要準(zhǔn)備一大堆無用的數(shù)據(jù),只需有針對性的進(jìn)行業(yè)務(wù)邏輯選取即可;
posted on 2014-09-26 10:07 順其自然EVO 閱讀(221) 評論(0) 編輯 收藏 所屬分類: 測試學(xué)習(xí)專欄