性能測試的主要指標
一、響應時間:網絡傳輸時間和服務器處理時間
二、並發/並發數/並發用戶數
三、TPS(transaction per second)— —最主要的性能指標
- 每秒通過的事物數
- 服務器處理事務數
四、吞吐量/吞吐率(事物/s Kb/s)
五、資源利用率
- CPU
- 內存
- 磁盤
- I/O 磁盤的換入換出
1.客戶交付一個性能測試項目,請闡述你的實施流程。
答案:
測試設計階段:
1)了解被測系統的性能需求,定義測試目標和范圍;
2)了解系統的技術信息,如系統架構等;
3)確定測試方案、進度安排,並制定測試計划,場景設置方案,及需要收集的測試數據;
4)同相關人員協商討論測試方案;
5)准備數據收集模板;不同項目的性能測試,需要收集的數據不同;針對性的制定一個模板,更符合需要;
測試環境准備:
1)技術准備;選擇性能測試工具;測試方案中涉及到的技術問題;測試數據的收集方案實現;
如:如何監控系統資源等;
2)搭建測試環境;
3)創建初始數據;如虛擬用戶使用的賬號等;
測試執行階段:
1)錄制腳本;
2)調試腳本;
3)執行場景;
4)收集測試數據,並簡單整理;
測試分析階段:
1)分析測試數據;
提交測試報告。
2.解釋5個常用的性能指標的名稱與具體含義。
答案:
●並發:所有用戶在同一時刻對系統執行操作,一般指做同一件事情或操作。
●在線:所有用戶在一段時間內對系統執行操作。
●請求響應時間
從client端發出請求到得到響應的整個時間;
包括:client端響應時間+網絡響應時間+Server端響應時間。
●事務請求響應時間
完成相應事務所用的時間;這個是性能測試中重點關注的指標。
●TPS(Transaction Per Second)
每秒鍾系統能夠處理的交易或事務的數量。它是衡量系統處理能力的重要指標。TPS 是LoadRunner中重要的性能參數指標。
●點擊率(Hit Per Second)
每秒發送的HTTP請求的數量;點擊率越大對Server的壓力越大
●資源利用率
對不同資源的使用程度,如CPU,I/O,內存,……
3.寫出5個Loadrunner中常用函數,並對其中2個舉例說明用法。
答案:
字符串復制
strcpy(str,"Hello ") ;
字符串連接
strcat(str,"World !");
lr_message("str: %s",str);
sprintf(s, "%s love %s.", "I", “ocean"); //產生:“I love ocean. "
變量轉為參數,將變量str的值存到參數Param中
lr_save_string(str,"Param");
參數復制
lr_save_string(lr_eval_string("{Param}"),"Param_1");
參數轉為變量
strcpy(str1,lr_eval_string("{Param_1}"));
4.簡述LoadRunner的工作原理?
答案:loadrunner會自動監控指定的URL或應用程序所發出的請求及服務器返回的響應,它做為一個第三方(Agent)監視客戶端與服務器端的所有對話,然后把這些對話記錄下來,生成腳本,再次運行時模擬客戶端發出的請求,捕獲服務器端的響應。
5.什么是集合點?設置集合點有什么意義?LoadRunner中設置集合點的函數是哪個?
答案:集合點:是一個並發訪問的點,例如在測試計划中,可能會要求系統能夠承受1000 人同時提交數據,在LoadRunner 中可以通過在提交數據操作前面加入集合點,這樣當虛擬用戶運行到提交數據的集合點時,LoadRunner 就會檢查同時有多少用戶運行到集合點,如果不到1000 人,LoadRunner 就會命令已經到集合點的用戶在此等待,當在集合點等待的用戶達到1000 人時,LoadRunner 命令1000 人同時去提交數據,並發訪問的目的。
注意:集合點經常和事務結合起來使用,常放在事務的前面,集合點只能插入到Action 部分,vuser_init和vuser_end 中不能插入集合點。集合點函數如下:lr_rendezvous(“SubmitData”)
6.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”模式進行錄制。
7.如何設置LaodRunner才能讓集合點只對一半的用戶生效?
答案:在Loadrunner中,進入Controller->Scenario->Rendezvous …->Policy,系統彈出Policy對話框。在該對話框中可以設定集合點執行的策略。
第一項:表示當所有用戶數的X%到達集合點時,開始釋放等待的用戶並繼續執行場景。
第二項:表示當前正在運行用戶數的X%到達集合點時,開始釋放等待的用戶並繼續執行場景。
第三項:表示當X個用戶到達集合點時,開始釋放等待的用戶並繼續執行場景。
其中還有一項Timeout between Vusers,就30秒來說,當第一個用戶到達集合點后,再等待30秒,如果在30秒內到達的用戶數達到指定的數量,就開始繼續執行場景。如果在30秒內還沒有達到指定的用戶數量,就不再等待,開始釋放等待的用戶並繼續執行場景。
由上可知,將第一項用戶數設置成50%可。
8.LoadRunner的Controller組件中Pacing參數的作用是什么?
答案:設置LoadRunner中事務(trsaction)在每次循環中的間隔時間,系統可以利用該間隔時間進行相應事務的結束收尾工作的處理。加大Pacing參數,可使系統壓力減小。
9.LoadRunner中如何監控Windows資源?
答案:進入被監視windows系統,開啟以下二個服務:Remote Procedure Call(RPC)和Remote Registry Service;在controller 中,Windows Resources窗口中右擊鼠標選擇Add Measurements,添加被監控windows的IP地址,選擇所屬系統,然后選擇需要監控的指標就可以開始監控。
10.如果讓QALoad模擬LoadRunner中只對關注的性能點進行迭代測試,你有什么好方法?
答案:可以將QAload腳本中關注的事務點寫成一個循環,如果進行長時間的綜合場景測試,則可將其寫成一個永真循環,如while (1) {事務點},則對關注的性能點進行循環,而腳本其他代碼不會進行循環。
11.什么是負載測試?
負載測試是通過逐步增加系統負載,測試系統性能的變化,並最終確定在滿足性能指標的情況下,系統所能承受的最大負載量的測試,例如,訪問一個頁面的響應時間規定不超過1秒,負載測試就是測試在響應時間為1秒時,系統所能承受的最大並發訪問用戶的數量。
12.什么是性能測試?
性能測試:指在一定的約束條件下(指定的軟件、硬件、網絡環境等),確定系統所能承受的最大負載壓力。
13.說明負載測試過程?
第一步:計划測試。在這里,我們需開發一個明確定義的測試計划,以確保該測試方案能完成負載測試目標。
第二步:創建虛擬用戶。創建的腳本需要包含單個虛擬用戶需要執行的操作、多個虛擬用戶作為一個整體要執行的操作、以及能夠作為事務來度量的操作。
第三步:創建場景。一個場景描述了在一個測試會話中發生的事件。它包含了當場景中運行時的機器、腳本和虛擬用戶。我們使用LoadRunner中的Controller創建場景。我們可以創建手動場景也可以創建基於目標的場景。在手動場景中,我們定義虛擬用戶的數量、負載生成器、被分配到每個腳本中虛擬用戶的百分比。對於web測試,我們創建基於目標的場景,其中目標即測試過程中要達成的性能目標。LoadRunner會由此自動為我們創建一個場景。
第四步:運行場景。我們通過配置多個虛擬用戶同時執行任務來模擬對服務器加壓。在測試之前,我們設置場景的配置和計划安排。我們可以運行整個場景、一組虛擬用戶或單個虛擬用戶。
第五步:監控場景。我們使用LoadRunner聯機運行來監測場景執行、事務系統資源,Web資源,Web 服務器資源,Web應用服務器資源,數據庫服務器資源,網絡延遲,流媒體資源,防火牆服務器資源,ERP服務器資源,Java性能監視器。
第六步:分析測試結果。在場景執行時,LoadRunner記錄了應用軟件在不同負載下的性能。我們可以使用LoadRunner的圖表和報告來分析應用軟件的性能。
14.我們什么時候做負載和性能測試?
我們一旦完成界面(GUI)測試,我們就可以執行負載測試。現代的軟件系統架構龐大而復雜的。而單用戶測試主要是側重於系統組件的功能和用戶界面的測試,應用測試側重於整個系統的性能和可靠性。例如,一個典型的應用測試場景,描繪了1000個用戶,同時登錄到系統。這就產生了問題,如系統的響應時間是多少,它會崩潰么;是否兼容不同的應用軟件和系統平台;它是否可以支撐成千上萬的用戶等,這時我們就需要做負載和性能測試。
15.什么是LoadRunner的組件?
LoadRunner的組件有虛擬用戶生成器,控制器、代理程序、LoadRunner的分析器和監控器,LoadRunner在線幫助
16.你用LoadRunner的哪個組件錄制腳本?
虛擬用戶生成器(VuGen)可以用來錄制腳本。它通過多種應用程序類型和通訊協議來確保你開發一個Vuser腳本。
17.在多用戶模式下你用LoadRunnner的哪個組件來回放腳本?
虛擬用戶生成器(VuGen)可以用來錄制腳本。它通過多種應用程序類型和通訊協議來確保你開發一個Vuser腳本。
18.在多用戶模式下你用LoadRunnner的哪個組件來回放腳本?
Controller組件可以用來在多用戶模式下回放腳本。這個過程可以在一組虛擬用戶以組的形式執行腳本的場景中運行時完成。
19.什么是場景
場景定義了發生在每個測試會話中的事件。例如,一個場景定義和控制了要加載的虛擬用戶的數量,要被執行的動作,虛擬用戶模擬壓力時的機器。
20.解釋Web Vuser腳本的錄制模式
我們使用VuGen通過記錄一個用戶在客戶端執行典型的業務流程來開發一個Vuser腳本。VuGen通過記錄客戶端和服務器之間的交互來創建腳本。例如,基於Web的應用程序,VuGen監測客戶端直到數據庫,跟蹤所有發送出的請求,再從數據庫服務器接收。我們使用VuGen:監測應用程序和服務器的交互;使形成函數調用;插入生成的函數調用到一個Vuser腳本中。
21.為什么創建參數?
參數就像腳本中的變量。他們被用來改變對服務器的輸入值來模擬真正的用戶。每次當腳本運行時,不同的數據設置被發送到服務器。為了更精確的在Controller中測試,從而更好的模擬使用模型;一個腳本在系統上模擬很多不同的用戶。
22.什么是關聯?
關聯是用來獲取每次腳本運行時由嵌套請求產生的唯一的數據。關聯提供值以避免產生重復值的錯誤,並且優化代碼(避免嵌套請求)。自動關聯是我們自己為關聯設置的一定規則。它可以是應用服務器特定的。這里的值被通過規則創建的數據取代。在手動關聯里,我們要關聯的值被瀏覽和創建關聯以用來關聯。
23.解釋自動關聯和手動關聯的區別
自動關聯:在tools-recording options的correlation中,選中enable correlation during recording的復選框,在下面list中選擇你需要自動關聯的協議。這樣在錄制腳本時,在可關聯處會彈出一個dialog進行選擇是否對該處進行關聯,這樣,在你腳本錄制好之后,關聯已經自動生成了,十分方便。
另一種自動關聯的方法是,你在tools-recording options的correlation中,不選中enable correlation during recording的復選框的情況下進行自動關聯,你可以先錄制一個腳本,然后選擇vuser-scan action for correlation或者直接ctrl+f8來運行一下腳本,這樣也能自動找到不同的地方而進行自動關聯,此時你只需要鈎選你需要關聯的地方后點擊關聯即可
手工關聯:需要錄制2個相同業務流程的虛擬用戶腳本,然后通過tools-compare with vusers來打開wdiff.exe對2個腳本進行比較,找到需要關聯的部分,然后指定左右邊界,然后將腳本中原來的值替換成參數即可
24.你在哪里設置自動關聯的選項
從web自動關聯的觀點來說,可以在錄制選項中和關聯表單中設置。這里我們可以使整個腳本關聯,選擇在線信息或者離線的動作,在這里我們可以定義關聯的規則。為數據庫自動關聯可以使用顯示輸出窗口和為了關聯瀏覽,找出關聯查詢的圖表,選擇我們想關聯的查詢值來完成。如果我們知道要被關聯的特殊值,我們只用為這個值創建關聯,指定如何創建這個值
25.什么函數可以捕捉到web Vuser腳本的動態值?
Web_reg_save_param函數保存動態的數據信息到一個參數中。
26.什么時候你在虛擬用戶產生器中禁用日志,什么時候選擇標准日志和擴展日志?
一旦我們調試腳本來驗證它的功能,我們可以只記錄錯誤。當我們在場景中添加一個腳本,日志記錄將自動被禁用。標准日志選項:當您選擇標准日志,它在腳本執行調試時創建一個標准的功能和發送信息的日志。大負荷的測試場景時,禁用此選項。當你復制一個腳本到一個場景,日志自動禁用擴展日志選項:選擇擴展日志創建一個擴展的日志,包括警告和其他信息。禁用此選項為大負荷的測試場景。當你復制一個腳本的場景,將被自動禁用日志記錄。我們可以指定附加信息,用擴展日志選項添加到擴展日志中。
27.你如何調試LoadRunner的腳本?
VuGen包含兩個選項幫助調試VuGen腳本—通過逐步命令和斷點運行某一步。選項對話框中的Debug設置,使我們決定在場景運行期間進行跟蹤的程度。Debug信息被寫到輸出窗口,我們可以使用lr_set_debug_message函數手動設置你的腳本中的信息類。如果我們希望得到關於一小部分腳本的調試信息時,這就有意義了。
28.你怎么寫LR中用戶自定義的函數?寫幾個你以前項目中的函數?
在我們創建用戶自定義的函數之前我們需要創建外部的庫函數。我們添加這個庫到VuGen bin目錄下。一旦庫被添加,然戶我們分配給用戶自定義的函數作為參數。函數應該有以下格式:__declspec(dllexport)char*<函數名稱>(char*,char *)。用戶自定義函數如下:GetVersion,GetCurrentTime,GetPltform,這些都是我之前的項目中用到的用戶自定義的函數。
29.在run-time setting里你可以設置哪些改變?
Run Time Setting中我們所做的是:a)Pacing—它有迭代次數。b)Log—在此,我們有已禁用的標准日志。c)擴展Think Time—在Think Time里有兩個選項,忽略think time和回放think time。d)General—在General選項卡中,我們可以設置vusers作為進程或者多線程,將每一步作為一個事務。
30.你在哪里設置Vuser測試時迭代?
我們在VuGen中的Run Time Setting中設置迭代。這個導航是Run Time Setting,Pacing選項卡,設置迭代次數。
31.你如何在負載下執行功能測試?
負載下的功能可以通過同時運行多個Vuser來測試。通過增加一定數量的Vuser,我們可以判斷服務器可以承受多少負載。
32.什么是Ramp up?你如何設置?
這個選項被用來逐步增加Vuser的數量/服務器上的負載。初始值設置,間隔的等待值可以被指定。要設置Ramp up,進入“場景調度選項”
33.Vuser作為線程運行的優勢是什么?
VuGen提供使用多線程的設施。這使每個產生器中運行更多的Vuser。如果Vuser作為進程運行,相同的驅動程序為每個Vuser加載到內存,從而占用大量的內存。這限制了在單發生器中運行的Vuser的數量。如果Vuser作為線程運行,為給定數量的Vuser(如100),只有一個驅動程序的實例被加載到內存。每個線程共享父驅動程序的內存,從而使每個產生器運行更多的Vuser。
34.如果你想停止執行出錯的腳本,怎么做?
Lr_abort函數中止執行Vuser 腳本。它指示Vuser停止執行Action部分,執行vuser_end部分,並結束執行。這個函數是有用的,當你需要手工停止一個腳本的執行,作為一個指定錯誤條件下的結果。當你使用這個函數停止一個腳本,Vuser被分配成停止狀態。為讓它生效,我們必須首先在Run—Time Setting中取消選擇“Continue on error”
35.響應時間和吞吐量間的關系是什么?
吞吐量圖表顯示的是Vuser每秒從服務器收到的以字節為單位的數據量。當我們比較它和事務響應時間,我們會發現,若吞吐量下降,響應時間也會下降。同樣,高峰時期的吞吐量和最高的響應時間大約在同一個時間。36.你如何識別性能瓶頸?
性能瓶頸可以使用監控器監測。這些監控器可能是應用服務器監控器、web服務器監控器和網絡監控器。它們幫助找出在場景中導致響應時間增加有問題的區域。通常所做的測試指標是性能響應時間、吞吐量,點擊率,網絡延遲圖等
37.如果web服務器、數據庫服務器、網絡都一切正常,那么哪里可能有問題?
問題可能是系統本身,應用程序服務器或為應用程序編寫的代碼。
38.你如何找出web服務器相關的問題?
利用web資源監控器,我們可以發現web服務器的性能。使用這些監測器我們可以分析發生在場景中的web服務器的吞吐量,每秒點擊數、以及每秒HTTP響應數,每秒下載的網頁數量。
39.你是怎么找到數據庫中的相關問題?
監視運行“數據庫”監測器和在“數據資源圖”的幫助下,我們可以發現數據庫中的相關問題。例如您可以在Controller運行前指定您想要的資源來監控,然后你可以看到數據庫中的相關問題
40.覆蓋圖和關聯圖之間的區別是什么?
覆蓋圖:它覆蓋兩個圖表的內容,使共用一個X軸。合並后的圖形左Y軸顯示當前圖形中的值,右Y軸顯示合並圖的Y軸的值。關聯圖:繪制相互對立的兩個圖表的Y軸。活動圖的Y軸,成為合並后的圖的X軸。合並圖的Y軸成為合並后的圖的Y軸
41.你是怎么計划負載的?標准是什么?
計划負載測試,以決定用戶數量,我們將使用的機器型號,在哪里運行。它是基於兩個重要文件,任務分配圖和事務狀況。任務分配圖,給我們提供用戶數量為一個特定的業務信息和負載時間。從這個圖決定使用高峰期和不工作時段。事務配置文件,為我們提供了有關交事務方面的情況,包括事務的名稱和我們決定的它們關於場景的優先等級。
42.vuser_init動作包含什么?
Vuser_init動作包含登錄到服務器的程序
43.vuser_end動作包含什么?
Vuser_end部分包含注銷的程序。
44.什么是Think Time?你如何改變這個閾值?
Think Time是一個真實的用戶動作之間的等待時間。例如:當一個用戶從服務器接收數據時,用戶可以在響應前等待幾秒鍾來檢查響應數據。此延遲就是Think Time。更改這個閾值:閾值是一個標准水平,思考時間低於閾值水平時將被忽略,Vugen不會生成思考時間語句。默認值是5秒。我們可以在Vugen錄制選項中改變Think Time 閾值。
45.簡述使用Loadrunner的步驟
制定性能測試計划—>開發測試腳本—>設計測試場景—>執行測試場景—>監控測試場景—>分析測試結果
46.什么是集合點?設置集合點有什么意義?Loadrunner中設置集合點的函數是哪個?
在性能測試過程中,需要模擬大量用戶在同一時刻,訪問系統並同時操作某一任務,可以通過配置集合點來實現,多個用戶同時進行某操作;
集合點可以在服務器上創建密集的用戶負載,使LoadRunner能夠測試服務器在負載狀態下的性能。
設置集合點函數:lr_rendezvous(“Meeting”);// Meeting是集合點名稱
47.請解釋一下如何錄制web腳本?
48.請解釋一下自動關聯和手動關聯的不同。
49.哪個函數是用來截取虛擬用戶腳本中的動態值?(手工關聯)
Web_reg_save_param函數主要根據需要做關聯的動態數據前面和后面的固定字符串來識別、提取動態數據,所以在做關聯時,需要找出動態數據的左、右邊界字符串。
1.函數原型:
int web_reg_save_param (const char *ParamName, , LAST);
2.參數說明:
ParamNam:存放動態數據的參數名稱
List of Attributes:其它屬性,包含Notfound、LB、RB、RelFrameID、Search、ORD、SaveOffset、Convert、SaveLen。
50.你如何在負載測試模式下執行功能測試?
在負載測試模式下,可以通過同時運行數個虛擬用戶,通過增加虛擬用戶數,確定服務器在多大的負載量下,仍然可以正常運行,我一般進行核心功能操作,驗證核心功能運行是否正常。
51.什么是逐步遞增?你如何來設置?
虛擬用戶數隨着負載時間逐漸增加,可以幫助確定系統響應時間減慢的准確時間點。
可以在“加壓”選項卡中進行設置:如下圖所示,將設置更改為:“每30 秒啟動2 個Vuser”
52.當你需要在出錯時停止執行腳本,你怎么做?
53.響應時間和吞吐量之間的關系是什么?
當系統吞吐量未達到系統處理極限時,系統性能不會衰減,交易平均響應時間一般也不會遞增,當系統達到吞吐量極限時,客戶端交易會在請求隊列中排隊等待,等待的時間會記錄在響應時間中,故交易平均響應時間一般會遞增。
54.說明一下如何在LR中配置系統計數器?
以windows資源監控為例,可右鍵點“添加度量”,輸入系統IP、選擇平台類型,確定即可,詳細參加LR自帶操作手冊^_^。
對於監控不同類型的操作系統,需要做一些准備工作,可參見監控操作系統資源部分。
55..如果web服務器、數據庫以及網絡都正常,問題會出在哪里?
56.如何發現web服務器的相關問題?
57..如何發現數據庫的相關問題?
58.解釋所有web錄制配置?
59.你如何設計負載?標准是什么?
60.什么是吞吐量?
61.在LoadRunner中為什么要設置思考時間和pacing
錄制時記錄的是客戶端和服務端的交互,如果要精確模擬用戶的行為,那么客戶操作客戶端時花費了很多時間要怎么模擬呢?
錄入填寫提交的內容,從列表中下拉搜索選擇特定的值等,這時LOADRUNNER 不會記錄用戶的客戶端操作,而是記錄了用戶這段時間,成為思考時間(Think-time),因為用戶的這些客戶端操作不會影響服務端,只是讓服務器端在這段時間內沒有請求而已。,所以加入思考時間就能模擬出熟練的或者生疏的用戶操作,接近實際對於服務端的壓力。
Vuser 思考時間模擬實際用戶在不同操作之間等待的時間。例如,當用戶收到來自服務器的數據時,可能要等待幾秒鍾查看數據,然后再做出響應。這種延遲就稱為“思考時間”。VuGen 使用lr_think_time 函數將思考時間值錄制到Vuser 腳本中。以下錄制的函數指明用戶等待了8 秒鍾才執行下一個操作:
lr_think_time(8);
當您運行了Vuser 腳本並且Vuser 遇到了上述lr_think_time 語句時,默認情況下,Vuser 將等待8 秒鍾后再執行下一個操作。可以使用思考時間運行時設置來影響運行腳本時Vuser 使用錄制思考時間的方式。
62.如何理解TPS?
TPS主要還是體現服務器對當前錄制的事務的處理速度快慢。TPS高並不代表性能好。
TPS 是Transactions Per Second 的縮寫,也就是事務數/ 秒。它是軟件測試結果的測量單位。一個事務是指一個客戶機向服務器發送請求然后服務器做出反應的過程。客戶機在發送請求時開始計時,收到服務器響應后結束計時,以此來計算使用的時間和完成的事務個數,最終利用這些信息來估計得分。客戶機使用加權協函數平均方法來計算客戶機的得分,試軟件就是利用客戶機的這些信息使用加權協函數平均方法來計算服務器端的整體TPS得分。
63.loadrunner中的設置線程和進程的區別
loadrunner中,在進行運行設置中有一項選擇,是按進程運行Vuser或按線程運行Vuser?下面進行分別來講:
(1)按進程運行Vuser:Controller將使用驅動程序mdrv運行Vuser。如果按進程方式運行每個Vuser,則對於每個Vuser實例,都將啟動一個mdrv進程。如果設置了10個Vuser,則在任務管理器中出現10個mdrv進程。多個mdrv進程肯定會占用大量內存及其他系統資源,這就限制了可以在任一負載生成器上運行的Vuser的數量。
(2)按線程運行Vuser:及設置了10個Vuser,其只會調用一個驅動程序mdrv.而每個Vuser都按線程運行,這些線程Vuser將共享父進程的內存段。這就節省了大量內存控件,從而可以在一個負載生成器上運行更多的Vuser。
任何選擇都是有兩面性的。選擇線程方式運行Vuser會帶來一些安全問題。因為線程的資源是從進程資源中分配出來的,因此同一個進程中的多個線程會有共享的內存空間,這樣可能會引起多個線程的同步問題,調度不好,就會出問題,不如A線程要用的資源就必須等待B線程釋放,而B 也在等待其他資源釋放才能繼續。這就會出現這樣的問題:同一個測試場景,用線程並發就會超時失敗或報錯,而用進程並發就沒錯。
雖然會有區別,但兩種方式的運行都會給服務端造成的壓力是一樣的。
64.loadrunner如何遍歷一個頁面中的url並進行訪問?
65.HTML-Based scrīpt 和URL-Based scrīpt 錄制的區別?
基於瀏覽器的應用程序推薦使用HTML-Based scrīpt。
不是基於瀏覽器的應用程序推薦使用URL-Based scrīpt。
如果基於瀏覽器的應用程序中包含了Java scrīpt並且該腳本向服務器產生了請求,比如DataGrid的分頁按鈕等,也要使用URL-Based scrīpt方式錄制。
基於瀏覽器的應用程序中使用了HTTPS安全協議,使用URL-Based scrīpt方式錄制。
錄制過程中不要使用瀏覽器的“后退”功能,LoadRunner對其支持不太好。
66.本次通過loadRunner錄制SQL Server介紹一下如何測試一個sql語句或存儲過程的執行性能。
主要分如下幾個步驟完成:
第一步、測試准備
第二步、配置ODBC數據源
第三步、錄制SQL語句在Sql Server查詢分析器中的運行過程
第四步、優化錄制腳本,設置事務
第五步、改變查詢數量級查看SQL語句的性能
第六步、在controller中運行腳本
67.LoadRunner如何創建腳本?
(1)啟動VuGen:選擇需要新建的協議腳本,可以創建單協議,或是多協議腳本
(2)點擊Start Record按鈕,輸入程序地址,開始進行錄制
(3) 使用VuGen進行錄制:創建的每個Vuser 腳本都至少包含三部分:vuser_init、一個或多個Actions 及vuser_end。錄制期間,可以選擇腳本中VuGen 要插入已錄制函數的部分。運行多次迭代的Vuser 腳本時,只有腳本的Actions部分重復,而vuser_init和vuser_end部分將不重復
68.LoadRunner如何設置Recording Options 選項?(以單協議http/html為例)
1.菜單tools->Recording Options進入錄制的設置窗體
2.Recording標簽頁:選用哪種錄制方式
3.Browser標簽頁:瀏覽器的選擇
4.Recording Proxy 標簽頁:瀏覽器上的代理設置
5.Advanced 標簽頁:可以設置錄制時的think time,支持的字符集標准等
6.Correlation標簽頁:手工設置關聯,通過關聯可在測試執行過程中保存動態值。使用這些設置可以配置VuGen 在錄制過程中執行的自動關聯的程度。
69.LoadRunner如何選擇協議?
LoadRunner屬於應用在客戶端的測試工具,在客戶端模擬大量並發用戶去訪問服務器,從而達到給服務器施加壓力的目的。所以說LoadRunner模擬的就是客戶端,其腳本代表的是客戶端用戶所進行的業務操作,即只要腳本能表示用戶的業務操作就可以。
1.LR支持多種協議,請大家一定要注意,這個地方協議指的是你的Client端通過什么協議訪問的Server,Client一般是面向最終使用者的,Server是第一層Server端,因為現在的體系架構中經常Server層也分多個層次,什么應用層,什么數據層等等,LR只管Client如何訪問第一層Server.
2.特別要注意某些應用,例如一個Web系統,這個系統是通過ActiveX控件來訪問后台的,IE只是一個容器,而ActiveX控件訪問后台是通過COM/DCOM協議的,這種情況就不能使用Web 協議,否則你什么也錄制不到,所以,LR工程師一定要了解應用程序的架構和使用的技術。
3.象HTTPS,一般來講一定要選擇多協議,但在選擇具體協議的時候一定只選Web協議,這時候才能作那個端口映射。
n通常協議選擇
1.對於常見的B/S系統,選擇Web(Http/Html)
2.測一個C/S系統,根據C/S結構所用到的后台數據庫來選擇不同的協議,如果后台數據庫是
sybase,則采用sybaseCTlib協議,如果是SQL server,則使用MS SQL server的協議,至於oracle 數據庫系統,當然就使用Oracle 2-tier協議。
3.對於沒有數據庫的C/S(ftp,smtp)這些可以選擇Windwos Sockets協議。
4.至於其他的ERP,EJB(需要ejbdetector.jar),選擇相應的協議即可.
5. 一般可以使用Java vuser協議錄制由java編寫的C/S模式的軟件, ,當其他協議都沒有用時,
只能使用winsocket協議
70.Loadrunner支持哪些常用協議?
Web(HTTP/HTML)
Sockets
.net 協議
web services
常用數據庫協議(ODBC,ORACLE,SQLSERVER 等)
郵件(SMTP、pop3)
其它協議
71.性能測試的類型都有哪些?
負載測試(Load Test)
通過逐步增加系統負載,測試系統性能的變化,並最終確定在滿足性能指標的情況下,系統所能承受的最大負載量的測試。
壓力測試(Stress Test)
通過逐步增加系統負載,測試系統性能的變化,並最終確定在什么負載條件下系統性能處於失效狀態,並以此來獲得系統能夠提供的最大服務級別的測試。
壓力測試是一種特定類型的負載測試。
疲勞強度測試
通常是采用系統穩定運行情況下能夠支持的最大並發用戶數或者日常運行用戶數,持續執行一段時間業務,通過綜合分析交易執行指標和資源監控指標來確定系統處理最大工作量強度性能的過程。
疲勞強度測試可以反映出系統的性能問題,例如內存泄漏等。
大容量測試(Volume Test)
對特定存儲、傳輸、統計、查詢業務的測試。
72.Loadrunner常用的分析點都有哪些?
Vusers:
提供了生產負載的虛擬用戶運行狀態的相關信息,可以幫助我們了解負載生成的結果。
Rendezvous(負載過程中集合點下的虛擬用戶):
當設置集合點后會生成相關數據,反映了隨着時間的推移各個時間點上並發用戶的數目,方便我們了解並發用戶的變化情況。
Errors(錯誤統計):
通過錯誤信息可以了解錯誤產生的時間和錯誤類型,方便定位產生錯誤的原因。
Errors per Second(每秒錯誤):
了解在每個時間點上錯誤產生的數目,數值越小越好。通過統計數據可以了解錯誤隨負載的變化情況,定為何時系統在負載下開始不穩定甚至出錯。
Average Transaction Response Time(平均事務響應時間):
反映隨着時間的變化事務響應時間的變化情況,時間越小說明處理的速度越快。如果和用戶負載生成圖合並,就可以發現用戶負載增加對系統事務響應時間的影響規律。
Transactions per Second(每秒事務):
TPS吞吐量,反映了系統在同一時間內能處理事務的最大能力,這個數據越高,說明系統處理能力越強。
Transactions Summary(事務概要說明)
統計事物的Pass數和Fail數,了解負載的事務完成情況。通過的事務數越多,說明系統的處理能力越強;失敗的事務數越小說明系統越可靠。
Transaction performance Summary(事務性能概要):
事務的平均時間、最大時間、最小時間柱狀圖,方便分析事務響應時間的情況。柱狀圖的落差越小說明響應時間的波動小,如果落差很大,說明系統不夠穩定。
Transaction Response Time Under Load(用戶負載下事務響應時間):
負載用戶增長的過程中響應時間的變化情況,該圖的線條越平穩,說明系統越穩定。
Transactions Response time(事務響應時間百分比):
不同百分比下的事務響應時間范圍,可以了解有多少比例的事物發生在某個時間內,也可以發現響應時間的分布規律,數據越平穩說明響應時間變化越小。
Transaction Response Time(各時間段上的事務數):
每個時間段上的事務個數,響應時間較小的分類下的是無數越多越好。
Hits per Second(每秒點擊):
當前負載重對系統所產生的點擊量記錄,每一次點擊相當於對服務器發出了一次請求,數據越大越好。
Throughput(吞吐量):
系統負載下所使用的帶寬,該數據越小說明系統的帶寬依賴就越小,通過這個數據可以確定是不是網絡出現了瓶頸。
HTTP Responses per Second(每秒HTTP響應):
每秒服務器返回各種狀態的數目,一般和每秒點擊量相同。點擊量是客戶端發出的請求數,而HTTP 響應數是服務器返回的響應數。如果服務器的響應數小於點擊量,那么說明服務器無法應答超出負載的連接請求。
Connections per Second(每秒連接):
統計終端的連接和新建的連接數,方便了解每秒對服務器產生連接的數量。同時連接數越多,說明服務器的連接池越大,當連接數隨着負載上升而停止時,說明系統的連接池已滿,通常這時候服務器會返回504錯誤。需要修改服務器的最大連接來解決該問題。
LoadRunner不執行檢查方法怎么解決?
在錄制Web協議腳本中添加了檢查方法Web_find,但是在腳本回放的過程中並沒有執行。
錯誤現象:在腳本中插入函數Web_find,在腳本中設置文本以及圖像的檢查點,但是在回放過程中並沒有對設置的檢查點進行檢查,即Web_find失效。
錯誤分析:由於檢查功能會消耗一定的資源,因此LoadRunner默認關閉了對文本以及圖像的檢查,所以在設置檢查點后,需要開啟檢查功能。
解決辦法:打開運行環境設置對話框進行設置,在“Run-time Settings”的“Internet Protocol”
選項里的“Perference”中勾選“Check”下的“Enable Image and text check”選項。73.並發用戶數是什么?跟在線用戶數什么關系?
並發主要是針對服務器而言,是否並發的關鍵是看用戶操作是否對服務器產生了影響。因此,並發用戶數量的正確理解為:在同一時刻與服務器進行了交互的在線用戶數量,這種交互既可以是單向的傳輸數據,也可以是雙向的傳送數據。
並發用戶數是指系統運行期間同一時刻進行業務操作的用戶數量。
該數量取決於用戶操作習慣、業務操作間隔和單筆交易的響應時間。
使用頻率較低的應用系統並發用戶數一般為在線用戶數的5%左右。
使用頻率較高的應用系統並發用戶數一般為主線用戶數的10%左右
74.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”模式來錄制腳本。
75.LoadRunner HTTP服務器狀態代碼都有哪些?如何解決?
在錄制Web協議腳本回放腳本的過程中,會出現HTTP服務器狀態代碼,例如常見的頁面-404錯誤提示、-500錯誤提示。
錯誤現象1:-404 Not Found服務器沒有找到與請求URI相符的資源,但還可以繼續運行直到結束。
錯誤分析:此處與請求URI相符的資源在錄制腳本時已經被提交過一次,回放時不可再重復提交同樣的資源,而需要更改提交資源的內容,每次回放一次腳本都要改變提交的數據,保證模擬實際環境,造成一定的負載壓力。
解決辦法:在出現錯誤的位置進行腳本關聯,在必要時插入相應的函數。
錯誤現象2:-500 Internal Server Error服務器內部錯誤,腳本運行停止。
錯誤分析:服務器碰到了意外情況,使其無法繼續回應請求。
解決辦法:出現此錯誤是致命的,說明問題很嚴重,需要從問題的出現位置進行檢查,此時需要此程序的開發人員配合來解決,而且產生的原因根據實際情況來定,測試人員無法單獨解決問題,而且應該盡快解決,以便於后面的測試
76.HTTP的超時有哪三種?
HTTP-request connect timeout、HTTP-request receive timeout、step download timeout
77.在什么地方設置HTTP頁面filter?
在runtime_settings中download filter里面進行設置。
78.如何設置可以讓一個虛擬IP對應到一個Vuser?
利用線程和進程做中介,邏輯上的對應。
選中Expert Mode,設置Options中的General
79.什么是contentcheck?如何來用?
ContentCheck的設置是為了讓VuGen 檢測何種頁面為錯誤頁面。如果被測的Web 應用沒有使用自定義的錯誤頁面,那么這里不用作更改;如果被測的Web 應用使用了自定義的錯誤頁面,那么這里需要定義,以便讓VuGen 在運行過程中檢測,服務器返回的頁面是否包含預定義的字符串,進而判斷該頁面是否為錯誤頁
面。如果是,VuGen就停止運行,指示運行失敗。
使用方法:點擊在runtime settings中點擊“contentcheck”,然后新建立一個符合要求的應用程序和規則,設定需要查找的文本和前綴后綴即可使用。
http://www.doczj.com/doc/78709eeef90f76c661371ac7.htmlwork中的speed simulation是模擬的什么帶寬?
模擬用戶訪問速度的帶寬。
81.生成WEB性能圖有什么意義?大概描述即可。
可以很直觀的看到,在負載下系統的運行情況以及各種資源的使用情況,可以對系統的性能瓶頸定位、性
能調優等起到想要的輔助作用。
82.WAN emulation是模擬什么的?
可以很直觀的看到,在負載下系統的運行情況以及各種資源的使用情況,可以對系統的性能瓶頸定位、性
能調優等起到想要的輔助作用。
83.如何設置才能讓集合點只對一半的用戶生效?
84.在設置windows資源圖監控的時候,用到的是什么端口和協議?在這一過程中,會有大概哪
些問題?(大概描述)
microsoft-ds :445 ;要有權限、開啟服務。樹視圖和腳本視圖各有什么優點?
85.需要關聯的數據怎么確定?
86.
87.樹視圖和腳本視圖各有什么優點?
Tree View的好處是使用戶更方便地修改腳本,Tree View支持拖拽,用戶可以把任意一個節點拖拽到他想
要的地方,從而達到修改腳本的目的。用戶可以右鍵單擊節點,進行修改/刪除當前函數參數屬性,增加函
數等操作,通過Tree View能夠增加LoadRunner提供的部分常用通用函數和協議相關函數。
Script View適合一些高級用戶,在Script View中能夠看到一行行的API函數,通過Script View 向腳本中增加一些其他API函數,對會編程的高手來說很方便
88.LR中的API分為幾類?
A:通用的API:,就是跟具體的協議無關,在任何協議的腳本里都能用的;
B:針對協議的:像lrs前綴是winsock的;lrd的是針對database;
C:自定義的:這個范圍就比較廣了;
89.解釋以下函數及他們的不同之處。
Lr_debug_message
Lr_output_message
Lr_error_message
Lrd_stmt
Lrd_fetch
二、選擇題(2*5=10分)
1.During the run of a scenario, which LoadRunner component stores the
performance monitoring data?B
A. Analysis
B. Controller
C. File server
D. Load generator/host
2.Where are the results stored during the run of a scenario?D
A. Analysis
B. Controller
C. Utility server
D. Load generator
3. A script was recorded with an average think time for an advanced user. An
advanced user pauses 5 seconds between clicks. A first-time user pauses an average of 10 seconds between clicks. How can you modify the think time run-time settings to emulate a first-time user?C
A. Set the think time to s recorded
B. Set the think time to multiply the recorded think time by 4
C. Set the think time to a random percentage between 150% - 250%
D. Set the think time to replay as recorded, but limit the think time to 10 seconds
4.Which HTTP error code indicates that an individual business process is failing
under load or the web application itself has crashed?D
A.200
B. 403
C. 401
D. 500
5.What is an intersection point in a business process?B
A. Scenario
B. Rendezvous
C. Transaction
D. Service level agreement