一個優秀的軟體系統不單單具有良好的功能,還需要有過硬的效能,一個只通過功能測試的系統,只能稱之為“可用”,而不能算是“好用”。當然,效能測試需要基於功能測試,只有系統功能穩定了,效能測試才有意義。效能測試主要包含兩個特性:時間和資源。時間指系統處理客戶請求的時間,主用用響應時間和吞吐量來衡量,而資源則是指測試過程中系統資源消耗情況,最常受關注的資源包括CPU、記憶體、磁碟。
效能測試方法主要包括:效能測試、配置測試、併發測試、負載測試、壓力測試、穩定性測試。
- 效能測試:測試環境和測試目標確定的情況下,測試系統是否達到宣稱的能力;
- 配置測試:系統具有一定的測試基礎時,通過修改環境配置,例如伺服器引數等,對比之前的測試結果進行優化;
- 併發測試:模擬多個使用者併發使用系統,測試系統是否存在死鎖、記憶體洩漏等問題。
- 負載測試:逐漸向系統新增壓力,觀察系統資源消耗情況,知道某一項資源達到極限。一般用於度量系統的效能容量,尋找系統瓶頸為系統調優提供資料;
- 壓力測試:系統承受一定的壓力的情況下,測試系統是否會出現錯誤。系統壓力包括CPU、記憶體、磁碟、網路等方面的壓力,施加壓力的方法包括利用工具佔用系統資源、增加併發量等;
- 穩定性測試:系統承受一定壓力的情況下,執行一段時間,測試系統是否平穩執行;
個人以為,這幾種測試方法是相輔相成的, 一種測試方法中可能借助另一種測試方法,例如在進行負載測試、壓力測試或穩定性測試時,會使用併發測試方法。另外,幾種測試方法之間的界定也比較模糊,當負載測試的壓力較大時,可以看作是壓力測試,當壓力測試的時間較長時,可以看作是穩定性測試。效能測試的主要目標是測試、評估軟體系統的效能,獲取軟體系統的引數指標,並協助開發進行調優。不管哪種測試方法,最終目的都是為了提高系統質量,那麼根據測試目標和系統特性選用適合的測試方法即可。
效能測試需要藉助測試工具,畢竟完全依靠手工進行效能測試需要付出很大的代價,不僅是人力成本和經濟成本,還有時間成本。測試工具的使用不僅能夠提高測試效率,還可以彌補手動測試難以捕獲的一些問題。
Loadrunner簡介
Loadrunner是HP公司提供的一款效能測試工具,通過模擬成千上萬個使用者實施併發操作,測試系統的效能,並且提供詳細的測試結果分析,協助使用者查詢問題。Loadrunner的優勢在於節約了人力成本和時間成功,純人工進行併發測試,不僅需要大量的人手和機器,還需要測試人員進行充分的溝通,默契的進行操作。使用Loadrunner就可以一個人模擬上萬個使用者,壓縮了成本,也提高了效率。
Loadrunner的主要元件包括:
- Virtual User Generator:捕捉使用者業務流程,並且自動生成指令碼;
- Controller:設計場景,主要包括設定不同指令碼的虛擬使用者數量、迭代次數、執行時間等;
- Load Generator:模擬使用者向伺服器傳送請求;
- Analysis:分析測試結果,輔助測試人員進行測試分析;
Loadrunner11安裝
初次接觸的是Loadrunner12版本,相對而言比11版本的介面更美觀,可用性更強,對高版本瀏覽器的相容性也更好。奈何目前還沒有破解版,vuser最大支援50,於併發測試而言是絕對的硬傷。於是轉戰Loadrunner11。網上Loadrunner11安裝破解教程很齊全,以下便是參照網上的教程安裝的記錄。
1、下載安裝軟體
https://pan.baidu.com/s/1i51a3HV
2、解壓下載好的ios檔案
3、雙擊setup.exe,按照提示一步一步安裝
4、下載破解檔案
http://pan.baidu.com/s/1eS7SmD8
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版本。(下載連結:http://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自動生成本次場景執行相關的測試報告。
參考連結:
http://www.jb51.net/softjc/71256.html
https://www.jianshu.com/p/2f417febd39c
作者:糯米藕
連結:https://www.jianshu.com/p/1b2874243eca
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。