本系列文章md筆記(已分享)主要討論效能測試相關知識。入門階段:認識效能測試分類-(負載測試、壓力測試、併發測試、穩定性測試),常用效能測試指標-(吞吐量、併發數、響應時間、點選數...),效能測試工具選擇。效能指令碼:1. LoadRunner介紹,2. 指令碼錄製、執行、引數化,3. 關聯、檢查點、事務、集合點。效能場景:1. 場景分類、場景設計、場景執行策略,2. 資源監控、SLA、IP Wizard應用。效能分析:1. 摘要報告、事務圖表、圖表合併,2. 交叉結果、拐點分析、Web專案資源分析。
全套筆記和程式碼自取移步gitee倉庫: gitee倉庫獲取完整文件和程式碼
感興趣的小夥伴可以自取哦,歡迎大家點贊轉發~
共 5 章,25 子模組
<center>效能測試工具-LoadRunner</center>
學習目標
1. 理解基於VuGen的指令碼錄製
2. 掌握引數化的使用方法
3. 掌握關聯的使用方法
4. 掌握檢查點的使用方法
5. 掌握事務的使用方法
6. 掌握集合點的應用
<center>VuGen操作</center>
一、VuGen介紹
VuGen(Virtual User Generator)錄製客戶端和伺服器之間的相關互動活動,它將自動生成相關模擬 實際情況的API(Application Programming Interface)函式。
提示:
1. LR錄製指令碼功能由於相容性問題,非常不好使,所以我們平時在工作中也不建議使用錄製的方式;
2. 由於相容性問題和錄製會產生多餘的操作,因此一般都是手寫指令碼;
3. 為了更好的學習VuGen,我們基於LR11自帶的訂票系統為案例,練習使用VuGen。
案例1
需求:1. 錄製機票網站的登入、退出指令碼
使用:
1. 啟動網站服務程式
2. 訪問地址:http://127.0.0.1:1080/WebTours/
3. 登入賬戶:使用者名稱:jojo 密碼:bean
【案例】-啟動服務程式
位置:開始選單 -> HP LoadRunner -> Samples -> Web -> Start Web Server
提示:WebTours專案預設使用1080埠,如果啟動失敗,看是否埠被佔用或者是否有許可權;
啟動成功介面
二、案例1-實施步驟分析
1. 啟動VuGen
2. 建立指令碼
3. 選擇錄製協議 Web(HTTP/HTML)【重要】
4. 錄製設定
5. 指令碼錄製
6. 執行指令碼
2.1 啟動VuGen
方式一:直接執行VuGen圖示啟動【推薦】
開始選單 -> HP LoadRunner -> Applications -> Virtual User Generator
方式二:透過LoadRunner管理器啟動
開始選單 -> HP LoadRunner -> LoadRunner
點選:Create/Edit Scripts
2.2 建立指令碼
1. 選單欄(File) -> New 快捷鍵(Ctrl + N)
2. 常用工具欄 -> 第一個圖示新建
3. Start Page:點選快捷建立指令碼圖示(new Script)【推薦】
2.3 選擇協議
1. New Single Protocol Script:單一協議
2. Popular Protocols:主流協議
3. Web(HTTP/HTML):HTTP協議【選擇】
2.4 錄製設定
1. Application type:Internet Applications【選擇】(Internet Applications:HTTP協議使用)
2. Program to record:選擇瀏覽器
1). IE8:(提示:64位作業系統必須選擇32位IE8!)【選擇】
2). 火狐瀏覽器v24版本;
3. URL Address:http://127.0.0.1:1080/WebTours/(專案網址)
4. Working directory:工作目錄(預設即可)
5. Record into Action:錄製指令碼存放的計劃名
1). vuser_init:首先執行;迭代執行時候,只會執行一次
2). Action:可迭代執行、可新增【選擇】
3). vuser_end:最後執行;迭代執行時候,只會執行一次
6. 點選OK -> 開始錄製
2.5 指令碼錄製
1. Recording...(xxx events):錄製事件
2. 使用者名稱:jojo 密碼:bean
3. 點選Login
4. 點選Sign Off退出登入
5. 停止錄製
6. 生成指令碼
退出登入
停止錄製
生成指令碼
2.6 執行(回放)指令碼
驗證錄製指令碼是否能正常執行
1. 點選 Run 按鈕
2. 快捷鍵:F5鍵
檢視回放指令碼的執行結果
選單(View) -> Test Results...
三、總結
1. 啟動VuGen方式
2. 錄製HTTP專案協議
3. 錄製設定各選項含義
1). Application type
2). Program to record
3). URL Address
4). Working directory
5). Record into Action
4. 如何執行指令碼
5. 如何檢視執行指令碼的結果
<center>VuGen-擴充套件(錄製、回放)</center>
目標
1. 瞭解錄製模式和指令碼型別
2. 瞭解 Run-time Settings(執行時設定)
一、錄製選項-擴充套件
1.1 錄製設定Options選項
- HTML-based script: 所有請求放到一個函式內(這裡所有請求是指,每步操作所產生的請求)
- URL-based script: 每個請求放到一個函式
提示:
1). 基於瀏覽器的應用程式推薦使用 HTML-based script
2). 不是基於瀏覽器的應用程式推薦使用 URL-based script
3). 基於瀏覽器的應用程式中使用了 HTTPS 安全協議,使用 URL-based script 方式錄製
1.2 HTML Advanced選項
1. web_submit_form: 依賴上下文才能提交。
2. web_submit_data: 不依賴上下文,每個函式都指定了具體的 URL 地址,可以直接提交成功。【推薦】
提示:沒有特殊的場景需求,推薦使用:web_submit_data
二、執行設定
Run-time Settings
(選單-Vuser -> Run-time Settings) 快捷鍵:F4
2.1 Run-time Settings
1. Run Logic 指令碼執行迭代次數
2. Think Time 執行時思考時間處理方式
1. RunLogic 迭代次數
提示:
1. 迭代就是指令碼要執行的次數
2. Init 與 End 由於只會執行一次,迭代次數設定不會生效
2. Think Time 思考時間
提示:
1. Ignore think time 預設(忽略思考時間)
2. Replay think time (回放思考時間)
1). As recorded (錄製多少秒,就等待多少秒)
2). MuItiply recorded think time by (錄製時間的倍數)
3). Use random percentage of recorded think time
( Min(錄製時間的最小百分比) Max(錄製時間的最大百分比))
4). Limit think time to(限制最高時間)
2.2 常用函式
1. lr_output_message()
2. lr_think_time()
1) 函式 lr_output_message()
輸出到執行日誌 如:lr_output_message("hello Action");
引數:要輸出的文字資訊
2) lr_think_time()
思考時間 最大可能模仿使用者真實操作 如:lr_think_time(4);
引數:停頓多少秒
練習
1. 輸出Action被執行10次,使用迭代次數完成;
2. 輸出Action1被執行暫停3秒後,輸出Action2被執行;
練習指令碼
Action()
{
lr_output_message("Action1被執行");
lr_think_time(3);
lr_output_message("Action2被執行");
return 0;
}
2.3 擴充套件 編譯
C語言屬於高階語言,不能直接被計算機識別,需要進行編譯成計算機可執行語言,在編譯的時候如果指令碼語法有錯,會直接提示。
使用:點選編譯圖示或使用快捷鍵:Shift + F5
提示:
編譯提示:No errors detected 代表透過;
<center>VuGen-手動編寫指令碼</center>
目標
1. 掌握C語言的註釋方法
2. 掌握基於LR手動編輯指令碼的方法
首先科普下C語言中的註釋;
1. //:單行註釋 如://登入
2. /**/:多行註釋 如:/*多行 註釋*/
提示:
1). Ctrl + Alt + C 為單行註釋快捷鍵;
2). Ctrl + Alt + U 為取消單行註釋快捷鍵;
一、手動編寫指令碼
1.1 為什麼要手寫指令碼
- 避免LR由於相容性導致錄製異常或失敗;
- 手寫指令碼無冗餘程式碼,更有利於指令碼的增強(插入事務、引數化)和維護
1.2 手動編寫指令碼使用編寫語言
- JAVA
- C語言【推薦】
提示:
1. LoadRunner中雖然預設是使用C語言錄製/編寫指令碼,但我們無需專門去學C語言;
2. 只需注意下基礎語法和掌握LR中常用的幾個請求函式的用法就可以編寫常用的指令碼;
1.3 指令碼請求 函式
- web_url()
- web_submit_data()
- web_custom_request()
提示:
1. web_url:GET請求使用
2. web_submit_data:GET、POST請求
3. web_custom_request:定製請求(GET\POST\PUT\DELETE)等,介面請求使用此函式
1.3.1 web_url() 函式【重點】
只能做GET請求;
語法:
web_url("request name","URL=http://***",LAST);
1). request name:標記請求名稱,比如:首頁
2). URL=http://xxx:URL=為固定格式;http://xxx為GET請求地址
3). LAST結束標誌;
1.3.2 web_submit_data()函式【重點】
預設設定是POST請求;也可以做GET請求。
語法:
web_submit_data(StepName, Action=http://xxx, <List of Attributes>,
ITEMDATA,<List of data>, LAST);
1). StepName:標記請求名稱, 比如:登入
2). Action=http://xxx:Action=為固定格式;http://xxx:為提交地址
3). List of Attributes:其他屬性 如:"Method=POST"
4). List of data:其他引數 如:"username=jojo"
5). LAST:結束符
提示:
1. POST提交引數比較多,但我們不需用一個個記,使用插入函式方法,在函式對話方塊內輸入即可;
2. 錄製HTML頁面時,Mode推薦使用HTML;
1.3.3 web_custom_request() 函式【掌握】
自定義請求方法(GET/POST/PUT/DELETE),用於實現介面測試。
語法:
web_custom_request(RequestName, <List of Attributes>,LAST);
1). RequestName:請求名稱
2). List of Attributes:屬性列表,如:"Method=POST"
3). LAST:結束符
提示:
一般做介面壓測時使用;
練習
手動編寫 iWebShop 的登入指令碼;