【測試運維】效能測試經驗文件總結第3篇:VuGen詳解(已分享,附程式碼)

發表於2024-02-24

本系列文章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 VuGen啟動

方式二:透過LoadRunner管理器啟動

開始選單 -> HP LoadRunner -> LoadRunner

VuGen啟動02

VuGen啟動03

點選: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 指令碼錄製

WebTours

1. Recording...(xxx events):錄製事件
2. 使用者名稱:jojo 密碼:bean
3. 點選Login
4. 點選Sign Off退出登入
5. 停止錄製
6. 生成指令碼

退出登入

WebTours

停止錄製

WebTours

生成指令碼

WebTours

2.6 執行(回放)指令碼

驗證錄製指令碼是否能正常執行

WebTours

1. 點選 Run 按鈕
2. 快捷鍵:F5鍵

檢視回放指令碼的執行結果

WebTours

選單(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(執行時設定)
一、錄製選項-擴充套件

WebTours

1.1 錄製設定Options選項

WebTours

  1. HTML-based script: 所有請求放到一個函式內(這裡所有請求是指,每步操作所產生的請求)
  2. URL-based script: 每個請求放到一個函式

提示:

1). 基於瀏覽器的應用程式推薦使用 HTML-based script
 2). 不是基於瀏覽器的應用程式推薦使用 URL-based script
 3). 基於瀏覽器的應用程式中使用了 HTTPS 安全協議,使用 URL-based script 方式錄製
1.2 HTML Advanced選項

WebTours

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 迭代次數

WebTours

提示:
    1. 迭代就是指令碼要執行的次數
    2. Init 與 End 由於只會執行一次,迭代次數設定不會生效
2. Think Time 思考時間

WebTours

提示:
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 為什麼要手寫指令碼
  1. 避免LR由於相容性導致錄製異常或失敗;
  2. 手寫指令碼無冗餘程式碼,更有利於指令碼的增強(插入事務、引數化)和維護
1.2 手動編寫指令碼使用編寫語言
  1. JAVA
  2. C語言【推薦】

提示:

1. LoadRunner中雖然預設是使用C語言錄製/編寫指令碼,但我們無需專門去學C語言;
2. 只需注意下基礎語法和掌握LR中常用的幾個請求函式的用法就可以編寫常用的指令碼;
1.3 指令碼請求 函式
  1. web_url()
  2. web_submit_data()
  3. 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 的登入指令碼;

未完待續, 同學們請等待下一期

全套筆記和程式碼自取移步gitee倉庫: gitee倉庫獲取完整文件和程式碼

感興趣的小夥伴可以自取哦,歡迎大家點贊轉發~

相關文章