轉:loadrunner經典面試題

在LoadRunner中爲何要設置思考時間和pacing 
答: 錄製時記錄的是客戶端和服務端的交互,若是要精確模擬 用戶的行爲,那麼客戶操做客戶端時花費了不少時間要怎麼模擬呢?
錄入 填寫提交的內容,從列表中下拉搜索選擇特定的值等,這時LOADRUNNER 不會記錄用戶 的客戶端操做,而是記錄了用戶這段
時間,成爲思考時間(Think-time),由於用戶的這些客戶端操做不會影響服務端,只是讓服務器端在這段時間內沒有請求而已。,所
以加入思考時間就能模擬出熟練的或者生疏的用戶操做,接近實際對於服務端的壓力。 
   Vuser 思考時間模擬實際用戶在不一樣操做之間等待的時間。例如,當用戶收到來自服務器的數據時,可能要等待幾秒鐘查看數
據,而後再作出響應。這種延遲就稱爲「思考時間」。VuGen 使用 lr_think_time 函數將思考時間值錄製到 Vuser 腳本中。如下錄
制的函 數指明用戶等待了 8 秒鐘才執行下一個操做:
   lr_think_time(8);
   當您運行了 Vuser 腳本而且 Vuser 遇到了上述 lr_think_time 語句時,默認狀況下,Vuser 將等待 8 秒鐘後再執行下一個操做。可
以使用思考時間運行時設置來影響運行腳本時 Vuser 使用錄製思考時間的方式。 
如何理解TPS? 
答:TPS主要仍是體現服務器對當前錄製的事務的處理速度快慢。TPS高並不表明性能好。
TPS 是Transactions Per Second 的 縮 寫,也就是事務數/ 秒。它是軟件測試結果的測量單位。一個事務是指一個客戶機向服
務器發送請求而後服務器作出反應的過程。客戶機在發送請求時開始計時,收到服務器響應後結束計時,以此來計算使用的時
間和完成的事務個數,最終利用這些信息來估計得分。客戶機使用加權協函數平均方法來計算客戶機的得分,試軟件就是利用
客戶機的這些信息使用加權協函 數平均方法來計算服務器端的總體TPS得分。
如何使用loadrunner批量添加樹型結構數據 
/*此段代碼爲:添加」樹狀」節點數據,代碼源於*****項目,此碼僅添加數據到第三層。*/
/*前置條件:用戶已登陸並具備操做權限*/
/*思路:新增一級節點–>獲取一級ID–>添加二級節點–>展開一級節點–>獲取二級ID–>添加三級數據*/
/*說明:添加一級節點–>逐個讀取一級節點ID–>讀到一個一級節點就給它添加二級節點–>
二級節點添加完一次就讀一次ID–>讀一次二級節點直接添加三級節點*/
/*修改」樹狀」節點數據的代碼相似,Submit修改時,要多建一個參數TreeCode*/
int i,j,k,p; //循環變量
int No1,No2,No3; //分別保存1、2、三級節點的個數
int M1,M2,M3; //分別定義1、二級節點的數量,三級節點不保存數據,故未限制大小
char *MyID1[90],*MyID2[90],m[40]; //MyID1用於儲存全部一級節點數據,m爲臨時數組變量
/* MyID的長度也大於M的長度;m的長度要大於ID的長度+1 */
M1=30;M2=20;M3=10;
/*RootID名稱須要按模塊修改,Control裏須要從新參數化*/
lr_save_string (「FindRootIDinWebResource」,」RootID」);//根節點的ID,修改此處便可使用
lr_output_message (「當前根節點的ID號爲:%s」,lr_eval_string (「{RootID}」));
for (i=1;i<=M1 ;i++ ) //添加M1個一級節點
{
lr_save_int(i,"L");
//#########添加一級節點
web_submit_data("{RootID}{L}");
} lr_output_message ("已添加%d個一級節點",M1);
web_reg_save_param("IDS", //獲取一級節點ID
"LB=value=\"",
"RB=\"",
"ORD=All",
LAST);
//#######展開根節點
web_url("{RootID}");
No1=atoi(lr_eval_string ("{IDS_count}")); //獲取ID的數量,保存在變動No1中
lr_output_message ("獲取一級節點的數量爲: %d",No1);
if (No1>M1) { No1=M1;}//讓No1<=M1
for (i=1;i<=No1;i++) //將一級節點的ID寫入MyID1中
{
sprintf(m,"{IDS_%d}",i); //生成動態字符串{IDS_i},存在變量m中************核心步驟
MyID1[i-1]=lr_eval_string (m); //讀取{IDS_i}參數對應的值,保存到MyID1中****核心步驟
lr_output_message ("一級節點第%d共%d,m=%s即MyID1[%d]=,%s",i,No1,m,i-1,MyID1[i-1]);
lr_save_string (MyID1[i-1],"SubID");//將MyID1轉換爲參數{SubID}以便使用
for (j=1;j<=M2;j++ )//添加M2個二級節點
{
lr_save_int(j,"M");
//#######添加下級節點
web_submit_data("{RootID}{SubID}{M}");
} lr_output_message ("已添加%d個二級節點",M2);
web_reg_save_param("IDS2", //獲取二級節點ID
"LB=value=\"",
"RB=\"",
"ORD=All",
LAST);
//########展開選中節點
web_url("{RootID}{SubID}");
No2=atoi(lr_eval_string ("{IDS2_count}")); //獲取ID的數量,保存在變動No2中
lr_output_message ("獲取二級節點的數量爲: %d",No2);
if (No2>M2) { No2=M2;}//讓No2<=M2
for (k=1;k<=No2;k++) //將二級節點的ID寫入MyID2中
{
sprintf(m,」{IDS2_%d}」,k); //生成動態字符串{IDS2_i},存在變量m中************核心步驟
MyID2[k-1]=lr_eval_string (m); //讀取{IDS2_i}參數對應的值,保存到MyID2中****核心步驟
lr_output_message (「開始處理@二級節點:第%d共%d,m=%s即MyID1[%d]=,%s」,k,No2,m,k-1,MyID2[k-1]);
lr_save_string (MyID2[k-1],」SubID2″);//將MyID1轉換爲參數{SubID}以便使用
lr_save_int(k,」N」);
for (p=1;p<=M3;p++) //添加子節點
{
lr_save_int(p,」P」);
//########添加三級節點
web_submit_data(「{RootID}{SubID}{P}」);
}lr_output_message (「當前狀態@一級節點%d,二級節點%d:已添加%d個三級節點」,i,k,M3);
}
}
loadrunner對應用程序性能分析的總結 
一個應用程序是由不少個組件組成的,整個應用程序的性能好很差須要從總體入手去分析。
  打開analysis頁面,將左下角的display only graphs containing data 置爲不選,而後選中web page breakdown ,點擊「open graph」添加須要分析的功能項。
  web page breakdown中顯示的是每一個頁面的下載時間。點選左下角web page breakdown 展開,能夠看到每一個頁中包括的css 樣式表,js 腳本,jsp 頁面等全部的屬性。
  在select page to breakdown 中選擇頁面。選中後,在選擇欄下方看到屬於它的組件。哪一行的事物佔據的時間較長,那麼它的消耗時間點就在這裏,分析問題也就要從這裏入手。
