loadrunner編譯沒起作用
① LoadRunner是什麼腳本語言
LoadRunner腳本是c語言。
C語言是一種結構化語言,它有著清晰的層次,可按照模塊的方式對程序進行編寫,十分有利於程序的調試,且c語言的處理和表現能力都非常的強大,依靠非常全面的運算符和多樣的數據類型,可以輕易完成各種數據結構的構建,通過指針類型更可對內存直接定址以及對硬體進行直接操作,因此既能夠用於開發系統程序,也可用於開發應用軟體。
(1)loadrunner編譯沒起作用擴展閱讀:
C語言包含的各種控制語句僅有9種,關鍵字也只有32 個,程序的編寫要求不嚴格且以小寫字母為主,對許多不必要的部分進行了精簡。實際上,語句構成與硬體有關聯的較少,且C語言本身不提供與硬體相關的輸入輸出、文件管理等功能,如需此類功能,需要通過配合編譯系統所支持的各類庫進行編程,故c語言擁有非常簡潔的編譯系統。
C語言是一種結構化的語言,提供的控制語句具有結構化特徵,如for語句、if⋯else語句和switch語句等。可以用於實現函數的邏輯控制,方便麵向過程的程序設計。
② LoadRunner原理
LoadRunner工作原理:
LoadRunner通過模擬上千萬用戶實施並發負載,實時性能監控的系統行為和性能方式來確認和查找問題。
1、VuGen發生器:捕捉用戶的業務流,並最終將其錄製成一個腳本:
(1)選擇相應的一種協議;
(2)在客戶端模擬用戶使用過程中的業務流程,並錄製成一個腳本;
(3)編輯腳本和設置Run-Time Settings項;
(4)編譯腳本生成一個沒有錯誤的可運行的腳本。
2、控制器(Controller):
(1)設計場景,包括手動場景設計和目標場景設計兩種方式;
(2)場景監控,可以實時監控腳本的運行的情況。可以通過添加計數器來監控Windows資源、應用伺服器和資料庫使用情況。
場景設計的目的是設計出一個最接近用戶實際使用的場景,場景設計越接近用戶使用的實際情況,測試出來的數據就越接近真實值。
3、負載發生器(Load Generators):模擬用戶對伺服器提交請求。
通常,在性能測試過程中會將控制器和負載發生器分開;當使用多台負載發生器時,一定要保證負載均衡(指在進行性能測試的過程中,保證每台負載發生器均勻地對伺服器進行施壓)。
4、分析器(Analysis):主要用於對測試結果進行分析。
其原理圖如下:
③ 【LoadRunner 調試問題 2】腳本錯誤日誌的使用
在調試腳本的過程中,我習慣把Log打開,如附圖。這樣很容易液答看到出族哪錯地方的前因後果,也方便找原因。
1、打開Run-time Settings->General->Log窗鬧穗慧口;
2、勾上「Enable logging」 checkbox;
3、選擇「Extended Log」,再根據需要勾選子級別,我一般會勾選前兩項;
問題1:Action.c(933): Error -26377: No match found for the requested parameter "merchantPlanid". Check whether the requested boundaries exist in the response data. Also, if the data you want to save exceeds 256 bytes, use web_set_max_html_param_len to increase the parameter size
原因:上一個介面執行失敗了,或者返回值里沒有你期望save的參數,所以導致 web_reg_save_param 沒有獲取到期望的值。
問題2:在Controller里運行腳本時,報錯: Failed to send data by channels - post message failed.
原因:Controller->Diagnostics->Configuration...->Diagnostics Distribution里的"Uncheck "Enable the following diagnostics"選項沒有被選中。
問題3:當你改變某個關聯參數的.dat文件時,總是提示老的.dat文件不存在,或者你注釋掉腳本,仍然編譯時報錯
原因:"Vuser"->"Parameter List"里,不再使用的參數仍然存在,找到它,並刪除掉即可。
④ loadrunner如何使用
1、使用LoadRunner 完成測試一般分為四個步驟:
2、Vvitrual User Generator 創建腳本
創建腳本,選擇協議
錄制腳本
編輯腳本
檢查修改腳本是否有誤
3、中央控制器(Controller)來調度虛擬用戶
創建Scenario,選擇腳本
設置機器虛擬用戶數
設置Schele
如果模擬多機測試,設置Ip Spoofer
4、運行腳本
分析scenario
分析測試結果
5、安裝LoadRunner 中文版
LoadRunner 分為Windows 版本和Unix 版本。如果我們的所有測試環境基於Windows
平台, 那麼我們只要安裝Windows 版本即可。本章講解的安裝過程就是LoadRunner7.8中文的Windows 版本的安裝。
6、使用LoadRunner進行負載/壓力測試
7、錄制基本的用戶腳本
創建用戶腳本需要用到VuGen。提示: 運行VuGen 最好在1024*768 的解析度下, 否則有些工具欄會看不到。
啟動Visual User Generator 後, 通過菜單新建一個用戶腳本, 選擇系統通訊的協議。
這里我們需要測試的是Web 應用,同時考慮到後台SQL資料庫所以我們需要選擇Web(HTTP/HTML)協議+SQL SERVER協議,確定後, 進入主窗體。通過菜單來啟動錄制腳本的命令。
8、在URL 中添入要測試的Web 站點地址..。
●測試http://lms.ah.sp.com.cn/lms-lmm/loginForm.do選擇要把錄制的腳本放到哪一個部分, 默認情況下是「Action」。
這里簡單說明一下:VuGen 中的腳本分為三部分:vuser_init、vuser_end 和Action。其
中vuser_init 和vuser_end 都只能存在一個, 不能再分割, 而Action 還可以分成無數多個部分( 通過點擊New 按鈕, 新建ActionXXX)。在錄制需要登陸的系統時, 我們把登陸部分放到vuser_init 中, 把登陸後的操作部分放到Action 中, 把注銷關閉登陸部分放到vuser_end 中。( 如果需要在登陸操作設集合點, 那麼登陸操作也要放到Action 中, 因為vuser_init 中不能添加集合點) 在其他情況下, 我們只要把操作部分放到Action 中即可。注意: 在重復執行測試腳本時,vuser_init 和vuser_end 中的內容只會執行一次, 重復執行的只是Action 中的部分。
點「 選項 」按鈕, 進入錄制的設置窗體, 這里一般情況下不需要改動。
●然後點「OK」 後,VuGen 開始錄制腳本。在錄制過程中, 不要使用瀏覽器的「 後退」 功能,LoadRunner 支持不太好! 錄制過程中, 在屏幕上會有一個工具條出現。錄制的過程和WinRunner 有些類似, 不再多介紹。錄制完成後, 按下「 結束錄制」 按鈕,VuGen 自動生成用戶腳本, 退出錄制過程。
完善測試腳本
當錄制完一個基本的用戶腳本後, 在正式使用前我們還需要完善測試腳本, 增強腳本的
靈活性。一般情況下, 我們通過以下幾種方法來完善測試腳本。插入事務、插入結合點、插入註解、參數化輸入。這里只舉例介紹參數化如何設置,其它只作簡單介紹。
插入事務
事務(Transaction): 為了衡量伺服器的性能, 我們需要定義事務。比如: 我們在腳本
中有一個數據查詢操作, 為了衡量伺服器執行查詢操作的性能, 我們把這個操作定義為一個事務, 這樣在運行測試腳本時,LoadRunner 運行到該事務的開始點時,LoadRunner 就會開始計時, 直到運行到該事務的結束點, 計時結束。這個事務的運行時間在結果中會有反映。
插入事務操作可以在錄制過程中進行, 也可以在錄制結束後進行。LoadRunner 運行在
腳本中插入不限數量的事務。
具體的操作方法如下: 在需要定義事務的操作前面, 通過菜單或者工具欄插入。輸入該事務的名稱。注意: 事務的名稱最好要有意義, 能夠清楚的說明該事務完成的動作。插入事務的開始點後, 下面需要在需要定義事務的操作後面插入事務的「 結束點」。同樣可以通過菜單或者工具欄插入。默認情況下, 事務的名稱列出最近的一個事務名稱。一般情況下, 事務名稱不用修改。事務的狀態默認情況下是LR_AUTO。一般情況下, 我們也不需要修改, 除非在手工編寫代碼時, 有可能需要手動設置事務的狀態。
插入集合點
插入集合點是為了衡量在加重負載的情況下伺服器的性能情況。在測試計劃中, 可能會
要求系統能夠承受1000 人同時提交數據,在LoadRunner 中可以通過在提交數據操作前面加入集合點, 這樣當虛擬用戶運行到提交數據的集合點時,LoadRunner 就會檢查同時有多少用戶運行到集合點,如果不到1000 人,LoadRunner 就會命令已經到集合點的用戶在此等待, 當在集合點等待的用戶達到1000 人時,LoadRunner 命令1000 人同時去提交數據, 從而達到測試計劃中的需求。
注意: 集合點經常和事務結合起來使用。集合點只能插入到Action 部分,vuser_init 和vuser_end 中不能插入集合點。具體的操作方法如下: 在需要插入集合點的前面, 通過菜單或者工具欄操作輸入該集合點的名稱。注意: 集合點的名稱最好要有意義, 能夠清楚的說明該集合點完
成的動作。
插入注釋
注釋的作用就不多說了, 不過插入注釋最好是在錄制過程中。具體的操作方法如下: 在需要插入注釋的前面, 通過菜單或者工具欄操作
參數化輸入
如果用戶在錄制腳本過程中, 填寫提交了一些數據, 比如要增加資料庫記錄。這些操作
都被記錄到了腳本中。當多個虛擬用戶運行腳本時, 都會提交相同的記錄, 這樣不符合實際的運行情況, 而且有可能引起沖突。為了更加真實的模擬實際環境, 需要各種各樣的輸入。參數化輸入是一種不錯的方法。
用參數表示用戶的腳本有兩個優點:
① 可以使腳本的長度變短。
② 可以使用不同的數值來測試你的腳本。例如, 如果你企圖搜索不同名稱的圖書, 你
僅僅需要寫提交函數一次。在回放的過程中, 你可以使用不同的參數值, 而不只搜索一
個特定名稱的值。
參數化包含以下兩項任務:
① 在腳本中用參數取代常量值。
② 設置參數的屬性以及數據源。
參數化僅可以用於一個函數中的參量。你不能用參數表示非函數參數的字元串。
另外, 不是所有的函數都可以參數化的。
參數化輸入的講解, 我們採用一個例子的方式來進行。
在本例中我們參數化用戶的登陸名:
先看如下腳本,通過腳本錄制找到用戶登陸部分,如圖
參數名隨意取,建議取通俗易懂的名字,下面我們重點介紹一下參數的類型。
●DateTime: 很簡單, 在需要輸入日期/時間的地方, 可以用DateTime 類型來替代。
其屬性設置也很簡單, 選擇一種格式即可。當然也可以定製格式。
.●Group Name:暫時不知道何處能用到,但設置比較簡單。在實際運行中,LoadRunner
使用該虛擬用戶所在的Vuser Group 來代替。但是在VuGen 中運行時,Group Name
將會是None
.●Load Generator Name: 在實際運行中,LoadRunner 使用該虛擬用戶所在Load Generator 的機器名來代替。
.●Iteration Number: 在實際運行中,LoadRunner 使用該測試腳本當前循環的次數來
代替。
.●Random Number: 隨機數。很簡單。在屬性設置中可以設置產生隨機數的范圍
.●Unique Number:唯一的數。在屬性設置中可以設置第一個數以及遞增的數的大小。
注意: 使用該參數類型必須注意可以接受的最大數。例如: 某個文本框能接受的
最大數為99。當使用該參數類型時, 設置第一個數為1, 遞增的數為1, 但100 個
虛擬用戶同時運行時,第100 個虛擬用戶輸入的將是100,這樣腳本運行將會出錯。
注意: 這里說的遞增意思是各個用戶取第一個值的遞增數, 每個用戶相鄰的兩次循
環之間的差值為1。舉例說明: 假如起始數為1, 遞增為5, 那麼第一個用戶第一
次循環取值1, 第二次循環取值2; 第二個用戶第一次循環取值為6, 第二次為7;
依次類推。
●Vuser ID: 設置比較簡單。在實際運行中,LoadRunner 使用該虛擬用戶的ID 來代
替,該ID 是由Controller 來控制的。但是在VuGen 中運行時,Vuser ID 將會是–1。
File: 需要在屬性設置中編輯文件,添加內容,也可以從現成的資料庫中取數據( 下
面我們將會介紹)
●User Defined Function: 從用戶開發的dll 文件提取數據。就目前我認為, 這種方式
沒有必要。VuGen 支持C 語言的語法,在VuGen 中重新編寫類似的函數應該不難。
上面的例子中, 我們取隨機數即可。點「Properties… ..」 按鈕, 進行屬性設置窗口
添入隨機數的取值范圍為(1-50), 選擇一種數據格式。在「屬性」 中有以下幾
個選項:
◆Each Occurrence:在運行時, 每遇到一次該參數, 便會取一個新的值
◆Each iteration:運行時, 在每一次循環中都取相同的值
◆Once:運行時, 在每次循環中, 該參數只取一次值
這里我們用的是隨機數, 選擇Each Occurrence 非常合適。
下面我們再介紹用資料庫中的用戶名來參數化登陸用戶名。
框選住登陸名,點滑鼠右鍵,彈出對話框,選擇「替換為新參數」彈出對話框,此時參數名輸入:name,參數類型選擇File,如圖
注意: 參數的文件名不要使用con.dat、pm.dat 或者lpt*.dat 等系統裝置名下面我們將會連接資料庫, 從數據表中選擇用戶名。點「數據向導」 按鈕,顯示如圖
添入連接字元串, 點「創建」 按鈕,選擇事先配置好的ODBC連接。在SQL語句里輸入select查詢語句,出現如圖窗口
提醒: 在參數數據顯示區, 最多隻能看到100 行, 如果數據超過100 行, 只能點「編輯」 按鈕, 進入記事本看。
「選擇下一行 」 有以下幾種選擇:
●Sequential: 按照順序一行行的讀取。每一個虛擬用戶都會按照相同的順序讀取
●Random: 在每次循環里隨機的讀取一個, 但是在循環中一直保持不變
●Unique : 唯一的數。注意: 使用該類型必須注意數據表有足夠多的數。比如Controller 中設定20 個虛擬用戶進行5 次循環, 那麼編號為1 的虛擬用戶取前5 個數, 編號為2 的虛擬用戶取6-10 的數, 依次類推, 這樣數據表中至少要有100 個數據, 否則Controller 運行過程中會返回一個錯誤。
「按編號」指選擇列表中的那一列數據,從左到右分別是1、2、3依次
通常用在有關聯性的數據上面。我們這里取值Sequential 即可。完成設置關閉即可
4.3 單機運行測試腳本
經過以上的各個步驟後, 腳本就可以運行了。運行腳本可以通過菜單或者工具欄來操作。
執行「 運行」 命令後,VuGen 先編譯腳本, 檢查是否有語法等錯誤。如果有錯誤,VuGen
將會提示錯誤。雙擊錯誤提示,VuGen 能夠定位到出現錯誤的那一行。為了驗證腳本的正
確性, 我們還可以調試腳本, 比如在腳本中加斷點等, 操作和在VC 中完全一樣, 相信大家誰都不會感到陌生。如果編譯通過, 就會開始運行。然後會出現運行結果。