A. 如何調試LoadRunner腳本
VuGen 包含兩個選項來幫助調試 Vuser 腳本:「分步運行」命令和斷點。這些選項不適用於 VBscript 和 VB 應用程序類型的 Vuser。
要查看「調試」工具欄,請執行下列操作:
右鍵單擊工具欄區域,然後選擇「調試」。「調試」工具欄將顯示在工具欄區域
中。
「分步運行」命令
「分步運行」命令在運行腳本時一次運行一行。通過該命令,可以依次查看腳本
每一行的執行情況。
要分步運行腳本,請執行下列操作:
1 依次選擇「Vuser」 > 「分步運行」,或者單擊「調試」工具欄上的「步驟」按
鈕。VuGen 將執行腳本的第一行。
2 繼續單擊「步驟」按鈕來執行該腳本,直到腳本運行完成為止。
斷點
通過斷點可以使腳本在特定位置暫停執行。它可用於在執行期間的預定點處檢查
該腳本對應用程序的影響。要管理書簽,請參閱第 186 頁上的「斷點管理器」。
要設置斷點,請執行下列操作:
1 將游標置於腳本中要停止執行的行上。
2 依次選擇「插入」 > 「切換斷點」,或者單擊「調試」工具欄上的「斷點」按
鈕。也可以按鍵盤上的 F9 鍵。將在腳本的左邊距顯示「斷點」符號 ( )。
3 要禁用斷點,請將游標置於包含斷點符號的行上,然後單擊「調試」工具欄上的
「啟用 / 禁用斷點」按鈕。「斷點」符號中將會顯示一個白點 ( )。禁用一個斷點
後,執行將在下一個斷點處暫停。再次單擊該按鈕可以啟用斷點。
要刪除斷點,請將游標置於包含斷點符號的行上,然後單擊「斷點」按鈕或者按
F9 鍵。
要運行包含斷點的腳本,請執行下列操作:
1 照常運行腳本。
到達斷點時, VuGen 將暫停腳本的執行。可以檢查腳本運行到斷點時的效果,
並進行必要的更改,然後從斷點處重新啟動腳本。
2 要繼續執行,請依次選擇「Vuser」 > 「運行」。
重新啟動後,腳本將繼續執行,直到遇到下一個斷點或腳本完成。
斷點管理器
可以使用斷點管理器來查看和管理斷點。通過斷點管理器您可以操縱腳本中的所
有斷點。
要打開斷點管理器,請選擇「編輯」 > 「斷點」。
要跳至腳本中的斷點處,請執行下列操作:
1 從列表中選擇一個斷點。
2 單擊「在腳本中突出顯示」。則將在腳本中突出顯示該行。
注意,每次只能突出顯示一個斷點。
管理斷點
可以通過斷點管理器添加、刪除、禁用斷點或者為斷點設置條件
要添加斷點,請執行下列操作:
1 單擊「添加」。將打開「添加斷點」對話框。
2 選擇「操作」,並指定要添加斷點的行號。
3 單擊「確定」。該斷點將被添加到斷點列表中。
要刪除斷點,請執行下列操作:
1 要刪除單個斷點,請選擇該斷點並單擊「刪除」。
2 要立即刪除所有斷點,請單擊「全部刪除」。
要啟用 / 禁用斷點,請執行下列操作:
1 要啟用斷點,請在「操作」列內選中操作的復選框。
2 要禁用斷點,請在「操作」列內清除操作的復選框。
通過斷點管理器您可以將斷點設置為在某些條件下暫停執行。
B. HP Mercury LoadRunner怎麼用,如何使用,使用問題,使用方法和技巧
1.LoadRunner錄制腳本時為什麼不彈出IE瀏覽器?
當一台主機上安裝多個瀏覽器時,LoadRunner錄制腳本經常遇到不能打開瀏覽器的情況,可以用下面的方法來解決。
啟動瀏覽器,打開Internet選項對話框,切換到高級標簽,去掉「啟用第三方瀏覽器擴展(需要重啟動)」的勾選,然後和銀山再次運行VuGen即可解決問題
提示:通常安裝Firefox等瀏覽器後,都會勾選上面得選項,導搏察致不能正常錄制。因此建議運行LoadRunner得主機上保持一個干凈的測試環境。
2.錄制Web腳本時,生成的腳本中存在亂碼該如何解決?
錄制腳本前,打開錄制選項配置對話框Record-Options,進入到Advanced標簽,先勾選「Support charset」,然後選擇中支持UTF-8。再次錄制,就不會出現中文亂碼問題了。
3.HTML-based script與URL-based script的腳本有什麼區別?
使用「HTML-based script」的模式錄制腳本,VuGen為用戶的每個HTML操作生成單獨的步驟,這種腳本看上去比較直觀;使用「URL-based script」模式錄制腳本時,VuGen可以捕獲所有作為用戶操作結果而發送到伺服器的HTTP請求,然後為用戶的每個請求分別生成對應方法。
通常,基於瀏覽器的Web應用會使用「HTML-based script」模式來錄制腳本;而沒有基於瀏覽器的Web應用、Web應用中包含了與伺服器進行交互的Java Applet、基於瀏覽器的應用中包含了向伺服器進行通信的JavaScript/VBScript代碼、基於瀏覽器的應用中使用了HTTPS安全協議,這時使用「URL-based script」模式進行錄制。
4.為什麼腳本中添加了檢查方法Web-find,但是腳本回放時卻沒有執行?
由於檢查點功能會耗費一定的資源,因此LoadRunner默認關閉了對文本及圖像的檢查。要想開啟檢查功能,必須修改運行時的配置Run-time Setting。
進入「Run-time Setting」對話框,依次進入「Internet Protocol→Preferences」,勾選Checks下的「Enable Image and text check」選項即可。
檢查執行結果時推薦使用web_reg_find方法。
5.運行時的Pacing設置主要影響什麼?
Pacing主要用來設置重復迭代腳本的間隔時間。共有三種方法:上次迭代結束後立刻開始、上次迭代結束後等待固定時間、按固定或隨機的時間間隔開始執行新的迭代。
根據實際需要設置迭代即可。通常,沒有時間間隔會產生更大的壓力。
6.運行時設喚中置Log標簽中,如果沒有勾選「Enable logging」,則手工消息可以發送嗎?
Enable logging選項僅影響自動日誌記錄和通過lr_log_message發送的消息。即使沒有勾選,虛擬用戶腳本中如果使用lr_message、lr_output_message、lr_error_message,仍然會記錄其發出的消息。
7.LoadRunner 8.0版本的VuGen在錄制Web Services協議的腳本時一切正常,而回放時報出錯誤提示「Error:server returned an incorrectly formatted SOAP response」。這時說明原因引起的?
造成這種情況的主要原因是LoadRunner 8.0的VuGen在錄制Web Service協議的腳本時存在一個缺陷:如果伺服器的操作系統是中文的,VuGen會自動將WSDL文件的頭改為,因此會有上面的錯誤提示。
解決方法:把「LR80WebservicesFPI_setup.exe」和「lrunner_web_sevices_path_1.exe」兩個補丁打上即可解決。
8.VuGen支持Netscape的客戶證書嗎?
不支持。目前的VuGen 8.0版本中僅支持Internet Explorer的客戶端證書。錄制腳本時可以先從Netscape中導出所需的證書,然後將其導入到Internet Explorer中,並確保以相同的順序導出和導入這些證書。而且,在每台將要錄制或運行需要證書的Web Vuser腳本的計算機上都要重復執行前面的過程。
9.VuGen會修改錄制瀏覽器中的代理伺服器設置嗎?
會修改。在開始錄制基於瀏覽器的Web Vuser腳本時,VuGen首先會啟動指定的瀏覽器。然後,VuGen會指示瀏覽器訪問VuGen代理伺服器。為此,VuGen會修改錄制瀏覽器上的代理伺服器設置。默認情況下,VuGen會立即將代理伺服器設置更改為Localhost:7777。錄制之後,VuGen會將原始代理伺服器設置還原到該錄制瀏覽器中。因此,在VuGen進行錄制的過程中,不可以更改代理伺服器設置,否則將無法正常進行。
10.在LoadRunner腳本如何輸出當前系統時間?
LoadRunner提供了char *ctime(const time_t *time)函數,調用參數為一個Long型的整數指針,用於存放返回時間的數值表示。
調用語句與返回值如下示例:
typedef long time_t;
Action()
{
time_t t;
lr_message(「Time in seconds since 1/1/70: %ld 」,time(&t));
lr_message(「System time and date: %s」,ctime(&t));
}
輸出結果為:
Time in seconds since 1/1/70: 1185329968
System time and date:Wed Jul 25 10:19:28 2007
11.一些Web虛擬用戶腳本錄制後立刻回放沒有任何問題,但是當設置迭代次數大於1時,如果進行回放則只能成功迭代一次。為什麼從第二次迭代開始發生錯誤?
這種現象多是由於在「Run-time Setting」的「Browse Emulation」的設置中,勾選了「Simulate a new user on each iteration」及其下面的選項「Clear cache on each iteration」這兩個選項的含義是每次迭代時模擬一個新的用戶及每次迭代時清除緩存。
由於腳本迭代時,init和end只能執行一次,如果每次迭代都模擬一個新的用戶並清除緩存,
則用戶登錄信息將一並清除,因此迭代時可能會發生錯誤。
12.虛擬客戶腳本「Run-time Setting」中的線程和進程運行方式的區別?
如果選擇「Run Vuser as a process」,則場景運行時會為每一個虛擬用戶創建一個進程;選擇「Run Vuser as a thread」則將每個虛擬用戶作為一個線程來運行,在任務管理器中只看到一個mmdrv.exe,這種方式的運行效率更高,能造成更大的壓力,時默認選項。
另外,如果啟用了IP欺騙功能,則先在Controller中選中Tools菜單下的「Expert Mode」,然後將Tools菜單下的「Options>General」標簽頁中的IP地址分配方式也設置為與Vuser運行方式一致,同為線程或進程方式。
13.在Controller中運行Web相關測試場景時,經常會有很多超時錯誤提示,如何處理這類問題?
這主要有腳本的默認超時設置引起。當回放Web腳本時,有時候由於伺服器響應時間較長,會產生超時的錯誤。這時需要修改腳本的運行時配置。
進入「Run-time Setting」對話框後,依次進入「Internet Protocol→Preference」。然後點擊「Options…」按鈕,進入高級設置對話框,可以修改各類超時設置的默認值。
14.為什麼Windows系統中的CPU、內存等資源仍然充足,但是模擬的用戶數量卻上不去?
在Windows計算機的標准設置下,操作系統的默認限制只能使用幾百個Vuser,這個限制與CPU或內存無關,主要是操作系統本身規定了默認的最大線程數所導致。要想突破Windows這個限制,須修改Windows注冊表。以Windows XP Professional為例。
(1)打開注冊表後,進入注冊表項HKEY_LOCAL_MACHINE中的下列關鍵字: ManagerSubSystems。
(2)找到Windows關鍵字,Windows關鍵字如下所示:
%SystemRoot%system32csrss.exe bjectDirectory=Windows
SharedSection=1024,3072,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1
ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2
ProfileControl=Off MaxRequestThreads=16
SharedSection=1024,3072,512關鍵字的格式為xxxx,yyyy,zzz。其中,xxxx定義了系統范圍堆的最大值(以KB為單位),yyyy定義每個桌面堆得大小。
(3)將yyyy的設置從3072更改為8192(即8MB),增加SharedSection參數值。
通過對注冊表的更改,系統將允許運行更多的線程,
因而可以在計算機上運行更多的Vuser。這意味著能夠模擬的最大並發用戶數量將不受Windows操作系統的限制,而只受硬體和內部可伸縮性限制的約束。
C. LoadRunner 8.1 裡面 的Vuser是什麼意思
對於LR腳本來說,一個腳本模擬了一個真實用戶的行為,但是這是通過對協議的回放實現的,為了能夠說明這種模擬行為,稱一個腳本是一個Vuser Script,當你進入場景後,你要設置多少個虛擬用戶Vuser來執行這個Vuser Script
D. loadrunner如何使用
1、使用LoadRunner 完成測試一般分為四個步驟:
2、Vvitrual User Generator 創建腳本
創建腳本,選擇協議
錄制腳本
編輯腳本
檢查修改腳本是否有誤
3、中央控制器(Controller)來調度虛擬用戶
創建Scenario,選擇腳本
設置機器虛擬用戶數
設置Schele
如果模擬多機測試,設置Ip Spoofer
4、運行腳本
分析scenario
分析測試結果
5、安裝LoadRunner 中文版
LoadRunner 分為Windows 版本和Unix 版本。如果我們的所有測試環境基於Windows
平台, 那麼我們只要安裝Windows 版本即可。本章講解的安裝過程就是LoadRunner7.8中文的Windows 版本的安裝。
6、使用LoadRunner進行負載/壓力測試
7、錄制基本的用戶腳本
創建用戶腳本需要用到VuGen。提示: 運行VuGen 最好在1024*768 的解析度下, 否則有些工具欄會看不到。
啟動Visual User Generator 後, 通過菜單新建一個用戶腳本, 選擇系統通訊的協議。
這里我們需要測試的是Web 應用,同時考慮到後台SQL資料庫所以我們需要選擇Web(HTTP/HTML)協議+SQL SERVER協議,確定後, 進入主窗體。通過菜單來啟動錄制腳本的命令。
8、在URL 中添入要測試的Web 站點地址..。
●測試http://lms.ah.sp.com.cn/lms-lmm/loginForm.do選擇要把錄制的腳本放到哪一個部分, 默認情況下是「Action」。
這里簡單說明一下:VuGen 中的腳本分為三部分:vuser_init、vuser_end 和Action。其
中vuser_init 和vuser_end 都只能存在一個, 不能再分割, 而Action 還可以分成無數多個部分( 通過點擊New 按鈕, 新建ActionXXX)。在錄制需要登陸的系統時, 我們把登陸部分放到vuser_init 中, 把登陸後的操作部分放到Action 中, 把注銷關閉登陸部分放到vuser_end 中。( 如果需要在登陸操作設集合點, 那麼登陸操作也要放到Action 中, 因為vuser_init 中不能添加集合點) 在其他情況下, 我們只要把操作部分放到Action 中即可。注意: 在重復執行測試腳本時,vuser_init 和vuser_end 中的內容只會執行一次, 重復執行的只是Action 中的部分。
點「 選項 」按鈕, 進入錄制的設置窗體, 這里一般情況下不需要改動。
●然後點「OK」 後,VuGen 開始錄制腳本。在錄制過程中, 不要使用瀏覽器的「 後退」 功能,LoadRunner 支持不太好! 錄制過程中, 在屏幕上會有一個工具條出現。錄制的過程和WinRunner 有些類似, 不再多介紹。錄制完成後, 按下「 結束錄制」 按鈕,VuGen 自動生成用戶腳本, 退出錄制過程。
完善測試腳本
當錄制完一個基本的用戶腳本後, 在正式使用前我們還需要完善測試腳本, 增強腳本的
靈活性。一般情況下, 我們通過以下幾種方法來完善測試腳本。插入事務、插入結合點、插入註解、參數化輸入。這里只舉例介紹參數化如何設置,其它只作簡單介紹。
插入事務
事務(Transaction): 為了衡量伺服器的性能, 我們需要定義事務。比如: 我們在腳本
中有一個數據查詢操作, 為了衡量伺服器執行查詢操作的性能, 我們把這個操作定義為一個事務, 這樣在運行測試腳本時,LoadRunner 運行到該事務的開始點時,LoadRunner 就會開始計時, 直到運行到該事務的結束點, 計時結束。這個事務的運行時間在結果中會有反映。
插入事務操作可以在錄制過程中進行, 也可以在錄制結束後進行。LoadRunner 運行在
腳本中插入不限數量的事務。
具體的操作方法如下: 在需要定義事務的操作前面, 通過菜單或者工具欄插入。輸入該事務的名稱。注意: 事務的名稱最好要有意義, 能夠清楚的說明該事務完成的動作。插入事務的開始點後, 下面需要在需要定義事務的操作後面插入事務的「 結束點」。同樣可以通過菜單或者工具欄插入。默認情況下, 事務的名稱列出最近的一個事務名稱。一般情況下, 事務名稱不用修改。事務的狀態默認情況下是LR_AUTO。一般情況下, 我們也不需要修改, 除非在手工編寫代碼時, 有可能需要手動設置事務的狀態。
插入集合點
插入集合點是為了衡量在加重負載的情況下伺服器的性能情況。在測試計劃中, 可能會
要求系統能夠承受1000 人同時提交數據,在LoadRunner 中可以通過在提交數據操作前面加入集合點, 這樣當虛擬用戶運行到提交數據的集合點時,LoadRunner 就會檢查同時有多少用戶運行到集合點,如果不到1000 人,LoadRunner 就會命令已經到集合點的用戶在此等待, 當在集合點等待的用戶達到1000 人時,LoadRunner 命令1000 人同時去提交數據, 從而達到測試計劃中的需求。
注意: 集合點經常和事務結合起來使用。集合點只能插入到Action 部分,vuser_init 和vuser_end 中不能插入集合點。具體的操作方法如下: 在需要插入集合點的前面, 通過菜單或者工具欄操作輸入該集合點的名稱。注意: 集合點的名稱最好要有意義, 能夠清楚的說明該集合點完
成的動作。
插入注釋
注釋的作用就不多說了, 不過插入注釋最好是在錄制過程中。具體的操作方法如下: 在需要插入注釋的前面, 通過菜單或者工具欄操作
參數化輸入
如果用戶在錄制腳本過程中, 填寫提交了一些數據, 比如要增加資料庫記錄。這些操作
都被記錄到了腳本中。當多個虛擬用戶運行腳本時, 都會提交相同的記錄, 這樣不符合實際的運行情況, 而且有可能引起沖突。為了更加真實的模擬實際環境, 需要各種各樣的輸入。參數化輸入是一種不錯的方法。
用參數表示用戶的腳本有兩個優點:
① 可以使腳本的長度變短。
② 可以使用不同的數值來測試你的腳本。例如, 如果你企圖搜索不同名稱的圖書, 你
僅僅需要寫提交函數一次。在回放的過程中, 你可以使用不同的參數值, 而不只搜索一
個特定名稱的值。
參數化包含以下兩項任務:
① 在腳本中用參數取代常量值。
② 設置參數的屬性以及數據源。
參數化僅可以用於一個函數中的參量。你不能用參數表示非函數參數的字元串。
另外, 不是所有的函數都可以參數化的。
參數化輸入的講解, 我們採用一個例子的方式來進行。
在本例中我們參數化用戶的登陸名:
先看如下腳本,通過腳本錄制找到用戶登陸部分,如圖
參數名隨意取,建議取通俗易懂的名字,下面我們重點介紹一下參數的類型。
●DateTime: 很簡單, 在需要輸入日期/時間的地方, 可以用DateTime 類型來替代。
其屬性設置也很簡單, 選擇一種格式即可。當然也可以定製格式。
.●Group Name:暫時不知道何處能用到,但設置比較簡單。在實際運行中,LoadRunner
使用該虛擬用戶所在的Vuser Group 來代替。但是在VuGen 中運行時,Group Name
將會是None
.●Load Generator Name: 在實際運行中,LoadRunner 使用該虛擬用戶所在Load Generator 的機器名來代替。
.●Iteration Number: 在實際運行中,LoadRunner 使用該測試腳本當前循環的次數來
代替。
.●Random Number: 隨機數。很簡單。在屬性設置中可以設置產生隨機數的范圍
.●Unique Number:唯一的數。在屬性設置中可以設置第一個數以及遞增的數的大小。
注意: 使用該參數類型必須注意可以接受的最大數。例如: 某個文本框能接受的
最大數為99。當使用該參數類型時, 設置第一個數為1, 遞增的數為1, 但100 個
虛擬用戶同時運行時,第100 個虛擬用戶輸入的將是100,這樣腳本運行將會出錯。
注意: 這里說的遞增意思是各個用戶取第一個值的遞增數, 每個用戶相鄰的兩次循
環之間的差值為1。舉例說明: 假如起始數為1, 遞增為5, 那麼第一個用戶第一
次循環取值1, 第二次循環取值2; 第二個用戶第一次循環取值為6, 第二次為7;
依次類推。
●Vuser ID: 設置比較簡單。在實際運行中,LoadRunner 使用該虛擬用戶的ID 來代
替,該ID 是由Controller 來控制的。但是在VuGen 中運行時,Vuser ID 將會是–1。
File: 需要在屬性設置中編輯文件,添加內容,也可以從現成的資料庫中取數據( 下
面我們將會介紹)
●User Defined Function: 從用戶開發的dll 文件提取數據。就目前我認為, 這種方式
沒有必要。VuGen 支持C 語言的語法,在VuGen 中重新編寫類似的函數應該不難。
上面的例子中, 我們取隨機數即可。點「Properties… ..」 按鈕, 進行屬性設置窗口
添入隨機數的取值范圍為(1-50), 選擇一種數據格式。在「屬性」 中有以下幾
個選項:
◆Each Occurrence:在運行時, 每遇到一次該參數, 便會取一個新的值
◆Each iteration:運行時, 在每一次循環中都取相同的值
◆Once:運行時, 在每次循環中, 該參數只取一次值
這里我們用的是隨機數, 選擇Each Occurrence 非常合適。
下面我們再介紹用資料庫中的用戶名來參數化登陸用戶名。
框選住登陸名,點滑鼠右鍵,彈出對話框,選擇「替換為新參數」彈出對話框,此時參數名輸入:name,參數類型選擇File,如圖
注意: 參數的文件名不要使用con.dat、pm.dat 或者lpt*.dat 等系統裝置名下面我們將會連接資料庫, 從數據表中選擇用戶名。點「數據向導」 按鈕,顯示如圖
添入連接字元串, 點「創建」 按鈕,選擇事先配置好的ODBC連接。在SQL語句里輸入select查詢語句,出現如圖窗口
提醒: 在參數數據顯示區, 最多隻能看到100 行, 如果數據超過100 行, 只能點「編輯」 按鈕, 進入記事本看。
「選擇下一行 」 有以下幾種選擇:
●Sequential: 按照順序一行行的讀取。每一個虛擬用戶都會按照相同的順序讀取
●Random: 在每次循環里隨機的讀取一個, 但是在循環中一直保持不變
●Unique : 唯一的數。注意: 使用該類型必須注意數據表有足夠多的數。比如Controller 中設定20 個虛擬用戶進行5 次循環, 那麼編號為1 的虛擬用戶取前5 個數, 編號為2 的虛擬用戶取6-10 的數, 依次類推, 這樣數據表中至少要有100 個數據, 否則Controller 運行過程中會返回一個錯誤。
「按編號」指選擇列表中的那一列數據,從左到右分別是1、2、3依次
通常用在有關聯性的數據上面。我們這里取值Sequential 即可。完成設置關閉即可
4.3 單機運行測試腳本
經過以上的各個步驟後, 腳本就可以運行了。運行腳本可以通過菜單或者工具欄來操作。
執行「 運行」 命令後,VuGen 先編譯腳本, 檢查是否有語法等錯誤。如果有錯誤,VuGen
將會提示錯誤。雙擊錯誤提示,VuGen 能夠定位到出現錯誤的那一行。為了驗證腳本的正
確性, 我們還可以調試腳本, 比如在腳本中加斷點等, 操作和在VC 中完全一樣, 相信大家誰都不會感到陌生。如果編譯通過, 就會開始運行。然後會出現運行結果。