對相應的組件所標註的顏色分析以下:
一、dns resolution 
顯示使用最近的dns服務器,將dns解析爲ip地址所須要的時間,「dns查找」度量是指示dns解析問題或dns服務器問題的一個很好的指示器。
二、connection
顯示與包含指定的URL的web服務器創建初始鏈接所須要的時間。鏈接度量是一個很好的網絡問題指示器。另外,他還能判斷服務器是否對請求做出響應。
三、first buffer
顯示從初始HTTP請求(一般爲get) 到成功收到來自web服務器的第一次緩衝時爲止所通過的時間。第一次緩衝度量能夠判斷是否存在web服務器延遲或者網絡滯後。
注意點:因爲緩衝區最大爲8k,所以第一次緩衝時間可能也就是完成元素下載所須要的時間。
四、ssl handshaking
顯示創建ssl鏈接(包括客戶端請求,服務器請求,客戶端公用密鑰傳輸,服務器證書傳輸及其它部分可選階段)所用的時間。自此點以後,客戶端及服務器之間全部的通訊都將被加密。
注意點:ssl握手度量僅適用用https通訊。
五、receive
顯示從服務器收到最後一個字節,並完成下載以前所通過的時間。
接收度量能夠查看網絡質量,查看用來計算接收速率的時間/大小比率。
六、ftp authentication
顯示驗證客戶端所用的時間。若是使用ftp,則服務器在開始處理客戶端命令以前,必須驗證該客戶端。、
此功能只是用與使用ftp通訊。
七、client
顯示因瀏覽器思考時間或其它與客戶端有關的延遲而使客戶機上的請求發生延遲時,所通過的平均時間。
八、error
顯示從發出HTTP請求到返回錯誤消息(僅限於HTTP錯誤)期間所通過的平均時間。
分析以上指標,結合系統資源監控指標,會比較準確快速的定位問題。從而對系統的性能及隨後的調優提供針對性的意見。
使用LoadRunner進行性能測試的通常步驟是什麼? 
☆ 肯定須要進行測試的業務或交易,經過手工操做和Vuser Generator的錄製功能來記錄並生成虛擬用戶腳本。
☆ 手工修改虛擬用戶腳本,肯定腳本可以成功回放。
☆ 在Controller中對場景進行配置後,啓動測試。在測試過程當中,Controller控制Load Generator對被測系統的加壓方式和行爲。
☆ Controller同時負責蒐集被測系統各個環節的性能數據。各個Loaded Generator會記錄最終用戶響應時間和腳本執行的日誌。
☆ 壓力運行結束後,Loaded Generaror將數據傳輸到Controller中,有Controller對測試結果進行彙總。
☆ 藉助數據分析工具Analysis對性能測試數據進行分析,肯定瓶頸和調優方法。
☆ 對系統進行鍼對性的調優,重複進行壓力測試,肯定性能是否有所提升。
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也在等待其餘資源釋放才能繼續。這就會出現這樣的問題:同一個測試場景,用線程併發就會超時失敗或報錯,而用進程併發就沒錯。
雖然會有區別,但兩種方式的運行都會給服務端形成的壓力是同樣的。
如何用loadrunner錄製sql server測試一個sql語句或存儲過程的執行 
本次經過loadRunner錄製SQL Server介紹一下如何測試一個sql語句或存儲過程的執行性能。
主要分以下幾個步驟完成:
第一步、測試準備
第二步、配置ODBC數據源
第三步、錄製SQL語句在Sql Server查詢分析器中的運行過程
第四步、優化錄製腳本,設置事務
第五步、改變查詢數量級查看SQL語句的性能
第六步、在controller中運行腳本
下面開始具體的介紹:
測試準備階段咱們首先要確認測試數據庫服務器:咱們能夠在本地安裝SQL SERVER數據庫服務端及客戶端,也能夠肯定一臺裝好的SQL SERVER服務器。
接下來,準備測試數據:對數據庫測試時咱們要考慮的不是SQL語句是否可以正確執行,而是在某數量級的狀況下SQL語句的執行效率及數據庫服務的運行狀況,因此咱們分別準備不一樣數量級的測試數據,即根據實際的業務狀況預估數據庫中的記錄數,在本次講解中咱們不考慮業務邏輯也不考慮數據表之間的關係,咱們只創建一張表,並向此表中加入不一樣數量級的數據,如分別加入1000條、10000條、50000條、100000條數據查看某SQL語句的執行效率。
在查詢分析器中運行以下腳本:
--建立測試數據庫
create database loadrunner_test;
use loadrunner_test
--建立測試數據表
create table test_table
(username varchar(50),sex int,age int,address varchar(100),post int)
--經過一段程序插入不一樣數量級的記錄,具體的語法在這裏就很少說了
declare @i int
set @i=0
while @i<1000 //循環1000次,能夠根據測試數據狀況改變插入條數
begin
BEGIN TRAN T1
insert into test_table (username,sex,age,address,post) values ('戶瑞海'+cast(@i as varchar),@i-1,@i+1,'北京市和平里'+cast(@i as varchar)+'號',123456);
IF @@ERROR <> 0
begin
rollback;
select @@error
end
else
begin
commit;
set @i = @i+1
end
end
好了,執行完上述語句後,創建的數據表中已經有1000條記錄了,下面進行第二步的操做,配置ODBC數據源,爲了能讓loadrunner可以經過ODBC協議鏈接到咱們創建的SQL SERVER數據路,咱們須要在本機上創建ODBC數據源,創建方法以下:
控制面板—性能和維護—管理工具—數據源(ODBC)--添加,在列表中選擇SQL SERVER點擊完成,根據嚮導輸入數據源名稱,連接的服務器,下一步,輸入連接數據庫的用戶名和密碼,更改連接的數據庫,完成ODBC的配置,若是配置正確的話,在最後一步點擊「測試數據源」,會彈出測試成功的提示。
配置好ODBC數據源後就要錄製SQL語句在查詢分析器中的執行過程了:
一、 打開loadrunner,選擇ODBC協議
二、 在start recording中的application type 選擇win32 application;program to record中錄入SQL SERVER查詢分析器的路徑「..\安裝目錄\isqlw.exe」
三、 開始錄製,首先經過查詢分析器登陸SQL SERVER,在打開的查詢分析器窗口中輸入要測試的SQL語句,如「select * from test_table;」
四、 在查詢分析器中執行該語句,執行完成後,結束錄製
好了,如今就能夠看到loadrunner生成的腳本了(因爲腳本過長,在這裏就不粘貼了,有須要的朋友能夠加我QQ,我把腳本發給大家),經過這些語句,咱們能夠看出,登陸數據庫的過程、執行SQL語句的過程。
接下來,咱們來優化腳本,咱們分別爲數據庫登陸部分和執行SQL語句的部分加一個事物,在增長一個double的變量獲取事務執行時間,簡單內容以下:
Action()
{ double trans_time; //定義一個double型變量用來保存事務執行時間
lr_start_transaction("sqserver_login"); //設置登陸事務的開始
lrd_init(&InitInfo, DBTypeVersion); //初始化連接(下面的都是loadrunner生成的腳本了,你們能夠經過幫助查到每一個函數的意思)
lrd_open_context(&Ctx1, LRD_DBTYPE_ODBC, 0, 0, 0);
lrd_db_option(Ctx1, OT_ODBC_OV_ODBC3, 0, 0);
lrd_alloc_connection(&Con1, LRD_DBTYPE_ODBC, Ctx1, 0 /*Unused*/, 0);
………………
trans_time=lr_get_transaction_duration( "sqserver_login" ); //得到登陸數據庫的時間
lr_output_message("sqserver_login事務耗時 %f 秒", trans_time); //輸出該時間
lr_end_transaction("sqserver_login", LR_AUTO); //結束登陸事務
lr_start_transaction("start_select");//開始查詢事務
lrd_cancel(0, Csr2, 0 /*Unused*/, 0);
lrd_stmt(Csr2, "select * from test_table;\r\n", -1, 1, 0 /*None*/, 0);//此句爲執行的SQL
lrd_bind_cols(Csr2, BCInfo_D42, 0);
lrd_fetch(Csr2, -10, 1, 0, PrintRow24, 0);
……………..
trans_time=lr_get_transaction_duration( "start_select" ); //得到該SQL的執行時間
lr_output_message("start_select事務耗時 %f 秒", trans_time); //輸出該時間
lr_end_transaction("start_select", LR_AUTO); //結束查詢事務
優化後,在執行上述腳本後,就能夠獲得登陸到數據庫的時間及運行select * from test_table這條語句的時間了,固然咱們也能夠根據實際狀況對該條語句進行參數化,能夠測試多條語句的執行時間,也能夠將該語句改成調用存儲過程的語句來測試存儲過程的運行時間。
接下來把該腳本在controller中運行,設置虛擬用戶數,設置集合點,這些操做我就不說了,可是值得注意的是,沒有Mercury 受權的SQL SERVER用戶license,在運行該腳本時回報錯,提示「You do not have a license for this Vuser type.
Please contact Mercury Interactive to renew your license.」咱們公司窮啊買不起loadrunner,因此我也沒法繼續試驗,但願有license朋友們監控一下運行結果!
最起碼在VUGen中運行該腳本咱們能夠獲得任意一個SQL語句及存儲過程的執行時間,若是咱們測試的B/S結構的程序
如何徹底卸載LoadRunner? 
1.首先保證全部LoadRunner的相關進程(包括Controller、VuGen、Analysis和Agent Process)所有關閉。
2.備份好LoadRunner安裝目錄下測試腳本,通常存放在LoadRunner安裝目錄下的「scrīpts」子目錄裏。
3.在控制面板的「刪除與添加程序」中運行LoadRunner的卸載程序。若是彈出提示信息關於共享文件的,都選擇所有刪除。
4.卸載嚮導完成後,從新啓動電腦。完成整個LoadRunner卸載過程。
5.刪除整個LoadRunner目錄。(包括Agent Process)
6.在操做中查找下列文件,而且刪除它們(若是有)
1) wlrun.*
2) vugen.*7.運行註冊表程序(開始- 運行- regedit)8.刪除下列鍵值:
若是隻安裝了MI公司的LoadRunner這一個產品,請刪除:
HKEY_LOCAL_MACHINESOFTWAREMercury Interactive.
HKEY_CURRENT_USERSOFTWAREMercury Interactive.
不然請刪除:
HKEY_LOCAL_MACHINESOFTWAREMercury InteractiveLoadRunner.
HKEY_CURRENT_USERSOFTWAREMercury InteractiveLoadRunner.
9.最後清空回收站
完成了以上操做就能夠正常的從新安裝LoadRunner。安裝LoadRunner時最好關閉全部的殺毒程序。
loadrunner如何遍歷一個頁面中的url並進行訪問? 
代碼以下:
Action()
{
char temp[64];
int num = 0 ;
int i = 0 ;
char *str ;
// char *temp ;
//獲取函數,是一個數組
web_reg_save_param(
「UrlList」,
「LB/ALNUMIC=<a href=\」",
「RB=\」",
「ORD=all」,
LAST);
web_url(「localhost」,
「URL=http://www.baidu.com」,
LAST);
//獲取數據的長度
str = lr_eval_string(「{UrlList_count}」);
lr_error_message(「%s」,str);
num = atoi(str);
for(i=1;i<=num;i++){
//格式化輸出
sprintf(temp,」{UrlList_%d}」,i);
//生成參數
lr_save_string(lr_eval_string(temp),」Turl」);
//斷定URL 是否合法
if (strstr(lr_eval_string(temp),」http」)) {
web_url(「TESTER」,」URL={Turl}」, LAST);
}else
{
lr_error_message(「Url is not exits」);
}
}
return 0;
}
LoadRunner分析實例面試題 
 1.Error: Failed to connect to server 「172.17.7.230″: [10060] Connection
  Error: timed out Error: Server 「172.17.7.230″ has shut down the connection prematurely
  分析:
  A、應用服務死掉。
  (小用戶時:程序上的問題。程序上處理數據庫的問題,實際測試中多半是服務器連接的配置問題)
  B、應用服務沒有死
  (應用服務參數設置問題)
  對應的Apache和tomcat的最大連接數須要修改,若是鏈接時收到connection refused消息,說明應提升相應的服務器最大鏈接的設置,增長幅度要根據實際狀況和服務器硬件的狀況來定,建議每次增長25%!
  C、數據庫的鏈接
  (數據庫啓動的最大鏈接數(跟硬件的內存有關))
  D、咱們的應用程序spring控制的最大連接數過低
