1. 程式人生 > >【轉載】LoadRunner效能測試入門教程詳解

【轉載】LoadRunner效能測試入門教程詳解

第一章:效能測試基礎
1-1. 大話效能測試
效能測試
使用自動化測試工具對產品按一定的效能指標進行測試,解決效能瓶頸,給使用者最好的體驗。
效能測試的時代背景,作用
BAT
網站(baidu),軟體(T),遊戲......
金融( 銀行,證券系統),教育(教務系統),交通(12306)
效能測試基本流程

效能測試需求分析--->效能測試計劃--->  效能測試準備

1、效能測試需求分析
專案經理
業務/架構專家
產品經理
高階效能測試工程師
開發經理
2、效能測試計劃
高階效能測試工程師
專案經理
架構師
產品經理
3、效能測試準備
效能測試工程師
外部支援(網路工程師,系統管理員)
開發指令碼/執行測試<--->測試結果分析<------->系統調優<-----> 編寫測試報告


1、開發指令碼/執行測試
高階效能測試工程師
效能測試工程師

2、測試結果分析
高階效能測試工程師
外部支援 (系統管理員、DBA)

3、系統調優
架構師
產品經理
高階效能測試工程師
外部支援(DBA)
二、web效能測試常用指標
1、響應時間
相應時間:2-5-8原則
2、吞吐量(Throughput)
3、資源使用率(Resource utilization)
CPU,記憶體,磁碟I/O,網路I/O
4、每秒點選數(Hits per second)
5、併發使用者數(Concurrent users)
三、LoadRunner軟體
效能測試利器,LoadRunner.
http://127.0.0.1:1080/WebTours/
使用者名稱:jojo
密碼:bean

測試需求:登入webTours訂票網站,預定一張機票後退出。
錄製指令碼
1、啟動web伺服器
2、開啟Virtual User Generator介面
3、選擇指令碼協議
4、進行頁面操作
5、回放指令碼(Replay)
回放是驗證指令碼是否能夠正常執行。
驗證指令碼
回放指令碼

設定關聯
許多應用程式都使用動態值,每次使用應用程式時這些值都會變化。例如,有些伺服器會為每個新會話分配一個唯一的會話ID.回放錄製的會話時,應用程式建立的新會話ID與錄製的會話ID不同>LoadRunner通過關聯解決了這種問題。關聯動態值(在本例中為會話ID)儲存到引數中。執行模擬場景時,Vuser並不使用錄製的值,而是使用伺服器分配的新會話ID.
->設定webtours網站,錄製指令碼使用使用者登入時會產生會話ID,從而導致回放失敗。
-->找到關聯引數,進行手動關聯,現次回放。

html模式與url模式
在預設情況下,選擇"HTML-based script",說明指令碼採用HTML頁面的形式來表示,這種方式的指令碼容易維護,容易理解,推薦以這種方式錄製。
"URL-based script0"  說明
指令碼中的表示採用基於URL的方式,所有的HTTP請求都會被錄製下來,單獨生成函式。
所以URL模式生成的指令碼會顯得有些雜亂。URL錄製的指令碼中web_concurrent_start函式是併發組開始的標記,web_comcurrent_end是併發組的結束標記。在併發組中的函式不是立即執行的。在併發組開始時,所有的函式首先被記錄下來,當併發組結束時,所有的函式併發執行。
選擇HTML還是URL錄製,有以下參考原則:
(1)基於瀏覽器的應用程式推薦使用HTML-based script.
(2)不是基於瀏覽器的應用程式推薦使用URL-based script.
(3)如果基於瀏覽器應用程式中包含了JavaScript並且該指令碼向伺服器器產生了請求,使用URL-based script方式錄製。
(4)基於瀏覽器的應用程式中使用了HTTPS安全協議,使用URL-based script方式錄製。

新增事務
1、事務 (Transaction)是這樣一個點,我們為了衡量某個操作的效能,需要在操作的開始和結束位置插入這樣一個範圍,這就定義了一個transaction.
2、原因
從效能測試的角度出發,我們需要知道不同操作所花費的時間,這樣我們就可以衡量不同的操作對被測系統所造成的影響,那麼我們如何 知道不同的操作所花費的時間,這就用到了事務,我們在操作這前插入一個事務開始標識,在操作完成後插入一個事務結束表示,這樣我們就知道了這個操作所花費的時間。
3、事務的作用:LoadRunner執行該事務的開始點時,LoadRunner就會開始計時,直到執行到該事務的結束點,計時結束,這個事務的執行時間在LoadRunner的執行結果中會有反映。通谷的講LoadRunner中的事務就是一個計時標識,LoadRunner在執行過程中一旦發現事務標識,就開始計時,一旦發現事務的結束表示,則計時結束,這個過程中得到的趕時間即為一個事務時間。通常事務時間所反映的是一個操作過程的響應時間。
4、函式構造
事務開始函式共包括一個引數,就是事務的名稱,事務結束函式共包括兩個引數,第一個引數是事務的名稱,第二個引數是事務的狀態。事務的狀態可以為LR_PASS:返回"Pass"返回程式碼:LR_FAIL;返回"Fail", 返回程式碼:LR_STOP;返回"Stop";返回程式碼:LR_AUTO,自動返回檢測到的狀態。
Duration表示事務的完成響應時間,wasted time包括事務中函式自身執行所消耗的時間。

