軟件測試工具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應用中包含了與服務器進行交互的JavaApplet、基于瀏覽器的應用中包含了向服務器進行通信的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 since1/1/70: %ld\n”,time(&t));
lr_message(“System time and date: %s”,ctime(&t));
}
復制代碼
輸出結果為:
Time in seconds since1/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中的下列關鍵字:System\CurrentControlSet\Control\Session Manager\SubSystems。
(2)找到Windows關鍵字,Windows關鍵字如下所示:
%SystemRoot%\system32\csrss.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操作系統的限制,而只受硬件和內部可伸縮性限制的約束。
有一個網站功能(其實就是SSO部分)需要做性能測試, 今天找一個LoadRunner9.1搞了半天也沒有搞懂,不知道為什么就是不能錄制腳本, 總是0 Events. 晚上終于看到LR的readme的Limitaions里有這樣說明:
Open Start > Control Panel > System.
In the Advanced tab, click Performance settings.
In the Performance Options Data Execution Prevention tab, select the first option, DEP for essential services only.
Click OK to save the settings.
Reboot the machine.
大家一定要注意最后那條,是要重新啟動機器才行。 剛開始的時候,我被LR的錯誤提示給誤導了。說什么參考VuGen的readme. 我找了半天, 在網上也沒有找到解決辦法。晚上突然在開媽菜單里看到一個Readme就進去看一下, 果然被我找到了。 真是功夫不負有心人。
我本身是一個開發人員,個人認為掌握一些必要的測試工具還是很有必要的,像Junit, TestNg這些單元的框架就不用說了,在寫多線程程序時,還很有必要掌握一個性能測試工具, 開發人員不一定性能負責,但是對你的代碼的線程安全一定要負責。
文章來源于領測軟件測試網 http://www.kjueaiud.com/