性能調優的基本原則是什麼? 
若是某個部分不是瓶頸,就不要試圖優化。
優化是爲系統提供足夠的資源而且充分的利用資源,而不是無節制的擴充資源。
優化有時候也意味着合理的分配或劃分任務。
優化可能會過頭,注意協調整個系統的性能。
LoadRunner如何插入Text/Image 檢查點 ? 
在進行壓力測試時,爲了檢查Web 服務器返回的網頁是否正確,這些檢查點驗證網頁上是否存在指定的Text 或者Image,還能夠測試在比較大的壓力測試環境中,被測的網站功能是否保持正確。
操做步驟:
一、能夠將視圖切換到TreeView 視圖
二、在樹形菜單中選擇須要插入檢查點的一項,而後點鼠標右鍵,選擇將檢查點插到該操做執行前(Insert Before)仍是執行後(Insert After)。
三、在彈出對話框中選擇web Checks 下面的Image Check 或是 Text Check
四、對須要檢查點設置相關的屬性
LoadRunner如何從現有數據庫中導入數據 
經過 LoadRunner,能夠從數據庫中導入數據以用於參數化。您能夠用下列兩種方法中的一種導入數據:
? 新建查詢
? 指定 SQL 語句
VuGen 提供一個指導您完成從數據庫中導入數據的過程的嚮導。在該向導中,您能夠指定如何導入數據(經過 MS Query 新建查詢或者指定 SQL 語句)。
導入數據以後,它被另存爲一個擴展名爲.dat 的文件,而且存儲爲常規參數文件。
LoadRunner如何模擬用戶思考時間? 
1. 用戶在執行兩個連續操做期間等待的時間稱爲「思考時間」。
2. Vuser 使用lr_think_time 函數模擬用戶思考時間。錄製 Vuser 腳本時,VuGen 將錄製實際的思考時間並將相應的 lr_think_time 語句插入到 Vuser 腳本。
3. 能夠編輯已錄製的 lr_think_time 語句,也可在 腳本中手動添加更多lr_think_time 語句。
4. 以秒爲單位指定所需的思考時間
LoadRunner腳本中如何插入集合點(Rendezvous) 
插入集合點(Rendezvous)
集合點:若是腳本中設置集合點,能夠達到絕對的併發,可是集合點並非併發用戶的代名詞,設置結合點和不設置結合點,須要看你站在什麼角度上來看待併發,是整個服務器,仍是提供服務的一個事務;
? 插入集合點是爲了衡量在加劇負載的狀況下服務器的性能狀況。
? 在測試計劃中,可能會要求系統可以承受1000 人甚至更多同時提交數據,在LR 中能夠經過在提交數據操做前面加入集合點,當虛擬用戶運行到提交數據的集合點時,LR 就會檢查同時有多少用戶運行到集合點,從而達到測試計劃中的需求。
? Rendezvous,也可在錄製時按插入集合點按鈕?具體的操做方法以下:在須要插入集合點的前面,點擊菜單Insert
? 注意:集合點常常和事務結合起來使用。集合點只能插入到Action 部分,vuser_init和vuser_end 中不能插入集合點。
LoadRunner如何插入事務(Transaction) ? 
1. 事務爲衡量服務器的性能,須要定義事務。
2. LoadRunner 運行到該事務的開始點時,LR就會開始計時,直到運行到該事務的結束點,這個事務的運行時間在結果中會有反映。
3. 插入事務操做能夠在錄製過程當中進行,也能夠在錄製結束後進行。LR 運行在腳本中插入不限數量的事務。
4. Start?在菜單中單擊Insert Transaction後,輸入事務名稱,也可在錄製過程當中進行,在須要定義事務的操做後面插入事務的「結束點」。默認狀況下,事務的名稱列出最近的一個事務名稱。通常狀況下,事務名稱不用修改。事務的狀態默認狀況下是LR_AUTO。通常狀況下,咱們也不須要修改狀態的
LoadRunner如何建立腳本? 
1. 啓動VuGen:選擇須要新建的協議腳本,能夠建立單協議,或是多協議腳本
2. 點擊Start Record按鈕,輸入程序地址,開始進行錄製
3. 使用VuGen進行錄製:建立的每一個 Vuser 腳本都至少包含三部分:vuser_init、一個或多個 Actions 及vuser_end。錄製期間,能夠選擇腳本中 VuGen 要插入已錄製函數的部分。運行屢次迭代的Vuser 腳本時,只有腳本的Actions部分重複,而vuser_init和vuser_end部分將不重複
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對其支持不太好。
LoadRunner如何設置Recording Options 選項?(以單協議http/html爲例) 
1.菜單tools->Recording Options進入錄製的設置窗體
2.Recording標籤頁:選用哪一種錄製方式
3.Browser標籤頁:瀏覽器的選擇
4.Recording Proxy 標籤頁:瀏覽器上的代理設置
5.Advanced 標籤頁:能夠設置錄製時的think time,支持的字符集標準等
6.Correlation標籤頁:手工設置關聯,經過關聯可在測試執行過程當中保存動態值。使用這些設置能夠配置 VuGen 在錄製過程當中執行的自動關聯的程度。
LoadRunner如何選擇協議? 
不少人使用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協議
Loadrunner支持哪些經常使用協議? 
? Web(HTTP/HTML)
? Sockets
? .net 協議
? web services
? 經常使用數據庫協議(ODBC,ORACLE,SQLSERVER 等)
? 郵件(SMTP、pop3)
? 其它協議
性能測試的類型都有哪些? 
負載測試(Load Test)
經過逐步增長系統負載,測試系統性能的變化,並最終肯定在知足性能指標的狀況下,系統所能承受的最大負載量的測試。
壓力測試(Stress Test)
經過逐步增長系統負載,測試系統性能的變化,並最終肯定在什麼負載條件下系統性能處於失效狀態,並以此來得到系統可以提供的最大服務級別的測試。
壓力測試是一種特定類型的負載測試。
疲勞強度測試
一般是採用系統穩定運行狀況下可以支持的最大併發用戶數或者平常運行用戶數,持續執行一段時間業務,經過綜合分析交易執行指標和資源監控指標來肯定系統處理最大工做量強度性能的過程。
疲勞強度測試能夠反映出系統的性能問題,例如內存泄漏等。
大容量測試(Volume Test)
對特定存儲、傳輸、統計、查詢業務的測試。
併發用戶數是什麼?跟在線用戶數什麼關係? 
併發主要是針對服務器而言,是否併發的關鍵是看用戶操做是否對服務器產生了影響。所以,併發用戶數量的正確理解爲:在同一時刻與服務器進行了交互的在線用戶數量,這種交互既能夠是單向的傳輸數據,也能夠是雙向的傳送數據。
? 併發用戶數是指系統運行期間同一時刻進行業務操做的用戶數量。
? 該數量取決於用戶操做習慣、業務操做間隔和單筆交易的響應時間。
? 使用頻率較低的應用系統併發用戶數通常爲在線用戶數的5%左右。
? 使用頻率較高的應用系統併發用戶數通常爲主線用戶數的10%左右
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」選項。
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」模式來錄製腳本。
LoadRunner HTTP服務器狀態代碼都有哪些?如何解決? 
在錄製Web協議腳本回放腳本的過程當中,會出現HTTP服務器狀態代碼,例如常見的頁面-404錯誤提示、-500錯誤提示。
錯誤現象1:-404 Not Found服務器沒有找到與請求URI相符的資源,但還能夠繼續運行直到結束。
錯誤分析:此處與請求URI相符的資源在錄製腳本時已經被提交過一次,回放時不可再重複提交一樣的資源,而須要更改提交資源的內容,每次回放一次腳本都要改變提交的數據,保證模擬實際環境,形成必定的負載壓力。
解決辦法:在出現錯誤的位置進行腳本關聯,在必要時插入相應的函數。
錯誤現象2:-500 Internal Server Error服務器內部錯誤,腳本運行中止。
錯誤分析:服務器碰到了意外狀況,使其沒法繼續迴應請求。
解決辦法:出現此錯誤是致命的,說明問題很嚴重,須要從問題的出現位置進行檢查,此時須要此程序的開發人員配合來解決,並且產生的緣由根據實際狀況來定,測試人員沒法單獨解決問題,並且應該儘快解決,以便於後面的測試。
這兩天測試併發修改採購收貨時,錄製回放正確,運行腳本,集合點3個併發時,卻總是出錯
以下:
Action.c(30): Error -26612: HTTP Status-Code=500 (Internal Server Error) forhttp://192.168.100.88:88/Purchase/stockin_action.asp?Oper=Edt
解決過程:按Help提示在瀏覽器輸入原地址,發現提示「請從新登錄系統」。
被此誤導,偶覺得是Session ID、或Cookie失效,因而嘗試找關聯,花了N多時間。但是腳本里確實不存在須要關聯的地方呀,系統默認關聯了。
與程序員溝通,證明此過程不會涉及到Session ID 或Cookie。那爲何?
由於集合點下一站就是修改的提交操做,因而查找web_submit_data–>定位查找Log文檔
注意點:怎麼找log文件
–>Controller–>Results–>Results Settings 查找本次log文件保存目錄–>到該目錄下查找log文件夾–>打開
驚喜的發現其中居然有全部Vuser 的運行log。–>打開Error 查找報錯的Vuser–>打開相應的log文件
查找error,而後偶發現了一段讓偶熱淚盈眶的話:
Action.c(30):     <p>Microsoft OLE DB Provider for ODBC Drivers</font> <font face=」宋體」 size=2>錯誤 ’800040
Action.c(30):     05′</font>\n
Action.c(30):     <p>\n
Action.c(30):     <font face=」宋體」 size=2>[Microsoft][ODBC SQL Server Driver][SQL Server]事務(進程 ID  53)
Action.c(30):     與另外一個進程已被死鎖在  lock 資源上,且該事務已被選做死鎖犧牲品。請從新運行該事務。</font>
Action.c(30):     \n
Action.c(30):     <p>\n
Action.c(30):     <font face=」宋體」 size=2>/Purchase/stockin_action.asp</font><font face=」宋體」 size=2>,行
Action.c(30):     205</font>
Action.c(30): Error -26612: HTTP Status-Code=500 (Internal Server Error) for 「http://192.168.100.88:88/Purchase/stockin_action.asp?Oper=Edt」   [MsgId: MERR-26612]
Action.c(30): t=37758ms: Closing connection to 192.168.100.88 after receiving status code 500   [MsgId: MMSG-26000]
Action.c(30): t=37758ms: Closed connection to 192.168.100.88:88 after completing 43 requests   [MsgId: MMSG-26000]
Action.c(30): t=37760ms: Request done 「http://192.168.100.88:88/Purchase/stockin_action.asp?Oper=Edt」   [MsgId: MMSG-26000]
Action.c(30): web_submit_data(「stockin_action.asp」) highest severity level was 「ERROR」, 1050 body bytes, 196 header bytes   [MsgId: MMSG-26388]
Ending action Action. [MsgId: MMSG-15918]
Ending iteration 1. [MsgId: MMSG-15965]
Ending Vuser… [MsgId: MMSG-15966]
Starting action vuser_end. [MsgId: MMSG-15919]
解決了。。。。。。。
很寒。由此能夠看出,查看日誌文件是件多麼重要的事情啊!!!!!
其實併發死鎖原本就是本次的重點,以前是寫事務,但沒有作整個頁面的鎖定,只是寫在SQL裏。程序員說這樣容易出現頁面錯誤,
又改爲頁面鎖定,具體怎麼鎖偶沒看懂asp外行。以前事務衝突,偶讓他寫個標誌,定義個數值字段增一,偶就能夠直觀看出來了。
此次改爲頁面就刪掉這些標誌了,因而出錯就無處可尋。
此次最大的收穫就是知道怎麼查找Controller的log文件。之後看到Error就不會被牽着鼻子走了~~~~
LoadRunner腳本中出現亂碼如何解決? 
在錄製Web協議腳本時出現中文亂碼,在回放腳本時會使回放中止在亂碼位置,腳本沒法運行。
錯誤現象:某個連接或者圖片名稱爲中文亂碼,腳本運行沒法經過。
錯誤分析:腳本錄製可能採用的是URL-based script方式,若是程序定義的字符集合採用的是國際標準,腳本就會出現亂碼現象。
解決辦法:從新錄製腳本,在錄製腳本前,打開錄製選項配置對話框進行設置,在「Recording Options」的「Advanced」選項裏先將「Surport Charset」選中,而後選中支持「UTF-8」的選項。
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
錯誤分析:這種錯誤經常是由於併發壓力過大,服務器端太繁忙,沒法及時響應客戶端的請求而形成的,因此這個錯誤是正常現象,是壓力過大形成的。
若是壓力很小就出現這個問題,多是腳本某個地方有錯誤,要仔細查看腳本,提示的錯誤信息會定位某個具體問題發生的位置。
解決辦法:例如上面的錯誤現象問題定位在某個URL上,須要再次運行一下場景,同時在其餘機器上訪問此URL。若是不能訪問或時間過長,多是服務器或者此應用不能支撐如此之大的負載。分析一下服務器,最好對其性能進行優化。
若是再次運行場景後還有超時現象,就要在各類圖形中分析一下緣由,例如能夠查看是否服務器、DNS、網絡等方面存在問題。
最後,增長一下運行時的超時設置,在「Run-Time Settings」>「Internet Protocol:Preferences」中,單擊「options」,增長「HTTP-request connect timeout」或者「HTTP-request receive」的值。
Error -27257: Pending web_reg_save_param/reg_find/create_html_param如何解決? 
問題描述Error -27257: Pending web_reg_save_param/reg_find/create_html_param[_ex] request(s) detected and reset at the end of iteration number 1
解決方法:web_reg_save_param位置放錯了,應該放到請求頁面前面。
Failed to transmit data to network: [10057]Socket is not connected什麼錯誤? 
這個錯誤是由網絡緣由形成的,PC1和PC2上面都裝了相同的loadrunner 9.0,且以相同數量的虛擬用戶數運行相同的業務(機器上的其餘條件都相同),PC1上面有少部分用戶報錯,PC2上的用戶所有執行經過。
Overlapped transmission of request to … WSA_IO_PENDING錯誤如何解決? 
這個問題,解決方法:
一、方法一,在腳本前加入web_set_sockets_option(「OVERLAPPED_SEND」, 「0″),禁用TTFB細分,問題便可解決,可是TTFB細分圖將不能再使用,附圖。
二、方法二,能夠經過增長鏈接池和應用系統的內存,每次增長25%。
Failed to connect to server錯誤是什麼緣由? 
這個問題通常是客戶端連接到服務失敗,緣由有兩個客戶端鏈接限制(也就是壓力負載機器),一個網絡延遲嚴重,解決辦法:
一、修改負載機器註冊表中的TcpTimedWaitDelay減少延時和MaxUserPort增長端口數。注:這將增長機器的負荷。
二、檢查網絡延遲狀況,看問題出在什麼環節。
建議爲了減小這種狀況,辦法一最好測試前就完成了,保證乾淨的網絡環境,每一個負載機器的壓力測試用戶數不易過大,儘可能平均每臺負載器的用戶數,這樣以上問題出現的機率就很小了。
has shut down the connection prematurely什麼錯誤? 
通常是在訪問應用服務器時出現,大用戶量和小用戶量均會出現。
來自網上的解釋:
1>應用訪問死掉
小用戶時:程序上的問題。程序上存在數據庫的問題
2>應用服務沒有死
應用服務參數設置問題
例如:
在許多客戶端鏈接Weblogic應用服務器被拒絕,而在服務器端沒有錯誤顯示,則有多是Weblogic中的server元素的AcceptBacklog屬性值設得太低。若是鏈接時收到connection refused消息,說明應提升該值,每次增長25%
Java鏈接池的大小設置,或JVM的設置等
3>數據庫的鏈接
在應用服務的性能參數可能過小了
數據庫啓動的最大鏈接數(跟硬件的內存有關)
以上信息有必定的參考價值,實際狀況能夠參考此類調試。
若是是以上所說的小用戶時:程序上的問題。程序上存在數據庫的問題,那就必須採用更加專業的工具來抓取出現問題的程序,主要是程序中執行效率很低的sql語句,weblogic能夠採用introscope定位,期間能夠注意觀察一下jvm的垃圾回收狀況看是否正常,我在實踐中併發500用戶和600用戶時曾出現過jvm鋸齒型的變化,上升降低都很快,這應該是不太正常的。
—————————————
實際測試中,能夠用telent站點看看是否能夠鏈接進去,能夠經過修改鏈接池中的鏈接數和適當增長應用內存值,問題能夠解決。
LoadRunner出現open many files錯誤是什麼緣由? 
問題通常都在壓力較大的時候出現,因爲服務器或者應用中間件自己對於打開的文件數有最大值限制形成,解決辦法:
一、修改操做系統的文件數限制,aix下面修改limits下的nofiles限制條件,增大或者設置爲沒有限制,儘可能對涉及到的服務器都做修改。
二、方法一解決不了狀況下再去查看應用服務器weblogic的commonEnv.sh文件,修改其中的nofiles文件max-nofiles數增大,應該就能夠經過了,具體就是查找到nofiles方法,修改其中else條件的執行體,把文件打開數調大。修改前記住備份此文件,防止修改出錯。
三、linux上能夠經過ulimit –HSn 4096來修改文件打開數限制,也能夠經過ulimit -a來查看。
四、linux上能夠經過lsof -p pid | wc -l來查看進程打開的句柄數。
connection refused是什麼緣由? 
這個的錯誤的緣由比較複雜,也可能很簡單也可能須要查看好幾個地方,解決起來不一樣的操做系統方式也不一樣。
一、首先檢查是否是鏈接weblogic服務過大部分被拒絕,須要監控weblogic的鏈接等待狀況,此時須要增長acceptBacklog,每次增長25%來提升看是否解決,同時還須要增長鏈接池和調整執行線程數,(鏈接池數*Statement Cache Size)的值應該小於等於oracle數據庫鏈接數最大值。
二、若是方法一操做後沒有變化,此時須要去查看服務器操做系統中是否對鏈接數作了限制,AIX下能夠直接vi文件limits修改其中的鏈接限制數、端口數,還有tcp鏈接等待時間間隔大小,wiodows相似,只不過windows修改註冊表,具體修改註冊表中有TcpTimedWaitDelay和MaxUserPort項,鍵值在[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\]。由於負載生成器的性能太好,發數據包特別快,服務器也響應特別快,從而致使負載生成器的機器的端口在沒有timeout以前就所有佔滿了。在所有佔滿後,就會出現上面的錯誤。執行netstat –na命令,能夠看到打開了不少端口。因此就調整TCP的time out。即在最後一個端口尚未用到時,前面已經有端口在釋放了。
1,這裏的TcpTimedWaitDelay默認值應該中是30s,因此這裏,把這個值調小爲5s(按須要調整)。
2,也能夠把MaxUserPort調大(若是這個值不是最大值的話)。
Loadrunner出現 Connection reset by peer.是什麼緣由? 
這個問題很少碰見,通常是因爲下載的速度慢,致使超時,因此,須要調整一下超時時間。
解決辦法:Run-time setting窗口中的‘Internet Protocol’-‘Preferences’設置set advanced options(設置高級選項),從新設置一下「HTTP-request connect timeout(sec),能夠稍微設大一些」。
Step download timeout (120 seconds)是什麼問題? 
這是一個常常會遇到的問題,解決得辦法走如下步驟:
一、修改run time setting中的請求超時時間,增長到600s,其中有三項的參數能夠一次都修改了,HTTP-request connect timeout,HTTP-request receieve timeout,Step download timeout,分別建議修改成600、600、5000。run time setting設置完了後記住還須要在control組件的option的run time setting中設置相應的參數。
二、辦法一不能解決的狀況下,解決辦法以下:
設置runt time setting中的internet protocol-preferences中的advaced區域有一個winlnet replay instead of sockets選項,選項後再回放就成功了。切記此法只對windows系統起做用
Loadrunner相關問題 
1,action和init、end除了迭代的區別還有其餘嗎?
在init、end 中不能使用集合點、事務等。
2,HTTP的超時有哪三種?
HTTP-request connect timeout、HTTP-request receive timeout、step download timeout
 
