在做性能測試時,我們可能會遇到各種不同的業務需求與用戶行為,在一個系統或網站中,每個用戶的操作都不完全一樣。我們如何來模擬這此用戶的行為?經驗與能力有限,我這里也做個簡單的分析。
Action 介紹
在此之前,我們先來介紹一個Action ,Action就像是一個函數包,將用戶操作根據類別存放在不同的函數中,當選擇完HTTP協議后,VuGen將自動生成腳本的框架。
默認腳本目錄有三部分組成:
Vuser_int
Action
Vuser_end
簡單有的來說,我們可以把他們看成三個程序文件,他們依次按照Vuser_int --->Action--->Vuser_end 的順序執行,存放於Action中的腳本可以循環執行(可以設置循環次數)
在腳本錄制之前,我們可以設置將腳本錄制在哪一部分:
在腳本錄制的過程中,我們可以選擇切換腳本的存放位置:
在腳本左側右鍵添加新的action部分:
在菜單欄Vuser ---> run-time setting ,選擇Run logic 選項,可以設置Action部分的循環次數。
下面簡單介紹如何使用參數化、action設置和業務用戶比例等進行性能測試。
場景一:
一個用戶訪問WebTours (loadrunner 自帶程序)首頁,做兩次登錄與退出
1、vuser_init部分錄制訪問webrours首頁:
vuser_init() { web_url("WebTours", "URL=http://127.0.0.1:2080/WebTours", "Resource=0", "RecContentType=text/html", "Referer=", "Snapshot=t30.inf", "Mode=HTML", LAST); web_url("header.html", "URL=http://127.0.0.1:2080/WebTours/header.html", "Resource=0", "RecContentType=text/html", "Referer=http://127.0.0.1:2080/WebTours/", "Snapshot=t31.inf", "Mode=HTML", LAST); web_url("welcome.pl", "URL=http://127.0.0.1:2080/WebTours/welcome.pl?signOff=true", "Resource=0", "RecContentType=text/html", "Referer=http://127.0.0.1:2080/WebTours/", "Snapshot=t32.inf", "Mode=HTML", EXTRARES, "Url=../favicon.ico", "Referer=", ENDITEM, LAST); }
2、將腳本錄制部分切換到Action 部分,錄制用戶登錄與退出
Action() { web_submit_data("login.pl", "Action=http://127.0.0.1:2080/WebTours/login.pl", "Method=POST", "Referer=http://127.0.0.1:2080/WebTours/nav.pl?in=home", "Mode=HTML", ITEMDATA, "Name=userSession", "Value=110416.933414338fzHQfHVpAVcfDtAHHptczAHf", ENDITEM, "Name=username", "Value={username}", ENDITEM, //參數化用戶名 "Name=password", "Value={password}", ENDITEM, //參數化密碼 "Name=JSFormSubmit", "Value=on", ENDITEM, LAST); web_submit_data("login.pl_2", "Action=http://127.0.0.1:2080/WebTours/login.pl", "Method=POST", "RecContentType=text/html", "Referer=http://127.0.0.1:2080/WebTours/nav.pl?in=home", "Snapshot=t33.inf", "Mode=HTML", ITEMDATA, "Name=userSession", "Value=110416.933414338fzHQfHVpAVcfDtAHHptczAHf", ENDITEM, "Name=username", "Value=test", ENDITEM, "Name=password", "Value=123456", ENDITEM, "Name=JSFormSubmit", "Value=on", ENDITEM, "Name=login.x", "Value=56", ENDITEM, "Name=login.y", "Value=4", ENDITEM, LAST); return 0; }
run-time setting 的Run logic 選項,設置Action 運行兩次。
運行腳本結束,可以通過菜單欄view--->Test Results 來查看運行的結果是否正確
場景二:
一個用戶登錄一個系統,做3次查詢,5次插入,退出。
這里我就不做詳細介紹了,需要的注意點是,可以在run-time setting 的Run logic 選項中點擊insert Block 添加快,雙擊Block 設置循環次數。
將我們的查詢操作與插入操縱分別存放在兩個迭代塊(block)中
我們還可以設置迭代之間的間隔,run-time setting 的pacing
場景三 :
這個場景跟用戶操作比例有關系業務有關,一個網站,在線用戶中,有80% 用戶發表文章,20%的用戶上傳相片。
那么,我可以分別錄制兩個腳本,第一腳本,用戶操作發表文章;第二個腳本,用戶操作上傳相片。
將兩個腳本導入Controller 控制器中。
注意勾選 use the percentage mode to distribute the vusers among the scrpts ,不然無法分配腳本用戶比例。
我們可以為腳本分配不同的用戶比例來運行。
----------------------------------------
這里只是提供一個思路,我們可以根據這些設置(或叫技巧)結合我們的業務需求來進行腳本與場景設計。