Loadrunner之異常處理總結 by--BruceWong

一:LoadRunner常見問題整理
1.LR 腳本為空的解決方法:
1.去掉ie設置中的第三方支持取消掉
2.在系統屬性-高級-性能-數據執行保護中,添加loadrunner安裝目錄中的vugen.exe文件.
有可能是由于錄制的URL地址采用的是localhost的問題,改成分配的IP地址或127.0.0.1試試。
3、插入文本檢查點步驟時,使用web_reg_find,通常TextPfx和TextSfx中會包含雙引號,需要進行轉義(用斜杠),例如:
web_reg_find("Search=Body",
"SaveCount=Welcome",
"TextPfx=歡迎<a class="drop" id="viewpro" onMouseOver="showMenu(this.id)">",
"TextSfx=</a>",
LAST)
 遇到flight界面為空的解決的可能方法:
1、如果安裝了IE以外的瀏覽器,并且IE不是默認瀏覽器,則無法生成錄制腳本
2、如果錄制腳本時IE不能打開,則需要將瀏覽器的IE工具高級選項中,將“啟用第三方瀏覽器擴展”的
勾選去掉
3、lr自帶的webtours系統,如果點擊Flights選項,出現空白頁面,請檢查本機Oracle的 PERL5LIB環境
2.LoadRunner錄制腳本時為什么不彈出IE瀏覽器?
  當一臺主機上安裝多個瀏覽器時,LoadRunner錄制腳本經常遇到不能打開瀏覽器的情況,可以用下面的方法來解決。
  啟動瀏覽器,打開Internet選項對話框,切換到高級標簽,去掉“啟用第三方瀏覽器擴展(需要重啟動)”的勾選,然后再次運行VuGen即可解決問題
  提示:通常安裝Firefox等瀏覽器后,都會勾選上面得選項,導致不能正常錄制。因此建議運行LoadRunner得主機上保持一個干凈的測試環境。
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.運行時的Pacing設置主要影響什么?
  Pacing主要用來設置重復迭代腳本的間隔時間。共有三種方法:A:上次迭代結束后立刻開始、 B:上次迭代結束后等待固定時間、C:按固定或隨機的時間間隔開始執行新的迭代。
 根據實際需要設置迭代即可。通常,沒有時間間隔會產生更大的壓力。
   5.運行時設置Log標簽中,如果沒有勾選“Enable logging”,則手工消息可以發送嗎?
  Enable logging選項僅影響自動日志記錄和通過lr_log_message發送的消息。即使沒有勾選,虛擬用戶腳本中如果使用lr_message、lr_output_message、lr_error_message,仍然會記錄其發出的消息。
   6.VuGen支持Netscape的客戶證書嗎?
  不支持。目前的VuGen 8.0版本中僅支持Internet Explorer的客戶端證書。錄制腳本時可以先從Netscape中導出所需的證書,然后將其導入到Internet Explorer中,并確保以相同的順序導出和導入這些證書。而且,在每臺將要錄制或運行需要證書的Web Vuser腳本的計算機上都要重復執行前面的過程。
   7.VuGen會修改錄制瀏覽器中的代理服務器設置嗎?
  會修改。在開始錄制基于瀏覽器的Web Vuser腳本時,VuGen首先會啟動指定的瀏覽器。然后,VuGen會指示瀏覽器訪問VuGen代理服務器。為此,VuGen會修改錄制瀏覽器上的代理服務器設置。默認情況下,VuGen會立即將代理服務器設置更改為Localhost:7777。錄制之后,VuGen會將原始代理服務器設置還原到該錄制瀏覽器中。因此,在VuGen進行錄制的過程中,不可以更改代理服務器設置,否則將無法正常進行。
   8.在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\n”,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
  9.一些Web虛擬用戶腳本錄制后立刻回放沒有任何問題,但是當設置迭代次數大于1時,如果進行回放則只能成功迭代一次。為什么從第二次迭代開始發生錯誤?
  這種現象多是由于在“Run-time Setting”的“Browse Emulation”的設置中,勾選了“Simulate a new user on each iteration”及其下面的選項“Clear cache on each iteration”這兩個選項的含義是每次迭代時模擬一個新的用戶及每次迭代時清除緩存。
  由于腳本迭代時,init和end只能執行一次,如果每次迭代都模擬一個新的用戶并清除緩存,則用戶登錄信息將一并清除,因此迭代時可能會發生錯誤。
  10.虛擬客戶腳本“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運行方式一致,同為線程或進程方式。
  11.在Controller中運行Web相關測試場景時,經常會有很多超時錯誤提示,如何處理這類問題?
  這主要有腳本的默認超時設置引起。當回放Web腳本時,有時候由于服務器響應時間較長,會產生超時的錯誤。這時需要修改腳本的運行時配置。
  進入“Run-time Setting”對話框后,依次進入“Internet Protocol→Preference”。然后點擊“Options…”按鈕,進入高級設置對話框,可以修改各類超時設置的默認值。
  13為什么Windows系統中的CPU、內存等資源仍然充足,但是模擬的用戶數量卻上不去-27796?
   在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操作系統的限制,而只受硬件和內部可伸縮性限制的約束。
14.Error -27728: Step download timeout (120 seconds)的解決方法
loadruner報錯:Error -27728: Step download timeout (120 seconds)如何解決語法檢查通過,但是在并發執行一個查詢時候報錯Action.c(16): Error -27728: Step download timeout (120 seconds) has expired when downloading non-resource(s), 請問有啥子解決方法,我使用web_set_timeout ,好象不起作用,直接在option中設置timeout時間為600,(單位應該是秒吧)還是沒有起作用,結果都還是提示(120seconds),說明還是以120秒來判斷的;使用lrs_set_recv_timeout,語法檢查不過,說明庫函數里面沒有這個函數。嘗試步驟:設置超時時間到600秒,回放還是出錯。后來我設置了runt time setting中的internet protocol-preferences中的advaced區域有一個winlnet replay instead of sockets選項,選項后再回放就成功了。
首先LR是通過Microsoft WinInet DLL去錄制web協議的!但是在Control運行的時候它默認通過socket去模擬請求,因為這些可以真實的模擬帶寬,而采用Microsoft WinInet DLL通過這個DLL去訪問網卡方式去模擬帶寬,使得模擬不是很精確!而且也不支持unix的應用,但是使用這個確實有時無法處理winnet Dll的一些請求,我認為是它的一些BUG,比如說:回放時它會檢查Content-Length,但是網頁支持receive more data時,這時socket模擬會一直等待直到timeout!先說了一些優缺點,最后回到這個問題!這個問題分兩個方面分析:
第一:你要明白web_set_timeout()這個函數的適用范圍!比如說一個web_submit_data()中實際涵蓋了10個對Server 端的請求,這個函數是針對10個請求的總和時間的!(別犯低級錯誤,timeout分了connect,receive以及download三個部分:) ) 第二:就是我解釋的上面的一些BUG問題!WinInet dll在新版本中處理請求時可以異步的,就是不再是那種連接等待然后超時模式!但是LR用的socket是同步請求!只有等到timeout才會退出!microsoft已經明確表示INTERNET_OPTION_RECEIVE_TIMEOUT 不再適用于 Microsoft Internet Explorer 5.0,顯而易見,他們處理請求采取了異步處理的方式!呵呵!這下大概可以圓滿解釋你的問題了!呵呵這里,
我補充如下:VuGen專用的基于套接字的重播是一種可伸縮以便進行負載測試的輕型引擎。使用線程時是準確的。基于套接字的引擎不支持socks代理服務器。如果在這樣的環境中錄制,應該使用winInet重播引擎。
15.性能測試往往需要準備大批量的數據,大批量數據的生成方法有很多種,常見的有:
(1)編寫SQL語句來插入數據
(2)使用DataFactory等專業的數據生成工具
(3)通過LoadRunner錄制回放的方式重復執行生成大批量數據
Tips:
使用DataFactory插入nchar數據類型的數據時會出現空值的情況,可以先修改數據庫的數據類型設置,插完數據后再改回來