3,在什麼地方設置HTTP頁面filter?
在runtime_settings中download filter裏面進行設置。
4,pot mapping的原理是什麼?
就是代理服務器
5,如何設置可讓一個虛擬IP對應到一個Vuser?
利用線程和進程作中介,邏輯上的對應。
選中Expert Mode,設置Options中的General
 
6,什麼是contentcheck?如何來用?
ContentCheck的設置是爲了讓VuGen 檢測何種頁面爲錯誤頁面。若是被測的Web 應用沒有使用自定義的錯誤頁面,那麼這裏不用做更改;若是被測的Web 應用使用了自定義的錯誤頁面,那麼這裏須要定義,以便讓VuGen 在運行過程當中檢測,服務器返回的頁面是否包含預約義的字符串,進而判斷該頁面是否爲錯誤頁
面。若是是,VuGen就中止運行,指示運行失敗。
使用方法:點擊在runtime settings中點擊「contentcheck」,而後新創建一個符合要求的應用程序和規則,設定須要查找的文本和前綴後綴便可使用。
 
7,network中的speed simulation是模擬的什麼帶寬?
模擬用戶訪問速度的帶寬。
 
8,進程和線程有什麼區別?
程和線程的區別網上不少,不做過多討論,重點說一下其在LR中選擇的區別。最顯著的區別是:線程有
本身的全局數據。線程存在於進程中,所以一個進程的全局變量由全部的線程共享。因爲線程共享一樣的系
統區域,操做系統分配給一個進程的資源對該進程的全部線程都是可用的,正如全局數據可供全部線程使用
同樣。在Controller中將使用驅動程序(如mdrv.exe、r3vuser.exe)運行vuser。若是按進程運行每一個
vuser,則對於每一個vuser實例,都將反覆啓動同一驅動程序並將其加載到內存中。將同一驅動程序加載到
內存中會佔用大量的RAM(隨機存儲器)及其餘系統資源。這就限制了能夠在任一負載生成器上運行的
vuser數量。若是按線程運行每一個vuser,Controller爲每50個vuser(默認狀況下)僅啓動驅動程序(如
mdrv.exe)的一個實例。該驅動程序將啓動幾個vuser,每一個vuser都按線程運行。這些線程vuser將共享父
驅動進程的內存段。這就消除了屢次從新加載驅動程序/進程的須要,節省了大量內存空間,從而能夠在一
個負載生成器上運行更多的Vuser。
 
