Loadrunner之異常處理總結(jié) by--BruceWong

一:LoadRunner常見問題整理
1.LR 腳本為空的解決方法:
1.去掉ie設(shè)置中的第三方支持取消掉
2.在系統(tǒng)屬性-高級(jí)-性能-數(shù)據(jù)執(zhí)行保護(hù)中,添加loadrunner安裝目錄中的vugen.exe文件.
有可能是由于錄制的URL地址采用的是localhost的問題,改成分配的IP地址或127.0.0.1試試。
3、插入文本檢查點(diǎn)步驟時(shí),使用web_reg_find,通常TextPfx和TextSfx中會(huì)包含雙引號(hào),需要進(jìn)行轉(zhuǎn)義(用斜杠),例如:
web_reg_find("Search=Body",
"SaveCount=Welcome",
"TextPfx=歡迎<a class="drop" id="viewpro" onMouseOver="showMenu(this.id)">",
"TextSfx=</a>",
LAST)
 遇到flight界面為空的解決的可能方法:
1、如果安裝了IE以外的瀏覽器,并且IE不是默認(rèn)瀏覽器,則無法生成錄制腳本
2、如果錄制腳本時(shí)IE不能打開,則需要將瀏覽器的IE工具高級(jí)選項(xiàng)中,將“啟用第三方瀏覽器擴(kuò)展”的
勾選去掉
3、lr自帶的webtours系統(tǒng),如果點(diǎn)擊Flights選項(xiàng),出現(xiàn)空白頁面,請(qǐng)檢查本機(jī)Oracle的 PERL5LIB環(huán)境
2.LoadRunner錄制腳本時(shí)為什么不彈出IE瀏覽器?
  當(dāng)一臺(tái)主機(jī)上安裝多個(gè)瀏覽器時(shí),LoadRunner錄制腳本經(jīng)常遇到不能打開瀏覽器的情況,可以用下面的方法來解決。
  啟動(dòng)瀏覽器,打開Internet選項(xiàng)對(duì)話框,切換到高級(jí)標(biāo)簽,去掉“啟用第三方瀏覽器擴(kuò)展(需要重啟動(dòng))”的勾選,然后再次運(yùn)行VuGen即可解決問題
  提示:通常安裝Firefox等瀏覽器后,都會(huì)勾選上面得選項(xiàng),導(dǎo)致不能正常錄制。因此建議運(yùn)行LoadRunner得主機(jī)上保持一個(gè)干凈的測試環(huán)境。
3.HTML-based script與URL-based script的腳本有什么區(qū)別?
使用“HTML-based script”的模式錄制腳本,VuGen為用戶的每個(gè)HTML操作生成單獨(dú)的步驟,這種腳本看上去比較直觀;
使用“URL-based script”模式錄制腳本時(shí),VuGen可以捕獲所有作為用戶操作結(jié)果而發(fā)送到服務(wù)器的HTTP請(qǐng)求,然后為用戶的每個(gè)請(qǐng)求分別生成對(duì)應(yīng)方法。
  通常,基于瀏覽器的Web應(yīng)用會(huì)使用“HTML-based script”模式來錄制腳本;而沒有基于瀏覽器的Web應(yīng)用、Web應(yīng)用中包含了與服務(wù)器進(jìn)行交互的Java Applet、基于瀏覽器的應(yīng)用中包含了向服務(wù)器進(jìn)行通信的JavaScript/VBScript代碼、基于瀏覽器的應(yīng)用中使用了HTTPS安全協(xié)議,這時(shí)使用“URL-based script”模式進(jìn)行錄制。
4.運(yùn)行時(shí)的Pacing設(shè)置主要影響什么?
  Pacing主要用來設(shè)置重復(fù)迭代腳本的間隔時(shí)間。共有三種方法:A:上次迭代結(jié)束后立刻開始、 B:上次迭代結(jié)束后等待固定時(shí)間、C:按固定或隨機(jī)的時(shí)間間隔開始執(zhí)行新的迭代。
 根據(jù)實(shí)際需要設(shè)置迭代即可。通常,沒有時(shí)間間隔會(huì)產(chǎn)生更大的壓力。
   5.運(yùn)行時(shí)設(shè)置Log標(biāo)簽中,如果沒有勾選“Enable logging”,則手工消息可以發(fā)送嗎?
  Enable logging選項(xiàng)僅影響自動(dòng)日志記錄和通過lr_log_message發(fā)送的消息。即使沒有勾選,虛擬用戶腳本中如果使用lr_message、lr_output_message、lr_error_message,仍然會(huì)記錄其發(fā)出的消息。
   6.VuGen支持Netscape的客戶證書嗎?
  不支持。目前的VuGen 8.0版本中僅支持Internet Explorer的客戶端證書。錄制腳本時(shí)可以先從Netscape中導(dǎo)出所需的證書,然后將其導(dǎo)入到Internet Explorer中,并確保以相同的順序?qū)С龊蛯?dǎo)入這些證書。而且,在每臺(tái)將要錄制或運(yùn)行需要證書的Web Vuser腳本的計(jì)算機(jī)上都要重復(fù)執(zhí)行前面的過程。
   7.VuGen會(huì)修改錄制瀏覽器中的代理服務(wù)器設(shè)置嗎?
  會(huì)修改。在開始錄制基于瀏覽器的Web Vuser腳本時(shí),VuGen首先會(huì)啟動(dòng)指定的瀏覽器。然后,VuGen會(huì)指示瀏覽器訪問VuGen代理服務(wù)器。為此,VuGen會(huì)修改錄制瀏覽器上的代理服務(wù)器設(shè)置。默認(rèn)情況下,VuGen會(huì)立即將代理服務(wù)器設(shè)置更改為Localhost:7777。錄制之后,VuGen會(huì)將原始代理服務(wù)器設(shè)置還原到該錄制瀏覽器中。因此,在VuGen進(jìn)行錄制的過程中,不可以更改代理服務(wù)器設(shè)置,否則將無法正常進(jìn)行。
   8.在LoadRunner腳本如何輸出當(dāng)前系統(tǒng)時(shí)間?
  LoadRunner提供了char *ctime(const time_t *time)函數(shù),調(diào)用參數(shù)為一個(gè)Long型的整數(shù)指針,用于存放返回時(shí)間的數(shù)值表示。
  調(diào)用語句與返回值如下示例:
  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));
  }
  輸出結(jié)果為:
  Time in seconds since 1/1/70: 1185329968
  System time and date:Wed Jul 25 10:19:28 2007
  9.一些Web虛擬用戶腳本錄制后立刻回放沒有任何問題,但是當(dāng)設(shè)置迭代次數(shù)大于1時(shí),如果進(jìn)行回放則只能成功迭代一次。為什么從第二次迭代開始發(fā)生錯(cuò)誤?
  這種現(xiàn)象多是由于在“Run-time Setting”的“Browse Emulation”的設(shè)置中,勾選了“Simulate a new user on each iteration”及其下面的選項(xiàng)“Clear cache on each iteration”這兩個(gè)選項(xiàng)的含義是每次迭代時(shí)模擬一個(gè)新的用戶及每次迭代時(shí)清除緩存。
  由于腳本迭代時(shí),init和end只能執(zhí)行一次,如果每次迭代都模擬一個(gè)新的用戶并清除緩存,則用戶登錄信息將一并清除,因此迭代時(shí)可能會(huì)發(fā)生錯(cuò)誤。
  10.虛擬客戶腳本“Run-time Setting”中的線程和進(jìn)程運(yùn)行方式的區(qū)別?
  如果選擇“Run Vuser as a process”,則場景運(yùn)行時(shí)會(huì)為每一個(gè)虛擬用戶創(chuàng)建一個(gè)進(jìn)程;選擇“Run Vuser as a thread”則將每個(gè)虛擬用戶作為一個(gè)線程來運(yùn)行,在任務(wù)管理器中只看到一個(gè)mmdrv.exe,這種方式的運(yùn)行效率更高,能造成更大的壓力,時(shí)默認(rèn)選項(xiàng)。
  另外,如果啟用了IP欺騙功能,則先在Controller中選中Tools菜單下的“Expert Mode”,然后將Tools菜單下的“Options>General”標(biāo)簽頁中的IP地址分配方式也設(shè)置為與Vuser運(yùn)行方式一致,同為線程或進(jìn)程方式。
  11.在Controller中運(yùn)行Web相關(guān)測試場景時(shí),經(jīng)常會(huì)有很多超時(shí)錯(cuò)誤提示,如何處理這類問題?
  這主要有腳本的默認(rèn)超時(shí)設(shè)置引起。當(dāng)回放Web腳本時(shí),有時(shí)候由于服務(wù)器響應(yīng)時(shí)間較長,會(huì)產(chǎn)生超時(shí)的錯(cuò)誤。這時(shí)需要修改腳本的運(yùn)行時(shí)配置。
  進(jìn)入“Run-time Setting”對(duì)話框后,依次進(jìn)入“Internet Protocol→Preference”。然后點(diǎn)擊“Options…”按鈕,進(jìn)入高級(jí)設(shè)置對(duì)話框,可以修改各類超時(shí)設(shè)置的默認(rèn)值。
  13為什么Windows系統(tǒng)中的CPU、內(nèi)存等資源仍然充足,但是模擬的用戶數(shù)量卻上不去-27796?
   在Windows計(jì)算機(jī)的標(biāo)準(zhǔn)設(shè)置下,操作系統(tǒng)的默認(rèn)限制只能使用幾百個(gè)Vuser,這個(gè)限制與CPU或內(nèi)存無關(guān),主要是操作系統(tǒng)本身規(guī)定了默認(rèn)的最大線程數(shù)所導(dǎo)致。要想突破Windows這個(gè)限制,須修改Windows注冊(cè)表。以Windows XP Professional為例。
   (1)打開注冊(cè)表后,進(jìn)入注冊(cè)表項(xiàng)HKEY_LOCAL_MACHINE中的下列關(guān)鍵字:System\CurrentControlSet\Control\Session Manager\SubSystems。
  (2)找到Windows關(guān)鍵字,Windows關(guān)鍵字如下所示:
  %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關(guān)鍵字的格式為xxxx,yyyy,zzz。其中,xxxx定義了系統(tǒng)范圍堆的最大值(以KB為單位),yyyy定義每個(gè)桌面堆得大小。
   (3)將yyyy的設(shè)置從3072更改為8192(即8MB),增加SharedSection參數(shù)值。
