這里記錄 Web/Http 模式,模擬多用戶並發進行 : 登錄,上傳數據,退出登錄一整套流程。並發的用戶量多少,可自定義。這里不介紹錄屏的方式,是自己寫腳本去執行的。
1.安裝loadRunner.
2.在安裝目錄的bin 文件夾下,找到 LRLauncherApp.exe,雙擊打開。
下面這個彈框,直接cancel,因為我們不采用錄屏的方式,自己寫腳本去執行。
3.在左側,可以看到幾個文件列表。
vuser_init :執行開頭的腳本 :一般寫是用戶登錄(or 錄制)過程的腳本
action: 操作間的腳本 :一般寫是用戶操作(or 錄制)過程的腳本
vuser_end:執行結束的腳本 : 一般寫是用戶退出登錄(or 錄制)過程的腳本
.ok,直接貼腳本代碼,並解釋:
vuser_init() { web_custom_request("login.json", "URL=http://www.test.com/web/login.json", "Method=POST", "TargetFrame=", "Resource=0", "RecContentType=application/json", "Referer=http://www.test.com/web/login", "Snapshot=t3.inf", "Mode=HTML", "EncType=application/x-www-form-urlencoded; charset=UTF-8", //"Body={\"username\":\"admin\",\"password\":\"admin`12\",\"rememberme\":false}", "Body={\"username\":\"{usernames}\",\"password\":\"admin`12\",\"rememberme\":false}", LAST); return 0; }
vuser_init 文件中代碼:因模擬多用戶並發登錄,故需傳入不同的用戶名及密碼,如上代碼注釋掉的,我們選中 用戶名的值 admin ,右鍵,選擇 Replace with a Parameter。輸入參數名稱,選擇Properties,選擇用戶名dat文件所在位置。注意:用戶名與密碼是
一一對應的,所以構建用戶名密碼的dat文件時,注意匹配。usernamefor55.dat 是dat格式的文本文件,內容如下圖所示:我這里的測試數據,用戶名不一樣,但密碼都一樣,所以密碼就沒有參數化了。
5.用戶上傳數據:
這里業務設計邏輯是:用戶先上傳數據元信息,數據分配id后,再根據分配的id,進行upload數據。故,有2個POST請求:
腳本:
Action() { lr_think_time(5); //思考時間,模擬人在真實操作時的停頓時間。 web_reg_save_param("childID","LB=childID\":\"","RB=\"}","Search=Body",LAST); //利用該方法,截取web/mycontent/datas.json 響應結果的內容中的id值,並以參數childID表達。LB表示待截取值左邊的字符,LR表示其右邊的字符。 web_custom_request("datas.json", "URL=http://www.test.com/web/mycontent/datas.json", "Method=POST", "TargetFrame=", "Resource=0", "RecContentType=application/json", "Referer=http://192.168.112.100:8090/web/mycontent/datas", "Snapshot=t6.inf", "Mode=HTML", "EncType=application/x-www-form-urlencoded; charset=UTF-8", "Body={\"fileName\":\"test.csv\",\"type\":\"CSV\",\"coordType\":\"WGS84\",\"dataMetaInfo\":{\"fileEncoding\":\"UTF-8\",\"xField\":null,\"yField\":null}}", // Body傳入的是POST請求的請求體。 對於" 號,前面需要\進行轉義。 LAST); lr_think_time(5); web_submit_data("upload.json", "Action=http://www.test.com/web/mycontent/datas/{childID}/upload.json", //{childID} 傳入的是上面 截取的響應id值。 "Method=POST", "EncType=multipart/form-data", "TargetFrame=", "RecContentType=application/json", "Referer=http://192.168.112.100:8090/web/mycontent/datas", "Snapshot=t7.inf", "Mode=HTML", ITEMDATA, "Name=uploadFile", "Value=D://wujr//createdata//testdata//標注點.csv", "File=Yes", ENDITEM, //Value=??對應的待上傳文件的絕對路徑。 LAST); return 0; }
好吧,解釋都在注釋中了,其他也沒啥說的了
6.登出。 vuser_end文件中:
vuser_end() { web_custom_request("logout", "URL=http://www.test.com/security/logout", "Method=GET", "Resource=0", "RecContentType=text/html", "Referer=", "Mode=HTTP", "EncType=application/x-www-form-urlencoded; charset=UTF-8", LAST); return 0; }
7.腳本寫好了,開始運行:先點他,執行一遍,看是否有錯。
沒問題后,開始自動執行:
最后:點擊這里:開始執行。
edit by tangyuan。thanks