9,生成WEB性能圖有什麼意義?大概描述便可。
能夠很直觀的看到,在負載下系統的運行狀況以及各類資源的使用狀況,能夠對系統的性能瓶頸定位、性
能調優等起到想要的輔助做用。
 
10,若是刷新controller裏的腳本?
在controller中,點擊detailis-Refresh-script便可。
 
11,WAN emulation是模擬什麼的?
答:是模擬廣域網環境的。模擬大量網絡基礎架構的行爲。能夠設置突出 WAN 效果的參數(如延遲、丟包、動態路由效果和連接故障),並監控模擬設置對網絡性能的影響。
 
12,如何把腳本和結果放到load generator的機器上?
在controller中,點擊Results-Results settings,在裏面進行相應的設置便可。
 
13,如何設置才能讓集合點只對一半的用戶生效?
對集合點策略進行相應的設置便可。即在controller中,點擊Scenario-Rendezvous-policy進行相應的設
置便可,因爲題目中「一半的用戶」沒有說明白具體指什麼樣的用戶,如今很差肯定具體對裏面的哪一個選項
進行設置。
 
14,在設置windows資源圖監控的時候,用到的是什麼端口和協議?在這一過程當中,會有大概哪些問題?(大概描述)
這個比較容易看吧,連上去,netstat -nao就能夠看了
microsoft-ds :445 ;要有權限、開啓服務。
LR中的API分爲幾類? 
A:通用的API:,就是跟具體的協議無關,在任何協議的腳本里都能用的;
B:針對協議的:像lrs前綴是winsock的;lrd的是針對database;
C:自定義的:這個範圍就比較廣了;
好比至少有Java Vuser API 、lrapi、XML API。還能夠添加WindowsAPI和自定義函數庫。
樹視圖和腳本視圖各有什麼優勢? 
Tree View的好處是使用戶更方便地修改腳本,Tree View支持拖拽,用戶能夠把任意一個節點拖拽到他想
要的地方,從而達到修改腳本的目的。用戶能夠右鍵單擊節點,進行修改/刪除當前函數參數屬性,增長函
數等操做,經過Tree View可以增長LoadRunner提供的部分經常使用通用函數和協議相關函數。
Script View適合一些高級用戶,在Script View中可以看到一行行的API函數,經過Script View向腳本中增長一些其餘API函數,對會編程的高手來講很方便
LR的協議包分爲多少類? 
協議包不是指vuser類型。打開LR後,在選擇vuser類型時,咱們通常選擇的上面一個下拉框都是all protocol。那個就是我說的協議包。
應用程序部署解決方案:Citrix ICA。
客戶端/服務器:DB2 CLI、DNS、Informix、MS SQL Server、ODBC、Oracle(2層)、Sybase Ctlib、Sybase Dblib和Windows Sockets協議。
自定義:C模板、Visual Basic模板、Java模板、JavaScript和VBScript類型的腳本。
分佈式組件:適用於COM/DCOM、Corba-Java和Rmi-Java協議。
電子商務:FTP、LDAP、Palm、PeopleSoft 8 mulit-lingual、SOAP、Web(HTTP/HTML)和雙Web/WinSocket協議。
Enterprise Java Bean:EJB測試和Rmi-Java協議。
ERP/CRM:Baan、Oracle NCA、PeopleSoft-Tuxedo、SAP-Web、SAPGUI、
Siebel-DB2 CLI、Siebel-MSSQL、Siebel-Web和Siebel-Oracle協議。
傳統:終端仿真(RTE)。
郵件服務:Internet郵件訪問協議(IMAP)、MS Exchange(MAPI)、POP3和SMTP。
中間件:Jacada和Tuxedo(六、7)協議。
流數據:Media Player(MMS)和Real協議。
無線:i-Mode、VoiceXML和WAP協議。
須要關聯的數據怎麼肯定? 
(1)經過LR自動關聯來肯定。
(2)經過手動關聯,查找服務器返回的動態數據,利用關聯函數來肯定。
(3)對錄製好的腳本,經過「scan action for correlations或CTRL+F8」來進行掃描查找須要關聯的數據
(4)若是知道須要作關聯數據的左右邊界等信息,能夠本身添加相應的關聯的規則來錄製腳本,從而肯定
須要關聯的數據。
場景設置有哪幾種方法? 
性能測試用例設計首先要分析出用戶現實中的典型場景,而後參照典型場景進行設計。下面詳細介紹一下常見的三類用戶場景:
  一天內不一樣時間段的使用場景。在同一天內,大多數系統的使用狀況都會隨着時間發生變化。例如對於新浪、網易等門戶網站,在週一到週五早上剛一上班時,可能郵件系統用戶比較多,而上班前或者中午休息時間則瀏覽新聞的用戶較多;而對於通常的OA系統則早上閱讀公告的較多,其餘時間可能不少人沒有使用系統或者僅有少許的祕書或領導在起草和審批公文。這類場景分析的任務是找出對系統產生壓力較大的場景進行測試。
  系統運行不一樣時期的場景。系統運行不一樣時期的場景是大數據量性能測試用例設計的依據。隨着時間的推移,系統歷史數據將會不斷增長,這將對系統響應速度產生很大的影響。大數據量性能測試一般會模擬一個月、一季度、半年、一年、……的數據量進行測試,其中數據量的上限是系統歷史記錄轉移前可能產生的最大數據量,模擬的時間點是系統預計轉移數據的某一時間。
  不一樣業務模式下的場景。同一系統可能會處於不一樣的業務模式,例如不少電子商務系統在早上8點到10點以瀏覽模式爲主,10點到下午3點以定購模式爲主,而在下午3點之後可能以混合模式爲主。所以須要分析哪些模式是典型的即壓力較大的模式,進而對這些模式單獨進行測試,這樣作能夠有效的對系統瓶頸進行隔離定位。與「一天內不一樣時間段的場景測試」不一樣,「不一樣業務模式下的場景測試」更專一於某一種模式的測試,而「一天內不一樣時間段的場景測試」則多數是不一樣模式的混合場景,更接近用戶的實際使用狀況