指令碼引數化

 

 

錄製日誌
在錄製和回放的時候,VU會分別把發生的事件記錄成日誌檔案,這些日誌檔案有利於我們跟蹤VU和伺服器的互動過程。
1.回放日誌(Relay Log)
腳本回放執行時的輸出都記在這個Log裡。
“輸出”視窗的“回放日誌”顯示的訊息用於描述Vuser執行時執行的操作。該資訊可說明在方案中執行指令碼時,該指令碼的執行方式。指令碼執行完成後,可以檢查“回放日誌”中的訊息,以檢視指令碼在執行時是否發生錯誤。
“回放日誌” 中使用了不同顏色的文字
黑色:標準輸出訊息
紅色:標準錯誤訊息
綠色:用引號括起來的文字字串(例如URL)
藍色:事務資訊(開始、結束、狀態和持續時間)
橙色:迭代次數資訊
如果雙擊操作名開始的行,游標將會跳到生成的指令碼中的相應的步驟上。

2、錄製日誌
當錄製指令碼時,Vugen會捕獲Client端(瀏覽器)與Server端(伺服器)之間的對話,
並且通通記錄下來,產生指令碼。在Vugen的Recording Log中,我們可以找到瀏覽器與伺服器之間所有的對話,
包含通訊內容、日期、時間、瀏覽器的請求、伺服器的響應內容等。
3、產生日誌
產生日誌記錄了指令碼錄製的設定、網路事件到指令碼函式的轉化過程。

移動APP指令碼錄製
安裝LR_03103_patch_4
Mobile App(HTTP/HTML)
Java Vuser虛擬使用者
Java vuser 是自定義虛擬指令碼,指令碼中可以使用標準的java語言
環境配置
1、安裝jdk,注意:lr11最高支援1.6
2、配置環境變數
3、在lr選擇java Vuser協議
指令碼結構
一般在init中編寫初始化指令碼,在action中編寫業務流程,在end編寫釋放資源的內容。
適用範圍
1、不太適合錄製的業務功能效能測試,如視訊播放,http檔案下載
2、利用java語言開發的應用系統。
錯誤處理函式
 VuGen提供了錯誤處理函式lr_continue_on_error,用來在指令碼中實時修改Vuser的出錯設定.
lr_contine_on_error函式語法結構如下:
void lr_continue_on_error(int value);
value是指令碼執行出錯設定的取值,具體取值及相應值的含義如表所示。在使用表中的引數時,即可以
使用常量名稱作為引數,也可直接使用對應常量值作為引數。


指令碼編寫最佳實踐
有過開發經驗的朋友者知道,程式的開發大多不是一蹴而就的,通常要以過程式碼評審‘編碼和測試等流程後,
才會趨於穩定。而VU指令碼本身雖不算複雜,但VU指令碼執行往往涉及多個因素,也會經常出問題。提早發現和解決指令碼中的問題,不僅從技術上下工夫,在流程上也要做文章。通常驗證一個指令碼的比較好的過程是這樣的:
1、Generate:錄製或開發指令碼。
2、SUSI(Single User Singel Iteration,單使用者單迴圈):執行錄製生成的指令碼,解決可能存在的關聯問題。
3、SUMI(Single User Multi Iterations,單使用者多迴圈):引數化指令碼,在Run-time中設定Iteration,再次執行,驗證引數化問題。
4、MUSI(Multi User Single Iteratins,多用單迴圈):Controller裡多用執行指令碼,驗證指令碼中可能的多執行緒同步問題。
5、MUMI(Multi User Multi Iteration,多使用者多迴圈):即效能測試開始。
其中1~3是在VU中進行的,而4~5是在Controller是進行的。

LR常見報錯處理方法
Virsual User Generator小結
1、指令碼指令碼,App指令碼,java指令碼
2、回放驗證
關聯設定,日誌分析
3、指令碼增強
新增事務,引數化,內容檢查,錯誤處理
4、負載準備
SUSI,SUMI,MUSI,MUMI指令碼驗證流程
---------------------
出自作者:tjjingpan
來源:CSDN
原文:https://blog.csdn.net/tjjingpan/article/details/77368066