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