通過對(duì)注冊(cè)表的更改,系統(tǒng)將允許運(yùn)行更多的線程,因而可以在計(jì)算機(jī)上運(yùn)行更多的Vuser。這意味著能夠模擬的最大并發(fā)用戶數(shù)量將不受Windows操作系統(tǒng)的限制,而只受硬件和內(nèi)部可伸縮性限制的約束。
14.Error -27728: Step download timeout (120 seconds)的解決方法
loadruner報(bào)錯(cuò):Error -27728: Step download timeout (120 seconds)如何解決語法檢查通過,但是在并發(fā)執(zhí)行一個(gè)查詢時(shí)候報(bào)錯(cuò)Action.c(16): Error -27728: Step download timeout (120 seconds) has expired when downloading non-resource(s), 請(qǐng)問有啥子解決方法,我使用web_set_timeout ,好象不起作用,直接在option中設(shè)置timeout時(shí)間為600,(單位應(yīng)該是秒吧)還是沒有起作用,結(jié)果都還是提示(120seconds),說明還是以120秒來判斷的;使用lrs_set_recv_timeout,語法檢查不過,說明庫函數(shù)里面沒有這個(gè)函數(shù)。嘗試步驟:設(shè)置超時(shí)時(shí)間到600秒,回放還是出錯(cuò)。后來我設(shè)置了runt time setting中的internet protocol-preferences中的advaced區(qū)域有一個(gè)winlnet replay instead of sockets選項(xiàng),選項(xiàng)后再回放就成功了。
首先LR是通過Microsoft WinInet DLL去錄制web協(xié)議的!但是在Control運(yùn)行的時(shí)候它默認(rèn)通過socket去模擬請(qǐng)求,因?yàn)檫@些可以真實(shí)的模擬帶寬,而采用Microsoft WinInet DLL通過這個(gè)DLL去訪問網(wǎng)卡方式去模擬帶寬,使得模擬不是很精確!而且也不支持unix的應(yīng)用,但是使用這個(gè)確實(shí)有時(shí)無法處理winnet Dll的一些請(qǐng)求,我認(rèn)為是它的一些BUG,比如說:回放時(shí)它會(huì)檢查Content-Length,但是網(wǎng)頁支持receive more data時(shí),這時(shí)socket模擬會(huì)一直等待直到timeout!先說了一些優(yōu)缺點(diǎn),最后回到這個(gè)問題!這個(gè)問題分兩個(gè)方面分析:
第一:你要明白web_set_timeout()這個(gè)函數(shù)的適用范圍!比如說一個(gè)web_submit_data()中實(shí)際涵蓋了10個(gè)對(duì)Server 端的請(qǐng)求,這個(gè)函數(shù)是針對(duì)10個(gè)請(qǐng)求的總和時(shí)間的!(別犯低級(jí)錯(cuò)誤,timeout分了connect,receive以及download三個(gè)部分:) ) 第二:就是我解釋的上面的一些BUG問題!WinInet dll在新版本中處理請(qǐng)求時(shí)可以異步的,就是不再是那種連接等待然后超時(shí)模式!但是LR用的socket是同步請(qǐng)求!只有等到timeout才會(huì)退出!microsoft已經(jīng)明確表示INTERNET_OPTION_RECEIVE_TIMEOUT 不再適用于 Microsoft Internet Explorer 5.0,顯而易見,他們處理請(qǐng)求采取了異步處理的方式!呵呵!這下大概可以圓滿解釋你的問題了!呵呵這里,
我補(bǔ)充如下:VuGen專用的基于套接字的重播是一種可伸縮以便進(jìn)行負(fù)載測試的輕型引擎。使用線程時(shí)是準(zhǔn)確的。基于套接字的引擎不支持socks代理服務(wù)器。如果在這樣的環(huán)境中錄制,應(yīng)該使用winInet重播引擎。
15.性能測試往往需要準(zhǔn)備大批量的數(shù)據(jù),大批量數(shù)據(jù)的生成方法有很多種,常見的有:
(1)編寫SQL語句來插入數(shù)據(jù)
(2)使用DataFactory等專業(yè)的數(shù)據(jù)生成工具
(3)通過LoadRunner錄制回放的方式重復(fù)執(zhí)行生成大批量數(shù)據(jù)
Tips:
使用DataFactory插入nchar數(shù)據(jù)類型的數(shù)據(jù)時(shí)會(huì)出現(xiàn)空值的情況,可以先修改數(shù)據(jù)庫的數(shù)據(jù)類型設(shè)置,插完數(shù)據(jù)后再改回來


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

