loadrunner腳本由於沒有token報錯

[toc]html

場景

用loadrunner11錄製腳本,處理後回放,加上檢查點,報錯找不到檢查點對應的內容,去掉檢查點,沒有報錯,可是打開頁面沒有該操做的痕跡。手動在頁面上操做沒有問題。前端

解決過程

  1. 懷疑是腳本中請求有問題或者沒有做關聯。在頁面上經過開發者工具(F12)查看幾個關鍵請求,都沒有問題,順序和內容都能對得上。使用到的參數和返回值,都是固定的,無須關聯。
  2. 查看應用日誌,看是否有報錯信息。應用有十幾個中心,經過dubbo調用,然而因爲使用的docker容器,日誌沒有作改造,沒法進行採集查看,並且啓用的容器數量比較多,還有其餘人使用,查看入口的web容器日誌(6個),跑loadrunner腳本,沒法看清日誌內容,只能做罷。
  3. 使用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

相關文章
相關標籤/搜索