下面,介紹如何在OpenSTA 的測試腳本中引入變量,并給變量賦不同值的過程。網絡應用系統一般都會有一個登陸網頁,需要用戶輸入正確的用戶名稱和密碼,經過系統驗證后,用戶才能進入該應用系統。在使用OpenSTA 錄制測試腳本時,輸入的用戶名稱和密碼將被OpenSTA 記錄在腳本中,錄制完成后,可以在腳本文件中發現如下語句:
PRIMARY POST URI"http://demosite.opensta.org/gsg-v1
HTTP/1.0"ON 2 &
HEADER DEFAULT_HEADERS &
,WITH {"Accept: application/vnd.ms-excel, application/msword,
application/vnd.ms-powerp" & "oint, image/gif,image/x-xbitmap,
image/jpeg, image/pjpeg, */*", &
"Referer: http://demosite.opensta.org/gsg-v1", &
"Accept-Language: en-us", &
"Content-Type: application/x-www-form-urlencoded", &
"Content-Length: 22", &
"Pragma: no-cache"} &
BODY "loginid="mike&passwd=ekim""
這里“mike”、“ekim”就是錄制腳本時登陸系統所輸入的用戶名稱和密碼。
問題是在執行性能測試時,往往需要模擬很多個不同的用戶同時登陸系統,觀察系統的各項性能指標。為每個不同的系統用戶錄制單獨的測試腳本是不現實的。那么,如何修改已錄制好的測試腳本,使其在測試過程中可以模擬多個不同的虛擬用戶,而每個虛擬用戶的用戶名稱和密碼都被寫入測試腳本中呢?
1、首先,在測試腳本的Definition 部分中增加變量USERNAME、PASSWORD 的定
義:
CHARACTER*512USERNAME ( "mike", "allan", "david" , "robert" ),
SCRIPTCHARACTER*512
PASSWORD ( "ekim", "nalla", "divad" , "trebor" ),
SCRIPT
這里假設mike、allan、david、robert 是該系統正確的用戶名稱,ekim、nalla、divad、trebor 分別是這些用戶的登陸密碼(說明:OpenSTA 測試腳本分三個部分, Environment、Definition、Code) 2、同時,在腳本的Definition 部分增加變量MY_USERNAME、MY_PASSWORD 的定義:
CHARACTER*512 MY_USERNAME, LOCAL CHARACTER*512 MY_PASSWORD, LOCAL
(注意,這兩個變量范圍是LOCAL 型) 3、在發送登陸請求的語句“PRIMARY POST URI"http://demosite.opensta.org/gsg-v1 HTTP/1.0"ON 2…….”之前, 添
加下列語句:
ACQUIRE MUTEX "LOGIN"
NEXT USERNAME
NEXT PASSWORD
SET MY_USERNAME = USERNAME
SET MY_PASSWORD = PASSWORD
RELEASE MUTEX "LOGIN"
其中:
AQUIRE MUTEX 命令的含義是: 將變量USERNAME 和PASSWORD 設置為用戶名稱和密碼這兩個變量選擇值序列中的第一個值,并設置為local 形式,避免其他虛擬用戶使用這個值;
RELEASE MUTEX 命令的含義是:釋放Mutex, 其他虛擬用戶可以選擇序列中的第一個值(序列中的值是被循環使用的);
這里需要解釋一下MUTEX 鎖定機制的含義,是為了避免多個虛擬用戶測試時,自動從變量選擇值序列中進行選擇時,出現選擇同一值的現象(即選擇了同一個用戶的現象); 4、將發送登陸請求的PRIMARY POST 語句中BODY 的用戶名和密碼替換成變量:
PRIMARY POST URI"http://demosite.opensta.org/gsg-v1
HTTP/1.0"ON 2 & HEADER DEFAULT_HEADERS & ,WITH {"Accept: application/vnd.ms-excel, application/msword,
application/vnd.ms-powerp" & "oint, image/gif,image/x-xbitmap, image/jpeg, image/pjpeg, */*", & "Referer: http://demosite.opensta.org/gsg-v1", & "Accept-Language: en-us", & "Content-Type: application/x-www-form-urlencoded", & "Content-Length: 22", & "Pragma: no-cache"} &
,BODY "loginid="mike&passwd=ekim""
中
,BODY "loginid="mike&passwd=ekim""
改寫為:
,BODY "loginid="+MY_USERNAME+"&passwd="+MY_PASSWORD至此,對測試腳本的修改已經完成。按照本文前面所介紹的OpenSTA 操作步驟,設置性能測試收集器,設置虛擬用戶的個數為4,開始執行測試,OpenSTA 就會模擬mike、allan、david、robert 這4 個不同的用戶同時登陸系統的情況。說到這里,讀者可能又會問,怎么驗證在測試執行過程中,確實是模擬了這幾個用戶進行登陸的呢?我們可以通過將所有登陸系統的用戶名稱打印出來的方法進行驗證。
方法是,在發送登陸請求的PRIMARY POST 語句之后,添加Report 語句:
REPORT "USER ", MY_USERNAME 這樣在測試執行完成后,Test Report Log 中就可以看到打印出來的登陸用戶名稱。(是不是很簡單?大家可以來試試)
作者在自己的測試腳本中進行實驗,設置虛擬用戶為3 個,在登陸請求語句之后增加Report 語句,以下是測試結束后Test Report Log 信息
這里,“admin”、“sjcj”、“data”是被測試系統的三個用戶名稱。
通過上邊的一系列闡述,大家對Web 性能測試工具OpenSTA 應該有了一定的了解。如何更有效的利用這個工具,收集系統的性能指標進行性能分析,希望大家共同探討。
參考文獻:
1.OpenSTA user manual
文章來源于領測軟件測試網 http://www.kjueaiud.com/