在IIS中找到Web.Config文件,在<system.web>….</system.web>節(jié)加入<globalization requestEncoding="gb2312" responseEncoding="gb2312" fileEncoding="gb2312"/>后再次錄制腳本,亂碼變中文。
17.LoadRunner回放腳本時(shí),在瀏覽器顯示的中文是亂碼
解決辦法(1):
首先設(shè)置Run-Time Settings – Browser – Browser Emulation – User-Agent
然后設(shè)置IE:
查看-編碼-鉤上“自動(dòng)選擇”和Unicode(UTF-8)。
解決辦法(2):
使用lr_convert_string_encoding函數(shù)來轉(zhuǎn)換編碼
下面是一個(gè)使用的例子:
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測試腳本的目錄中找到參數(shù)文件,直接修改參數(shù)文件
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啟動(dòng)VUGen時(shí)提示"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.怎樣抓取有相同左右邊界的動(dòng)態(tài)value?
怎樣抓取有相同左右邊界的動(dòng)態(tài)value?例如:
stateID="d7lg0ehmjkkm6uin3s4boei7oq">
stateID="cvopakp46ftsf8mh6l37ti3ubm">
stateID="bv9mja8gtgr39ddibm5t9163re">
web_reg_save_param里的ORD應(yīng)該怎樣設(shè)置?
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.運(yùn)行場景時(shí)提示“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)(出現(xiàn)個(gè)別,可以忽略)
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
如果覺得下載一個(gè)頁面超過2分鐘不是錯(cuò)誤的話,可以在Run-Time設(shè)置中選擇Preferences->Options,修改Step download timeout(sec)的時(shí)間

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

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

//Body response 內(nèi)容: <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函數(shù)切割出一個(gè)個(gè)數(shù)字,第四個(gè)數(shù)字就是要找的值
例如:
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協(xié)議的license,只有http的,可不可以完全用http協(xié)議模擬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.在場景設(shè)置中不忽略思考時(shí)間,但是在查看響應(yīng)時(shí)間的時(shí)候怎樣讓LR自動(dòng)在響應(yīng)時(shí)間里減去思考時(shí)間?
在analysis中找到了設(shè)置是否在報(bào)告中包含思考時(shí)間的地方做相應(yīng)的設(shè)置即可:
25.LoadRunner在運(yùn)行過程中停掉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 ‘a(chǎn)lways send a message’. Because of that, I suggest to run with log level set to ‘Send message only when error occur’.
26.測試RTMP協(xié)議應(yīng)該在LoadRunner選擇什么協(xié)議來錄制?
用flex協(xié)議
有這幾個(gè)函數(shù)可用:
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中運(yùn)行QTP腳本?
  1、運(yùn)行準(zhǔn)備:
1)勾選QTP的Tools--Options--Run的"Alow other Mercury products to run tests and components"
2)錄制需要在lr中運(yùn)行的QTP腳本,并且在QTP腳本中設(shè)置事務(wù),Services.StartTransaction "start"與Services.EndTransaction "start"
2、運(yùn)行QTP腳本
在LR中運(yùn)行時(shí)選擇QTP腳本,為QTP腳本存放目錄下文件擴(kuò)展名為.usr的文件。
 注:LR中運(yùn)行QTP腳本時(shí),只能有一個(gè)Vuser,否則將報(bào)錯(cuò):
  The load generator is currently running the maximum number of Vusers of this type
28.在LR中如何忽略Socket接收數(shù)據(jù)的驗(yàn)證
在LR中對(duì)Socket進(jìn)行性能測試時(shí),LR會(huì)自己判斷l(xiāng)rs_receive回來的數(shù)據(jù)的長度,而如果長度不符的話會(huì)有時(shí)間延遲的情況(這是性能測試完全不能接受的事情),如果做到這一點(diǎn)呢,經(jīng)過反復(fù)嘗試,發(fā)現(xiàn)一種簡單的方法(用
代替具體的長度):
類似于將:
recv buf1 12
"Hello, Denny"
改為:
recv buf1 *
"Hello, Denny"
一切OK。
29.LoadRunner9.5的Controller中不能添加Apache的監(jiān)控
在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開發(fā)ADO腳本,提示“user-defined type not defined”
想在VB Vuser寫入模擬數(shù)據(jù)操作的過程,然后在VB Vuser里定義了這個(gè)全局變量
Private m_Conn As ADODB.Connection '連接對(duì)象
Private m_Reco As ADODB.Recordset '結(jié)果集
但是在VB Vuser中不識(shí)別這個(gè)對(duì)象,報(bào)出user-defined type not defined
需要在Run-Time 設(shè)置中的VBA部分把ADO的庫選上
如果用VB Script虛擬用戶來開發(fā)就不要,直接用CreateObject來創(chuàng)建ADO對(duì)象即可
31.loadrunner9.5錄制腳本時(shí)出現(xiàn)c:\PROGRA1\MICROS1\office12\Grooveutil.DLL時(shí)出錯(cuò)內(nèi)存位置訪問無效
Office2007的問題,IE加載項(xiàng)禁用Groove GFSBrowser Helper 組件
32.LR自帶的例子端口號(hào)怎么修改?
LR自帶的例子端口號(hào)是1080,我怎么樣把這個(gè)端口設(shè)置我自己想用的端口號(hào)8088,在什么地方設(shè)置在LR安裝目錄下,找到Xitami.config文件,找到portbase,可以修改它(默認(rèn)是1000);
默認(rèn)的端口號(hào)是portbase+80;要把端口號(hào)改成8088,就把portionbase改為8008,保存之后就是了(8088=8008+80)。
33.用Web_reg_find查找中文字符串時(shí)查找不到
腳本文件里有個(gè)default.cfg,里面有個(gè)參數(shù)是 UTF8InputOutput ,將其值改為0
34.替代IP Wizard的腳本
http://hi.baidu.com/higkoo/blog/item/39bbb21bc33d76dcac6e751c.html
LoadRunner自帶的“IP Wizard”用起來非常麻煩,要不停的點(diǎn),重要的是最后還必須重啟系統(tǒng)生效。
于是乎寫個(gè)腳本替代之:

  1. 假設(shè)客戶端IP為 192.168.10.31
  2. 假設(shè)服務(wù)端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
    對(duì)應(yīng)的刪除設(shè)置為:
    netsh interface ip del address 本地連接 110.119.120.122
    對(duì)應(yīng)服務(wù)器添加虛擬路由的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
    這樣就非常方便了,不用重啟任何機(jī)器,執(zhí)行腳本就生效,再執(zhí)行腳本就取消。
    35.如何從命令行調(diào)用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.請(qǐng)問"int64這個(gè)類型,在LR中怎么表示"。我將一段C的代碼放在LR中,LR不認(rèn)int64這個(gè)類型,怎么解決?
    把那段C代碼做成DLL,然后在LR中調(diào)用
    37.LoadRunner監(jiān)控遠(yuǎn)程機(jī)器Windows資源,提示“net use failed”
    解決辦法:
    在被監(jiān)控機(jī)器上更改本地帳戶的共享和安全模式為經(jīng)典模式??刂泼姘?>管理工具->本地安全策略->網(wǎng)絡(luò)訪問:本地帳戶的共享和安全模式->經(jīng)典模式。
    監(jiān)視連接前的準(zhǔn)備工作:
    首先保證被監(jiān)視的windows系統(tǒng)開啟以下二個(gè)服務(wù)Remote Procedure Call(RPC) 和Remote Registry Service
    被監(jiān)視的WINDOWS機(jī)器:右擊我的電腦,選擇管理->共享文件夾->共享 在這里面要有C$這個(gè)共享文件夾,(要是沒有自己手動(dòng)加)
    然后保證在安裝LR的機(jī)器上使用運(yùn)行.輸入\被監(jiān)視機(jī)器IP\C$ 然后輸入管理員帳號(hào)和密碼,如果能看到被監(jiān)視機(jī)器的C盤了,就說明你得到了那臺(tái)機(jī)器的管理員權(quán)限,可以使用LR去連接了
      38.LoadRunner腳本中出現(xiàn)亂碼問題現(xiàn)象某個(gè)鏈接或者圖片名稱為中文亂碼,腳本運(yùn)行無法通過。
    ****  錯(cuò)誤分析  腳本錄制可能采用的是URL-based script方式,如果程序定義的字符集合采用的是國際標(biāo)準(zhǔn),腳本就會(huì)出現(xiàn)亂碼現(xiàn)象?! 〗鉀Q辦法重新錄制腳本,在錄制腳本前,打開錄制選項(xiàng)配置對(duì)話框進(jìn)行設(shè)置,在“Recording Options”的“Advanced”選項(xiàng)里先將“Surport Charset”選中,然后選中支持“UTF-8”的選項(xiàng)。
    39.LoadRunner不執(zhí)行檢查方法錯(cuò)誤現(xiàn)象在腳本中插入函數(shù)Web_find,在腳本中設(shè)置文本以及圖像的檢查點(diǎn),但是在回放過程中并沒有對(duì)設(shè)置的檢查點(diǎn)進(jìn)行檢查,即Web_find失效。
      錯(cuò)誤分析  由于檢查功能會(huì)消耗一定的資源,因此LoadRunner默認(rèn)關(guān)閉了對(duì)文本以及圖像的數(shù)據(jù)執(zhí)行保護(hù)檢查,所以在設(shè)置檢查點(diǎn)后,需要開啟檢查功能?! 〗鉀Q辦法打開運(yùn)行環(huán)境設(shè)置對(duì)話框進(jìn)行設(shè)置,在“Run-time Settings”的“Internet Protocol”選項(xiàng)里的“Perference”中勾選“Check”下的“Enable Image and text check”選項(xiàng)?!? 需要注意的是,回放腳本時(shí)出現(xiàn)的錯(cuò)誤有時(shí)是程序自身的原因?qū)е碌模虼嗽诮鉀Q腳本回放問題前必須保證程序錄制出的腳本是正確的。
      40.LoadRunner超時(shí)錯(cuò)誤:在錄制Web協(xié)議腳本回放時(shí)超時(shí)情況經(jīng)常出現(xiàn),產(chǎn)生錯(cuò)誤的原因也有很多,解決的方法也不同。
      錯(cuò)誤現(xiàn)象1:Action.c(16): Error -27728: Step download timeout (120 seconds) has expired when downloading non-resource(s)。
      錯(cuò)誤分析:對(duì)于HTTP協(xié)議,默認(rèn)的超時(shí)時(shí)間是120秒(可以在LoadRunner中修改),客戶端發(fā)送一個(gè)請(qǐng)求到服務(wù)器端,如果超過120秒服務(wù)器端還沒有返回結(jié)果,則出現(xiàn)超時(shí)錯(cuò)誤。
    解決辦法:首先在運(yùn)行環(huán)境中對(duì)超時(shí)進(jìn)行設(shè)置,默認(rèn)的超時(shí)時(shí)間可以設(shè)置長一些,再設(shè)置多次迭代運(yùn)行,如果還有超時(shí)現(xiàn)象,需要在“Runtime Setting”>“Internet Protocol:Preferences”>“Advanced”區(qū)域中設(shè)置一個(gè)“winlnet replay instead of sockets”選項(xiàng),再回放是否成功。

