Loadrunner入門
- 2020 年 11 月 18 日
- 筆記
- loadrunner, 軟體測試
一個優秀的軟體系統不單單具有良好的功能,還需要有過硬的性能,一個只通過功能測試的系統,只能稱之為「可用」,而不能算是「好用」。當然,性能測試需要基於功能測試,只有系統功能穩定了,性能測試才有意義。性能測試主要包含兩個特性:時間和資源。時間指系統處理客戶請求的時間,主用用響應時間和吞吐量來衡量,而資源則是指測試過程中系統資源消耗情況,最常受關注的資源包括CPU、記憶體、磁碟。
性能測試方法主要包括:性能測試、配置測試、並發測試、負載測試、壓力測試、穩定性測試。
- 性能測試:測試環境和測試目標確定的情況下,測試系統是否達到宣稱的能力;
- 配置測試:系統具有一定的測試基礎時,通過修改環境配置,例如伺服器參數等,對比之前的測試結果進行優化;
- 並發測試:模擬多個用戶並發使用系統,測試系統是否存在死鎖、記憶體泄漏等問題。
- 負載測試:逐漸向系統添加壓力,觀察系統資源消耗情況,知道某一項資源達到極限。一般用於度量系統的性能容量,尋找系統瓶頸為系統調優提供數據;
- 壓力測試:系統承受一定的壓力的情況下,測試系統是否會出現錯誤。系統壓力包括CPU、記憶體、磁碟、網路等方面的壓力,施加壓力的方法包括利用工具佔用系統資源、增加並發量等;
- 穩定性測試:系統承受一定壓力的情況下,運行一段時間,測試系統是否平穩運行;
個人以為,這幾種測試方法是相輔相成的, 一種測試方法中可能藉助另一種測試方法,例如在進行負載測試、壓力測試或穩定性測試時,會使用並發測試方法。另外,幾種測試方法之間的界定也比較模糊,當負載測試的壓力較大時,可以看作是壓力測試,當壓力測試的時間較長時,可以看作是穩定性測試。性能測試的主要目標是測試、評估軟體系統的性能,獲取軟體系統的參數指標,並協助開發進行調優。不管哪種測試方法,最終目的都是為了提高系統品質,那麼根據測試目標和系統特性選用適合的測試方法即可。
性能測試需要藉助測試工具,畢竟完全依靠手工進行性能測試需要付出很大的代價,不僅是人力成本和經濟成本,還有時間成本。測試工具的使用不僅能夠提高測試效率,還可以彌補手動測試難以捕獲的一些問題。
Loadrunner簡介
Loadrunner是HP公司提供的一款性能測試工具,通過模擬成千上萬個用戶實施並發操作,測試系統的性能,並且提供詳細的測試結果分析,協助用戶查找問題。Loadrunner的優勢在於節約了人力成本和時間成功,純人工進行並發測試,不僅需要大量的人手和機器,還需要測試人員進行充分的溝通,默契的進行操作。使用Loadrunner就可以一個人模擬上萬個用戶,壓縮了成本,也提高了效率。
Loadrunner的主要組件包括:
- Virtual User Generator:捕捉用戶業務流程,並且自動生成腳本;
- Controller:設計場景,主要包括設置不同腳本的虛擬用戶數量、迭代次數、執行時間等;
- Load Generator:模擬用戶向伺服器發送請求;
- Analysis:分析測試結果,輔助測試人員進行測試分析;
Loadrunner11安裝
初次接觸的是Loadrunner12版本,相對而言比11版本的介面更美觀,可用性更強,對高版本瀏覽器的兼容性也更好。奈何目前還沒有破解版,vuser最大支援50,於並發測試而言是絕對的硬傷。於是轉戰Loadrunner11。網上Loadrunner11安裝破解教程很齊全,以下便是參照網上的教程安裝的記錄。
1、下載安裝軟體
2、解壓下載好的ios文件
3、雙擊setup.exe,按照提示一步一步安裝
4、下載破解文件
5、將「lm70.dll」和「mlr5lprg.dll」文件複製到loadrunner安裝目錄下的bin目錄下
6、點擊「CONFUGURATION—>loadrunner license」,點擊「New License」,輸入「AEAMAUIK-YAFEKEKJJKEEA-BCJGI」,可能會遇到報錯「License security violation,operation is not allowed..」。
需要點擊破解文件中的deletelicense.exe,隨後重新執行上述步驟
7、添加new license,輸入AEABEXFR-YTIEKEKJJMFKEKEKWBRAUNQJU-KBYGB,完成!
Loadrunner11錄製腳本
1、打開loadrunner11,點擊「Create/Edit Script」啟動Virtual User Generator。點擊File–new,創建腳本文件,選擇Web(HTTP/HTML)協議。
[圖片上傳失敗…(image-991c3e-1523440883813)]
2、Loadrunner默認使用IE瀏覽器,在此我選用火狐瀏覽器,但是由於Loadrunner11對瀏覽器版本的要求較為嚴苛,因此需要下載安裝火狐24版本。(下載鏈接://ftp.mozilla.org/pub/firefox/releases/)
3、以loadrunner自帶的訂票系統為例,Program to record填寫火狐瀏覽器的路徑,Program arguments填測試系統的URL,working direction為文件保存路徑,自定義即可。填寫完成後點擊OK,火狐瀏覽器自動啟動並打開訂票系統。

4、首先錄製註冊用戶,按照正常的註冊流程,填寫用戶資訊後,登出,並關閉瀏覽器。點擊stop按鈕,腳本生成後保存。

5、生成的腳本只能註冊某個用戶,不具備通用性,為了使腳本更具通用性,我們需要將某些變數參數化。
參數
1、每個用戶的用戶名是不一樣的,且不能重複的。首先用參數替換用戶名,右擊用戶名value–點擊Replace with a parameter,輸入參數名稱「username」–點擊properties。

2、參數類型有很多種,在此用戶名參數選擇File類型,點擊Create Table創建文件。

3、文件創建好了,點擊Edit with Notepad,使用excel下拉創建20個用戶複製到username.dat中,保存後可以看見這20個用戶。File資料庫文件默認只看到100個值,如果想使用更多值,請修改「安裝目錄/config/vugen.ini」中的[ParamTable]屬性下的MaxVisibleLines。

Select column的方式默認選擇「By number」,並且number為1,即選擇第一列參數。當然也可以選擇By name,選擇變數參數名稱即可。「Select next row 」設置參數取值方式,由於用戶名不能重複在此取值方式選擇Unique。
- Sequence:按照順序依次取值;
- Random:隨機取值;
- Unique:唯一取值,為每個虛擬用戶分配一條唯一的數據;
- Same line as ***: 當多個參數時,取某一個參數的同一行;
“Update value on”設置參數更新周期,主要有以下三種更新周期,在此選擇每次迭代更新。
- Each iteration :每次迭代時更新參數的值 ;
- Each occurrence :每次使用該參數時更新參數的值;
- Once :執行腳本只取一次值,中途不更新參數的值;
當選擇取值方式為Unique時,需要額外設置「When out of value」和「Allocate vuser values in the controller」。其中「When out of value」設置dat文件中的值個數不夠時的處理方式,主要有以下幾種方式,我們選擇「」
- Abort Vuser:放棄剩下虛擬用戶,不再取值;
- Continue in a cyclic manner: 以循環的方式,重新從開頭取值;
- Continue with last value:當dat文件中的值取完後,持續取最後一個值 ;
「Allocate vuser values in the controller」:設置在controller中並發迭代執行腳本時,為每個vuser分配的參數塊大小,選擇「Automatically allocate block size」,系統會以迭代次數作為參數塊大小,為每個vuser分配參數。例如dat文件中有50個username,當迭代次數為5,vuser個數為8時,會將Test1Test5分配給vuser1,Test6Test10分配給vuser2,以此類推。當dat文件中的值不足時,例如迭代次數為6,vuser個數為9時,最後一個vuser只分配到了2個值,值不足時會根據「When out of value」設置的方式處理,但是僅在塊內取值,即只能循環取這兩個值。「Allocate ** values for each Vuser」顧名思義就是手動設置參數塊大小。
「Automatically allocate block size」方式的優點是方便,不需要根據場景反覆編輯腳腳本,缺點就是dat文件中的值個數不夠時,vuser分配不到值會報錯。而手動設置的優點就是人為控制出錯較少,但是每次都需要修改腳本,比較麻煩。
4、雙擊password的value,點擊Replace with a parameter,輸入參數名稱「passwd」–點擊properties,依舊選擇File類型參數,點擊Browse選擇之前創建的文件username.dat,點擊「Add column」添加列「passwd」。與之前方式一致,輸入50個password值,取值方式設置為「Same line as username」,確保用戶名與密碼一一對應。

5、密碼確認這一欄輸入的值需要與密碼保持一致,雙擊passwordConfirm的value,選擇「use existing parameter」–passwd。

6、firstname、lastname等其他變數安照類似的方式設置即可。執行腳本,在loadrunner11安裝目錄\WebTours\MercuryWebTours\users目錄下可以看見生成的用戶資訊。下面利用controller批量註冊這20個用戶。
插入事物
1、插入事物是為了更好的衡量伺服器的性能,可以在錄製腳本的時候,在某個操作前插入事務開始點,該操作完成後插入事務結束點。當然,錄製好的腳本也可以插入事務,以本腳本為例,將註冊請求定義為一個事務。在「web_submit_data(“login.pl_2” 」函數前插入事務開始點,右擊滑鼠——Insert——Start Transaction,輸入事務名稱register。

採用相同方式在函數下方插入事務結束點,右擊滑鼠——Insert——End Transaction,輸入事務名稱register。
2、點擊「Run Load Tests」啟動controller,設置新場景,選擇需要使用的腳本,可以是一個或者多個,然後點擊ok。

3、點擊」場景「——Load Generators,添加Load Generators,在此輸入localhost表明連接本地的Load Generators。點擊connect,連接Load Generators,如果連接不上則需要進一步定位原因。

也可以直接在腳本列表中直接下拉添加Load Generators。因為當前只有一個腳本,vuser比例默認為100%,當同時執行多個腳本時,可以設置每個腳本分配的vuser比例。

4、腳本設置好後開始設置運行場景,雙擊Initialize設置初始化用戶的方式。

雙擊」Start Vusers「設置vuser個數和啟動方式。

雙擊Duration設置場景運行周期,選擇」Run until completion「則當場景運行完成後同時停止所有vuser。如果選擇運行一段時間,則需要設置停止vuser的方式,與設置啟動vuser方式類似。

5、點擊」start scenario「運行場景,在Run可以看見vuser的狀態,以及場景運行過程中的報錯資訊。場景運行結束後,可以在下方看見一些數據,以便了解被測系統的性能。如下圖所示,可以看見事務「register」的響應時間。

6、點擊Result——Analyze Results,將會啟動Analysis自動生成本次場景執行相關的測試報告。

參考鏈接:
//www.jb51.net/softjc/71256.html
//www.jianshu.com/p/2f417febd39c
作者:糯米藕
鏈接://www.jianshu.com/p/1b2874243eca
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。