# LoadRunner #
## 安裝要求 ##
作性能測試的時候,電腦要是一個乾淨的系統。
儘可能是裸裝電腦純淨版,不能安裝太多的瀏覽器,支持的有IE、Firefox、chrome
在win7系統搭建效果比較好。穩定的版本是LR11
安裝LoadRunner 須要破解,HP是賣服務的。
## 兩種應用 ##
BS/架構 網絡應用,網站
CS/架構 win32應用,使用windows標準空間開發出來的客戶端程序。
## 性能測試工具 ##
LoadRunner 商業 C語言 Windows
Jmeter 開源 Java 免費
![](https://i.imgur.com/9nCd1YG.png)
## 性能測試概念 ##
從時間資源利用率方面,
爲了考驗這兩方面模擬真實生產環境去測試(測試系統的各項性能指標)
## 性能測試的目的 ##
1. 評估系統的能力
2. 識別體系中的弱點
3. 系統調優
4. 驗證穩定性和可靠性
## LoadRunner 的三大組件 ##
虛擬用戶腳本生成器 virtual user Generator
壓力調度控制檯 Controller
壓力結果分析器 Analysis
LoadRunner由四大組件組成:VuGen、控制器、負載發生器和分析器。
## LoadRunner測試流程 ##
1.規劃測試(計劃、用例)
肯定測試要求,如併發用戶數量、典型業務場景流程;測試計劃;設計用例;……
2.建立VU腳本
使用Virtual User Generator錄製、編輯和完善測試腳本
3.定義場景
使用LoadRunner Controller 設置測試場景。
4.運行場景
使用LoadRunner Controller 驅動、管理並監控場景的運行
5.分析結果
使用LoadRunner Analysis 生成報告和圖表並評估性能
## LoadRunner經常使用的術語 ##
1. 併發
狹義(絕對):全部的用戶在統一時間作同一件事情
廣義(相對):多個用戶在一段時間內作不一樣的事情或者請求
2. 在線
多用戶在一段時間內對系統執行操做
3. 響應時間
從客戶端發出請求到獲得響應的整個事件(客戶端響應時間+網絡+服務器響應時間)
4. 事務響應時間
完成相應事務所用的時間
5. 點擊率
客戶端向服務器提交的Http請求數
6. 吞吐量
任意一秒處理客戶端http請求的數據量,以字節(KB)爲單位
7. 吞吐率
服務器每秒處理的數據量
8. TPS
每秒鐘處理的事務數
9. 資源利用率
對不一樣系統資源的使用程度,(cpu、內存、硬盤、網絡)
10. 場景
測試場景在LoadRunner中能夠設計執行用例的場景
11. 負載發生器
用來產生壓力的機器,模擬用戶對服務器提交請求。
12. 虛擬用戶
LoadRunner中模擬的用戶即爲虛擬用戶對應於真實用戶
13. 虛擬用戶腳本
經過Vuser Generator錄製或開發的腳本。這些腳本用來模擬用戶的行爲。
14. 事務
一個或者多個的操做步驟定義爲一個事務
15. 思考時間
請求間的停頓時間
16. 集合點
結合點是爲了更好的模擬併發操做
集合點是在同一個時間點,全部用戶同時執行某一個操做
17. 負載測試
找到系統處理能力的極限
18. 壓力測試
在飽和狀態下系統可以處理的會話能力
19. 配置測試
經過對被測系統軟硬環境的調整,瞭解各類不一樣環境對系統的影響程度,
找出最優分配原則
20. 可靠性測試
經過給系統加載必定的業務壓力(例如資源在70%~90%的使用率)的狀況下,
讓應用持續運行一段時間,測試系統在這種條件下是否可以穩定運行。
## 性能測試策略 ##
- 內存泄漏
程序中已分配的內存因爲某種緣由程序未釋放或沒法釋放,
形成系統內存的浪費,致使程序運行速度減慢甚至系統崩潰等嚴重後果。
- 基準測試
單用戶,單場景
- 併發測試
多用戶單場景
- 綜合場景測試
- 疲勞強度測試
- 數據容量測試
- 極限測試
- 遞增測試
#協議分析器:捕獲獲取協議類型, 網上下載協議分析器 問開發
## VUG錄製操做過程 ##
1. 啓動服務,全部程序-LoadRunner-Samples-web-啓動web服務器
2. 啓動VUG
3. 新建腳本,彈出框設置,網絡協議、測試對象URL,保存路徑等。
4.設置 web(http/html) 錄製的地址 左下角選項 錄製 基於html的腳本 高級默認
5. 自動打開瀏覽器,用戶進行操做。
輸入帳號密碼,點擊添加事務保存
登陸成功,點擊結束事務保存
#注 事務保存點名字不能更改
5. 點擊錄製工具條上的關閉按鈕。
## 運行時設置 ##
設置代碼顯示帳戶密碼。
log-extended log -
## 檢查點的做用 ##
檢驗實際結果與預期結果是否一致,檢查點要加在最近一個請求。
Tree樹策略 選中要檢查的文本,右鍵添加文本檢查點(AddaTextcheck)
## 腳本的組成 ##
1. LoadRunner裏面的變成語言是改進後的C語言。
2. 每一個Action都放在一個單獨的Action.c文件裏
3. 快速幫助文檔,按F1
## 錄製時怎麼作到的呢? ##
支持IE、Firefox錄製
IE 管理加載項:
名稱BHOManager Class發行者Mercury Interactive Corporation狀態
已啓用 文件日期2009年1月15日,0:09版本9.1.0.0加載時間0.01s
## 參數化 ##
雙擊選中要參數化的內容。
方法一,右鍵---【Replace with a new parameter】 參數替換
方法二,菜單【insert】----【new Parameter…】 新建參數
Parameter Properties (參數屬性對話框)----咱們的參數化設置就經過這個對話框完成
輸入要參數化的名字,能夠是中文
## LoadRunner測試流程 ##
### 規劃測試
好的測試規劃,可以指導整個測試過程,以更好的收集到測試目標要求的性能數據。
規劃能夠包括測試的計劃、用例的設計、場景的設計、性能計數器設置的設計等。
###規劃注意事項:
1.測試用例:測試用例通常根據須要測試的功能進行設計,
好比用例爲:進入登陸頁面-》填寫用戶名密碼,登陸-》單擊‘新增’按鈕-》填寫門店信息,保存。
2.場景設計:
通常狀況會設計兩種加壓方式進行測試:
瞬時加壓(多人同時進行某項業務操做)與逐漸加壓(多人前後進行某項業務操做,操做時間間隔根據計劃設定)
3.性能計數器方面:能夠收集CPU時間、內存、硬盤、網絡、數據庫參數、IIS參數等
###建立Vuser腳本
2-1 使用Virtual User Generator錄製、編輯和完善測試腳本。
2-2 咱們能夠根據被測應用是B/S結構仍是C/S結構來選擇協議:
A 若是是B/S結構,就要選擇Web(HTTP/HTML)協議
B 若是是C/S結構,則能夠根據後端數據庫的類型來選擇
C 對於沒有數據庫的WINDOWS應用,能夠選擇Windows Sockets協議。
# 2-3 協議怎麼知道: A 問開發 B 用協議分析器 C 網上有免費的協議分析工具 #
# new single protocols scrip 單協議 #
# new multiple protocols scrip 多協議 #
# new recent protocols scrip 最近用的協議 #
1 熟悉 建立腳本工具欄
2-4 application type :
internet application----------B/S架構
win32 application -----C/S架構
2-5 program to record ----默認IE,自帶firefox瀏覽器
2-6 URL address------指定起始URL
2-7 working directory-----工做目錄,通常默認
2-8 Record into action ----選擇要錄製的部分
注意:
VuGen的腳本分爲三個部分:
Vuser_init,Action,Vuser_end。
# 其中Vuser_init和Vuser_end都只能存在一個,而Action可分紅無數多個部分,能夠經過點擊旁邊的 #
2-6 options選項:
recording-----錄製選項:
1 基於瀏覽器的應用,推薦用HTML-based script方式錄製
2 不是基於瀏覽器的應用,推薦用URL-based方式錄製
3 基於瀏覽器的應用程序中使用了HTTPS安全協議,也要使用URL-based方式錄製
4 若是基於瀏覽器的應用程序中包含Javascript,
而且該腳本向服務器產生了請求,好比DataGrid分頁按鈕等,
就要使用URL-based方式錄製
2-7 HTML-based script方式錄製與URL-based script錄製的區別:
A --- HTML-based是根據瀏覽器的緩存文件生成的,每一個函數比較長,函數個數比較少。
# 腳本比較容易維護。推薦使用。 #
# 缺點:不能真實模擬出用戶行爲 #
B---3. URL-based Script是根據瀏覽器的請求順序生成的,每一個函數比較短,可是個數比較多,
# 此種方法更真實,缺點是腳本很長,難以維護。 #
C----2. 前者錄製的簡單些,它只錄制LR緩存中沒有的記錄,後者錄製的複雜些,
它不只錄製LR緩存中沒有的記錄,
# 緩存中有的記錄也錄製下來,因此錄製的比較全面 #
2-8 編碼問題--advance---AdvancedSupport charset中設置編碼格式:UTF-8;
2 熟悉錄製腳本工具欄
從左到右分別是:
開始錄製
結束錄製
暫停錄製
編譯腳本
腳本所屬部分
建立新的action
插入事物起始點
插入事物結束點
插入集合點
插入註釋
設置選項option
插入test檢查點
# 錄製過程 #
1 # 若錄製一個登錄操做,輸入用戶名和密碼後點擊 開始事物,而後繼續錄製,
# 點擊Login按鈕登錄,登錄成功後,必定要點擊 結束事物 # 2 vuser_init:錄製登陸的腳本,此處的腳本只有在初始化時纔會被執行 Vuser_Action():有意義語句塊,真正執行測試點操做的腳本主體部分,能夠迭代 Vuser_end():錄製退出的腳本,此處的腳本只有在釋放用戶時才被執行 # 注:其實相似於自動化裏的setUp()和tearDown()兩個函數 # 3 在一個錄製好的腳本中: web_url是瀏覽器地址欄的URL。 GET請求 web_link是點擊在<a href= ...>和<a>之間的文本超連接。 web_image是點擊HTML的<img href…。 web_submit_form 是在前面操做的上下文中的GET或PUT表單上點「提交」, 前面的操做被VuGen在基於HTML模式下錄製下來了。 web_submit_data,POST 請求 4 打開Run-time Setting: General中: Run Logic:設置迭代次數 Pacing:設置迭代間隔時間 Log:設置運行時日誌的類型 Think Time:設置錄製時造成的Think Time時間比例, 事務內的Think Time要忽略! 5 插入集合點 造成腳本後,點擊Insert,選擇Rendezvous 6 事務定義:一般爲了衡量服務器的性能,咱們須要定義事務。插入事務操做能夠在錄製過程當中進行,也能夠在錄製結束後進行。 6-1 事務的目的主要有兩點: 統計事務的成功率。 統計事務的響應時間。 繼續錄製,錄製事務動做結束後,必需要結束掉這個事務。 一樣能夠在insert菜單欄或工具欄結束這個事務。-----事物是成對出現的 7 文本檢查點: 目的:爲了驗證明際結果與預期結果是否一致。 7-1 添加文本檢查點有兩種方式:在樹結構中添加、在代碼頁面添加。 在樹結構中添加檢查點: 將腳本切換到樹結構,在Server Response頁面上找到你要check的文本內容, 並執行鼠標右鍵,選擇Add a text check 添加成功後,切換到代碼界面,找到登陸請求,會發現前面已經自動多出一行代碼, # 注意:在樹結構中添加檢查點必須在server response下作檢查點。 # # 記憶:凡是帶reg的函數都須要放在要操做請求的前面。註冊後,查找速度更快,在內存中查找 # 插入檢查點: 選擇最近一個事務的請求,點擊樹視圖,選擇添加檢查的文字,右擊添加文本檢查點。 函數:web_reg_save_find("search=Body",....LAST); 8 數據池策略(參數化) 爲了使腳本更靈活,咱們能夠對腳本進行參數化,以登陸時的用戶名和密碼爲例, 在腳本中選中jojo,右鍵單擊選擇Replace with a parameter 對腳本參數化後,能夠選擇工具欄中的Param List,設置參數化策略 8-3 其中,Select next row爲取下一個數據的方式,有四個選擇: Sequential:每一個VU按照順序讀取。每個虛擬用戶都會按照相同的順序讀取。 Random:每一個VU隨機讀取一個。 Unique:每一個VU順序取惟一的值。注意:使用該類型必須注意數據池中數據充足。 Same Line As 某個參數(好比Name):和前面定義的參數Name 取同行的記錄。一般用在有關聯性的數據上面。 8-4 Update value on爲更新值方式,有三個選擇 Once --在全部的迭代中都使用同一個值 each iteration ---每次迭代都要取新值 each occurrence ---只要發現該參數就要從新取值,也就是若是一個action中有多個該參數,每遇到一個就要從新取一個值 8-5 When out of values是當select next row選擇unique時才能用到,是數據超出範圍時的設置 Abort Vuser 停止腳本 Continue in a cyclic manner 繼續循環取值 Continue with last value 繼續取最後一個值 9 Run-time Setting 工具欄 9-1 Run Logic控制腳本迭代的次數 9-2 Pacing是設置兩次迭代時的間隔。 有3個設置: 第一個意爲第一次迭代結束後當即開始第二次迭代 第二個意爲兩次迭代直接有一個隨機的時間間隔 第三個意爲兩次迭代之間有固定的間隔時間 9-3 Think Time有兩個設置:Ignore think time和Replay think time A 選擇Ignore think time,那麼VuGen在腳本回放過程當中將不執行lr_think_time()函數,這樣將給服務器形成更大的壓力。 B 選擇Replay think time…,那麼還有如下四種選擇: 按照錄制過程當中的think time值回訪腳本 按照錄制錄製過程當中的think time值的整數倍回訪腳本 指定一個最小值和最大值,按照二者之間的一個隨機數的值來回訪腳本 限制think time的最大值,這樣VuGen在回放腳本過程當中將把腳本中think time大於該限制值的,用該限制值替代。 9-4 帶寬---通常默認最大帶寬 9-5 日誌調試 開啓/關閉 logging功能 標準日誌 擴展日誌 參數設置,Run-Time Setting設置信息 服務器返回的數據,響應頭、響應體 高級跟蹤,鏈接服務器、dns緩存、請求頭、請求體等等 # 若是是真實環境選擇 第一個選項---只當有錯誤時發送日誌---若是不這樣日誌將把內存佔滿 3 定義場景 使用LoadRunner Controller 設置測試場景 # 作併發測試,首先把腳本調通,包括參數話,設置相關檢查點,確保腳本能順利跑起來,另外還有在腳本中插入集合點,設置集合點的目的主要是爲了作併發測試,而後保存 # 腳本中的 thinktime 要註釋掉,有影響 # 3-1定義場景步驟: 打開controller,選擇manual scenario (手動選擇場景) 在Browse 中選擇要執行的腳本,而後點擊OK 1 scenario schedule設置: 進入場景設置頁面後,shedule name ---名字能夠本身定義 schedule by :能夠選擇scenario 或者 group by ----後者能夠分組,分前後順序 runmode:選擇 real world schedule 2 global scenario 設置: Initalize(ɪˈnɪʃəlaɪz)-----有三個選項--選擇initalize each Vuser just before it runs start vuser----先設置一個vuser 作基準測試,勾選simutaneously---同時的意思 duration([djuˈreɪʃn)----持續時間,能夠設長點,由於可能不知道多長時間奔潰 stop user---中止全部用戶,能夠同時中止,不會形成對系統的壓力 3 集合點設置---打開 工具欄 中scenario 下面的rendezvous(ˈrɒndɪvu)--點擊policy(策略)進行設置---選擇當全部用戶到達再進行 release釋放 4 runtime setting 設置: run log----迭代次數不須要設置,由於以前已經設置了時間 pacing(步速)----選擇第三個,選擇random(隨機的)---intervals(間隔)--選擇2到3s--使腳本 有個收尾的動做時間 log----選擇send message only when an error occues--而後後面勾選Extended log(日誌擴展)--parameter sustitution(參數替代) think time-----選擇 ignore thinktime--作併發忽略思考時間---有這個思考時間其實是模擬人的思考 miscellaneous(ˌmɪsəˈleɪniəs)雜物的意思-----選擇continue on error 和 run vuser as a thread network下面的speed simulation (sɪmjuˈleɪʃn)(模仿)----選擇最大帶寬 Browser下面的browser emulation(emjʊ'leɪʃn)(模仿)----選擇 simulation a new user on each interation (交互影響) # 設置完成------點擊編譯 # 5 點擊 scenario start ----運行穩定後逐漸添加用戶 5# 關聯# 5-1.關聯原理:有一種服務器比較聰明他會把一些寫死的數據變成動態的Session Id 因此引入了關聯 5-2.怎麼去判斷腳本有沒有關聯?a.腳本錄製正確,回放失敗,可能腳本有關聯 5-3.進一步驗證?錄製兩份相同業務的腳本進行對比tools - compare with script-打開wdiff找到腳本不一致的地方即關聯處 5-4.找到關聯後如何處理? a.自動關聯:先讓腳本回放一遍,按Ctrl+F8 選中須要關聯的地方-按correlate b.手動關聯:web_reg_save_param("id","LB=","RB=",LAST);找到關聯處複製-在generation log通常日誌裏面找到服務器最早給你的響應 - 在找相應的請求 -把關聯函數放在請求以前-在腳本里面出現關聯的地方用變量{id}替換 函數:web_reg_save_param("ID","LB=","RB=",LAST); 6 登陸和註冊要設置檢查點 6-1 登陸要進行關聯 6-2 註冊要進行參數化 # 6-3 購買機票----Action 中的航班地點要參數化,航線要進行關聯----航線有四條--ord=random number隨機數---業務邏輯 ---性能測試要熟悉業務 6-4 檢查點放在事物結束前的第一個請求,若是是該請求是圖片,則向上一個請求 6-5 關聯 ---先找到關聯的相關請求--經過ID查找--再經過快照再腳本中查找該請求---關聯放在該請求前面 4 運行場景 使用LoadRunner Controller 驅動、管理並監控場景的運行。 5 分析結果 使用LoadRunner Analysis 生成報告和圖表並評估性能。 # 綜合場景/壓力調度控制檯 # 打開controller(壓力調度控制檯) 選擇手工場景 選擇錄製的腳本(多個腳本,多個添加) 場景設置 scenario 真實場景 初始化選型 運行前初始化全部的用戶 運行設置(設置用戶數量)選擇第三個,每隔...多長時間加... 設置場景運行狀況 每隔...時間執行... 打開運行時設置,run-time-setting 設置log日誌爲在出錯是顯示詳細信息 think time 限制是靠時間爲2-3秒 雜項裏選擇出錯是運行,選用線程數(一個進程等於50個線程),沒有代理,最大帶寬。新用戶沒有緩存 ## 結果分析 ## 右鍵 merge graph 選擇合併圖片 html