乘風(fēng)破浪,云服務(wù)器為電商大促加足“馬力”">乘風(fēng)破浪,云服務(wù)器為電商大促加足“馬力”
727
2022-05-29
一、前置工作
1、黃金流程
在做性能腳本之前,先了解下這本次性能實戰(zhàn)業(yè)務(wù),簡要說明本次使用一個電商系統(tǒng)的下單流程做這本次性能業(yè)務(wù)場景,該流程也叫叫黃金流程,用戶從瀏覽首頁到選擇商品、加入購物車、支付等一系列步驟組合成該流程,下圖是這次性能實戰(zhàn)的業(yè)務(wù)流程圖。
2、Jmeter安裝
腳本開發(fā)前置條件是需要在安裝 Jmeter,如果沒有安裝的話請點擊下載到官方網(wǎng)站下載 Jmeter;
因為 Jmete r是純 java 開發(fā)出來的所以需要安裝 jdk 環(huán)境,請大家到網(wǎng)上下載 jdk1.8 以上版本并且安裝,在這里就不在演示安裝步驟,為了方便大家配置 jdk 與 Jmeter 環(huán)境變量,這里提供 mac 電腦環(huán)境中的 jdk 與 Jmeter 環(huán)境變量,環(huán)境變量參考如下:
Jdk 環(huán)境變量參考如下:
$ vim .bash_profile export JAVA_HOME=/usr/local/java/jdk1.8.0_181 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH #按esc鍵,再輸入如下命令 $ :wq! #終端輸入生效命令 $ source ~.bash_profile
Jmeter 環(huán)境變量參考如下:
$ cd ~ $ vi ~.bash_profile #Jmeter:路徑 Jmeter_HOME=/Users/tools/apache-Jmeter-5.3 PATH=$PATH:$HOME/bin:$Jmeter_HOME/bin: $ export PATH 執(zhí)行生效: $ source ~.bash_profile
驗證 Jmeter 環(huán)境是否配置成功請輸入【Jmeter -v】命令,如果提示如下表示配置成功,配置環(huán)境變量的好處是在終端任何文件目錄下可以打開 Jmeter,如果不配置只能在 Jmeter 中的 {Jmeter_path}/bin/Jmeter 下執(zhí)行:
輸入命令 Jmeter 命令即可啟動:
liwen ~ % Jmeter ================================================================================ Don't use GUI mode for load testing !, only for Test creation and Test debugging. For load testing, use CLI Mode (was NON GUI): Jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder] & increase Java Heap to meet your test requirements: Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the Jmeter batch file Check : https://Jmeter.apache.org/usermanual/best-practices.html ================================================================================
下圖是啟動 Jmeter 后效果圖:
二、腳本實戰(zhàn)開發(fā)
在開發(fā)腳本之前,先拆分兩部分腳本來開發(fā),一個部分注冊流程腳本開發(fā),一個部分是下單流程腳本開發(fā),如下圖:
1、用戶注冊鏈路
為什么先從注冊腳本開始因為下單流程需要用戶登陸態(tài)才可以下單,所以先從注冊流程中的注冊腳本開始開發(fā);
先從注冊接口文檔觀察出來,該系統(tǒng)注冊需要先獲取手機驗證碼,才能調(diào)用注冊接口注冊到該系統(tǒng)中。
1.1、接口說明
注冊用戶接口圖:
為了快速開發(fā)注冊腳本,先手動輸入一個手機號,并且點擊獲取驗證碼,獲取驗證碼接口如下:
點擊注冊用戶接口輸入驗證碼、密碼、手機號、用戶名點擊發(fā)送即可注冊成功,接口文檔顯示如下:
通過上面注冊成功的用戶,打開登陸接口文檔,輸入用戶名與秘密即可登陸系統(tǒng),下圖是用戶登陸接口登陸后響應(yīng)的信息圖,里面包含用戶的 token,響應(yīng)狀態(tài)碼等信息,其他需要登陸態(tài)的接口可以通過添加 token 頭信息就可以獲取該接口響應(yīng)的信息,但是注冊后的用戶需添加用戶地址,才能完成下單流程,如果沒有用戶地址,下單 是不會成功,因為下單都不知道貨物送到什么地方。
下圖是添加用戶地址信息接口,接口入?yún)⑷缦聢D:
點擊調(diào)試按鈕,接口請求模版信息如下顯示,做腳本可以參考接口文檔提示而且通過提示信息就能很快把腳本開發(fā)出來。
通過手動接口文檔注冊用戶,不方便未來批量注冊用戶,所以需要給它們之間加上關(guān)聯(lián),只這樣才能做到批量注冊用戶,但是如果我們壓測需要大量用戶,可以通過 java 或 python、excl 等工具生成一批用戶并且保存到文件中,再通過 Jmeter 中的 CSV Data Set Config 組件讀取文件方式獲取用戶參數(shù),這樣才能批量注冊用戶,如何批造出手機號,這里提供兩個代碼可以幫助大家快速生成用戶手機號。
生成手機號碼需要滿足手機號規(guī)則,通過調(diào)研需要滿足下面條件:
中國電信:133、149、153、173、177、180、181、189、191、199
中國聯(lián)通:130、131、132、145、155、156、166、171、175、176、185、186
中國移動:134(0-8)、135、136、137、138、139、147、150、151、152、157、158、159、172、178、182、183、184、187、188、198
python生成手機號碼代碼參考如下:
import random # 所有的頭信息添加上來 phon = [133, 149, 153, 173, 177, 180, 181, 189, 191, 199, 130, 131, 132, 145, 155, 156, 166, 171, 175, 176, 185, 186, 135, 136, 137, 138, 139, 147, 150, 151, 152, 157, 158, 159, 172, 178, 182, 183, 184, 187, 188, 198] # 打開文件,并且存放到一個內(nèi)存地址中 f = open("phone.txt", "w") #循環(huán)100萬次 for i in range(1, 1000000): # 拼接手機號碼 phone = str(random.choice(phon)) + "".join(random.choice("0123456789") for i in range(8)) # 保存手機號 f.write(phone) f.write("\n") # 關(guān)閉文件 f.close()
java 生成手機號碼代碼參考:
public static void main(String[] args) throws IOException { //保存到文件中 FileWriter fileWriter = new FileWriter("./7d/phone.txt"); //保存1000個手機號 for (int j = 0; j < 100000; j++) { //保存手機號數(shù)據(jù) String[] phone = {"133", "149", "153", "173", "177", "180", "181", "189", "191", "199", "130", "131", "132", "145", "155", "156", "166", "171", "175", "176", "185", "186", "135", "136", "137", "138", "139", "147", "150", "151", "152", "157", "158", "159", "172", "178", "182", "183", "184", "187", "188", "198"}; Random random = new Random(); int first = random.nextInt(phone.length); StringBuilder stringBuilder = new StringBuilder(phone[first]); for (int i = 0; i < 8; i++) { stringBuilder.append(random.nextInt(10)); } fileWriter.write(stringBuilder.toString()); fileWriter.write("\n"); } //關(guān)閉文件流 fileWriter.close(); }
注意:
為什么需要用隨機數(shù)做用戶手機號碼,而不是順序執(zhí)行生成手機號,因為順序生成手機號碼并且注冊系統(tǒng)中最后存到數(shù)據(jù)庫中這樣的數(shù)據(jù)不真實,壓測參數(shù)化的數(shù)據(jù)需要符合真實用戶數(shù)據(jù)。
1.2、腳本開發(fā)
打開Jmeter,新建線程組,如圖:
通過手機號碼獲取驗證碼寫法操作步驟如下:
1、新建HTTP Reques并且按如下把參數(shù)寫進入即可把腳本開發(fā)出來;
2、中間 ${telephone} 是引用全局文件參數(shù)文件,后面會說到;
因為用戶注冊需要用到手機驗證碼,所以需要通過關(guān)聯(lián)把參數(shù)獲取出來,并且給注冊接口使用,如果大家不了解什么是關(guān)聯(lián)請參考《性能測試實戰(zhàn)30講》【關(guān)聯(lián)和斷言:一動一靜,核心都是在取數(shù)據(jù)】在這里就不詳細說明,獲取驗證碼寫法參考如圖:
注冊接口腳本第一步新建 HTTP Request 輸入注冊地址,并且輸入相關(guān)信息,參考如下:
url:
http://cloud-gateway.mall.demo.7d.com/mall-portal/sso/register
具體寫法如下:
說明:
中間的 value 地方顯示是的 ${username} 是引用 Jmeter 中的全局變量,這樣寫的好處是一個地方修改全部引用都生效,方便參數(shù)維護;
以下是全局參數(shù)文件:
通過上面操作即可把用戶注冊完成,但是完成注冊對于下單流程還是不能下單成功,因為缺少用戶地址,下面再把用戶地址添加到該用戶,添加用戶地址接口實現(xiàn)參考具體如下:
整個注冊流程 Jmeter 腳本如下顯示:
以上腳本是用戶注冊到登陸再到增加用戶地址信息在 Jmeter 中實現(xiàn),上面腳本中沒有添加斷言是因為這些腳本主要完成的事情是用戶注冊,用戶注冊信息是為下單流程做數(shù)據(jù)準備所以沒添加斷言,不過大家可以添加斷言組件,判斷請求是否正確。
注意:
如果只測下單流程而不想使用登錄接口,那么只需要把用戶信息與token信息保存到本地,通過參數(shù)化技術(shù)把token與用戶信息讀取傳給需要登陸態(tài)的接口,這樣才能正常壓測業(yè)務(wù)場景,以下介紹怎么通過Jmeter 把數(shù)據(jù)保存到本地。
第一步添加線程組,添加 HTTP Request,輸入登陸系統(tǒng)接口地址與用戶參數(shù)信息如下:
在全局參數(shù)文件中添加輸出,保存文件信息路徑,如圖:
在 Jmeter 中添加 JSR233 Sampler 組件如圖:
參考代碼:
FileOutputStream fps=new FileOutputStream("${outfile_online}",true); OutputStreamWriter osw=new OutputStreamWriter(fps); BufferedWriter bw=new BufferedWriter(osw); bw.append("${Bearer}\t${token}\n"); if(bw!=null){bw.close();} if(osw!=null){osw.close();} if(fps!=null){fps.close();}
通過代碼編寫,再點擊運行驗證輸出結(jié)果如下:
參數(shù)文件寫入成功
2、用戶下單鏈路
在開發(fā)下單腳本之前,先回顧下,下單流程需要那幾步驟,這樣才能把腳本開發(fā)好,進而為基準測試與容量測試做準備;
新建全局變量,全局變量的目的是為了更好切換壓測環(huán)境與變量值,還有更好為參數(shù)化做準備,所以采用全局定義變量,操作步驟如:
1、啟動 Jmeter,選擇右鍵選擇 User Defined Variables 組建即可看到相應(yīng)的值,建議在每個定義變量后寫上注解,這樣方便記憶這個變量是什么值。
下圖 name 這個模塊,是需參數(shù)化的的變量名,在 Value 這個模塊中輸入變量的值,這也是常見的 key-value 輸入樣式模式。
在做寫接口的時候先了解下接口請求類型這樣方便使用什么類型做接口腳本,通常情況下請求分為 GET/POST /DELETE/PUT 等常見請求;一般 GET 請求是或者資源數(shù)據(jù),POST 請求是提交數(shù)據(jù),DELETE 請求是刪除數(shù)據(jù),PUT 請求是修改數(shù)據(jù),但這些并不是唯一這樣定義,舉簡單例子如下:
@GetMapping("/7d/test/{info}") public MsgResponse getRequest(@PathVariable Integer info) { if (info == 1) { //更新數(shù)據(jù)狀態(tài) return MsgResponse.success().add("data", "更新狀態(tài)成功"); } else { //查詢數(shù)據(jù) HashMap
從上面簡單的 demo 代碼可以看出雖然是 get 請求,但是后端代碼是會根據(jù)傳的值做相應(yīng)的動作,如果大家想知道這幾個請求具體定義是什么可以參考其他資料學(xué)習(xí),在這里就不進一步說明;
2.1、獲取首頁接口
獲取首頁接口文檔如下,通過接口文檔我們獲取如下信息:
1、該接口是 get 請求,我們知道一般 get 請求都是獲取資源數(shù)據(jù);
2、通過響應(yīng)數(shù)據(jù)結(jié)構(gòu)觀察出來它是一個 JSON 數(shù)據(jù)結(jié)構(gòu)并且套嵌好幾層 list 數(shù)據(jù)結(jié)構(gòu);
3、進一步為了了解它為什么是這樣的數(shù)據(jù)結(jié)構(gòu),可以看看它后端代碼鏈路圖就明白為什么這個是這樣的數(shù)據(jù)結(jié)構(gòu),下圖是獲取首頁后端連路圖與部門代碼,有人問為什么需要看鏈路圖與代碼,這是為了分析問題做知識積累,還有代碼如果是性能瓶頸,連代碼怎么調(diào)用關(guān)系都不懂,那么更無重下手怎么定位代碼問題,并給出合理的調(diào)優(yōu)建議:
(uml類圖與代碼圖)
在看上面代碼調(diào)用關(guān)系之前,先了解 下java EE 項目一般開發(fā)模式是什么,下圖是簡單介紹下
說明:
controller是可接收和返回數(shù)據(jù)給用戶的web層;
service 是業(yè)務(wù)邏輯層,處理數(shù)據(jù),校驗數(shù)據(jù)
dao 全名(data access object)是持久化層,專注于對數(shù)據(jù)庫的操作的一層;
DB 就是數(shù)據(jù)庫;
有上面知識鋪墊后,再分析首頁接口請求就會清楚明白,以首頁帶著大家了解后端代碼怎么調(diào)用怎么實現(xiàn);
1、web層能看到請求的資源路徑,如圖:
2、業(yè)務(wù)實現(xiàn)層如下圖,從圖可以看出,該接口通過請求獲取首頁廣告、獲取推薦品牌、秒殺信息、新品推薦、人氣推薦、專題數(shù)據(jù)一共是 6 個數(shù)據(jù)結(jié)構(gòu),通過代碼就明白前端在請求后,前端展示接口響應(yīng)為什么會有好幾層數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù);
3、在往下查看Dao層數(shù)據(jù),這里選擇【獲取推薦品牌】舉例,其他都是類似查看方法,以下是 dao 層方法,注意該方法名【 getRecommendBrandList 】與 xml 中的 id 名稱需要一一對應(yīng)否則 xml 中的語句就找不 dao 層的方法,也就不能查出數(shù)據(jù);
具體 dao 層結(jié)構(gòu)如下:
/** * 獲取推薦品牌 */ List
4、上面getRecommendBrandList 方法名對應(yīng)的xml文件中的sql語句中的 id 關(guān)鍵字,通過下面很容易明白該xml文件就是一些sql語句,注意 Dao 層中的【 @Param(“offset” 】需要與xml中的 @Param(“offset”) 做一一對應(yīng),這樣才能傳值正確。
通過上面后端代碼分析,明白后端調(diào)用關(guān)系,未來遇到代碼性能問題,就知道怎么分析代碼問題。
通過代碼一步一步分析,這時就能看懂上面代碼與uml類圖。
接下來開始在Jmeter中編寫獲取首頁信息接口,新建線程組,新建HTTP Request 請求,輸入變量,根據(jù)響應(yīng)結(jié)果添加斷言,具體如下圖;
添加登陸態(tài)頭信息,因為把商品加入購物需要登陸后才可以把商品加入購物車,所以腳本都需要增加頭文件信息,以后腳本就不說明,腳本實現(xiàn)如下:
驗證接口是否成功,成功結(jié)果如下:
用戶登陸接口與用信息查詢接口在之前的注冊流程中已經(jīng)講解,這就不再這里說明Jmeter中實現(xiàn),需要注意的是為什么在下單流程中需要用戶登陸與用戶信息,這是因為后面接口需要用戶登陸態(tài)token與用戶地址id號信息,所以需要使用該接口信息,如果未來需要做基準測試場景,可以把該信息保存起來,下次接口需要該信息即可通過參數(shù)化實現(xiàn)。
2.2、購物車添加商品接口
先看下接口文檔,再分析需要什么參數(shù),再決定怎么編寫相應(yīng)的Jmeter腳本,下圖是商品加入購物車接口,分析該接口需要一個商品skuCode碼還有一個是數(shù)量,說明下,實際工作中很少用戶自己添加skuCode碼一般是商品加入購物車,系統(tǒng)自動把商品 skuCode碼添加到購物車中,數(shù)據(jù)庫中或者緩存中自動增加一條記錄。為什么需要增加到數(shù)據(jù)庫或者緩存中,這是方便用戶下次進入購物車該商品數(shù)據(jù)還在,如果不添加數(shù)據(jù)庫或者緩存關(guān)閉瀏覽器或者手機瀏覽器等信息商品數(shù)據(jù)自然會丟失。
如果商品信息添加到cookie里面,要知道cookie數(shù)據(jù)是存放瀏覽器或者其他緩存中,該數(shù)據(jù)是依賴緩存,如果緩存消逝數(shù)據(jù)自然消失,所以數(shù)據(jù)需要存放的服務(wù)端,但是服務(wù)端依賴用戶登陸態(tài),如果有登陸態(tài)信息,系統(tǒng)會自動保留數(shù)據(jù),下次用戶登陸自然就能看到該商品信息,如果沒有登陸態(tài)下次打開瀏覽器數(shù)據(jù)自然就不存在。
數(shù)據(jù)存放到cookie中只是臨時存儲,當(dāng)用戶離開,商品信息就會丟失,所以當(dāng)用戶離開的時候提示是否需要保留商品信息。
注意,添加商品信息要想下次能看得到就必須讓用戶登陸才能保留該商品信息。
分析商品加入購物車需要商品skuCode與數(shù)量,而且該商品需要有庫存才能加入成功,如果商品存在,但是沒庫存也不行,一般這些數(shù)據(jù)都是業(yè)務(wù)提供或者自己熟悉業(yè)務(wù)通過sql查詢出商品信息再通過參數(shù)化做腳本。
通過表結(jié)構(gòu)分析,庫存表是【 pms_sku_stock 】通過sql語句就可以查出需要參數(shù)化的商品skuCode碼;獲取想要的數(shù)據(jù)后只要把數(shù)據(jù)另存為文本或者csv等存儲中,下次做腳本時把參數(shù)加進去就行,關(guān)于參數(shù)化請參考《性能測試實戰(zhàn)30講》中的Jmeter中如何設(shè)置參數(shù)化數(shù)據(jù)?在這里就不詳細說明怎么參數(shù)化。
下圖是商品庫存信息表:
2.3、購物車最終添加商品接口
參數(shù)文件參考如下,對于 CSV Data Set Config 組件怎么使用請參考《性能測試實戰(zhàn)30講》中的如何做參數(shù)化,在這里就不做過多講解怎么使用。
最終腳本如下:
2.4、查詢購物車信息接口
通過觀察查詢購物車接口是get請求,與之前做的是一樣,就不再多介紹,但是觀察我們下單流程中的下一步是確認購物車商品接口里面需要傳一個數(shù)組參數(shù),數(shù)組參數(shù)就是這次查詢出來的結(jié)果購物車信息中的 ID 值,目前查詢購物車接口是 json 數(shù)組,通過Jmeter中的 JSON Extractor 可以獲取全部購物車信息的中id號,再通過后置處理器中的【 BeanShell PostProcessor 】處理后可以把結(jié)果傳給下一步做參數(shù)。
接口文檔如下:
相應(yīng)結(jié)果如下:
{ "code": 200, "message": "操作成功", "data": [ { "id": 63280, "productId": 27, "productSkuId": 98, "memberId": 90, "quantity": 1, "price": 249, "productPic": "https://perfo7d.oss-cn-beijing.aliyuncs.com/mall/images/20200923/web.png", "productName": "", "productSubTitle": "", "productSkuCode": "201808270027001", "memberNickname": "xingneng_test", "createDate": "2020-11-02T15:28:56.000+00:00", "modifyDate": "2020-11-02T15:28:56.000+00:00", "deleteStatus": 0, "productCategoryId": 7, "productBrand": "", "productSn": "No86577", "productAttr": "[{\"key\":\"顏色\",\"value\":\"黑色\"},{\"key\":\"容量\",\"value\":\"32G\"}]" } ] }
查詢購物接口Jmeter腳本參考如下:
驗證結(jié)果:
獲取全部商品id號【JSON Extractor 】 寫法參考如下圖,* 是正則表達式,-1表示獲取全部數(shù)據(jù)。
BeanShell PreProcessor參考如下圖:
// log.info("調(diào)試是否獲取長度id:"+vars.get("cartId_matchNr")); int num=Integer.valueOf("${cartId_matchNr}"); //log.info("數(shù)據(jù)為:"+num); StringBuilder stringBuilder = new StringBuilder(); for(i = 1;i<=num;i++){ stringBuilder.append(vars.get("cartId_"+i)+","); } String ids = stringBuilder.substring(0, stringBuilder.length() - 1); //log.info("結(jié)果:"+ids); vars.put("ides",ids);
解釋說明:代碼中的${cartIds_matchNr}是通過添加 Debug Sampler 組件運行后在View Results Tree 點擊Debug Sampler 請求就能看到該數(shù)據(jù),目前通過BeanShell腳本處理后,購物車確認訂單接口就可以使用該值做參數(shù)化。
BeanShell處理驗證結(jié)果如下:
2.5、購物車確定訂單接口
流程圖:
接口文檔:
根據(jù)購物車信息生成確認單信息接口腳本編寫參考如下:
注意:${ides} 參數(shù)是通過購物車查詢獲取的id號并且通過BeanShell 腳本處理后得到的參數(shù)結(jié)化,如果不清除請仔細查看上面腳本,就明白這個地方的參數(shù)怎么寫。
[${ides}]
驗證結(jié)果:
2.6、生成訂單接口
根據(jù)上面接口文檔可以觀察出該接口需要傳購物車id號目前上一步已經(jīng)實現(xiàn),用戶收貨地址這個值在注冊的時候已經(jīng)添加,并且也可以通過用戶信息接口查詢該值,剩下的就是優(yōu)惠劵、積分這個兩個值,目前這次不牽涉這兩個值,是否可以不傳或者傳什么值,根據(jù)下面代碼可以觀察處理,可以為null;
這次腳本中把 useIntegration 與 couponId 這兩個參數(shù)直接去掉,之后Jmeter腳本參考如下:
腳本代碼參考如下:
{ "cartIds": [${ides}], "memberReceiveAddressId": ${userId}, "payType": 0 }
響應(yīng)結(jié)果如下:
2.7、分頁查詢訂單信息接口
為什么要把分頁訂單查詢這接口做為這次壓測接口,這是因為在實際購買商品后,有時會直接查詢自己之前的訂單信息或者瀏覽器自己用戶下的全部訂單信息,這時候就會調(diào)用分頁查詢訂單信息接口,這符合真實場景。
接口文檔:
說明:status根據(jù)接口文檔提示只能輸入【訂單狀態(tài):-1->全部;0->待付款;1->待發(fā)貨;2->已發(fā)貨;3->已完成;4->已關(guān)閉】這幾種狀態(tài)值,后pageSize與pageNum很好理解是傳什么值;我們也可以通過代碼觀察需要傳什么值,代碼如下:
根據(jù)接口信息提示即可在Jmeter中實現(xiàn),腳本參考如下;
驗證結(jié)果:
2.8、支付訂單接口
接口文檔如下:
說明:
該訂單號是根據(jù)生成訂單信息接口響應(yīng)結(jié)果生成的訂單號,如果需要使用訂單號,就需要通過關(guān)聯(lián)才能把訂單號取出來,并且傳給該接口使用,如果是基準場景測試是需要先造一批訂單號做參數(shù),再跑訂單接口,
具體接口實現(xiàn)參考如下:
生成訂單信息接口中獲取訂單號寫法參考如下,需要說明的是用該組件取值需要放到【生成訂單信息】下,支付接口才能獲取該訂單號做參數(shù)。
支付訂單接口開發(fā)參考如下:
腳本驗證結(jié)果:
2.9、根據(jù)ID獲取訂單詳情接口
通過接口文檔看到訂單詳情只要傳訂單號就可以查出訂單詳細信息;
在 Jmeter 中實現(xiàn)如下:
驗證查詢結(jié)果如下:
三、總結(jié)
1、通過注冊流程與下單流程腳本開發(fā),相信大家能掌握 Jmeter 做腳本開發(fā)能在 Jmeter 實現(xiàn) get 與 post 請求、參數(shù)化、關(guān)聯(lián)、還能通過【 JSR223 Sampler 】組件把響應(yīng)結(jié)果保存到本地,還能通過后置處理【BeanShell PostProcessor 】處理響應(yīng)參數(shù),把參數(shù)處理自己想要的結(jié)果,最后把參數(shù)傳給下一個接口使用;
2、通過添加【 Debug Sampler 】組件可以學(xué)到怎么調(diào)試接口請求,還可以通過該組件觀察參數(shù)化取值變化;
3、通過使用首頁接口做例子,一步一步帶大家察看后端代碼是怎么調(diào)用與代碼之間的邏輯關(guān)系。如果性能測試中發(fā)現(xiàn)方法慢可以在方法前后輸入時間戳,最后輸出到日志中,在日志中查看該方法執(zhí)行多少時間;
有上面的基礎(chǔ)知識相信接下來遇到需要開發(fā)常見的性能腳本是沒問題的。
四、問題
什么情況下會需要用 JSR233 Sampler 來保存數(shù)值到文件?
什么情況下會需要用 Debug Sampler?
壓力測試 數(shù)據(jù)結(jié)構(gòu) 自建電商
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。