錯(cuò)誤現(xiàn)象 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
  錯(cuò)誤分析:這種錯(cuò)誤常常是因?yàn)椴l(fā)壓力過大,服務(wù)器端太繁忙,無法及時(shí)響應(yīng)客戶端的請(qǐng)求而造成的,所以這個(gè)錯(cuò)誤是正?,F(xiàn)象,是壓力過大造成的。
  如果壓力很小就出現(xiàn)這個(gè)問題,可能是腳本某個(gè)地方有錯(cuò)誤,要仔細(xì)查看腳本,提示的錯(cuò)誤信息會(huì)定位某個(gè)具體問題發(fā)生的位置。
  解決辦法:例如上面的錯(cuò)誤現(xiàn)象問題定位在某個(gè)URL上,需要再次運(yùn)行一下場景,同時(shí)在其他機(jī)器上訪問此URL。如果不能訪問或時(shí)間過長,可能是服務(wù)器或者此應(yīng)用不能支撐如此之大的負(fù)載。分析一下服務(wù)器,最好對(duì)其性能進(jìn)行優(yōu)化。
如果再次運(yùn)行場景后還有超時(shí)現(xiàn)象,就要在各種圖形中分析一下原因,例如可以查看是否服務(wù)器、DNS、網(wǎng)絡(luò)等方面存在問題。

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

錯(cuò)誤現(xiàn)象2:-500 Internal Server Error服務(wù)器內(nèi)部錯(cuò)誤,腳本運(yùn)行停止。
  錯(cuò)誤分析:服務(wù)器碰到了意外情況,使其無法繼續(xù)回應(yīng)請(qǐng)求。
  解決辦法:出現(xiàn)此錯(cuò)誤是致命的,說明問題很嚴(yán)重,需要從問題的出現(xiàn)位置進(jìn)行檢查,此時(shí)需要此程序的開發(fā)人員配合來解決,而且產(chǎn)生的原因根據(jù)實(shí)際情況來定,測試人員無法單獨(dú)解決問題,而且應(yīng)該盡快解決,以便于后面的測試。
  43.LoadRunner請(qǐng)求無法找到:在錄制Web協(xié)議腳本回放腳本的過程中,會(huì)出現(xiàn)請(qǐng)求無法找到的現(xiàn)象,而導(dǎo)致腳本運(yùn)行停止。
  錯(cuò)誤現(xiàn)象: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]"
  這時(shí)在tree view中看不到此組件的相關(guān)URL。
錯(cuò)誤分析:所選擇的錄制腳本模式不正確,通常情況下,基于瀏覽器的Web應(yīng)用會(huì)使用“HTML-based script”模式來錄制腳本;而沒有基于瀏覽器的Web應(yīng)用、Web應(yīng)用中包含了與服務(wù)器進(jìn)行交互的Java Applet、基于瀏覽器的應(yīng)用中包含了向服務(wù)器進(jìn)行通信的JavaScript/VBScript代碼、基于瀏覽器的應(yīng)用中使用HTTPS安全協(xié)議,這時(shí)則使用“URL-based script”模式進(jìn)行錄制。
  解決辦法:打開錄制選項(xiàng)配置對(duì)話框進(jìn)行設(shè)置,在“Recording Options”的“Internet Protocol”選項(xiàng)里的“Recording”中選擇“Recording Level”為“HTML-based script”,單擊“HTML Advanced”,選擇“Script. Type”為“A script. containing explicit”。然后再選擇使用“URL-based script”模式來錄制腳本。
  44.LoadRunner不執(zhí)行檢查方法:在錄制Web協(xié)議腳本中添加了檢查方法Web_find,但是在腳本回放的過程中并沒有執(zhí)行。
  錯(cuò)誤現(xiàn)象:在腳本中插入函數(shù)Web_find,在腳本中設(shè)置文本以及圖像的檢查點(diǎn),但是在回放過程中并沒有對(duì)設(shè)置的檢查點(diǎn)進(jìn)行檢查,即Web_find失效。
  錯(cuò)誤分析:由于檢查功能會(huì)消耗一定的資源,因此LoadRunner默認(rèn)關(guān)閉了對(duì)文本以及圖像的檢查,所以在設(shè)置檢查點(diǎn)后,需要開啟檢查功能。