16.錄制腳本中包含中文,出現亂碼怎么辦?
       把錄制選項中的Support charset選中UTF-8
       錄制腳本后,切換到樹視圖中,打開相應的腳本頁面。在右側的PageView中錄制的腳本呈現中文版式,但是當切換到Server Response中,所有的中文全部換成的亂碼,如“勌缞仫訆”。
      原因是服務器端沒有把響應的編碼設置為gb2312

在IIS中找到Web.Config文件,在<system.web>….</system.web>節加入<globalization requestEncoding="gb2312" responseEncoding="gb2312" fileEncoding="gb2312"/>后再次錄制腳本,亂碼變中文。
17.LoadRunner回放腳本時,在瀏覽器顯示的中文是亂碼
解決辦法(1):
首先設置Run-Time Settings – Browser – Browser Emulation – User-Agent
然后設置IE:
查看-編碼-鉤上“自動選擇”和Unicode(UTF-8)。
解決辦法(2):
使用lr_convert_string_encoding函數來轉換編碼
下面是一個使用的例子:
lr_convert_string_encoding(lr_eval_string("{ReplyContents}"),LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,"ReplyMessage");
web_submit_data("postreply.aspx_2",
"Action=http://127.0.0.1/postreply.aspx?infloat=1&topicid=2&&inajax=1",
"Method=POST",
"EncType=multipart/form-data",
"RecContentType=text/xml",
"Referer=http://127.0.0.1/showtopic-2.aspx",
"Snapshot=t9.inf",
"Mode=HTML",
ITEMDATA,
"Name=iconid", "Value=0", ENDITEM,
"Name=title", "Value=", ENDITEM,
"Name=wysiwyg", "Value=0", ENDITEM,
"Name=checkbox", "Value=0", ENDITEM,
"Name=message", "Value=[localimg=180,112]1[/localimg]\r\n\r\n{ReplyMessage}", ENDITEM,
"Name=e_mediatyperadio", "Value=on", ENDITEM,
"Name=sl_attachdesc", "Value=", ENDITEM,
"Name=attachid", "Value=", ENDITEM,
"Name=attachdesc", "Value=", ENDITEM,
"Name=localid", "Value=", ENDITEM,
"Name=attachdesc", "Value=", ENDITEM,
"Name=localid", "Value=1", ENDITEM,
"Name=attachdesc", "Value=", ENDITEM,
"Name=localid", "Value=2", ENDITEM,
"Name=emailnotify", "Value=on", ENDITEM,
"Name=postreplynotice", "Value=on", ENDITEM,
"Name=postfile", "Value=", "File=Yes", ENDITEM,
"Name=postfile", "Value=D:\\圖片收集\\It's about time.JPG", "File=Yes", ENDITEM,
"Name=postfile", "Value=", "File=Yes", ENDITEM,
"Name=uploadallowmax", "Value=10", ENDITEM,
"Name=uploadallowtype", "Value=jpg,gif", ENDITEM,
"Name=thumbwidth", "Value=300", ENDITEM,
"Name=thumbheight", "Value=250", ENDITEM,
"Name=noinsert", "Value=0", ENDITEM,
LAST);
18.可以在LR測試腳本的目錄中找到參數文件,直接修改參數文件
The parameter file is stored in the script directory as .dat file extension. It can be opened with a simple text editor like Notepad as it is stored in pure text format. Therefore, you can manipulate the files via the Notepad. You can also use office applications such as Microsoft Excel or OpenOffice.org Calc to work on the file. This greatly the amount of work required for maintaining a long list of data.
19.LR9.x啟動VUGen時提示"Failed to connect to server"
After upgrading to LoadRunner 9.x I started getting a window popup which said "Failed to connect to server" every time I opened virtual user generator (vugen.exe).
The solution to this was to close virtual user generator and delete the [vugen.ini] file.
vugen.ini is found in the %systemroot% folder on your Windows PC (usually C:\WINDOWS or C:\WINNT).
Once you've deleted the file, virtual user generator will open without any issues and create a new vugen.ini file automatically.
20.怎樣抓取有相同左右邊界的動態value?
怎樣抓取有相同左右邊界的動態value?例如:
stateID="d7lg0ehmjkkm6uin3s4boei7oq">
stateID="cvopakp46ftsf8mh6l37ti3ubm">
stateID="bv9mja8gtgr39ddibm5t9163re">
web_reg_save_param里的ORD應該怎樣設置?
ORD: Indicates the ordinal position or instance of the match. The default instance is 1. If you specify "All," it saves the parameter values in an array.
例子:
char outFlightParam[50]; // The name of the parameter for correlation
char outFlightParamVal[50]; // The formatted value of outFlightParam
web_reg_save_param("outFlightVal",
"LB=outboundFlight value=", "RB=>",
"ORD=ALL",
"SaveLen=18",
LAST);
web_submit_form("reservations.pl",
"Snapshot=t4.inf",
ITEMDATA,
"Name=depart", "Value=London", ENDITEM,
"Name=departDate", "Value=11/20/2003", ENDITEM,
"Name=arrive", "Value=New York", ENDITEM,
"Name=returnDate", "Value=11/21/2003", ENDITEM,
"Name=numPassengers", "Value=1", ENDITEM,
"Name=roundtrip", "Value=<OFF>", ENDITEM,
"Name=seatPref", "Value=None", ENDITEM,
"Name=seatType", "Value=Coach", ENDITEM,
"Name=findFlights.x", "Value=83", ENDITEM,
"Name=findFlights.y", "Value=16", ENDITEM,
LAST);
sprintf(outFlightParam, "{outFlightVal_%s}",
lr_eval_string("{outFlightVal_count}"));
sprintf(outFlightParamVal, "Value=%s",
lr_eval_string(outFlightParam));
lr_message("The value argument is : %s", outFlightParamVal);
web_submit_form("reservations.pl_2",
"Snapshot=t5.inf",
ITEMDATA,
"Name=outboundFlight",outFlightParamVal, ENDITEM,
"Name=reserveFlights.x", "Value=92", ENDITEM,
"Name=reserveFlights.y", "Value=10", ENDITEM,
LAST);
21.運行場景時提示“Step download timeout (120 seconds) has expired when downloading resource(s)”
vuser_init.c(12): Error -27728: Step download timeout (120 seconds) has expired when downloading non-resource(s)(出現個別,可以忽略)
vuser_init.c(12): Error -27727: Step download timeout (120 seconds) has expired when downloading resource(s). Set the "Step Timeout caused by resources is a warning" Run-Time Setting to Yes/No to have this message as a warning/error, respectively
vuser_init.c(12): Error -27796
如果覺得下載一個頁面超過2分鐘不是錯誤的話,可以在Run-Time設置中選擇Preferences->Options,修改Step download timeout(sec)的時間

        或者把“Step timeout caused by resources is a warning”設置為Yes,這樣下載資源超時也只是作為警告,不作為錯誤提示,但是對于非資源的下載超時,則總是會提示錯誤的

