本文主要通過圖例介紹常見的壓測場景內的邏輯結構關系,并說明數(shù)據(jù)在壓測中是如何分配的。
基本概念
壓測API:指由用戶行為觸發(fā)的一條端上請求,是壓測中的必需元素。
業(yè)務會話:指一組壓測API的有序集合(類似于事務),具有業(yè)務含義。
關聯(lián)數(shù)據(jù)文件:壓測API使用了來自數(shù)據(jù)文件的參數(shù),從而關聯(lián)了相應的數(shù)據(jù)文件。如果使用了多個文件參數(shù)分別來自于不同數(shù)據(jù)文件則表示關聯(lián)了多個數(shù)據(jù)文件。
數(shù)據(jù)配置節(jié)點:如果業(yè)務會話中任意API需要使用文件參數(shù),或將文件參數(shù)進行二次定義(如MD5編碼等)再使用的,需要通過數(shù)據(jù)配置節(jié)點預先設置/定義后,方可在API中使用
數(shù)據(jù)導出指令:用于導出某個業(yè)務會話中的數(shù)據(jù)(導出Cookie為典型應用),供其他業(yè)務會話使用,實現(xiàn)導出數(shù)據(jù)的全局共享。
檢查點(斷言):一般用于標記業(yè)務成功與否,從而驗證壓測請求的響應是否符合預期。
數(shù)據(jù)輪詢一次:使用文件參數(shù)時,數(shù)據(jù)文件只輪詢一次,以保證請求信息不重復。
出參定義:在創(chuàng)建業(yè)務會話時,將前置接口的部分返回信息作為參數(shù)。
常見的壓測場景結構和數(shù)據(jù)分配規(guī)則
具體請參考下圖:
圖例說明如下:
業(yè)務會話1和業(yè)務會話2是并行關系。
業(yè)務會話類似于一個事務,業(yè)務會話內的所有壓測API,嚴格遵循先后順序。當前API的請求發(fā)起依賴前置API的請求處理完成或者超時異常。
說明后面的API最終發(fā)送的請求次數(shù)會少于前面API的,因為壓測停止的時候總有一些請求還在業(yè)務會話的中間環(huán)節(jié)(API)上沒有全部完成。
業(yè)務會話內,所有API使用到的文件參數(shù),需要配置數(shù)據(jù)配置節(jié)點后才能使用。
業(yè)務會話1中API 1使用了文件2的一個參數(shù)(源文件200行),API 2使用了文件3的一個參數(shù)(源文件1000行的),API 3使用了文件2的一個參數(shù)(源文件200行)及文件1的一個參數(shù)(源文件100行),未指定基準文件時,會根據(jù)最少的文件1(即100行)參數(shù)組合。截取文件2、文件3的前100行進行組裝并重復循環(huán)。
若某參數(shù)勾選了數(shù)據(jù)輪詢一次,即指定該參數(shù)為基準。組裝后的行數(shù)為其源文件行數(shù)。使用完組合構造數(shù)據(jù)的請求數(shù)之后,將不再壓測該API,當前業(yè)務會話也將整體停止壓測。
設置了檢查點(斷言)的情況下,如果當前請求斷言失敗,那么后置的API或者指令將不再執(zhí)行(僅針對本次順序執(zhí)行過程),斷言成功的沒有影響。
依賴登錄的壓測場景結構
下圖中業(yè)務會話1的API 1是登錄業(yè)務相關接口,其典型配置如下:
圖例說明如下:
數(shù)據(jù)導出指令一般應用于登錄之后需要并行壓測多個不同業(yè)務的情況,支持標準的Cookie導出或者是業(yè)務自定義的出參導出,目前支持最多導出5個參數(shù),每個參數(shù)的量級均為設置值。
業(yè)務會話1使用了數(shù)據(jù)導出指令,數(shù)據(jù)導出完成后其它業(yè)務會話才能開始壓測,所以與其他業(yè)務會話不是并行的關系。
說明只有使用了數(shù)據(jù)導出指令,才會出現(xiàn)業(yè)務會話之間不是全都并行的情況。
為保證用戶登錄信息不重復,需在壓測API對應的數(shù)據(jù)配置中為某參數(shù)設置數(shù)據(jù)輪詢一次。本示例中業(yè)務會話1中的參數(shù)設置了數(shù)據(jù)只輪詢一次。
一批用戶登錄完成后,將用戶登錄信息共享給場景內其它業(yè)務的業(yè)務會話使用,需設置數(shù)據(jù)導出的導出量級。達到該量級才會觸發(fā)場景內剩余業(yè)務會話進行壓測。
準備量級需要小于等于登錄接口的文件行數(shù)。例如上述示例中關聯(lián)數(shù)據(jù)文件為200行,導出量級設置為100。
說明若出現(xiàn)量級不滿(如部分施壓機壓測過程中異常掉線)的情況,為不影響繼續(xù)壓測,請單擊壓測中的頁面下方的釋放全局準備,即可繼續(xù)執(zhí)行其它業(yè)務會話的壓測。