本系列文章md筆記(已分享)主要討論性能測(cè)試相關(guān)知識(shí)。入門(mén)階段:認(rèn)識(shí)性能測(cè)試分類(lèi)-(負(fù)載測(cè)試、壓力測(cè)試、并發(fā)測(cè)試、穩(wěn)定性測(cè)試),常用性能測(cè)試指標(biāo)-(吞吐量、并發(fā)數(shù)、響應(yīng)時(shí)間、點(diǎn)擊數(shù)...),性能測(cè)試工具選擇。性能腳本:1. LoadRunner介紹,2. 腳本錄制、運(yùn)行、參數(shù)化,3. 關(guān)聯(lián)、檢查點(diǎn)、事務(wù)、集合點(diǎn)。性能場(chǎng)景:1. 場(chǎng)景分類(lèi)、場(chǎng)景設(shè)計(jì)、場(chǎng)景運(yùn)行策略,2. 資源監(jiān)控、SLA、IP Wizard應(yīng)用。性能分析:1. 摘要報(bào)告、事務(wù)圖表、圖表合并,2. 交叉結(jié)果、拐點(diǎn)分析、Web項(xiàng)目資源分析。
全套筆記和代碼自取移步gitee倉(cāng)庫(kù): gitee倉(cāng)庫(kù)獲取完整文檔和代碼
感興趣的小伙伴可以自取哦,歡迎大家點(diǎn)贊轉(zhuǎn)發(fā)~
共 5 章,25 子模塊
性能測(cè)試工具-LoadRunner
學(xué)習(xí)目標(biāo)
1. 理解基于VuGen的腳本錄制
2. 掌握參數(shù)化的使用方法
3. 掌握關(guān)聯(lián)的使用方法
4. 掌握檢查點(diǎn)的使用方法
5. 掌握事務(wù)的使用方法
6. 掌握集合點(diǎn)的應(yīng)用
VuGen-參數(shù)化
目標(biāo)
- 理解參數(shù)化的使用場(chǎng)景
- 掌握參數(shù)化的使用方式
一、什么是參數(shù)化
根據(jù)需求動(dòng)態(tài)的獲取數(shù)據(jù)的過(guò)程
二、為什么要參數(shù)化?
- 減少重復(fù)代碼
- 數(shù)據(jù)代碼進(jìn)行分離,方便維護(hù)
需求1
說(shuō)明:由于虛擬機(jī)運(yùn)行速度原因,我們使用 lr_output_message() 函數(shù),來(lái)學(xué)習(xí)如何使用參數(shù)化
要求:輸出 我要去北京;我要去上海;我要去廣州;我要去深圳;
三、參數(shù)化操作
3.1 打開(kāi)參數(shù)化菜單
選中要參數(shù)化的文本 -> 鼠標(biāo)右鍵 -> Replace with a Parameter
或者
菜單 Insert -> New Parameter...
3.2 Replace with a Parameter 打開(kāi)的窗口
1. Parameter name:參數(shù)化引用名稱(chēng)(參數(shù)化時(shí)使用)
2. Parameter type:File 【推薦】
3. Properties:屬性-點(diǎn)擊此按鈕,可直接設(shè)置參數(shù)化引用名稱(chēng)對(duì)應(yīng)的值;【點(diǎn)擊】
提示:
1). 點(diǎn)擊OK;參數(shù)化引用名稱(chēng)具體的值,需要再次設(shè)置;
3.3 Properties 設(shè)置面板
1. Parameter type: 參數(shù)類(lèi)型 File 【重點(diǎn)】
2. File:參數(shù)保存的文件類(lèi)型及位置,一般為txt;【推薦】
3. Add Row:添加行,在當(dāng)前表格編輯數(shù)據(jù);【可選】
4. Edit with Notepad:在記事本內(nèi)編輯數(shù)據(jù);【推薦】
5. Select next row:運(yùn)行或迭代時(shí)對(duì)行的選擇方式
6. Update value on:運(yùn)行或迭代時(shí)對(duì)值的選取方式
提示:
1). 其中5.Select next row 與 6.Update value on為組合關(guān)系,不同組合效果不同,我們單獨(dú)來(lái)學(xué)習(xí)
需求1 解決方案
- 創(chuàng)建指定路徑及txt文本格式 如:C:\lr11\scripts\city.txt
- 使用 Edit with Notepad 編輯數(shù)據(jù):北京、上海、廣州、深圳
- 編寫(xiě)腳本
- 迭代次數(shù) 4
問(wèn)題
lr_output_message(“str”):函數(shù)為把str字符串輸出到日志,但它自身并不能解析讀取參數(shù);
函數(shù)(設(shè)置參數(shù)、讀取參數(shù))
- lr_save_string()
- lr_eval_string()
1. lr_save_string()
把字符串保存到指定的參數(shù)中
格式:lr_save_string("字符串","參數(shù)名")
示例:lr_save_string("北京","city");
2. lr_eval_string()
讀取變量的值,并以Char類(lèi)型返回;
格式:lr_eval_string("{參數(shù)名}");
示例:lr_eval_string("{city}");
提示:
1). 參數(shù)名稱(chēng)使用花括號(hào){}包括
2). 參數(shù)使用雙引號(hào)包括
需求1 代碼示例
Action()
{
lr_output_message("我要去%s",lr_eval_string("{NewParam}"));
return 0;
}
3.4 Select next row 與 Update value on
Select next row
讀取參數(shù)文件行的方式
方式:
1. Sequential:順序,按照行的順序讀取數(shù)據(jù),如果迭代次數(shù)大于行數(shù),再次從第一行開(kāi)始讀取
2. Random:隨機(jī),隨機(jī)讀取行
3. Unique:唯一,每次讀取唯一行,不重復(fù);
4. Same line as xxx 取參數(shù)同行(需要兩個(gè)以上參數(shù),才能顯示和使用)
注意:
使用 Unique 選項(xiàng)時(shí)會(huì)激活 When out of values:
1) Abort Vuser:中止虛擬用戶(hù)
2) Continue in a cyclic manner:以循環(huán)的方式繼續(xù)
3) Continue with last value:繼續(xù)使用最后一個(gè)值
Update value on
參數(shù)值更新的方式
方式:
1. Each iteration:每次迭代以后更新
2. Each occurrence:每次出現(xiàn)參數(shù)時(shí)更新
3. Once:每出現(xiàn)一個(gè)虛擬用戶(hù)(線程)更新一次
組合
- 行順序 + 每次迭代更新值 Sequential + Each iteration
- 行順序 + 每次參數(shù)出現(xiàn)更新值 Sequential + Each occurrence
- 行順序 + 更新一次(單用戶(hù)) Sequential + Once
說(shuō)明:
1. 組合我們?cè)谶@里就不窮舉了,以行的順序配合值的3種更新方式做演示
2. 因?yàn)榻M合內(nèi)含occurrence,所以必須要兩個(gè)Action,我們新增兩個(gè)(Action1、Action2)兩個(gè)代碼相同
代碼
Action1()
{
lr_output_message("我要去%s",lr_eval_string("{NewParam}"));
return 0;
}
Action2()
{
lr_output_message("我要去%s",lr_eval_string("{NewParam}"));
return 0;
}
Sequential + Each iteration
行為順序,值為迭代更新一次;
預(yù)期:
1. 第一次迭代:Action1:北京;Action2:北京
2. 第二次迭代:Action1:上海;Action2:上海
3. 第三次迭代:Action1:廣州;Action2:廣州
4. 第四次迭代:Action1:深圳;Action2:深圳
Sequential + Each occurrence
行為順序,值為出現(xiàn)一次更新一次
預(yù)期:
1. 第一次迭代:Action1:北京;Action2:上海
2. 第二次迭代:Action1:廣州;Action2:深圳
3. 第三次迭代:Action1:北京;Action2:上海
4. 第四次迭代:Action1:廣州;Action2:深圳
Sequential + Once
行為順序,值為單用戶(hù)只更新一次
預(yù)期:
1. 第一次迭代:Action1:北京;Action2:北京
2. 第二次迭代:Action1:北京;Action2:北京
3. 第三次迭代:Action1:北京;Action2:北京
4. 第四次迭代:Action1:北京;Action2:北京
批量獲取參數(shù)時(shí),如果保證參數(shù)不重復(fù)?(擴(kuò)展)
思路:添加時(shí)間戳
說(shuō)明:web_save_timestamp_param("time_stamp",LAST) 為時(shí)間戳函數(shù),返回:1970到現(xiàn)在的毫秒數(shù);
(time_stamp:參數(shù)為獲取值后保存的參數(shù)名稱(chēng),被引用時(shí)使用)
示例:
Action()
{
web_save_timestamp_param("time_stamp",LAST);
lr_output_message("我要去%s",lr_eval_string("{NewParam}_{time_stamp}"));
return 0;
}
其他常用參數(shù)類(lèi)型(了解)
parameter type:
1. Date/Time
2. Random Number
VuGen-關(guān)聯(lián)
目標(biāo)
- 理解關(guān)聯(lián)的概念
- 掌握關(guān)聯(lián)函數(shù)的使用
- 了解LR自動(dòng)關(guān)聯(lián)的使用
一、為什么要學(xué)習(xí)關(guān)聯(lián)?
1. 獲取動(dòng)態(tài)加載的數(shù)據(jù),例如:Session ID(會(huì)話ID)
2. 測(cè)試的時(shí)候需要獲取頁(yè)面上指定的數(shù)據(jù),注意是獲取,而不是查找
說(shuō)明:
Session ID:客戶(hù)端與服務(wù)器交互時(shí),服務(wù)器生成的一個(gè)唯一標(biāo)識(shí)碼;
(通過(guò)標(biāo)識(shí)碼服務(wù)器可以區(qū)分多次交互對(duì)象是否同一客戶(hù)端,瀏覽器只要不關(guān)閉標(biāo)識(shí)碼就不變)
二、什么是關(guān)聯(lián)(correlation)?
動(dòng)態(tài)獲取指定的數(shù)據(jù),并把獲取的數(shù)據(jù)通過(guò)參數(shù)化的方式在另一處引用
三、LoadRunner 常用的關(guān)聯(lián)方式
- 手動(dòng)關(guān)聯(lián)【推薦】
- 自動(dòng)關(guān)聯(lián)【了解】
3.1 手動(dòng)關(guān)聯(lián)【重點(diǎn)】
手動(dòng)關(guān)聯(lián)就是直接調(diào)用關(guān)聯(lián)函數(shù);
關(guān)聯(lián)函數(shù) web_reg_save_param()
1). 執(zhí)行順序:LR中函數(shù)內(nèi)含reg為注冊(cè)函數(shù),注冊(cè)函數(shù)是在下一個(gè)Action Function完成時(shí)執(zhí)行。
2). 函數(shù)位置:注冊(cè)函數(shù)【必須】放到下一個(gè)Action Function(要進(jìn)行關(guān)聯(lián)數(shù)據(jù)所在的函數(shù))函數(shù)之前;
3). 如果關(guān)聯(lián)的參數(shù)值超過(guò)256個(gè)字符,需要先調(diào)用 web_set_max_html_param_len("1024") 改變參數(shù)長(zhǎng)度;
案例 1
使用 web_reg_save_param() 函數(shù)把紅框選中內(nèi)容關(guān)聯(lián)給Welcome參數(shù)
案例 1 腳本
Action()
{
web_url("WebTours",
"URL=http://127.0.0.1:1080/WebTours/",
"TargetFrame=",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
LAST);
return 0;
}
案例1 操作分析
1. 在web_url函數(shù)之前插入關(guān)聯(lián)函數(shù) web_reg_save_param()
2. 調(diào)用 lr_eval_string() 來(lái)讀取關(guān)聯(lián)函數(shù)的參數(shù)引用名稱(chēng),并通過(guò) lr_output_message() 函數(shù)輸出到日志
案例1 操作實(shí)施
1) 插入 web_reg_save_param()方法
1. 在web_url函數(shù)之前空白行,點(diǎn)擊鼠標(biāo)右鍵
2. 選擇Insert菜單 -> New Step
2) 輸入要查找的函數(shù):
1). 圖1:輸入要查找函數(shù)的關(guān)鍵詞或全稱(chēng)
2). 圖2:找到匹配出的函數(shù),雙擊或點(diǎn)擊圖3
3). 圖3:選中圖2,點(diǎn)擊圖3進(jìn)行選中函數(shù)參數(shù)設(shè)置
3) 設(shè)置函數(shù)參數(shù)
參數(shù):
1). Parameter Name:參數(shù)名稱(chēng)(被引用時(shí)使用)
2). Left Boundary(LB):左邊界
3). Right Boundary(RB):右邊界
4). Not Found:關(guān)聯(lián)失敗時(shí),處理方式
5). Search in:匹配搜索響應(yīng)代碼范圍
注意:
單引號(hào)(')、雙引號(hào)(")、反斜杠(\)、回車(chē)換行等需要轉(zhuǎn)義字符,加上轉(zhuǎn)義字符[\]
4) 如何查看頁(yè)面元素響應(yīng)代碼?
- 通過(guò)LR查看響應(yīng)代碼
- 通過(guò)頁(yè)面查看源代碼
1). 通過(guò)LR查看 【注意:必須是錄制腳本-手動(dòng)編寫(xiě)腳本沒(méi)有快照】
提示:
1. 結(jié)構(gòu)為T(mén)ree
2. url:為WebTours
3. 頁(yè)面為/WebTours/home.html
2). 通過(guò)頁(yè)面源代碼查看 關(guān)聯(lián)
地址:http://127.0.0.1:1080/WebTours/home.html 參數(shù)化并輸出到日志
代碼:
Action()
{
web_reg_save_param("Webcome",
"LB=</H1>\n",
"RB=\n"
"<br>",
"NotFound=ERROR",
"Search=All",
LAST);
web_url("WebTours",
"URL=http://127.0.0.1:1080/WebTours/",
"TargetFrame=",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
LAST);
lr_output_message("Webcome值為:%s",lr_eval_string("{Webcome}"));
return 0;
}
3.2 自動(dòng)關(guān)聯(lián) 【了解】
1. 自動(dòng)關(guān)聯(lián)LoadRunner提供兩種方式:
1). 錄制時(shí)關(guān)聯(lián)-在錄制腳本的時(shí)候如果有符合關(guān)聯(lián)規(guī)則的就自動(dòng)進(jìn)行關(guān)聯(lián);
注意:此種方式依賴(lài)于LR自帶的規(guī)則或新建的自定義規(guī)則
2). 錄制后關(guān)聯(lián)-腳本錄制完成并且運(yùn)行完一次后,打開(kāi)掃描工具,進(jìn)掃描需要關(guān)聯(lián)的數(shù)據(jù)進(jìn)行關(guān)聯(lián);
注意:
① 利用掃描工具必須要先運(yùn)行一遍腳本
② 掃描關(guān)聯(lián):很多時(shí)候LR掃描不到需要關(guān)聯(lián)的信息(比如手寫(xiě)的腳本),所以一般不推薦使用;
2. 自動(dòng)關(guān)聯(lián)調(diào)用的是關(guān)聯(lián)函數(shù) web_reg_save_param_ex();
(web_reg_save_param_ex與web_reg_save_param功能大致相同,它也可以使用正則表達(dá)式和過(guò)濾器)
1) 自動(dòng)關(guān)聯(lián)-啟用自動(dòng)關(guān)聯(lián)設(shè)置
啟動(dòng)自動(dòng)關(guān)聯(lián)位置:工具菜單(Tool) -> Recording Option文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-833217.html
2) 自動(dòng)關(guān)聯(lián)-掃描工具
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-833217.html
- 啟動(dòng):打開(kāi)掃描工具-Ctrl+F8 或者菜單欄(Vuser) -> Scan Script for Correlations
- 掃描:掃描之前先運(yùn)行一遍腳本
- 關(guān)聯(lián):圖中個(gè)第二步Correlation Results內(nèi)進(jìn)行關(guān)聯(lián);
自動(dòng)關(guān)聯(lián)總結(jié)
1. 自動(dòng)關(guān)聯(lián)-錄制時(shí)關(guān)聯(lián):采用自帶或設(shè)定的規(guī)則在錄制腳本的時(shí)候自動(dòng)關(guān)聯(lián)
2. 自動(dòng)關(guān)聯(lián)-錄制后關(guān)聯(lián):前后運(yùn)行兩次,搜索兩次不同之處為需要關(guān)聯(lián)的數(shù)據(jù),進(jìn)行確認(rèn)關(guān)聯(lián)
3. 自動(dòng)關(guān)聯(lián)無(wú)論哪種方式,都是采用調(diào)用關(guān)聯(lián)函數(shù)的方法,所以工具智能人更智能,因此推薦優(yōu)先使用手動(dòng)關(guān)聯(lián)
未完待續(xù), 同學(xué)們請(qǐng)等待下一期
全套筆記和代碼自取移步gitee倉(cāng)庫(kù): gitee倉(cāng)庫(kù)獲取完整文檔和代碼
感興趣的小伙伴可以自取哦,歡迎大家點(diǎn)贊轉(zhuǎn)發(fā)~
到了這里,關(guān)于【性能測(cè)試】性能測(cè)試工具LoadRunner,參數(shù)化關(guān)聯(lián)。全md文檔筆記(已分享文檔代碼)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!