22.用strtok函數分割字符串
          需要在loadrunner里面獲得“15”(下面紅色高亮的部分),并做成關聯參數。

//Body response 內容: <BODY><; PRE>//OK[8,7,5,15,6,5,0,4,0,3,0,3,2,0,0,0,1
用web_reg_save_param取出“8,7,5,15,6,5,0,4,0,3,0,3,2,0,0,0,1”這一段,然后用strtok函數切割出一個個數字,第四個數字就是要找的值
例如:
extern char * strtok(char * string, const char * delimiters ); // Explicit declaration
char separators[] = ",";
char * token;
lr_save_string("1,2,3,4,5,6","str");
token = (char *)strtok(lr_eval_string("{str}"), separators); // Get the first token
if (!token) {
lr_output_message ("No tokens found in string!");
return( -1 );
}
while (token != NULL ) { // While valid tokens are returned
lr_output_message ("%s", token );
token = (char )strtok(NULL, separators); // Get the next token
}
23.LoadRunner沒有購買webservice協議的license,只有http的,可不可以完全用http協議模擬webservice?
可以,參考:
http://blog.testsautomation.com/2009/01/web-services-performance-using-loadrunner/
http://blog.testsautomation.com/2009/05/validating-web-service-response-with-xpath/
24.在場景設置中不忽略思考時間,但是在查看響應時間的時候怎樣讓LR自動在響應時間里減去思考時間?
在analysis中找到了設置是否在報告中包含思考時間的地方做相應的設置即可:
25.LoadRunner在運行過程中停掉1半虛擬用戶
Another issue that I’m facing from time to time is that LoadRunner stops 50% of running users without any notification, issue, error message etc. I’ve find out that it happens only when running with log level set to ‘always send a message’. Because of that, I suggest to run with log level set to ‘Send message only when error occur’.
26.測試RTMP協議應該在LoadRunner選擇什么協議來錄制?
用flex協議
有這幾個函數可用:
flex_rtmp_connect Connects a client to an RTMP server and sets connection options.
flex_rtmp_disconnect Disconnects a client from an RTMP server.
flex_rtmp_send Sends messages to an RTMP server.
flex_rtmp_receive Receives responses from an RTMP server
Flex can record and replay scripts involving RTMP (Real Time Messaging Protocol). In order to enable RTMP simulation, you must configure the recording options for the Flex protocol.
To enable RTMP:
1 Open the Recording Options dialog box by selecting Tools > Recording Options or clicking the Options button in the Start Recording dialog box.
2 In the Network > Port Mapping node click Options.
3 Set the Send-Receive buffer size threshold to 1500.
27.如何在LoadRunner中運行QTP腳本?
  1、運行準備:
1)勾選QTP的Tools--Options--Run的"Alow other Mercury products to run tests and components"
2)錄制需要在lr中運行的QTP腳本,并且在QTP腳本中設置事務,Services.StartTransaction "start"與Services.EndTransaction "start"
2、運行QTP腳本
在LR中運行時選擇QTP腳本,為QTP腳本存放目錄下文件擴展名為.usr的文件。
 注:LR中運行QTP腳本時,只能有一個Vuser,否則將報錯:
  The load generator is currently running the maximum number of Vusers of this type
28.在LR中如何忽略Socket接收數據的驗證
在LR中對Socket進行性能測試時,LR會自己判斷lrs_receive回來的數據的長度,而如果長度不符的話會有時間延遲的情況(這是性能測試完全不能接受的事情),如果做到這一點呢,經過反復嘗試,發現一種簡單的方法(用
代替具體的長度):
類似于將:
recv buf1 12
"Hello, Denny"
改為:
recv buf1 *
"Hello, Denny"
一切OK。
29.LoadRunner9.5的Controller中不能添加Apache的監控
在C:\Program Files\HP\LoadRunner\dat\online_graphs中找到online_resource_graphs.rmd文件,修改[Apache]部分中的EnableInUI為1
參考:
http://forums11.itrc.hp.com/service/forums/questionanswer.do?admit=109447626+1274450165814+28353475&threadId=1229523
30.VB Vuser開發ADO腳本,提示“user-defined type not defined”
想在VB Vuser寫入模擬數據操作的過程,然后在VB Vuser里定義了這個全局變量
Private m_Conn As ADODB.Connection '連接對象
Private m_Reco As ADODB.Recordset '結果集
但是在VB Vuser中不識別這個對象,報出user-defined type not defined
需要在Run-Time 設置中的VBA部分把ADO的庫選上
如果用VB Script虛擬用戶來開發就不要,直接用CreateObject來創建ADO對象即可
31.loadrunner9.5錄制腳本時出現c:\PROGRA1\MICROS1\office12\Grooveutil.DLL時出錯內存位置訪問無效
Office2007的問題,IE加載項禁用Groove GFSBrowser Helper 組件
32.LR自帶的例子端口號怎么修改?
LR自帶的例子端口號是1080,我怎么樣把這個端口設置我自己想用的端口號8088,在什么地方設置在LR安裝目錄下,找到Xitami.config文件,找到portbase,可以修改它(默認是1000);
默認的端口號是portbase+80;要把端口號改成8088,就把portionbase改為8008,保存之后就是了(8088=8008+80)。
33.用Web_reg_find查找中文字符串時查找不到
腳本文件里有個default.cfg,里面有個參數是 UTF8InputOutput ,將其值改為0
34.替代IP Wizard的腳本
http://hi.baidu.com/higkoo/blog/item/39bbb21bc33d76dcac6e751c.html
LoadRunner自帶的“IP Wizard”用起來非常麻煩,要不停的點,重要的是最后還必須重啟系統生效。
于是乎寫個腳本替代之:

  1. 假設客戶端IP為 192.168.10.31
  2. 假設服務端IP為 192.168.10.10
  3. 需要模擬的IP為 110.119.120.122
    那么,客戶端提供添加虛擬IP的BAT腳本:
    netsh interface ip add address 本地連接 110.119.120.122 255.255.0.0
    對應的刪除設置為:
    netsh interface ip del address 本地連接 110.119.120.122
    對應服務器添加虛擬路由的Shell腳本:
    route add -host 110.119.120.122 gw 192.168.10.31
    刪除路由的腳本:
    route del -host 110.119.120.122 gw 192.168.10.31
    這樣就非常方便了,不用重啟任何機器,執行腳本就生效,再執行腳本就取消。
    35.如何從命令行調用LoadRunner腳本?
    Here is the command line that you need to execute to run a VuGen script from the command prompt:
    <LoadRunner>\bin\mmdrv.exe -usr <path to usr file>
    Note:
    In order to get all the other options that Go with the command, run mmdrv.exe from the command prompt without any options.
    36.請問"int64這個類型,在LR中怎么表示"。我將一段C的代碼放在LR中,LR不認int64這個類型,怎么解決?
    把那段C代碼做成DLL,然后在LR中調用
    37.LoadRunner監控遠程機器Windows資源,提示“net use failed”
    解決辦法:
    在被監控機器上更改本地帳戶的共享和安全模式為經典模式??刂泼姘?>管理工具->本地安全策略->網絡訪問:本地帳戶的共享和安全模式->經典模式。
    監視連接前的準備工作:
    首先保證被監視的windows系統開啟以下二個服務Remote Procedure Call(RPC) 和Remote Registry Service
    被監視的WINDOWS機器:右擊我的電腦,選擇管理->共享文件夾->共享 在這里面要有C$這個共享文件夾,(要是沒有自己手動加)
    然后保證在安裝LR的機器上使用運行.輸入\被監視機器IP\C$ 然后輸入管理員帳號和密碼,如果能看到被監視機器的C盤了,就說明你得到了那臺機器的管理員權限,可以使用LR去連接了
      38.LoadRunner腳本中出現亂碼問題現象某個鏈接或者圖片名稱為中文亂碼,腳本運行無法通過。
    ****  錯誤分析  腳本錄制可能采用的是URL-based script方式,如果程序定義的字符集合采用的是國際標準,腳本就會出現亂碼現象?! 〗鉀Q辦法重新錄制腳本,在錄制腳本前,打開錄制選項配置對話框進行設置,在“Recording Options”的“Advanced”選項里先將“Surport Charset”選中,然后選中支持“UTF-8”的選項。
    39.LoadRunner不執行檢查方法錯誤現象在腳本中插入函數Web_find,在腳本中設置文本以及圖像的檢查點,但是在回放過程中并沒有對設置的檢查點進行檢查,即Web_find失效。
      錯誤分析  由于檢查功能會消耗一定的資源,因此LoadRunner默認關閉了對文本以及圖像的數據執行保護檢查,所以在設置檢查點后,需要開啟檢查功能?! 〗鉀Q辦法打開運行環境設置對話框進行設置,在“Run-time Settings”的“Internet Protocol”選項里的“Perference”中勾選“Check”下的“Enable Image and text check”選項?!? 需要注意的是,回放腳本時出現的錯誤有時是程序自身的原因導致的,因此在解決腳本回放問題前必須保證程序錄制出的腳本是正確的。
      40.LoadRunner超時錯誤:在錄制Web協議腳本回放時超時情況經常出現,產生錯誤的原因也有很多,解決的方法也不同。
      錯誤現象1:Action.c(16): Error -27728: Step download timeout (120 seconds) has expired when downloading non-resource(s)。
      錯誤分析:對于HTTP協議,默認的超時時間是120秒(可以在LoadRunner中修改),客戶端發送一個請求到服務器端,如果超過120秒服務器端還沒有返回結果,則出現超時錯誤。
    解決辦法:首先在運行環境中對超時進行設置,默認的超時時間可以設置長一些,再設置多次迭代運行,如果還有超時現象,需要在“Runtime Setting”>“Internet Protocol:Preferences”>“Advanced”區域中設置一個“winlnet replay instead of sockets”選項,再回放是否成功。