什麼是吞吐量? 
網絡定義:吞吐量是指在沒有幀丟失的狀況下,設備可以接受的最大速率。
軟件工程定義:吞吐量是指在單位時間內中央處理器(CPU)從存儲設備讀取->處理->存儲信息的量。
  影響吞吐量因素:
  一、存儲設備的存取速度,即從存儲器讀出數據或數據寫入存儲器所需時間;
  二、CPU性能:1)時鐘頻率;
               2)每條指令所花的時鐘週期數(即CPI);
  3)指令條數;
三、系統結構,如並行處理結構可增大吞吐量。
解釋如下函數及他們的不一樣之處。 
Lr_debug_message
Lr_output_message
Lr_error_message
Lrd_stmt
Lrd_fetch
【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】: 提取結果集中得下一條記錄
如何識別性能瓶頸? 
性能瓶頸,能夠偵測到使用顯示器。這些顯示器多是應用服務器的監測,監控Web服務器,數據庫服務器的監控和網絡監控。他們幫助找到了動亂地區的狀況,緣由增長響應時間。該測量一般性能的響應時間,吞吐量,訪問/秒,網絡延遲圖表等
響應時間和吞吐量之間的關係是什麼? 
吞吐量圖顯示的是虛擬用戶每秒鐘從服務器接收到的字節數。當和響應時間比較時,能夠發現隨着吞吐量的下降,響應時間也下降,一樣的,吞吐量的峯值和最大響應時間差很少在同時出現。
以線程方式運行的虛擬用戶有哪些優勢? 
VuGen提供了用多線程的便利。這使得在每一個生成器上能夠跑更多的虛擬用戶。若是是以進程的方式跑虛擬用戶,爲每一個用戶加載相同的驅動程序到內存中,所以佔用了大量的內存。這就限制了在單個生成器上能跑的虛擬用戶數。若是按進程運行,給定的全部虛擬用戶數(好比100)只是加載一個驅動程序實例到內存裏。每一個進程共用父驅動程序的內存,所以在每一個生成器上能夠跑更多的虛擬用戶。
LR中如何編寫自定義函數? 
在建立用戶自定義函數前咱們須要和建立DLL(external libary)。把庫放在VuGen bin 目錄下。一旦加了庫,把自定義函數分配作一個參數。該函數應該具備一下格式:__declspec (dllexport) char* <function name>(char*, char*)。
如何調試LoadRunner腳本? 
VuGen 包含兩個選項來幫助調試 Vuser 腳本:「分步運行」命令和斷點。這些選
項不適用於 VBscript 和 VB 應用程序類型的 Vuser。
要查看「調試」工具欄,請執行下列操做:
右鍵單擊工具欄區域,而後選擇「調試」。「調試」工具欄將顯示在工具欄區域
中。         「分步運行」命令
「分步運行」命令在運行腳本時一次運行一行。經過該命令,能夠依次查看腳本
每一行的執行狀況。
要分步運行腳本,請執行下列操做:
1 依次選擇「Vuser」 > 「分步運行」,或者單擊「調試」工具欄上的「步驟」按
鈕。
VuGen 將執行腳本的第一行。
2 繼續單擊「步驟」按鈕來執行該腳本,直到腳本運行完成爲止。
斷點
經過斷點能夠使腳本在特定位置暫停執行。它可用於在執行期間的預約點處檢查
該腳本對應用程序的影響。要管理書籤,請參閱第 186 頁上的「斷點管理器」。
要設置斷點,請執行下列操做:
1 將光標置於腳本中要中止執行的行上。
2 依次選擇「插入」 > 「切換斷點」,或者單擊「調試」工具欄上的「斷點」按
鈕。也能夠按鍵盤上的 F9 鍵。將在腳本的左邊距顯示「斷點」符號 ( )。
3 要禁用斷點,請將光標置於包含斷點符號的行上,而後單擊「調試」工具欄上的
「啓用 / 禁用斷點」按鈕。「斷點」符號中將會顯示一個白點 ( )。禁用一個斷點
後,執行將在下一個斷點處暫停。再次單擊該按鈕能夠啓用斷點。
要刪除斷點,請將光標置於包含斷點符號的行上,而後單擊「斷點」按鈕或者按
F9 鍵。
要運行包含斷點的腳本,請執行下列操做:
1 照常運行腳本。
到達斷點時, VuGen 將暫停腳本的執行。能夠檢查腳本運行到斷點時的效果,
並進行必要的更改,而後從斷點處從新啓動腳本。
2 要繼續執行,請依次選擇「Vuser」 > 「運行」。
從新啓動後,腳本將繼續執行,直到遇到下一個斷點或腳本完成。
斷點管理器
能夠使用斷點管理器來查看和管理斷點。經過斷點管理器您能夠操縱腳本中的所
有斷點。
要打開斷點管理器,請選擇「編輯」 > 「斷點」。
要跳至腳本中的斷點處,請執行下列操做:
1 從列表中選擇一個斷點。
2 單擊「在腳本中突出顯示」。則將在腳本中突出顯示該行。
注意,每次只能突出顯示一個斷點。
管理斷點
能夠經過斷點管理器添加、刪除、禁用斷點或者爲斷點設置條件
要添加斷點,請執行下列操做:
1 單擊「添加」。將打開「添加斷點」對話框。
2 選擇「操做」,並指定要添加斷點的行號。
3 單擊「肯定」。該斷點將被添加到斷點列表中。
要刪除斷點,請執行下列操做:
1 要刪除單個斷點,請選擇該斷點並單擊「刪除」。
2 要當即刪除全部斷點,請單擊「所有刪除」。
要啓用 / 禁用斷點,請執行下列操做:
1 要啓用斷點,請在「操做」列內選中操做的複選框。
2 要禁用斷點,請在「操做」列內清除操做的複選框。
經過斷點管理器您能夠將斷點設置爲在某些條件下暫停執行。
要爲斷點設置條件,請執行下列操做:
1 要在特定的迭代次數後暫停運行腳本,請選擇「當迭代次數爲下值時暫停」並輸
入所需的數字。
2 要在參數 X 具備特定值時暫停腳本,請選擇「當參數 X 值爲下值時暫停」並輸
入所需的值。有關參數的詳細信息,請參閱第 8 章「使用 VuGen 參數」。
書籤
當使用腳本視圖時, VuGen 使您能夠在腳本中各個不一樣的置放置書籤。您能夠
在書籤之間導航來分析和調試代碼。
要建立書籤,請執行下列操做:
1 將光標置於所需的位置,而後按 Ctrl + F2 組合鍵。VuGen 會在腳本的左邊距放
置一個圖標。
2 要刪除書籤,請單擊要刪除的標籤,而後按 Ctrl + F2 組合鍵。VuGen 將刪除左
邊距處的圖標。
3 要在書籤之間移動,請執行下列操做:
要移動到下一個書籤,請按 F2 鍵。
要導航到上一個書籤,請按 Shift + F2 組合鍵
您還能夠經過「編輯」 > 「書籤」菜單項來建立書籤和在書籤之間進行導航。
注意: 只能在當前操做中的書籤之間導航。要導航到另外一操做中的書籤,請在左
窗格中選擇該操做而後按 F2 鍵。
「轉至」命令
要不使用書籤在腳本中進行導航,能夠使用「轉至」命令。請依次選擇「編輯」
> 「轉至行」並指定腳本的行號。在樹視圖中也支持此種導航。
若是要檢查特定步驟或函數的「回放日誌」消息,請在 VuGen 中選擇該步驟,
而後依次選擇「編輯」 > 「轉至回放日誌中的步驟」。VuGen 將把光標放置在
「輸出」窗口的「回放日誌」選項卡中的相應步驟處。
你在VUGen中什麼時候選擇關閉日誌?什麼時候選擇標準和擴展日誌? 
Run-time,log,
當調試腳本時,能夠只輸出錯誤日誌,當在場景找你管加載腳本時,日誌自動變爲不可用。
Standard Log Option:選擇標準日誌時,就會在腳本執行過程當中,生成函數的標準日誌而且輸出信息,供調試用。大型負載測試場景不用啓用這個選項。
擴展日誌包括警告和其餘信息。大型負載測試不要啓用該選項。用擴展日誌選項,能夠指定哪些附加信息須要加到擴展日誌中
你如何找出哪裏須要關聯?請給一些你所在項目的實例 哪裏設置自動關聯選項? 
兩種方法:首先,咱們能夠掃描的關聯,看到的清單價值可關聯。從這一點咱們能夠選擇一個值的關聯。其次,咱們能夠記錄兩個腳本並加以比較。咱們能夠期待的差別檔案,看看的價值觀,須要予以密切相關。在個人項目,有一個獨特的ID爲每個客戶,它只是保險號碼,這是自動生成的,它是連續和這個值是獨一無二的。我有關聯這個值,爲了不錯誤,同時運行的腳本。我沒有使用掃描相關的
兩種方法:首先,咱們能夠掃描的關聯,看到的清單價值可關聯。從這一點咱們能夠選擇一個值的關聯。其次,咱們能夠記錄兩個腳本並加以比較。咱們能夠期待的差別檔案,看看的價值觀,須要予以密切相關。在個人項目,有一個獨特的ID爲每個客戶,它只是保險號碼,這是自動生成的,它是連續和這個值是獨一無二的。我有關聯這個值,爲了不錯誤,同時運行的腳本。我沒有使用掃描相關的
好比登錄網站後的sessionID
請解釋一下如何錄製web腳本? 
解釋: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處理的。css

