做負(fù)載或者壓力測試時(shí),很多人選擇使用了
Loadrunner
測試工具。該工具的基本流程是先將用戶的實(shí)際操作錄制成腳本,然后產(chǎn)生數(shù)千個(gè)虛擬用戶運(yùn)行腳本(虛擬用戶可以分布在局域網(wǎng)中不同的
PC
機(jī)上),最后生成相關(guān)的報(bào)告以及分析圖。但是在錄制腳本的過程中會(huì)遇到很多實(shí)際的問題,比如不同的用戶有不同的使用數(shù)據(jù),這就牽涉到參數(shù)的設(shè)置問題。本文就
Loadrunner
中參數(shù)的設(shè)置進(jìn)行說明,希望對大家有所幫助。
在錄制程序運(yùn)行的過程中,
VuGen
(腳本生成器)
自動(dòng)生成了包含錄制過程中實(shí)際用到的數(shù)值的腳本。如果你企圖在錄制的腳本中使用不同的數(shù)值執(zhí)行腳本的活動(dòng)(如查詢、提交等等),那么你必須用參數(shù)值取代錄制的數(shù)值。這個(gè)過程稱為參數(shù)化腳本。
本文主要包括如下內(nèi)容:理解參數(shù)的局限性、建立參數(shù)、定義參數(shù)的屬性、理解參數(shù)的類型、為局部數(shù)據(jù)類型設(shè)置參數(shù)的屬性、為數(shù)據(jù)文件設(shè)置參數(shù)的屬性、從已經(jīng)存在的數(shù)據(jù)庫中引入數(shù)據(jù)。
除了
GUI
,以下的內(nèi)容適合于各種類型的用戶腳本。
一、關(guān)于參數(shù)的定義
在你錄制程序運(yùn)行的過程中,腳本生成器自動(dòng)生成由函數(shù)組成的用戶腳本。函數(shù)中參數(shù)的值就是在錄制過程中輸入的實(shí)際值。
例如,你錄制了一個(gè)
Web
應(yīng)用程序的腳本。腳本生成器生成了一個(gè)聲明,該聲明搜索名稱為
“UNIX”
的圖書的數(shù)據(jù)庫。當(dāng)你用多個(gè)虛擬用戶和迭代回放腳本時(shí),也許你不想重復(fù)使用相同的值“
UNIX”
。那么,你就可以用參數(shù)來取代這個(gè)常量。結(jié)果就是你可以用指定的數(shù)據(jù)源的數(shù)值來取代參數(shù)值。數(shù)據(jù)源可以是一個(gè)文件,也可以是內(nèi)部產(chǎn)生的變量。
用參數(shù)表示用戶的腳本有兩個(gè)優(yōu)點(diǎn):①
可以使腳本的長度變短。②
可以使用不同的數(shù)值來測試你的腳本。例如,如果你企圖搜索不同名稱的圖書,你僅僅需要寫提交函數(shù)一次。在回放的過程中,你可以使用不同的參數(shù)值,而不只搜索一個(gè)特定名稱的值。
參數(shù)化包含以下兩項(xiàng)任務(wù):①
在腳本中用參數(shù)取代常量值。②
設(shè)置參數(shù)的屬性以及數(shù)據(jù)源。
參數(shù)化僅可以用于一個(gè)函數(shù)中的參量。你不能用參數(shù)表示非函數(shù)參數(shù)的字符串。另外,不是所有的函數(shù)都可以參數(shù)化的。
二、參數(shù)的創(chuàng)建
可以指定名稱和類型來創(chuàng)建參數(shù)。不存在對腳本中參數(shù)個(gè)數(shù)的限制。在
Web
程序的用戶腳本中,你可以使用如下過程在基于文本的腳本視圖中創(chuàng)建參數(shù)。或者,也可以在基于圖標(biāo)的樹形視圖中創(chuàng)建參數(shù)。
在基于文本的腳本視圖中創(chuàng)建一個(gè)參數(shù):
1
、
將光標(biāo)定位在要參數(shù)化的字符上,點(diǎn)擊右鍵。打開彈出菜單。
2
、
在彈出菜單中,選擇
“Replace with a Parameter”
。選擇或者創(chuàng)建參數(shù)的對話框彈出。
3
、
在
“Parameter name”
中輸入?yún)?shù)的名稱,或者選擇一個(gè)在參數(shù)列表中已經(jīng)存在的參數(shù)。
4
、
在
“Parameter type”
下拉列表中選擇參數(shù)類型。
5
、
點(diǎn)擊
“OK”
,關(guān)閉該對話框。腳本生成器便會(huì)用參數(shù)中的值來取代腳本中被參數(shù)化的字符,參數(shù)用一對
“{}”
括住。
注意:在參數(shù)化
CORBA
或者
General-Java
用戶腳本的時(shí)候,必須參數(shù)化整個(gè)字符串,而不是其中的部分。另外注意:除了
Web
或者
WAP
,缺省的參數(shù)括號對于任何腳本都是
“{}”
。你可以在
“General Options”
對話框中的
“Parameterization”
標(biāo)簽(
Tools>General Options
)中定義參數(shù)括號種類。
6
、
用同樣的參數(shù)替換字符的其余情況,選中參數(shù),點(diǎn)擊右鍵,彈出菜單。從彈出的菜單中,選擇
“Replace More Occurrences”
。搜索和替換對話框彈出。“
Find What”
中顯示了你企圖替換的值。
“Replace With”
中顯示了括號中參數(shù)的名稱。選擇適當(dāng)?shù)臋z驗(yàn)框來匹配整個(gè)字符或者大小寫。如果要搜索規(guī)則的表達(dá)式(
.
,
!
,
?
等等),選中
“Regular Expression”
檢驗(yàn)框,然后點(diǎn)擊
“Replace”
或者
“Replace All”
。
注意:小心使用“
Replace All”
,尤其替換數(shù)字字符串的時(shí)候。腳本生成器將會(huì)替換字符出現(xiàn)的所有情況。
7
、
如果想用以前定義過的參數(shù)來替換常量字符串的話,選中該字符串,點(diǎn)擊右鍵,然后選擇
“Use Existing Parameter”
,子菜單
“Use Existing Parameters”
彈出。從子菜單“
Use Existing Parameters”
選擇參數(shù),或者用
“Select from Parameter List”
來打開參數(shù)列表對話框。
注意:如果用以前定義過的參數(shù)來替換常量字符串的話,那么,使用“
Parameter List”
非常方便。同時(shí),還可以查看和修改該參數(shù)的屬性。
8
、
對于已經(jīng)用參數(shù)替換過的地方,如果想取回原來的值,那么,就在參數(shù)上點(diǎn)擊右鍵,然后選擇
“Restore Original value”
。
在
Web
用戶腳本的樹形視圖中創(chuàng)建參數(shù):
1
、將光標(biāo)定位在企圖參數(shù)化的地方,點(diǎn)擊右鍵,從彈出的菜單中選擇
“Properties”
。則相關(guān)的屬性對話框打開。
2
、點(diǎn)擊在要參數(shù)化的參量的旁邊的
“ABC”
形狀的圖標(biāo)。
“Select or Create Parameter”
對話框打開。
3
、在
“Parameter name”
中輸入?yún)?shù)的名稱,或者從列表中選擇一個(gè)已經(jīng)存在的參數(shù)。
4
、在
“Parameter type”
中輸入?yún)?shù)的類型。
5
、點(diǎn)擊
“OK”
關(guān)閉該對話框。用戶腳本生成器會(huì)用參數(shù)來替換最初的字符串常量,并用一個(gè)表格形狀的圖標(biāo)替換
“ABC”
形狀的圖標(biāo)。
6
、要恢復(fù)參數(shù)化以前的值,點(diǎn)擊圖標(biāo),然后從彈出的菜單中選擇
“Undo Parameter”
,則以前的值便會(huì)重現(xiàn)。
三、定義參數(shù)的屬性
創(chuàng)建參數(shù)完成后,就可以定義其屬性了。參數(shù)的屬性定義就是定義在腳本執(zhí)行過程中,參數(shù)使用的數(shù)據(jù)源。在
Web
用戶腳本中,你既可以在基于文本的腳本視圖中定義參數(shù)屬性,也可以在基于圖標(biāo)的樹形視圖中定義參數(shù)屬性。下面的過程將教你如何在基于本文的腳本視圖中定義參數(shù)屬性。
在基于文本的腳本視圖中定義參數(shù)屬性步驟:
1
、
在參數(shù)上點(diǎn)擊右鍵,有菜單彈出。
2
、
在彈出的菜單中,選擇
“Parameter Properties”
。參數(shù)屬性對話框打開,顯示和當(dāng)前參數(shù)類型相關(guān)的屬性。
3
、
輸入?yún)?shù)的屬性值。
4
、
點(diǎn)擊
“Close”
關(guān)閉參數(shù)屬性對話框。
在
Web
用戶腳本的樹形視圖中定義參數(shù)的屬性:
1
、
將關(guān)標(biāo)定位在參數(shù)上,然后點(diǎn)擊右鍵,選擇
“Properties”
。屬性對話框打開。
2
、
點(diǎn)擊要定義屬性的參數(shù)旁邊的表格形狀按鈕,點(diǎn)擊右鍵,選擇
“Parameter Properties”
。參數(shù)屬性對話框打開,和參數(shù)類型相關(guān)的屬性顯示出來。
3
、
輸入?yún)?shù)的屬性。
4
、
點(diǎn)擊
“Close”
關(guān)閉參數(shù)屬性對話框。
使用參數(shù)列表: 使用參數(shù)列表可以在任意時(shí)刻查看所有的參數(shù),創(chuàng)建新的參數(shù)、刪除參數(shù),或者修改已經(jīng)存在參數(shù)的屬性。
1
、
點(diǎn)擊參數(shù)列表按鈕或者用
“Vuser>Parameter List”
。參數(shù)列表對話框打開。
2
、
要?jiǎng)?chuàng)建新的參數(shù),點(diǎn)擊
“New”
按鈕。新的參數(shù)則被添加在參數(shù)樹中,該參數(shù)有一個(gè)臨時(shí)的名字,你可以給它重新命名,然后回車。設(shè)置參數(shù)的類型和屬性,點(diǎn)擊“
OK”
,關(guān)閉參數(shù)列表對話框。
注意:不要將一個(gè)參數(shù)命名為“
unique”
,因?yàn)檫@個(gè)名稱是用戶腳本生成器本身的。用戶腳本生成器創(chuàng)建新的參數(shù),但是不會(huì)自動(dòng)用該參數(shù)在腳本中替換任意選中的字符串。
3
、
要?jiǎng)h除已有的參數(shù),那么,要先從參數(shù)樹中選擇該參數(shù),點(diǎn)擊
“Delete”
,然后確認(rèn)你的行為即可。
4
、
要修改已有參數(shù),那么,要先從參數(shù)樹中選擇該參數(shù),然后編輯參數(shù)的類型和屬性。
四、理解參數(shù)的類型
在你定義參數(shù)屬性的時(shí)候,要指定參數(shù)值的數(shù)據(jù)源。你可以指定下列數(shù)據(jù)源類型的任何一種:
Internal Data
――
虛擬用戶內(nèi)部產(chǎn)生的數(shù)據(jù)。
Data Files
――
存在于文件中的數(shù)據(jù)。可能是已存在的文件或者是用腳本生成器新創(chuàng)建的。
User-Defined Functions
――
調(diào)用外部
DLL
函數(shù)生成的數(shù)據(jù)
Internal Data
包括以下幾種:
1
、
Date/Time
Date/Time
用當(dāng)前的日期
/
時(shí)間替換參數(shù)。要指定一個(gè)
Date/Time
格式,你可以從菜單列表中選擇格式,或者指定你自己的格式。這個(gè)格式應(yīng)該和你腳本中錄制的
Date/Time
格式保持一致。
2
、
Group Name
Group Name
用虛擬用戶組名稱替換參數(shù)。在創(chuàng)建
scenario
的時(shí)候,你可以指定虛擬用戶組的名稱。當(dāng)從用戶腳本生成器運(yùn)行腳本的時(shí)候,虛擬用戶組名稱總是
None
。
3
、
Load Generator Name
Load Generator Name
用腳本負(fù)載生成器的名稱替換參數(shù)。負(fù)載生成器是虛擬用戶在運(yùn)行的計(jì)算機(jī)。
4. Iteration Number
Iteration Number
用當(dāng)前的迭代數(shù)目替換參數(shù)。
5
、
Random Number
Random Number
用一個(gè)隨機(jī)數(shù)替換參數(shù)。通過指定最大值和最小值來設(shè)置隨機(jī)數(shù)的范圍。
6
、
Unique Number
Unique Number
用一個(gè)唯一的數(shù)字來替換參數(shù)。你可以指定一個(gè)起始數(shù)字和一個(gè)塊的大小。
7
、
Vuser ID
Vuser ID
用分配給虛擬用戶的
ID
替換參數(shù),
ID
是由
Loadrunner
的控制器在
scenario
運(yùn)行時(shí)生成的。如果你從腳本生成器運(yùn)行腳本的話,虛擬用戶的
ID
總是
-1
。
五、數(shù)據(jù)文件
數(shù)據(jù)文件包含著腳本執(zhí)行過程中虛擬用戶訪問的數(shù)據(jù)。局部和全局文件中都可以存儲數(shù)據(jù)。可以指定現(xiàn)有的
ASCII
文 件、用腳本生成器創(chuàng)建一個(gè)新的文件或者引入一個(gè)數(shù)據(jù)庫。在參數(shù)有很多已知值的時(shí)候數(shù)據(jù)文件非常有用。數(shù)據(jù)文件中的數(shù)據(jù)是以表的形式存儲的。一個(gè)文件中可以包含很多參數(shù)值。每一列包含一個(gè)參數(shù)的數(shù)據(jù)。列之間用分隔符隔開,比如說,用逗號。 對數(shù)據(jù)文件設(shè)置參數(shù)屬性 如果使用文件作為參數(shù)的數(shù)據(jù)源,必須指 定以下內(nèi)容:文件的名稱和位置、包含數(shù)據(jù)的列、文件格式,包括列的分隔符、更新方法。 如果參數(shù)的類型是“
File”
,打開參數(shù)屬性(
Parameter Properties
)對話框,設(shè)置文件屬性如下:
1
、
在
“File path”
中輸入文件的位置,或者點(diǎn)擊
“Browse”
指定一個(gè)已有文件的位置。缺省情況下,所有新的數(shù)據(jù)文件名都是
“parameter_name.dat”
,注意,已有的數(shù)據(jù)文件的后綴必須是
.dat
。
2
、
點(diǎn)擊
“Edit”
。記事本打開,里面第一行是參數(shù)的名稱,第二行是參數(shù)的初始值。使用諸如逗號之類的分隔符將列隔開。對于每一新的表行開始一行新的數(shù)據(jù)。 注意:在沒有啟動(dòng)記事本的情況下如果想添加列,就在參數(shù)屬性對話框中點(diǎn)擊“
Add Col”
,那么
“Add new column”
對話框就會(huì)彈出。輸入新列的名稱,點(diǎn)擊
“OK”
。腳本生成器就會(huì)添加該列到表中,并顯示該列的初始值。
3
、
在
“Select Column”
部分,指明包含當(dāng)前參數(shù)數(shù)據(jù)的列。你可以指定列名或者列號。列號是包含你所需要數(shù)據(jù)的列的索引。列名顯示在每列的第一行(
row 0
)。
4
、
在
“Column delimiter”
中輸入列分隔符,你可以指定逗號、空格符等等。
5
、
在
“First data line”
中,在腳本執(zhí)行的時(shí)候選擇第一行數(shù)據(jù)使用。列標(biāo)題是第
0
行。若從列標(biāo)題后面的第一行開始的話,那就在
“First data line”
中輸入
1
。如果沒有列標(biāo)題,就輸入
0
。
6
、
在
“Select next row”
中輸入更新方法,以說明虛擬用戶在腳本執(zhí)行的過程中如何選擇表中的數(shù)據(jù)。方法可以是:連續(xù)的、隨機(jī)的、唯一的、或者與其它參數(shù)表的相同行。
6.1
、
順序(
Sequential
):該方法順序地給虛擬用戶分配參數(shù)值。如果正在運(yùn)行的虛擬用戶訪問數(shù)據(jù)表的時(shí)候,它會(huì)取到下一行中可用的數(shù)據(jù)。
6.2
、
隨機(jī)(
Random
):該方法在每次迭代的時(shí)候會(huì)從數(shù)據(jù)表中取隨機(jī)數(shù)
6.3
、
使用種子取隨機(jī)順序(
Use Random Sequence with Seed
):如果從
Loadrunner
的控制器來運(yùn)行
scenario
,你可以指定一個(gè)種子數(shù)值用于隨機(jī)順序。每一個(gè)種子數(shù)值在測試執(zhí)行的時(shí)候代表了一個(gè)隨機(jī)數(shù)的順序。無論你何時(shí)使用這個(gè)種子數(shù)值,在
scenario
中同樣的數(shù)據(jù)順序就被分配給虛擬用戶。如果在測試執(zhí)行的時(shí)候發(fā)現(xiàn)了一個(gè)問題并且企圖使用同樣的隨機(jī)數(shù)序列來重復(fù)測試,那么,你就可以啟動(dòng)這個(gè)功能(可選項(xiàng))。
6.4
、
唯一(
Unique
):
Unique
方法分配一個(gè)唯一的有順序的值給每個(gè)虛擬用戶的參數(shù)。
6.5
、與以前定義的參數(shù)取同一行(
Same Line As
):該方法從和以前定義過的參數(shù)中的同樣的一行分配數(shù)據(jù)。你必須指定包含有該數(shù)據(jù)的列。在下拉列表中會(huì)出現(xiàn)定義過的所有參數(shù)列表。注意:至少其中的一個(gè)參數(shù)必須是
Sequential
、
Random
或者
Unique
。
如果數(shù)據(jù)表中有三列,三個(gè)參數(shù)定義在列表中:
id1
,
name1
和
title1
,如下:。
ID Name Title
132 Kim Manager
187 Cassie Engineer
189 Jane VP
對于參數(shù)
id1
,你可以指示虛擬用戶使用
Random
方法,而為參數(shù)
name1
和
title1
就可以指定方法
“Same Line as id1”
。所以,一旦
ID“132”
被使用,那么,姓名(
Name
)
“Kim”
和職位(
Title
)
“Manager”
同時(shí)被使用。
7
、
Updta value on
數(shù)據(jù)的更新方法
7.1
、
Each iteration
――每次反復(fù)都要取新值。
7.2
、
Each occurrence
――只要發(fā)現(xiàn)該參數(shù)就要重新取值。
7.3
、
Once
――在所有的反復(fù)中都使用同一個(gè)值
8
、
When out of values
超出范圍:(選擇數(shù)據(jù)為
unique
時(shí)才可用到)
8.1
、
Abort Vuser
――中止
8.2
、
Continue in a cyclic manner
――繼續(xù)循環(huán)取值
8.3
、
Continue with last value
――取最后一個(gè)值
9
、
Allocate Vuser values in the Controller
在控制器中分配值:(選擇數(shù)據(jù)為
unique
時(shí)才可用到)
六、從已存在的數(shù)據(jù)庫中導(dǎo)入數(shù)據(jù)
Loadrunner
允許你利用參數(shù)化從已經(jīng)存在的數(shù)據(jù)庫中導(dǎo)入數(shù)據(jù)。可以使用下列兩種方式之一:
1.
使用
Microsoft Query
(要求在系統(tǒng)上先安裝
MS Query
)。
2.
指定數(shù)據(jù)庫連接字符串和
SQL
語句。
用戶腳本生成器在從數(shù)據(jù)庫中導(dǎo)入數(shù)據(jù)的過程中提供了一個(gè)向?qū)АT谙驅(qū)е校阒该魅绾螌?dǎo)入數(shù)據(jù)-通過
MS Query
創(chuàng)建查詢語句或者直接書寫
SQL
語句。在導(dǎo)入數(shù)據(jù)以后,以
.dat
為后綴并作為正規(guī)的參數(shù)文件保存。
要開始導(dǎo)入數(shù)據(jù)庫中數(shù)據(jù)的過程,在參數(shù)屬性對話框中點(diǎn)擊“
Data Wizard
”,則,數(shù)據(jù)庫查詢向?qū)棾觥?/span>
要?jiǎng)?chuàng)建新的查詢
1.
選擇“
Create new query
”。如果需要
MS Query
的幫助,選擇“
Show me how to use Microsoft Query
”,然后點(diǎn)擊“
Finish
”。
如果你還沒有安裝
Microsoft Query
,
Loadrunner
會(huì)提示你這個(gè)功能不可用。在進(jìn)行之前,從
Microsoft Office
中安裝
MS Query
。
2.
在
Microsoft Query
中遵循以下步驟,導(dǎo)入期望的表和列。
3.
在完成數(shù)據(jù)的導(dǎo)入后,選擇“
Exit and return to Virtual User Generator
”,然后點(diǎn)擊“
Finish
”。在參數(shù)屬性對話框中數(shù)據(jù)庫記錄以
data
文件的形式顯示出來。
要在
MS Query
中編輯并查看數(shù)據(jù),選擇“
View data or edit in Microsoft Query
”。若要結(jié)束,則選擇“
File>Exit and return to Virtual User Generator
”返回到腳本生成器。
4.
在“
Select Column
”部分,指定包含當(dāng)前參數(shù)數(shù)據(jù)的列可以指定列號或者列名。注意:列標(biāo)題默認(rèn)為第
0
行(
row 0
)。
5.
從“
Select next row
”列表中選擇一個(gè)更新方法來告訴虛擬用戶在腳本指定的過程中如何選擇表中的數(shù)據(jù)。可選項(xiàng)是:
Sequential
、
Random
、
Unique
或者
Same Line As
。其中每一項(xiàng)的含義文章前面已經(jīng)講述,就不再贅述。
6.
如果選擇“
Advance row each iteration
”,虛擬用戶在每次迭代的時(shí)候會(huì)使用新的一行的數(shù)據(jù)而不是重復(fù)同樣的數(shù)據(jù)。
要指定數(shù)據(jù)庫連接或者
SQL
語句
1.
選擇“
Specify SQL Statement
”,然后點(diǎn)擊“
Next
”。
2.
點(diǎn)擊“
Create
”指定一個(gè)新的連接字符串。選擇數(shù)據(jù)源的窗口彈出。
3.
選擇已有的數(shù)據(jù)源,或者點(diǎn)擊“
New
”創(chuàng)建一個(gè)新的數(shù)據(jù)源。向?qū)⑻崾灸愦┻^創(chuàng)建
ODBC
數(shù)據(jù)源的過程。在完成后,連接字符串就會(huì)在連接字符串框中顯示出來。
4.
在
SQL
框中,輸入或者粘貼
SQL
語句。
5.
點(diǎn)擊“
Finish
”繼續(xù)
SQL
語句并導(dǎo)入數(shù)據(jù)。數(shù)據(jù)庫記錄將以
data
文件的形式顯示在參數(shù)屬性框中。
6.
在“
Select Column
”部分中,指定包含當(dāng)前參數(shù)數(shù)據(jù)的列。你可以指定列號或者列名。
7.
從“
Select next row
”列表中選擇一個(gè)更新方法來告訴虛擬用戶在腳本指定的過程中如何選擇表中的數(shù)據(jù)。可選項(xiàng)是:
Sequential
、
Random
、
Unique
或者
Same Line As
。
8.
如果選擇“
Advance row each iteration
”,虛擬用戶在每次迭代的時(shí)候會(huì)使用新的一行的數(shù)據(jù)而不是重復(fù)同樣的數(shù)據(jù)。