錯誤現象 2:Action.c(81):Continuing after Error -27498: Timed out while processing URL=http://172.18.20.70:7001/workflow/bjtel/leasedline/ querystat/ subOrderQuery.do
  錯誤分析:這種錯誤常常是因為并發壓力過大,服務器端太繁忙,無法及時響應客戶端的請求而造成的,所以這個錯誤是正?,F象,是壓力過大造成的。
  如果壓力很小就出現這個問題,可能是腳本某個地方有錯誤,要仔細查看腳本,提示的錯誤信息會定位某個具體問題發生的位置。
  解決辦法:例如上面的錯誤現象問題定位在某個URL上,需要再次運行一下場景,同時在其他機器上訪問此URL。如果不能訪問或時間過長,可能是服務器或者此應用不能支撐如此之大的負載。分析一下服務器,最好對其性能進行優化。
如果再次運行場景后還有超時現象,就要在各種圖形中分析一下原因,例如可以查看是否服務器、DNS、網絡等方面存在問題。

最后,增加一下運行時的超時設置,在“Run-Time Settings”>“Internet Protocol:Preferences”中,單擊“options”,增加“HTTP-request connect timeout” 或者“HTTP-request receive”的值。
  41.LoadRunner腳本中出現亂碼:在錄制Web協議腳本時出現中文亂碼,在回放腳本時會使回放停止在亂碼位置,腳本無法運行。
  錯誤現象:某個鏈接或者圖片名稱為中文亂碼,腳本運行無法通過。
  錯誤分析:腳本錄制可能采用的是URL-based script方式,如果程序定義的字符集合采用的是國際標準,腳本就會出現亂碼現象。
  解決辦法:重新錄制腳本,在錄制腳本前,打開錄制選項配置對話框進行設置,在“Recording Options”的“Advanced”選項里先將“Surport Charset”選中,然后選中支持“UTF-8”的選項。
  42.LoadRunner HTTP服務器狀態代碼:在錄制Web協議腳本回放腳本的過程中,會出現HTTP服務器狀態代碼,例如常見的頁面-404錯誤提示、-500錯誤提示。
  錯誤現象1:-404 Not Found服務器沒有找到與請求URI相符的資源,但還可以繼續運行直到結束。
  錯誤分析:此處與請求URI相符的資源在錄制腳本時已經被提交過一次,回放時不可再重復提交同樣的資源,而需要更改提交資源的內容,每次回放一次腳本都要改變提交的數據,保證模擬實際環境,造成一定的負載壓力。
解決辦法:在出現錯誤的位置進行腳本關聯,在必要時插入相應的函數。

錯誤現象2:-500 Internal Server Error服務器內部錯誤,腳本運行停止。
  錯誤分析:服務器碰到了意外情況,使其無法繼續回應請求。
  解決辦法:出現此錯誤是致命的,說明問題很嚴重,需要從問題的出現位置進行檢查,此時需要此程序的開發人員配合來解決,而且產生的原因根據實際情況來定,測試人員無法單獨解決問題,而且應該盡快解決,以便于后面的測試。
  43.LoadRunner請求無法找到:在錄制Web協議腳本回放腳本的過程中,會出現請求無法找到的現象,而導致腳本運行停止。
  錯誤現象:Action.c(41): Error -27979: Requested form. not found [MsgId: MERR-27979]
  Action.c(41): web_submit_form. highest severity level was "ERROR",0 body bytes, 0 header bytes [MsgId: MMSG-27178]"
  這時在tree view中看不到此組件的相關URL。