解釋:這個就是我前面提到的關聯,系統已經預先設置好了一些常見的關聯rules,咱們錄製腳本以前,能夠把系統的能夠把系統的都關掉,定義本身的,只是有的時候,它不能自動關聯,就乾脆手工關聯。這裏比較重要,我還有一個專門的PPT文檔是詳細講這個的,你們能夠到個人網站上下載。

什麼是場景?場景的重要性有哪些?如何設置場景? 
用例場景應該說是寫測試用例,甚至是分析測試要素、設計測試策略另一個重要的依據了。
首先,軟件研發最終是要再用戶那裏使用的,用例場景都將在用戶的使用過程當中被一一實現。
     其次,需求的文檔會變,設計會變,但用戶的用例場景是基本上不會變的(除非是政策或者戰略上的變動)。這樣使測試工做的任務更加明確了,也更加容易定義修改的優先級以及在修改建議上和開發人員達成一致。畢竟知足用戶的用例場景是首要的。
     與微軟等技術主導的軟件企業相比,我向國內的軟件更多的是市場主導,用戶需求主導的軟件企業和設計思想甚至開發模式。
     用例場景會比需求文檔和分析報告更容易理解,同時也是對於理解用戶的需求,產品設計更有幫助。在測試中可以幫助咱們發現不只僅是功能上的問題。
     測試有兩個目的:確認功能是否實現正確;確認軟件是否實現了正確的功能。