解決辦法:打開運(yùn)行環(huán)境設(shè)置對(duì)話框進(jìn)行設(shè)置,在“Run-time Settings”的“Internet Protocol”選項(xiàng)里的“Perference”中勾選“Check”下的“Enable Image and text check”選項(xiàng)。
  45.LoadRunner回放Web Services協(xié)議腳本錯(cuò)誤:LoadRunner 8.0版本在錄制Web Services協(xié)議的腳本時(shí)正常,但在回放時(shí)會(huì)出現(xiàn)錯(cuò)誤,提示停止腳本運(yùn)行。
  錯(cuò)誤現(xiàn)象:利用LoadRunner 8.0版本來錄制Web Services協(xié)議的腳本沒有任何錯(cuò)誤提示,回放腳本時(shí)會(huì)出現(xiàn)如下錯(cuò)誤提示“Error:server returned an incorrectly formatted SOAP response”。
  錯(cuò)誤分析:出現(xiàn)此錯(cuò)誤的原因是LoadRunner8.0在錄制Web Services協(xié)議的腳本時(shí)存在一個(gè)缺陷:如果服務(wù)器的操作系統(tǒng)是中文的,VuGen會(huì)自動(dòng)將WSDL文件的頭改為<?xml version="1.0"encoding="zh_cn" ?>,所以才會(huì)有此錯(cuò)誤提示。
解決辦法:下載兩個(gè)補(bǔ)丁,分別為“LR80WebServicesFPI_setup.exe”和“l(fā)runner_web_ services_patch_1.exe”安裝上即可。
46.LR啟動(dòng)controller報(bào)錯(cuò)“transaction monitor not available”
1.多是OS系統(tǒng)問題,修復(fù)試試或升級(jí)
2.或修復(fù)LR試試
47.Loadrunnber 報(bào)錯(cuò)誤:Error -- memory violation : Exception ACCESS_VIOLATION received.的一種情況
Posted on 2011-01-05 12:12蟈蟈俊 閱讀(433) 評(píng)論(0) 編輯收藏
最近寫的一個(gè)Loadrunner腳本,最后一步是點(diǎn)擊“退出”按鈕退出登錄狀態(tài),如下:
web_text_link("[退出]",
"Snapshot=t18.inf",
DESCRIPTION,
"Text=[退出]",
ACTION,
"UserAction=Click",
LAST);
return 0;
但是會(huì)報(bào)錯(cuò)誤:
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()
經(jīng)過試驗(yàn),發(fā)現(xiàn)是因?yàn)?退出后有個(gè)自動(dòng)跳轉(zhuǎn)。
如果退出結(jié)束代碼修改為下面就沒有問題了。
web_text_link("[退出]",
"Snapshot=t18.inf",
DESCRIPTION,
"Text=[退出]",
ACTION,
"UserAction=Click",
LAST);
web_browser("Sync",
"Snapshot=t18.inf",
DESCRIPTION,
ACTION,
"Sync",
LAST);
return 0;
結(jié)論:
web_text_link如果有中間跳轉(zhuǎn),不能放在代碼的最后,最后要有一個(gè) Sync 。
48.Step download timeout(sec)設(shè)置
這個(gè)默認(rèn)是120秒,但是經(jīng)常我們要設(shè)置的更大一些,具體設(shè)置方法:Vugen--》Vuser---》Runtime-settings----》Preferences------》option,將Step download timeout(sec)默認(rèn)值120s改為自己需要的值,其次要改變HTTP-reguest connnect timeout(sec)和HTTP-reguest receive timeout(sec)也為相應(yīng)的值。
49.修改本機(jī)tcp連接數(shù)
因?yàn)閭€(gè)人pc機(jī)的默認(rèn)的tcp連接數(shù)只有15個(gè)(xp),所以我們?cè)谀M虛擬多個(gè)用戶時(shí),就會(huì)遇到tcp的連接限制,從而報(bào)錯(cuò)。修改的方法:windows下運(yùn)行 Patch.exe輸入C,再輸入你要的TCP/IP連接數(shù)字(一般為500~2000)回車確認(rèn)輸入Y 回車確認(rèn)。倒計(jì)時(shí)15秒后結(jié)束。接著再運(yùn)行下Patch.exe,看連接數(shù)是不是由原來的10變成自己改了的數(shù)值。Patch.exe 下載地址:http://www.touchboy.cn/2007/05/% ... %E6%8E%A5%E6%95%B0/
50.關(guān)于Error -27791: Error -27790:Error -27740:錯(cuò)誤的解決方法:
錯(cuò)誤如下: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中錯(cuò)誤代號(hào)為27796的一個(gè)解決方法
錯(cuò)誤如下:

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

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

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

性能測試包含負(fù)載測試、壓力測試、大數(shù)據(jù)量測試、疲勞強(qiáng)度測試等。

  1. 簡述性能測試的步驟

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

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

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