錯誤分析:所選擇的錄制腳本模式不正確,通常情況下,基于瀏覽器的Web應用會使用“HTML-based script”模式來錄制腳本;而沒有基于瀏覽器的Web應用、Web應用中包含了與服務器進行交互的Java Applet、基于瀏覽器的應用中包含了向服務器進行通信的JavaScript/VBScript代碼、基于瀏覽器的應用中使用HTTPS安全協議,這時則使用“URL-based script”模式進行錄制。
  解決辦法:打開錄制選項配置對話框進行設置,在“Recording Options”的“Internet Protocol”選項里的“Recording”中選擇“Recording Level”為“HTML-based script”,單擊“HTML Advanced”,選擇“Script. Type”為“A script. containing explicit”。然后再選擇使用“URL-based script”模式來錄制腳本。
  44.LoadRunner不執行檢查方法:在錄制Web協議腳本中添加了檢查方法Web_find,但是在腳本回放的過程中并沒有執行。
  錯誤現象:在腳本中插入函數Web_find,在腳本中設置文本以及圖像的檢查點,但是在回放過程中并沒有對設置的檢查點進行檢查,即Web_find失效。
  錯誤分析:由于檢查功能會消耗一定的資源,因此LoadRunner默認關閉了對文本以及圖像的檢查,所以在設置檢查點后,需要開啟檢查功能。
解決辦法:打開運行環境設置對話框進行設置,在“Run-time Settings”的“Internet Protocol”選項里的“Perference”中勾選“Check”下的“Enable Image and text check”選項。
  45.LoadRunner回放Web Services協議腳本錯誤:LoadRunner 8.0版本在錄制Web Services協議的腳本時正常,但在回放時會出現錯誤,提示停止腳本運行。
  錯誤現象:利用LoadRunner 8.0版本來錄制Web Services協議的腳本沒有任何錯誤提示,回放腳本時會出現如下錯誤提示“Error:server returned an incorrectly formatted SOAP response”。
  錯誤分析:出現此錯誤的原因是LoadRunner8.0在錄制Web Services協議的腳本時存在一個缺陷:如果服務器的操作系統是中文的,VuGen會自動將WSDL文件的頭改為<?xml version="1.0"encoding="zh_cn" ?>,所以才會有此錯誤提示。
解決辦法:下載兩個補丁,分別為“LR80WebServicesFPI_setup.exe”和“lrunner_web_ services_patch_1.exe”安裝上即可。
46.LR啟動controller報錯“transaction monitor not available”
1.多是OS系統問題,修復試試或升級
2.或修復LR試試
47.Loadrunnber 報錯誤:Error -- memory violation : Exception ACCESS_VIOLATION received.的一種情況
Posted on 2011-01-05 12:12蟈蟈俊 閱讀(433) 評論(0) 編輯收藏
最近寫的一個Loadrunner腳本,最后一步是點擊“退出”按鈕退出登錄狀態,如下:
web_text_link("[退出]",
"Snapshot=t18.inf",
DESCRIPTION,
"Text=[退出]",
ACTION,
"UserAction=Click",
LAST);
return 0;
但是會報錯誤:
Action1.c(94): Error: C interpreter run time error: Action1.c (94): Error -- memory violation : Exception ACCESS_VIOLATION received.
Action1.c(94): Notify: CCI trace: Action1.c(94): web_text_link(0x02080870, 0x0208085f "Snapshot=t18.inf", 0x02080a42 "DESCRIPTION", 0x02080853, 0x02080a3b "ACTION", 0x020809de "UserAction=Click", 0x02080a6a "LAST")
Action1.c(94): Notify: CCI trace: Compiled_code(0): Action1()
經過試驗,發現是因為 退出后有個自動跳轉。
如果退出結束代碼修改為下面就沒有問題了。
web_text_link("[退出]",
"Snapshot=t18.inf",
DESCRIPTION,
"Text=[退出]",
ACTION,
"UserAction=Click",
LAST);
web_browser("Sync",
"Snapshot=t18.inf",
DESCRIPTION,
ACTION,
"Sync",
LAST);
return 0;
結論:
web_text_link如果有中間跳轉,不能放在代碼的最后,最后要有一個 Sync 。
48.Step download timeout(sec)設置
這個默認是120秒,但是經常我們要設置的更大一些,具體設置方法:Vugen--》Vuser---》Runtime-settings----》Preferences------》option,將Step download timeout(sec)默認值120s改為自己需要的值,其次要改變HTTP-reguest connnect timeout(sec)和HTTP-reguest receive timeout(sec)也為相應的值。
49.修改本機tcp連接數
因為個人pc機的默認的tcp連接數只有15個(xp),所以我們在模擬虛擬多個用戶時,就會遇到tcp的連接限制,從而報錯。修改的方法:windows下運行 Patch.exe輸入C,再輸入你要的TCP/IP連接數字(一般為500~2000)回車確認輸入Y 回車確認。倒計時15秒后結束。接著再運行下Patch.exe,看連接數是不是由原來的10變成自己改了的數值。Patch.exe 下載地址:http://www.touchboy.cn/2007/05/% ... %E6%8E%A5%E6%95%B0/
50.關于Error -27791: Error -27790:Error -27740:錯誤的解決方法:
錯誤如下:Action.c(198): Error -27791: Server "www.zcpx.cn" has shut down the connection prematurelyAction.c(198): Error -27790: Failed to read data from server "www.zcpx.cn": [10053] Software caused connectionabortAction.c(198): Error -27740: Overlapped transmission of request to "www.zcpx.cn" for URL"http://www.zcpx.cn/userEntry.do" failed: WSA_IO_PENDING解決辦法:在腳本的最前面加上web_set_sockets_option("OVERLAPPED","0");
51. LR中錯誤代號為27796的一個解決方法
錯誤如下:

1A:注冊表不能訪問或寫導致的,可以恢復注冊表或卸載(清除注冊表,可以使用工具)重新安裝程序。
要啟支LR自帶的實例的服務時,出錯了,提示:端口已經被另一個服務占用,請問一下能不能自己修改這個程序原來設定的端口?。?br> 2A:停止服務之后,在程序的安裝目錄\WebTours下找到xitami.cfg文件修改portbase值,注意 默認的端口號是portbase+80,portbase值是1000;要把端口號改成8088,就把portbase改為8008,保存之后就是了(8088=8008+80)。然后重啟服務

二:LoadRunner面試(筆試)問題整理

  1.  **什么是負載測試?什么是性能測試?   **                                                                   
    
    負載測試是通過逐步增加系統負載,測試系統性能的變化,并最終確定在滿足性能指標的情況下,系統所能承受的最大負載量的測試,例如,訪問一個頁面的響應時間規定不超過1秒,負載測試就是測試在響應時間為1秒時,系統所能承受的最大并發訪問用戶的數量。
    壓力測試通常是在高負載情況下來對系統的穩定性進行測試,更有效地發現系統穩定性的隱患和系統在負載峰值的條件下功能隱患等。
    性能測試:指在一定的約束條件下(指定的軟件、硬件、網絡環境等),確定系統所能承受的最大負載壓力。
  2.    **性能測試包含了哪些測試(至少舉出3****種)**
    

