[toc]html
場景
用loadrunner11錄製腳本,處理後回放,加上檢查點,報錯找不到檢查點對應的內容,去掉檢查點,沒有報錯,可是打開頁面沒有該操做的痕跡。手動在頁面上操做沒有問題。前端
解決過程
- 懷疑是腳本中請求有問題或者沒有做關聯。在頁面上經過開發者工具(F12)查看幾個關鍵請求,都沒有問題,順序和內容都能對得上。使用到的參數和返回值,都是固定的,無須關聯。
- 查看應用日誌,看是否有報錯信息。應用有十幾個中心,經過dubbo調用,然而因爲使用的docker容器,日誌沒有作改造,沒法進行採集查看,並且啓用的容器數量比較多,還有其餘人使用,查看入口的web容器日誌(6個),跑loadrunner腳本,沒法看清日誌內容,只能做罷。
- 使用postman模擬loadrunner中報錯的請求。將loadrunner中的請求轉換在postman中實現,發現報錯用戶沒有登陸。此次採用的架構與以前不一樣,後端爲java應用,前端爲react,經過接口和後端交互,因此其實loadrunner中的請求與前端和後端交互的請求基本一致,可是loadrunner沒有保存接口要求的驗證信息token,同時,token通過必定時間要求更新,因此出現該問題。
解決方案
知道了問題爲loadrunner請求時沒有在header中加入token,就簡單了不少。在登陸步驟,獲取token,而後,在須要token認證的步驟的header中加入token。java
// token長度較長,web_reg_save_param默認長度爲256,不夠存儲,因此須要該函數設置其長度(1024字節) web_set_max_html_param_len("1024"); // 獲取token函數,第一個參數爲存儲的變量名,LB和RB爲左邊界和右邊界,ORD爲第幾位,NotFound爲找不到時的響應 web_reg_save_param("token", "LB=\"token\":\"", "RB=\"", "ORD=1", "NotFound=warning", LAST); // 打印 lr_output_message("token is %s\n",lr_eval_string("{token}")); // 爲接下來的請求header添加內容 web_add_header("token","{token}");
總結
壓測相關的東西,如今是在邊實戰邊學(主要是以前搞壓測的同事離職了),以前看着同事弄,感受很簡單,就是錄製,而後參數化,關聯,就完事了,只要懂業務就好了,本身上手了才發現,好多loadrunner方面的東西不少都不懂,還有業務方面也有不少不懂,仍是要多動手多學習。react
------------------------------------------分割線------------------------------------------------------------- 2019.10.16號補充: 今天發現,web_add_header只對後續的第一個請求有效(這個早就知道了其實),而若是是經過頁面錄製的腳本,每每請求數不少,每一個請求前都加上會很麻煩,lr提供了另外一個函數web_add_auto_header,自動爲全部請求加上header,只須要在獲取到token後,使用該函數,則會自動爲後面全部請求添加header。web