什麼是集合點?設置集合點有什麼意義?Loadrunner中設置集合點的函數是哪一個? 
插入集合點是爲了衡量在加劇負載的狀況下服務器的性能狀況。在測試計劃中,可能會要求系統可以承受1000 人同時提交數據,在LoadRunner 中能夠經過在提交數據操做前面加入集合點,這樣當虛擬用戶運行到提交數據的集合點時,LoadRunner 就會檢查同時有多少用戶運行到集合點,若是不到1000 人,LoadRunner 就會命令已經到集合點的用戶在此等待,當在集合點等待的用戶達到1000 人時,LoadRunner 命令1000 人同時去提交數據,從而達到測試計劃中的需求。
說明:在腳本中設置了「集合點」後,當運行場景時能夠對集合點進行設置,能夠設置當百分之多少用戶到達時,系統開始執行如下操做,詳細的能夠參考中文的用戶手冊
添加方法:
一、其中錄製腳本script view中添加:lr_rendezvous(「XXX」);
二、在錄製腳本的tree view裏添加:rendezvous-XXX;
LoadRunner由哪些部件組成? 
使用LoadRunner 完成測試通常分爲四個步驟:
  1)Virtual User Generator 建立腳本
  建立腳本,選擇協議
  錄製腳本
  編輯腳本
  檢查修改腳本是否有誤
  2)中央控制器(Controller)來調度虛擬用戶
  建立Scenario,選擇腳本
  設置機器虛擬用戶數
  設置Schedule
  若是模擬多機測試,設置Ip Spoofer
  3)運行腳本
  分析scenario
  4)分析測試結果
  安裝LoadRunner 中文版
  LoadRunner 分爲Windows 版本和Unix 版本。若是咱們的全部測試環境基於Windows 平臺, 那麼咱們只要安裝Windows 版本便可。本章講解的安裝過程就是LoadRunner7.8中文的Windows 版本的安裝。
簡述使用Loadrunner的步驟 html

相關文章
相關標籤/搜索