【測試運維】性能測試經驗文檔總結第3篇:VuGen詳解(已分享,附代碼)

来源:https://www.cnblogs.com/yinuo112/p/18018294
-Advertisement-
Play Games

internal class Program { static List<string> list=new List<string>() { "A","B","C","D","A","B","C","D" }; static string hiddenEle1 = string.Empty;//第一 ...


本系列文章md筆記(已分享)主要討論性能測試相關知識。入門階段:認識性能測試分類-(負載測試、壓力測試、併發測試、穩定性測試),常用性能測試指標-(吞吐量、併發數、響應時間、點擊數...),性能測試工具選擇。性能腳本:1. LoadRunner介紹,2. 腳本錄製、運行、參數化,3. 關聯、檢查點、事務、集合點。性能場景:1. 場景分類、場景設計、場景運行策略,2. 資源監控、SLA、IP Wizard應用。性能分析:1. 摘要報告、事務圖表、圖表合併,2. 交叉結果、拐點分析、Web項目資源分析。

全套筆記和代碼自取移步gitee倉庫: gitee倉庫獲取完整文檔和代碼

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


共 5 章,25 子模塊

性能測試工具-LoadRunner

學習目標

1. 理解基於VuGen的腳本錄製
2. 掌握參數化的使用方法
3. 掌握關聯的使用方法
4. 掌握檢查點的使用方法
5. 掌握事務的使用方法
6. 掌握集合點的應用

VuGen操作

一、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. 如何查看運行腳本的結果

VuGen-擴展(錄製、回放)

目標

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 代表通過;

VuGen-手動編寫腳本

目標

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倉庫獲取完整文檔和代碼

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Java 方法 簡介 方法是一塊僅在調用時運行的代碼。您可以將數據(稱為參數)傳遞到方法中。方法用於執行特定的操作,它們也被稱為函數。 使用方法的原因 重用代碼:定義一次代碼,多次使用。 提高代碼的結構化和可讀性。 將代碼分解成更小的模塊,易於維護和理解。 創建方法 方法必須在類內聲明。它的定義包括 ...
  • 前言我個人對三維渲染領域的開發有著濃厚的興趣,儘管並未在相關行業工作過,我的瞭解還很片面。去年,在與群友聊天時,他們推薦了一本《Unity Shader入門精要》,說適合像我這樣想自學的新人,於是我打開了通往新世界的大門。這本書涵蓋了很多基礎的渲染知識,如光照、陰影、各種風格的渲染等等。對於有興趣的 ...
  • Gif演示 分解步驟 1,使用組件DataGridView 2,使用DataSource來控製表格展示的數據來源(註意:來源需要是DataTable類型) 3,需要用到非同步線程。如果是不控制數據源的話,需要使用UI安全線程;(使用Control.Invoke或Control.BeginInvoke方 ...
  • 今天同事發開中遇到了一個代碼性能優化的問題,原本需求是:從一個資料庫中查詢某個表數據,存放到datatable中,然後遍歷datatable,看這些數據在另一個資料庫的表中是否存在,存在的話就要更新,不存在就要插入。 就這個需求本身來說很簡單,但是隨著數據量的增大,之前通過迴圈遍歷的方式就出現了性能 ...
  • 網關: 一:apisix doc:https://apisix.apache.org/zh/docs/apisix/getting-started/README/ github:https://github.com/apache/apisix 二:Kong github:https://github ...
  • 在實際應用中,富文本隨處可見,如留言板,聊天軟體,文檔編輯,特定格式內容等,在WPF開發中,如何實現富文本編輯呢?本文以一個簡單的小例子,簡述如何通過RichTextBox實現富文本編輯功能,主要實現複製,剪切,粘貼,撤銷,重做,保存,打開,文本加粗,斜體,下劃線,刪除線,左對齊,居中對齊,右對齊,... ...
  • 概述:通過FluentFTP庫,輕鬆在.NET中實現FTP功能。支持判斷、創建、刪除文件夾,判斷文件是否存在,實現上傳、下載和刪除文件。簡便而強大的FTP操作,提升文件傳輸效率。 在.NET中,使用FluentFTP庫可以方便地實現FTP的相關功能。以下是判斷文件夾是否存在、文件夾的創建和刪除、判斷 ...
  • 概述:在C#多線程編程中,合理終止線程是關鍵挑戰。通過標誌位或CancellationToken,實現安全、協作式的線程終止,確保在適當時機終止線程而避免資源泄漏。 應用場景: 在C#多線程編程中,有時需要終止正在運行的線程,例如在用戶取消操作、程式關閉等情況下。 思路: 線程終止通常涉及到合作式終 ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...