性能測試包含負載測試、壓力測試、大數據量測試、疲勞強度測試等。

  1. 簡述性能測試的步驟

    第一,分析產品結構,明確性能測試的需求,包括并發、極限、配置和指標等方面的性能要求,必要時基于LOAD測試的相同測略需同時考慮穩定性測試的需求。
      第二,分析應用場景和用戶數據,細分用戶行為和相關的數據流,確定測試點或測試接口,列示系統接口的可能瓶頸,一般是先主干接口再支線接口,并完成初步的測試用例設計。
      第三,依據性能測試需求和確定的測試點進行測試組網設計,并明確不同組網方案的重要程度或優先級作為取舍評估的依據,必要時在前期產品設計中提出支持性能測試的可測試性設計方案和對測試工具的需求。
      第四,完成性能測試用例設計、分類選擇和依據用戶行為分析設計測試規程,并準備好測試用例將用到的測試數據。
    第五,確定采用的測試工具。
    第六,進行初驗測試,以主干接口的可用性為主,根據測試結果分析性能瓶頸,通過迭代保證基本的指標等測試的環境。
    第七,迭代進行全面的性能測試,完成計劃中的性能測試用例的執行。
    第八,完成性能測試評估報告。
      在進行性能測試的時候,我們需要知道一些有效的性能指標,下面我們來列出一些主要的性能指標:
      一是,通用指標(指Web應用服務器、數據庫服務器必需測試項):
    *ProcessorTime:指服務器CPU占用率,一般平均達到70%時,服務就接近飽和;
    *Memory Available Mbyte:可用內存數,如果測試時發現內存有變化情況也要注意,如果是內存泄露則比較嚴重;
    *Physicsdisk Time :物理磁盤讀寫時間情況。
    二是,Web服務器指標:
    *Avg Rps:平均每秒鐘響應次數=總請求時間/秒數;
    Avg time to last byte per terstion(mstes):平均每秒業務角本的迭代次數;Successful Rounds:成功的請求;
    *Failed Rounds:失敗的請求;
    *Successful Hits:成功的點擊次數;
    Failed Hits:失敗的點擊次數;
    Hits Per Second:每秒點擊次數;
    Successful Hits Per Second:每秒成功的點擊次數;
    Failed Hits Per Second:每秒失敗的點擊次數;
    Attempted Connections:嘗試鏈接數。
    三是,數據庫服務器指標:
    User 0 Connections :用戶連接數,也就是數據庫的連接數量;
    Number of deadlocks:數據庫死鎖;
    Butter Cache hit:數據庫Cache的命中情況。
    4. 簡述使用Loadrunner****的步驟
      
    A4:
    制定性能測試計劃—>開發測試腳本—>設計測試場景—>執行測試場景—>監控測試場景—>分析測試結果

    5. ****什么時候可以開始執行性能測試?
      功能測試通過;一般需要進行性能測試的系統,都是用戶量比較大、業務使用比較頻繁、比較重要的功能模塊。
    6. LoadRunner****由哪些部件組成?
      
    A6:
    主要有三部分組成:

    7. 你使用LoadRunner****的哪個部件來錄制腳本?
       使用Virtual User Generator錄制測試腳本
    8. LoadRunner****的哪個部件可以模擬多用戶并發下回放腳本?
      LoadRunner的Controller組件。
    9. 什么是集合點?設置集合點有什么意義?Loadrunner****中設置集合點的函數是哪個?
       在性能測試過程中,需要模擬大量用戶在同一時刻,訪問系統并同時操作某一任務,可以通過配置集合點來實現,多個用戶同時進行某操作;
       集合點可以在服務器上創建密集的用戶負載,使LoadRunner能夠測試服務器在負載狀態下的性能。
      設置集合點函數:lr_rendezvous("Meeting"); // Meeting是集合點名稱
    10. ****什么是場景?場景的重要性有哪些?如何設置場景?
      場景用于模擬用戶實際業務操作;
    LoadRunner中場景有手工場景和面向目標的場景。
    設置場景:選擇場景類型、設置運行時設置、模擬用戶數、加減壓方式、持續時間,配置負載生成
    1.選擇場景中需要的腳本 2.選擇為目標場景,還是指定的手工場景 3.設置用戶數、設置產生負載的設備 4.設置執行策略
    11. 請解釋一下如何錄制web****腳本?
    LR通過轉發請求,來捕獲數據包,來形成腳本
    解釋:1.基于瀏覽器的應用程序推薦使用HTML-based Script, 腳本中采用
    HTML頁面的形式來表示,這種方式的Script腳本容易維護,容易理解,使用該選項中的advance中的第一個選項,如果單純的HTML方式,是不允許使用關聯的。
    2.不是基于瀏覽器的應用程序推薦使用URL-based Script,腳本中的表示采用基于URL 的方式,不是很好閱讀。
    解釋:1.是否記錄錄制過程中的ThinkTime,如果記錄,還可以設置最大值,一般我不記錄這個值。
    2.通知Vugen去重新設置每個action之間的Http context,缺省是需要的。
    3.完整記錄錄制過程的log,
    4.保存一個本地的snapshot,可以加速顯示
    5.把html的title放到web_reg_find函數里面
    6.支持的字符集標準
    7.Http header的錄制,我們采用缺省即可,不需要用web_add_header去錄制非標準的header信息。
    對錄制的content的內容進行filter,不作為resource處理的。