解釋:這個(gè)就是我前面提到的關(guān)聯(lián),系統(tǒng)已經(jīng)預(yù)先設(shè)置好了一些常見的關(guān)聯(lián)rules,我們錄制腳本之前,可以把系統(tǒng)的


  1. 為什么要?jiǎng)?chuàng)建參數(shù)?如何創(chuàng)建參數(shù)? 參數(shù):在環(huán)境變化時(shí)必須時(shí)腳本具有環(huán)境變化的能力,就需要參數(shù)化(客戶端發(fā)送到服務(wù)器端) 1.確定要參數(shù)話的數(shù)據(jù) 2.設(shè)定規(guī)則形式來取值
    13. 什么是關(guān)聯(lián)?請(qǐng)解釋一下自動(dòng)關(guān)聯(lián)和手動(dòng)關(guān)聯(lián)的不同。
    關(guān)聯(lián):很多構(gòu)架用sessionid等方法標(biāo)識(shí)不同任務(wù)和數(shù)據(jù),應(yīng)用在每次運(yùn)行時(shí)方式發(fā)送數(shù)據(jù)不完全相同,需要利用的機(jī)制對(duì)錄制的腳本進(jìn)行處理,這種機(jī)制叫做關(guān)聯(lián)(服務(wù)端發(fā)送到客戶端)
    14. 場景設(shè)置有哪幾種方法?
    目標(biāo)場景,手工場景
  2. 你如何找出哪里需要關(guān)聯(lián)?請(qǐng)給一些你所在項(xiàng)目的實(shí)例。用戶登陸,客戶端發(fā)送請(qǐng)求后,服務(wù)端驗(yàn)證正確性后,發(fā)送給客戶端sessionid,是某種規(guī)則產(chǎn)生。
  3. 你在哪里設(shè)置自動(dòng)關(guān)聯(lián)選項(xiàng)?兩地方可以設(shè)置1.設(shè)置允許錄制時(shí)進(jìn)行自動(dòng)關(guān)聯(lián),可以自定義規(guī)則
    2.錄制完成后,vuser-scan action for correlations
    17. 哪個(gè)函數(shù)是用來截取虛擬用戶腳本中的動(dòng)態(tài)值?(手工關(guān)聯(lián))
    web_reg_save_param()函數(shù)主要根據(jù)需要做關(guān)聯(lián)的動(dòng)態(tài)數(shù)據(jù)前面和后面的固定字符串來識(shí)別、提取動(dòng)態(tài)數(shù)據(jù),所以在做關(guān)聯(lián)時(shí),需要找出動(dòng)態(tài)數(shù)據(jù)的左、右邊界字符串。
  4. 你在VUGen中何時(shí)選擇關(guān)閉日志?何時(shí)選擇標(biāo)準(zhǔn)和擴(kuò)展日志?Run-time,log,當(dāng)調(diào)試腳本時(shí),可以只輸出錯(cuò)誤日志,當(dāng)在場景找你管加載腳本時(shí),日志自動(dòng)變?yōu)椴豢捎谩tandard Log Option:選擇標(biāo)準(zhǔn)日志時(shí),就會(huì)在腳本執(zhí)行過程中,生成函數(shù)的標(biāo)準(zhǔn)日志并且輸出信息,供調(diào)試用。大型負(fù)載測試場景不用啟用這個(gè)選項(xiàng)。擴(kuò)展日志包括警告和其他信息。大型負(fù)載測試不要啟用該選項(xiàng)。用擴(kuò)展日志選項(xiàng),可以指定哪些附加信息需要加到擴(kuò)展日志中
  5. 你如何調(diào)試LoadRunner腳本?VuGen有兩個(gè)選項(xiàng)幫助調(diào)試Vuser腳本。Run Step by Step命令和斷點(diǎn)(breakpoints)。Option對(duì)話框中的調(diào)試設(shè)置(Debug setting)項(xiàng),可以確定在場景執(zhí)行過程中執(zhí)行軌跡范圍。調(diào)試信息寫在output窗口??梢杂?lr_set_debug_messag函數(shù)在腳本中手工設(shè)置信息類型。如果我們只想接收到一小段腳本的調(diào)式信息。
  6. 你在LR中如何編寫自定義函數(shù)?請(qǐng)給出一些你在以前進(jìn)行的項(xiàng)目中編寫的函數(shù)。在創(chuàng)建用戶自定義函數(shù)前我們需要和創(chuàng)建DLL(external libary)。把庫放在VuGen bin目錄下。一旦加了庫,把自定義函數(shù)分配做一個(gè)參數(shù)。該函數(shù)應(yīng)該具有一下格式:__declspec (dllexport) char* <function name>(char, char)。Milan
  7. 什么是逐步遞增?你如何來設(shè)置?Ramp up這個(gè)選項(xiàng)用于逐漸增加服務(wù)器的虛擬用戶數(shù)或負(fù)載量。設(shè)置一個(gè)初始值而且可以在兩個(gè)迭代之間設(shè)置一個(gè)值等待。設(shè)置Ramp up,請(qǐng)到‘Scenario Scheduling Options’。
  8. 以線程方式運(yùn)行的虛擬用戶有哪些優(yōu)點(diǎn)?VuGen提供了用多線程的便利。這使得在每個(gè)生成器上可以跑更多的虛擬用戶。如果是以進(jìn)程的方式跑虛擬用戶,為每個(gè)用戶加載相同的驅(qū)動(dòng)程序到內(nèi)存中,因此占用了大量的內(nèi)存。這就限制了在單個(gè)生成器上能跑的虛擬用戶數(shù)。如果按線程運(yùn)行,給定的所有虛擬用戶數(shù)(比如100)只是加載一個(gè)驅(qū)動(dòng)程序?qū)嵗絻?nèi)存里。每個(gè)線程共用父驅(qū)動(dòng)程序的內(nèi)存,因此在每個(gè)生成器上可以跑更多的虛擬用戶。
  9. 當(dāng)你需要在出錯(cuò)時(shí)停止執(zhí)行腳本,你怎么做?lr_abort函數(shù)放棄虛擬用戶腳本的執(zhí)行。說明虛擬用戶停止Action的執(zhí)行,直接執(zhí)行vuser_end然后結(jié)束執(zhí)行。在出現(xiàn)錯(cuò)誤情況下想手工放棄腳本的執(zhí)行,這個(gè)函數(shù)是有用的。用這個(gè)函數(shù)停止腳本時(shí),Vuser被指定為“Stopped”狀態(tài)。為了這個(gè)函數(shù)起作用,開始時(shí)候就不能選擇Run-Time Settings中的Continue on error選項(xiàng)。
  10. 響應(yīng)時(shí)間和吞吐量之間的關(guān)系是什么?吞吐量圖顯示的是虛擬用戶每秒鐘從服務(wù)器接收到的字節(jié)數(shù)。當(dāng)和響應(yīng)時(shí)間比較時(shí),可以發(fā)現(xiàn)隨著吞吐量的降低,響應(yīng)時(shí)間也降低,同樣的,吞吐量的峰值和最大響應(yīng)時(shí)間差不多在同時(shí)出現(xiàn)。
  11. 說明一下如何在LR中配置系統(tǒng)計(jì)數(shù)器?通過Web資源監(jiān)視器,利用這些監(jiān)控器可以分析web服務(wù)器的吞吐量、點(diǎn)擊率、每秒http響應(yīng)數(shù)以及每秒下載的頁面數(shù)。
  12. 什么是think time?think_time有什么用?思考時(shí)間是真實(shí)用戶在action之間等待的時(shí)間。例如:當(dāng)一個(gè)用戶從服務(wù)器接收到數(shù)據(jù)時(shí),用戶可能需要在響應(yīng)之前等待幾分鐘回顧數(shù)據(jù),這種推遲被稱為思考時(shí)間。
  13. 標(biāo)準(zhǔn)日志和擴(kuò)展日志的區(qū)別是什么?Standard Log Option:選擇標(biāo)準(zhǔn)日志時(shí),就會(huì)在腳本執(zhí)行過程中,生成函數(shù)的標(biāo)準(zhǔn)日志并且輸出信息,供調(diào)試用。大型負(fù)載測試場景不用啟用這個(gè)選項(xiàng)。擴(kuò)展日志包括警告和其他信息。大型負(fù)載測試不要啟用該選項(xiàng)。用擴(kuò)展日志選項(xiàng),可以指定哪些附加信息需要加到擴(kuò)展日志中
  14. 解釋以下函數(shù)及他們的不同之處。Lr_debug_messagelr_debug_message 函數(shù)在指定的消息級(jí)別// 處于活動(dòng)狀態(tài)時(shí)發(fā)送一條調(diào)試消息。如果指定的// 消息級(jí)別未處于活動(dòng)狀態(tài),則不發(fā)出消息。Lr_output_message要發(fā)送不是特定錯(cuò)誤消息的特殊通知,Lr_error_message函數(shù)將錯(cuò)誤消息發(fā)送到// 輸出窗口和 Vuser日志文件Lrd_stmt lrd_exec 函數(shù)執(zhí)行 lrd_stmt設(shè)置的 SQL 語句。Lrd_fetch 函數(shù)從結(jié)果集中提取后續(xù)若干行result set. 函數(shù)準(zhǔn)備用于// 通過光標(biāo)輸出字符串(通常為 SQL語句)// 的下一結(jié)果集。對(duì)于 CtLib,它發(fā)出 ct_result// 命令,并且在 ODBC中它運(yùn)行用于當(dāng)前數(shù)據(jù)庫
  15. 什么是吞吐量?單位時(shí)間內(nèi)系統(tǒng)處理客戶端的請(qǐng)求數(shù)。
    30. action****和init、end除了迭代的區(qū)別還有其他嗎?
    在init、end中不能使用集合點(diǎn)、事務(wù)等, init、end只執(zhí)行一次。
    31. ****在什么地方設(shè)置HTTP頁面filter?
    在runtime_settings中download filter里面進(jìn)行設(shè)置。
    32. pot mapping****的原理是什么?
    就是代理服務(wù)器
    33. HTTP****的超時(shí)有哪三種?
    HTTP-request connect timeout、HTTP-request receive timeout、step download timeout
    34. ****什么是contentcheck?如何來用?
    ContentCheck的設(shè)置是為了讓VuGen檢測何種頁面為錯(cuò)誤頁面。如果被測的Web 應(yīng)用沒有使用自定義的錯(cuò)誤頁面,那么這里不用作更改;如果被測的Web應(yīng)用使用了自定義的錯(cuò)誤頁面,那么這里需要定義,以便讓VuGen 在運(yùn)行過程中檢測,服務(wù)器返回的頁面是否包含預(yù)定義的字符串,進(jìn)而判斷該頁面是否為錯(cuò)誤頁
    面。如果是,VuGen就停止運(yùn)行,指示運(yùn)行失敗。
    使用方法:點(diǎn)擊在runtime settings中點(diǎn)擊“contentcheck”,然后新建立一個(gè)符合要求的應(yīng)用程序和規(guī)則,設(shè)定需要查找的文本和前綴后綴即可使用。
    35. network****中的speed simulation是模擬的什么帶寬?
    模擬用戶訪問速度的帶寬。
    36. ****生成WEB性能圖有什么意義?大概描述即可。
    可以很直觀的看到,在負(fù)載下系統(tǒng)的運(yùn)行情況以及各種資源的使用情況,可以對(duì)系統(tǒng)的性能瓶頸定位、性能調(diào)優(yōu)等起到想要的輔助作用。
    37. ****如果刷新controller里的腳本?
    在controller中,點(diǎn)擊detailis-Refresh-script即可。
  16. 進(jìn)程和線程有什么區(qū)別?
    線程有自己的全局?jǐn)?shù)據(jù)。線程存在于進(jìn)程中,因此一個(gè)進(jìn)程的全局變量由所有的線程共享。由于線程共享同樣的系統(tǒng)區(qū)域,操作系統(tǒng)分配給一個(gè)進(jìn)程的資源對(duì)該進(jìn)程的所有線程都是可用的,正如全局?jǐn)?shù)據(jù)可供所有線程使用一樣。在Controller中將使用驅(qū)動(dòng)程序(如mdrv.exe、r3vuser.exe)運(yùn)行vuser。如果按進(jìn)程運(yùn)行每個(gè)vuser,則對(duì)于每個(gè)vuser實(shí)例,都將反復(fù)啟動(dòng)同一驅(qū)動(dòng)程序并將其加載到內(nèi)存中。將同一驅(qū)動(dòng)程序加載到內(nèi)存中會(huì)占用大量的RAM(隨機(jī)存儲(chǔ)器)及其他系統(tǒng)資源。這就限制了可以在任一負(fù)載生成器上運(yùn)行的vuser數(shù)量。如果按線程運(yùn)行每個(gè)vuser,Controller為每50個(gè)vuser(默認(rèn)情況下)僅啟動(dòng)驅(qū)動(dòng)程序(如mdrv.exe)的一個(gè)實(shí)例。該驅(qū)動(dòng)程序?qū)?dòng)幾個(gè)vuser,每個(gè)vuser都按線程運(yùn)行。這些線程vuser將共享父驅(qū)動(dòng)進(jìn)程的內(nèi)存段。這就消除了多次重新加載驅(qū)動(dòng)程序/進(jìn)程的需要,節(jié)省了大量內(nèi)存空間,從而可以在一個(gè)負(fù)載生成器上運(yùn)行更多的Vuser.
  17. 如何把腳本和結(jié)果放到load generator的機(jī)器上?
    在controller中,點(diǎn)擊Results-Results settings,在里面進(jìn)行相應(yīng)的設(shè)置即可。
    40. 如何設(shè)置才能讓集合點(diǎn)只對(duì)一半的用戶生效?
    對(duì)集合點(diǎn)策略進(jìn)行相應(yīng)的設(shè)置即可。即在controller中,點(diǎn)擊Scenario-Rendezvous-policy進(jìn)行相應(yīng)的設(shè)置即可,由于題目中“一半的用戶”沒有說明白具體指什么樣的用戶,現(xiàn)在不好確定具體對(duì)里面的哪個(gè)選項(xiàng)進(jìn)行設(shè)置。
    41. LRd****的API分為幾類
    A:通用的API:,就是跟具體的協(xié)議無關(guān),在任何協(xié)議的腳本里都能用的;
    B:針對(duì)協(xié)議的:像lrs前綴是winsock的;lrd的是針對(duì)database;
    C:自定義的:這個(gè)范圍就比較廣了;比如至少有Java Vuser API、lrapi、XML API。還可以添加WindowsAPI和自定義函數(shù)庫。
  18. LR幾種日志函數(shù)的區(qū)別?
    【lr_message】 int lr_message (const char *format, exp1, exp2,…expn.);中文解釋:lr_message函數(shù)將信息發(fā)送到日志文件和輸入窗口。在VuGen中運(yùn)行時(shí),輸入文件為output.txt。
    【lr_log_message】 int lr_log_message (const char *format, exp1, exp2,…expn.);中文解釋:lr_log_message函數(shù)將消息發(fā)送到Vuser或代理日志文件(取決于應(yīng)用程序),而不是發(fā)送到輸出窗口。通過向日志文件發(fā)送錯(cuò)誤消息或其他信息性消息,可以將該函數(shù)用于調(diào)試。 【lr_error_message】 int lr_error_message (const char *format, exp1, exp2,…expn. );中文解釋:lr_error_message函數(shù)將錯(cuò)誤消息發(fā)送到輸出窗口和Vuser日志文件。要發(fā)送不是特定錯(cuò)誤消息的特殊通知,請(qǐng)使用lr_output_message。
    【lr_output_message】 int lr_output_message (const char *format, exp1, exp2,…expn.);中文解釋:lr_output_message函數(shù)將帶有腳本部分的行號(hào)的消息發(fā)送到輸出窗口和日志文件。
    【lr_debug_message函數(shù)組】 int lr_debug_message (unsigned int message_level, const char *format, … );中文解釋:lr_debug_message函數(shù)在指定的消息級(jí)別處于活動(dòng)狀態(tài)時(shí)發(fā)送一條調(diào)試信息。如果指定的消息級(jí)別未出于活動(dòng)狀態(tài),則不發(fā)送消息。您可以從用戶界面或者使用lr_set_debug_message,將處于活動(dòng)狀態(tài)的消息級(jí)別設(shè)置為MSG_CLASS_BRIEF_LOG或MSG_CLASSS_EXTENDED_LOG。要確定當(dāng)前級(jí)別,
    請(qǐng)使用lr_get_debug_message。 unsigned int lr_get_debug_message ( );中文解釋:lr_get_debug_message函數(shù)返回當(dāng)前的日志運(yùn)行時(shí)設(shè)置。該設(shè)置確定發(fā)送到輸出端的信息。日志設(shè)置是使用運(yùn)行時(shí)設(shè)置對(duì)話框或通過使用lr_set_debug_message函數(shù)指定的。 int lr_set_debug_message (unsigned int message_level, unsigned int on_off); 中文解釋:lr_set_debug_message函數(shù)設(shè)置腳本執(zhí)行的調(diào)試消息級(jí)別message_lvl。通過設(shè)置消息級(jí)別,可以確定發(fā)送哪些信息。啟動(dòng)設(shè)置的方法是將LR_SWITCH_ON作為on_off傳遞,禁用設(shè)置的方法是傳遞LR_SWITCH_OFF。
    【lrd_stmt】:將SQL語句與光標(biāo)關(guān)聯(lián)
    【lrd_fetch】:提取結(jié)果集中得下一條記錄
  19. 性能瓶頸分析方法?
    同一場景1.小用戶量的情況下測試2.大用戶量情況下的測試分析的方法:整個(gè)系統(tǒng)架構(gòu)分析,系統(tǒng)響應(yīng)時(shí)間消耗,利用圖表分析查看事務(wù)響應(yīng)時(shí)間,通過事務(wù)摘要圖分析事務(wù)響應(yīng)時(shí)間,那個(gè)消耗最大(通過小用戶量和大用戶量的響應(yīng)時(shí)間分析,查看那個(gè)事務(wù)響應(yīng)時(shí)間最高),確定哪部分功能是性能的瓶頸,分析window resource圖表,查看cpu使用下列計(jì)數(shù)器標(biāo)識(shí)cpu瓶頸Processor\ Interrupts/secProcessor\ % Processor TimeProcess(process)\ % Processor TimeSystem\ Processor Queue Length通過它來確定是否硬件本身出現(xiàn)瓶頸,或者進(jìn)一步確定應(yīng)該怎么去判斷性能產(chǎn)生瓶頸的地方!下一步去判斷進(jìn)程,那個(gè)進(jìn)程消耗cpu最高下邊就有很多種情況需要你自己去判斷,有可能是進(jìn)程調(diào)用了的函數(shù)消耗了系統(tǒng)資源形成上邊的問題,也有可能是后臺(tái)數(shù)據(jù)庫出現(xiàn)的問題(這個(gè)就要看你的系統(tǒng)配置是什么樣的,比如你的db服務(wù)器和應(yīng)用服務(wù)器都配置在一臺(tái)機(jī)器上)性能產(chǎn)生瓶頸有很多地方,所以需要進(jìn)一判斷,是否是后臺(tái)數(shù)據(jù)庫的問題還有待分析,是那條語句導(dǎo)致的問題需要進(jìn)一步分析判斷。分析原則:? 具體問題具體分析(這是由于不同的應(yīng)用系統(tǒng),不同的測試目的,不同的性能關(guān)注點(diǎn))? 查找瓶頸時(shí)按以下順序,由易到難。服務(wù)器硬件瓶頸-〉網(wǎng)絡(luò)瓶頸(對(duì)局域網(wǎng),可以不考慮)-〉服務(wù)器操作系統(tǒng)瓶頸(參數(shù)配置)-〉中間件瓶頸(參數(shù)配置,數(shù)據(jù)庫,web服務(wù)器等)-〉應(yīng)用瓶頸(SQL語句、數(shù)據(jù)庫設(shè)計(jì)、業(yè)務(wù)邏輯、算法等)注:以上過程并不是每個(gè)分析中都需要的,要根據(jù)測試目的和要求來確定分析的深度。對(duì)一些要求低的,我們分析到應(yīng)用系統(tǒng)在將來大的負(fù)載壓力(并發(fā)用戶數(shù)、數(shù)據(jù)量)下,系統(tǒng)的硬件瓶頸在哪兒就夠了。? 分段排除法很有效分析的信息來源:
    ?1 根據(jù)場景運(yùn)行過程中的錯(cuò)誤提示信息
    ?2 根據(jù)測試結(jié)果收集到的監(jiān)控指標(biāo)數(shù)據(jù)一.
    錯(cuò)誤提示分析分析實(shí)例:
    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、應(yīng)用服務(wù)死掉。(小用戶時(shí):程序上的問題。程序上處理數(shù)據(jù)庫的問題)?B、應(yīng)用服務(wù)沒有死(應(yīng)用服務(wù)參數(shù)設(shè)置問題)例:在許多客戶端連接Weblogic應(yīng)用服務(wù)器被拒絕,而在服務(wù)器端沒有錯(cuò)誤顯示,則有可能是Weblogic中的server元素的 AcceptBacklog屬性值設(shè)得過低。如果連接時(shí)收到connection refused消息,說明應(yīng)提高該值,每次增加25%?C、數(shù)據(jù)庫的連接(1、在應(yīng)用服務(wù)的性能參數(shù)可能太小了 2、數(shù)據(jù)庫啟動(dòng)的最大連接數(shù)(跟硬件的內(nèi)存有關(guān)))
    2 Error: Page download timeout (120 seconds) has expired分析:可能是以下原因造成?A、應(yīng)用服務(wù)參數(shù)設(shè)置太大導(dǎo)致服務(wù)器的瓶頸?B、頁面中圖片太多?C、在程序處理表的時(shí)候檢查字段太大多二.監(jiān)控指標(biāo)數(shù)據(jù)分析1.最大并發(fā)用戶數(shù):應(yīng)用系統(tǒng)在當(dāng)前環(huán)境(硬件環(huán)境、網(wǎng)絡(luò)環(huán)境、軟件環(huán)境(參數(shù)配置))下能承受的最大并發(fā)用戶數(shù)。在方案運(yùn)行中,如果出現(xiàn)了大于3個(gè)用戶的業(yè)務(wù)操作失敗,或出現(xiàn)了服務(wù)器shutdown的情況,則說明在當(dāng)前環(huán)境下,系統(tǒng)承受不了當(dāng)前并發(fā)用戶的負(fù)載壓力,那么最大并發(fā)用戶數(shù)就是前一個(gè)沒有出現(xiàn)這種現(xiàn)象的并發(fā)用戶數(shù)。如果測得的最大并發(fā)用戶數(shù)到達(dá)了性能要求,且各服務(wù)器資源情況良好,業(yè)務(wù)操作響應(yīng)時(shí)間也達(dá)到了用戶要求,那么OK。否則,再根據(jù)各服務(wù)器的資源情況和業(yè)務(wù)操作響應(yīng)時(shí)間進(jìn)一步分析原因所在。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,695評(píng)論 19 139
  • LoadRunner腳本語言基礎(chǔ) 在用LoadRunner做性能測試的過程中規(guī),編寫腳本是一項(xiàng)非常重要的工作,一個(gè)...
    WinterM9閱讀 630評(píng)論 0 1
  • VU——用戶行為的模擬器2 LoadRunner之所以強(qiáng)大,很大原因是VU的功能強(qiáng)大。VU幾乎支持模擬當(dāng)今所有主流...
    WinterM9閱讀 1,134評(píng)論 0 1
  • 1.測試與軟件模型 軟件開發(fā)生命周期模型指的是軟件開發(fā)全過程、活動(dòng)和任務(wù)的結(jié)構(gòu)性框架。軟件項(xiàng)目的開發(fā)包括:需求、設(shè)...
    宇文臭臭閱讀 6,882評(píng)論 5 101
  • 1.測試與軟件模型 軟件開發(fā)生命周期模型指的是軟件開發(fā)全過程、活動(dòng)和任務(wù)的結(jié)構(gòu)性框架。軟件項(xiàng)目的開發(fā)包括:需求、設(shè)...
    Mr希靈閱讀 22,425評(píng)論 7 278

友情鏈接更多精彩內(nèi)容