第一次手寫性能測試腳本,過程比較虐:
1、輔助工具:抓包工具burpsuite,觀察請求及響應數據
2、了解Loadrunner中的一個模擬請求的函數:可以模擬get和post
web_submit_data("IsAttenderMobileOrEmailExist",
"Action=O網頁鏈接",
"Method=POST",
"TargetFrame=",
"RecContentType=application/x-www-form-urlencoded; charset=UTF-8",
"Referer=O網頁鏈接",
"Snapshot=t23.inf",
"Mode=HTML",
ITEMDATA,
"Name=ASP.NET_SessionId", "Value={ASP.NET_SessionId}", ENDITEM,
"Name=__RequestVerificationToken_L2NvbmZlcmVuY2U1", "Value={__RequestVerificationToken_L2NvbmZlcmVuY2U1}", ENDITEM,
"Name=__RequestVerificationToken", "Value={__RequestVerificationToken}", ENDITEM,
"Name=No", "Value=MEETING0920", ENDITEM,
"Name=SiteId", "Value=987", ENDITEM,
"Name=Mobile", "Value=13001051551", ENDITEM,
"Name=Email", "Value=jing.tang@ccwonline.com", ENDITEM,
LAST);
3、手動關聯:根據抓包工具獲取到的請求參數,與工程師確認服務器自動返回參數,然后手動關聯
(1)關聯函數:
web_reg_save_param("__RequestVerificationToken_L2NvbmZlcmVuY2U1",
"LB=__RequestVerificationToken_L2NvbmZlcmVuY2U1\=",
"RB=;",
"Ord=1",
"RelFrameId=1",
"Search=ALL",
LAST);
通過postman查看響應數據,確定關聯函數中的左右邊界值,如果邊界值內容中存在雙引號",需要對其轉義,使用反斜杠\"
一開始是從網上搜了個關聯函數,運行后報錯Action.c(6): Error -27216: Invalid argument (number 4) [MsgId: MERR-27216],這個意思是這個函數中的第4個參數無效,結果仔細回憶,原來拷貝的函數是web_reg_save_param_ex,后來手動將_ex刪掉,而這兩個函數的參數名是不一樣的
(2)關聯函數位置一定要放到請求服務器返回關聯參數的函數前面
(3)關聯三個參數,只有一個參數能保存,但替換時就丟失,日志報如下警告:Warning: The string '__RequestVerificationToken' with parameter delimiters is not a parameter.
解決辦法:將web_reg_save_param 改為 web_reg_save_param_ex
web_reg_save_param_ex(
"ParamName=__RequestVerificationToken",
"LB=<input name\=\"__RequestVerificationToken\" type=\"hidden\" value\=\"",
"RB=\" />",
LAST);
4、關聯沒問題后,運行腳本,還是報錯,Action.c(102): To location "O網頁鏈接" [MsgId: MMSG-26693]
結果通過被測程序的日志發現,腳本的函數中少了個post參數address,添加后正常運行
5、重復運行后,關聯函數找不到要保存的值,報錯如下:Error -26377: No match found for the requested parameter "__RequestVerificationToken_L2NvbmZlcmVuY2U1". Check whether the requested boundaries exist in the response data. Also, if the data you want to save exceeds 50000 bytes, use web_set_max_html_param_len to increase the parameter size [MsgId: MERR-26377]
結果發現是重復注冊的問題,如果重復注冊,服務器就不返回__RequestVerificationToken_L2NvbmZlcmVuY2U1,所以找不到,刪除數據后,重新執行ok
6、腳本終於不報錯了,運行完一看數據庫,中文全是亂碼,但是腳本中不是,搜索得出:腳本編輯器中的編碼與運行時系統的數據編碼不同所導致
解決辦法:Run-time Settings中,找到 Preferences >> Option >> Convert form/to UTF-8,按需選擇,YES
到此,算是一個里程碑了,加油!!!