解釋:這個就是我前面提到的關聯,系統已經預先設置好了一些常見的關聯rules,我們錄制腳本之前,可以把系統的


  1. 為什么要創建參數?如何創建參數? 參數:在環境變化時必須時腳本具有環境變化的能力,就需要參數化(客戶端發送到服務器端) 1.確定要參數話的數據 2.設定規則形式來取值
    13. 什么是關聯?請解釋一下自動關聯和手動關聯的不同。
    關聯:很多構架用sessionid等方法標識不同任務和數據,應用在每次運行時方式發送數據不完全相同,需要利用的機制對錄制的腳本進行處理,這種機制叫做關聯(服務端發送到客戶端)
    14. 場景設置有哪幾種方法?
    目標場景,手工場景
  2. 你如何找出哪里需要關聯?請給一些你所在項目的實例。用戶登陸,客戶端發送請求后,服務端驗證正確性后,發送給客戶端sessionid,是某種規則產生。
  3. 你在哪里設置自動關聯選項?兩地方可以設置1.設置允許錄制時進行自動關聯,可以自定義規則
    2.錄制完成后,vuser-scan action for correlations
    17. 哪個函數是用來截取虛擬用戶腳本中的動態值?(手工關聯)
    web_reg_save_param()函數主要根據需要做關聯的動態數據前面和后面的固定字符串來識別、提取動態數據,所以在做關聯時,需要找出動態數據的左、右邊界字符串。
  4. 你在VUGen中何時選擇關閉日志?何時選擇標準和擴展日志?Run-time,log,當調試腳本時,可以只輸出錯誤日志,當在場景找你管加載腳本時,日志自動變為不可用。Standard Log Option:選擇標準日志時,就會在腳本執行過程中,生成函數的標準日志并且輸出信息,供調試用。大型負載測試場景不用啟用這個選項。擴展日志包括警告和其他信息。大型負載測試不要啟用該選項。用擴展日志選項,可以指定哪些附加信息需要加到擴展日志中
  5. 你如何調試LoadRunner腳本?VuGen有兩個選項幫助調試Vuser腳本。Run Step by Step命令和斷點(breakpoints)。Option對話框中的調試設置(Debug setting)項,可以確定在場景執行過程中執行軌跡范圍。調試信息寫在output窗口??梢杂?lr_set_debug_messag函數在腳本中手工設置信息類型。如果我們只想接收到一小段腳本的調式信息。
  6. 你在LR中如何編寫自定義函數?請給出一些你在以前進行的項目中編寫的函數。在創建用戶自定義函數前我們需要和創建DLL(external libary)。把庫放在VuGen bin目錄下。一旦加了庫,把自定義函數分配做一個參數。該函數應該具有一下格式:__declspec (dllexport) char* <function name>(char, char)。Milan
  7. 什么是逐步遞增?你如何來設置?Ramp up這個選項用于逐漸增加服務器的虛擬用戶數或負載量。設置一個初始值而且可以在兩個迭代之間設置一個值等待。設置Ramp up,請到‘Scenario Scheduling Options’。
  8. 以線程方式運行的虛擬用戶有哪些優點?VuGen提供了用多線程的便利。這使得在每個生成器上可以跑更多的虛擬用戶。如果是以進程的方式跑虛擬用戶,為每個用戶加載相同的驅動程序到內存中,因此占用了大量的內存。這就限制了在單個生成器上能跑的虛擬用戶數。如果按線程運行,給定的所有虛擬用戶數(比如100)只是加載一個驅動程序實例到內存里。每個線程共用父驅動程序的內存,因此在每個生成器上可以跑更多的虛擬用戶。
  9. 當你需要在出錯時停止執行腳本,你怎么做?lr_abort函數放棄虛擬用戶腳本的執行。說明虛擬用戶停止Action的執行,直接執行vuser_end然后結束執行。在出現錯誤情況下想手工放棄腳本的執行,這個函數是有用的。用這個函數停止腳本時,Vuser被指定為“Stopped”狀態。為了這個函數起作用,開始時候就不能選擇Run-Time Settings中的Continue on error選項。
  10. 響應時間和吞吐量之間的關系是什么?吞吐量圖顯示的是虛擬用戶每秒鐘從服務器接收到的字節數。當和響應時間比較時,可以發現隨著吞吐量的降低,響應時間也降低,同樣的,吞吐量的峰值和最大響應時間差不多在同時出現。
  11. 說明一下如何在LR中配置系統計數器?通過Web資源監視器,利用這些監控器可以分析web服務器的吞吐量、點擊率、每秒http響應數以及每秒下載的頁面數。
  12. 什么是think time?think_time有什么用?思考時間是真實用戶在action之間等待的時間。例如:當一個用戶從服務器接收到數據時,用戶可能需要在響應之前等待幾分鐘回顧數據,這種推遲被稱為思考時間。
  13. 標準日志和擴展日志的區別是什么?Standard Log Option:選擇標準日志時,就會在腳本執行過程中,生成函數的標準日志并且輸出信息,供調試用。大型負載測試場景不用啟用這個選項。擴展日志包括警告和其他信息。大型負載測試不要啟用該選項。用擴展日志選項,可以指定哪些附加信息需要加到擴展日志中
  14. 解釋以下函數及他們的不同之處。Lr_debug_messagelr_debug_message 函數在指定的消息級別// 處于活動狀態時發送一條調試消息。如果指定的// 消息級別未處于活動狀態,則不發出消息。Lr_output_message要發送不是特定錯誤消息的特殊通知,Lr_error_message函數將錯誤消息發送到// 輸出窗口和 Vuser日志文件Lrd_stmt lrd_exec 函數執行 lrd_stmt設置的 SQL 語句。Lrd_fetch 函數從結果集中提取后續若干行result set. 函數準備用于// 通過光標輸出字符串(通常為 SQL語句)// 的下一結果集。對于 CtLib,它發出 ct_result// 命令,并且在 ODBC中它運行用于當前數據庫
  15. 什么是吞吐量?單位時間內系統處理客戶端的請求數。
    30. action****和init、end除了迭代的區別還有其他嗎?
    在init、end中不能使用集合點、事務等, init、end只執行一次。
    31. ****在什么地方設置HTTP頁面filter?
    在runtime_settings中download filter里面進行設置。
    32. pot mapping****的原理是什么?
    就是代理服務器
    33. HTTP****的超時有哪三種?
    HTTP-request connect timeout、HTTP-request receive timeout、step download timeout
    34. ****什么是contentcheck?如何來用?
    ContentCheck的設置是為了讓VuGen檢測何種頁面為錯誤頁面。如果被測的Web 應用沒有使用自定義的錯誤頁面,那么這里不用作更改;如果被測的Web應用使用了自定義的錯誤頁面,那么這里需要定義,以便讓VuGen 在運行過程中檢測,服務器返回的頁面是否包含預定義的字符串,進而判斷該頁面是否為錯誤頁
    面。如果是,VuGen就停止運行,指示運行失敗。
    使用方法:點擊在runtime settings中點擊“contentcheck”,然后新建立一個符合要求的應用程序和規則,設定需要查找的文本和前綴后綴即可使用。
    35. network****中的speed simulation是模擬的什么帶寬?
    模擬用戶訪問速度的帶寬。
    36. ****生成WEB性能圖有什么意義?大概描述即可。
    可以很直觀的看到,在負載下系統的運行情況以及各種資源的使用情況,可以對系統的性能瓶頸定位、性能調優等起到想要的輔助作用。
    37. ****如果刷新controller里的腳本?
    在controller中,點擊detailis-Refresh-script即可。
  16. 進程和線程有什么區別?
    線程有自己的全局數據。線程存在于進程中,因此一個進程的全局變量由所有的線程共享。由于線程共享同樣的系統區域,操作系統分配給一個進程的資源對該進程的所有線程都是可用的,正如全局數據可供所有線程使用一樣。在Controller中將使用驅動程序(如mdrv.exe、r3vuser.exe)運行vuser。如果按進程運行每個vuser,則對于每個vuser實例,都將反復啟動同一驅動程序并將其加載到內存中。將同一驅動程序加載到內存中會占用大量的RAM(隨機存儲器)及其他系統資源。這就限制了可以在任一負載生成器上運行的vuser數量。如果按線程運行每個vuser,Controller為每50個vuser(默認情況下)僅啟動驅動程序(如mdrv.exe)的一個實例。該驅動程序將啟動幾個vuser,每個vuser都按線程運行。這些線程vuser將共享父驅動進程的內存段。這就消除了多次重新加載驅動程序/進程的需要,節省了大量內存空間,從而可以在一個負載生成器上運行更多的Vuser.
  17. 如何把腳本和結果放到load generator的機器上?
    在controller中,點擊Results-Results settings,在里面進行相應的設置即可。
    40. 如何設置才能讓集合點只對一半的用戶生效?
    對集合點策略進行相應的設置即可。即在controller中,點擊Scenario-Rendezvous-policy進行相應的設置即可,由于題目中“一半的用戶”沒有說明白具體指什么樣的用戶,現在不好確定具體對里面的哪個選項進行設置。
    41. LRd****的API分為幾類
    A:通用的API:,就是跟具體的協議無關,在任何協議的腳本里都能用的;
    B:針對協議的:像lrs前綴是winsock的;lrd的是針對database;
    C:自定義的:這個范圍就比較廣了;比如至少有Java Vuser API、lrapi、XML API。還可以添加WindowsAPI和自定義函數庫。
  18. LR幾種日志函數的區別?
    【lr_message】 int lr_message (const char *format, exp1, exp2,…expn.);中文解釋:lr_message函數將信息發送到日志文件和輸入窗口。在VuGen中運行時,輸入文件為output.txt。
    【lr_log_message】 int lr_log_message (const char *format, exp1, exp2,…expn.);中文解釋:lr_log_message函數將消息發送到Vuser或代理日志文件(取決于應用程序),而不是發送到輸出窗口。通過向日志文件發送錯誤消息或其他信息性消息,可以將該函數用于調試。 【lr_error_message】 int lr_error_message (const char *format, exp1, exp2,…expn. );中文解釋:lr_error_message函數將錯誤消息發送到輸出窗口和Vuser日志文件。要發送不是特定錯誤消息的特殊通知,請使用lr_output_message。
    【lr_output_message】 int lr_output_message (const char *format, exp1, exp2,…expn.);中文解釋:lr_output_message函數將帶有腳本部分的行號的消息發送到輸出窗口和日志文件。
    【lr_debug_message函數組】 int lr_debug_message (unsigned int message_level, const char *format, … );中文解釋:lr_debug_message函數在指定的消息級別處于活動狀態時發送一條調試信息。如果指定的消息級別未出于活動狀態,則不發送消息。您可以從用戶界面或者使用lr_set_debug_message,將處于活動狀態的消息級別設置為MSG_CLASS_BRIEF_LOG或MSG_CLASSS_EXTENDED_LOG。要確定當前級別,
    請使用lr_get_debug_message。 unsigned int lr_get_debug_message ( );中文解釋:lr_get_debug_message函數返回當前的日志運行時設置。該設置確定發送到輸出端的信息。日志設置是使用運行時設置對話框或通過使用lr_set_debug_message函數指定的。 int lr_set_debug_message (unsigned int message_level, unsigned int on_off); 中文解釋:lr_set_debug_message函數設置腳本執行的調試消息級別message_lvl。通過設置消息級別,可以確定發送哪些信息。啟動設置的方法是將LR_SWITCH_ON作為on_off傳遞,禁用設置的方法是傳遞LR_SWITCH_OFF。
    【lrd_stmt】:將SQL語句與光標關聯
    【lrd_fetch】:提取結果集中得下一條記錄
  19. 性能瓶頸分析方法?
    同一場景1.小用戶量的情況下測試2.大用戶量情況下的測試分析的方法:整個系統架構分析,系統響應時間消耗,利用圖表分析查看事務響應時間,通過事務摘要圖分析事務響應時間,那個消耗最大(通過小用戶量和大用戶量的響應時間分析,查看那個事務響應時間最高),確定哪部分功能是性能的瓶頸,分析window resource圖表,查看cpu使用下列計數器標識cpu瓶頸Processor\ Interrupts/secProcessor\ % Processor TimeProcess(process)\ % Processor TimeSystem\ Processor Queue Length通過它來確定是否硬件本身出現瓶頸,或者進一步確定應該怎么去判斷性能產生瓶頸的地方!下一步去判斷進程,那個進程消耗cpu最高下邊就有很多種情況需要你自己去判斷,有可能是進程調用了的函數消耗了系統資源形成上邊的問題,也有可能是后臺數據庫出現的問題(這個就要看你的系統配置是什么樣的,比如你的db服務器和應用服務器都配置在一臺機器上)性能產生瓶頸有很多地方,所以需要進一判斷,是否是后臺數據庫的問題還有待分析,是那條語句導致的問題需要進一步分析判斷。分析原則:? 具體問題具體分析(這是由于不同的應用系統,不同的測試目的,不同的性能關注點)? 查找瓶頸時按以下順序,由易到難。服務器硬件瓶頸-〉網絡瓶頸(對局域網,可以不考慮)-〉服務器操作系統瓶頸(參數配置)-〉中間件瓶頸(參數配置,數據庫,web服務器等)-〉應用瓶頸(SQL語句、數據庫設計、業務邏輯、算法等)注:以上過程并不是每個分析中都需要的,要根據測試目的和要求來確定分析的深度。對一些要求低的,我們分析到應用系統在將來大的負載壓力(并發用戶數、數據量)下,系統的硬件瓶頸在哪兒就夠了。? 分段排除法很有效分析的信息來源:
    ?1 根據場景運行過程中的錯誤提示信息
    ?2 根據測試結果收集到的監控指標數據一.
    錯誤提示分析分析實例:
    1 ?Error: Failed to connect to server “10.10.10.30:8080″: [10060] Connection?Error: timed out Error: Server “10.10.10.30″ has shut down the connection prematurely分析:?A、應用服務死掉。(小用戶時:程序上的問題。程序上處理數據庫的問題)?B、應用服務沒有死(應用服務參數設置問題)例:在許多客戶端連接Weblogic應用服務器被拒絕,而在服務器端沒有錯誤顯示,則有可能是Weblogic中的server元素的 AcceptBacklog屬性值設得過低。如果連接時收到connection refused消息,說明應提高該值,每次增加25%?C、數據庫的連接(1、在應用服務的性能參數可能太小了 2、數據庫啟動的最大連接數(跟硬件的內存有關))
    2 Error: Page download timeout (120 seconds) has expired分析:可能是以下原因造成?A、應用服務參數設置太大導致服務器的瓶頸?B、頁面中圖片太多?C、在程序處理表的時候檢查字段太大多二.監控指標數據分析1.最大并發用戶數:應用系統在當前環境(硬件環境、網絡環境、軟件環境(參數配置))下能承受的最大并發用戶數。在方案運行中,如果出現了大于3個用戶的業務操作失敗,或出現了服務器shutdown的情況,則說明在當前環境下,系統承受不了當前并發用戶的負載壓力,那么最大并發用戶數就是前一個沒有出現這種現象的并發用戶數。如果測得的最大并發用戶數到達了性能要求,且各服務器資源情況良好,業務操作響應時間也達到了用戶要求,那么OK。否則,再根據各服務器的資源情況和業務操作響應時間進一步分析原因所在。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,488評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,034評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 175,327評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,554評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,337評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,883評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,975評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,114評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,625評論 1 332
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,555評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,737評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,244評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,973評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,615評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,343評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,699評論 2 370

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,776評論 18 139
  • LoadRunner腳本語言基礎 在用LoadRunner做性能測試的過程中規,編寫腳本是一項非常重要的工作,一個...
    WinterM9閱讀 544評論 0 1
  • VU——用戶行為的模擬器2 LoadRunner之所以強大,很大原因是VU的功能強大。VU幾乎支持模擬當今所有主流...
    WinterM9閱讀 984評論 0 1
  • 1.測試與軟件模型 軟件開發生命周期模型指的是軟件開發全過程、活動和任務的結構性框架。軟件項目的開發包括:需求、設...
    宇文臭臭閱讀 6,739評論 5 100
  • 1.測試與軟件模型 軟件開發生命周期模型指的是軟件開發全過程、活動和任務的結構性框架。軟件項目的開發包括:需求、設...
    Mr希靈閱讀 21,979評論 7 278