1、腳本錄製流程:web
一、新建腳本選擇網絡協議(自帶協議探測工具、詢問開發、以往經驗判斷項目的協議)數組
二、錄製前的準備(選擇被測系統的類型(瀏覽器與非瀏覽器)、錄製時採用的瀏覽器、被測服務器地址)瀏覽器
三、設置錄製選項服務器
四、插入命令網絡
五、開始錄製(、【中止、暫停、插入新的action、開始事物、結束事物、插入集合點、插入註釋】)併發
六、中止錄製dom
七、腳本查看模式(兩種腳本查看方式:Script View:能夠查看所有錄製的腳本代碼;Tree View:能夠查看每一個url獲取來的頁面。函數
注意:工具
每一個腳本都是一個函數調用,函數中的參數記錄了客戶端發送給服務端的(請求request)數據post
web_url:直接請求下載一個網頁
web_link:經過點擊文本連接請求打開一個網頁
web_image:經過單擊圖片連接請求打開一個網頁
web_submit_from:表明在請求打開一個網頁時須要將必定的數據上傳到服務器)
八、腳本的組成(init、action、end)[VuGen的腳本分爲三部分:Vuser_init,Action,Vuser_end。其中Vuser_init和Vuser_end都只能存在一個,而Action可分紅無數多個部分,能夠經過點旁邊的New按鈕來建立Action。在迭代執行測試腳本時,Vuser_init和Vuser_end中的內容只會執行一次,迭代的是Action部分。]
2、腳本回放設置(run-time-settings)
一、run logic:用戶建模:init、action、end;注意迭代的做用點爲action,不會做用在init、end
二、Pacing(步長): 上一次迭代一結束就開始新的迭代
在上一次迭代結束以後:延遲固定(fixed)的時間XX開始新的迭代;延遲隨機(random)的時間段開始新的迭代
延遲:固定的時間XX開始新的迭代;隨機的時間段開始新的迭代。注意:延遲的時間包括上一迭代運行的時間
三、Log:啓用日誌:只有當錯誤出現的時候才記錄日誌
關閉日誌
四、Think time:忽略思考時間
回放思考時間:按照錄制思考時間、讓思考時間乘以幾倍、使用錄製思考時間的隨機百分比、統計規則:限制思考時間不超過XX秒。
做用:更加真實的去模擬用戶操做之間的延遲
五、Proferences:checks:啓用/關閉圖片和文本檢查
3、腳本加強設置
一、函數
web_url:做用是模擬瀏覽器發出get請求
web_submit_data():做用是模擬瀏覽器發出get/post請求
web_custom_request():做用是模擬瀏覽器發出HTTP支持的任何方式的請求
二、參數化
功能:讓腳本使用批量的變化的數據測試,實現模擬不一樣數據/用戶的行爲
函數格式:返回值:返回值類型 函數名稱(參數類型 參數,參數類型 參數)舉例:int add(int a,int b)
設計思路:
步驟:一、首先肯定腳本須要參數化的對象/數據
二、選中目標數據,右擊 replace-with-a-parameter
三、填寫參數名稱和名稱,點擊肯定
四、按下crtl+L打開參數設置界面,增長或修改數據,或者按下菜單中的P圖標,可點擊edit with-notepad進行編輯,設置參數取值策略
注意:參數化文件中測試數據最後一行應保留一個空行
參數化設置:
參數類型:file、date Time、RandomNumber、Unique Number
Vugen中的參數:A(sequential、random、unique)取值順序;
B(each iteration、each occurrence、once)何是更新;
a1b1:順序取值,每次迭代更新
a1b2:順序取值,每次出現更新
a1b3:順序取值,只取一次,再也不更新
a2b1:每次迭代隨機一次
a2b2:每次出現隨機一次
a2b3:就隨機一次,再也不更新
a3b1:惟一取值,每次迭代更新
a3b2:惟一取值,每次出現更新
a3b3:惟一取值,只取一次,再也不更新。
三、學習函數
lr_eval_string("{參數名}");取出參數中的值
用法:lr_eval_string("{參數}");
lr_save_string("string","name");保存string到參數name中;舉例:lr_save_string("51testing","name");
lr_output_message("輸出的內容")
四、參數和變量的區別
定義:lr_save_string("XXX","name");位置隨意
變量:int i;位置必須放在腳本的首行
做用域:參數:全局腳本使用,任意action都可
變量:只限當前定義action的腳本中使用。
4、關聯--事物--檢查點--思考時間--集合點
關聯:手動關聯:高級關聯獲取多個數據,lr_paramarr_idx()------>經過索引找到指定位置的元素
lr_paramarr_len()------>獲取參數數組的長度
lr_paramarr_random()-----獲取參數數據隨機位置上的元素
自動關聯:錄製中關聯-----須要提早設置好關聯規則
錄製後關聯-----一、錄製完後關聯,必須運行一遍,以收集響應數據
二、掃描腳本,掃描過程當中與上一步的響應數據作對比,若是發現存在不一樣的響應數據,關聯便可。
事物:添加數據(開始事物,結束事物)
判斷事物結果:手動判斷:經過檢查點判斷
函數:lr_start_transaction(""事物名)
lr_end_transaction("事物名",事物狀態)
檢查點:做用:檢查請求觸發的業務有沒有真正成功
函數:
文件檢查:web_find與web_reg_find區別:這兩個函數類型不一樣,web_find是普通函數,web_reg_find是註冊型函數;
web_find使用時必須開啓內容檢查選項,而web_reg_find則沒有此限制;
web_find只能用在基於HTML模式錄製的腳本中,而web_reg_find沒有此限制;
web_find時在返回的頁面中進行內容查找,web_reg_find是在響應中進行查找;
web_find在執行效率上不如web_reg_find;
web_reg_find()【("Text=Welcome,<b>jojo<b>",要查找的字符串
"Search=Boby",查找範圍
"SaveCount=num",查找到的次數保存的參數名
LAST);】
圖片檢查:web_image_check()
思考時間:做用:更加真實模擬用戶發出請求之間的延遲,也就是用戶暫時停發請求的時間
函數:lr_think_time(秒數)
注意:實際狀況下,獲取真實場景的系統的性能指標通常加入思考時間(1-2秒)
若是作壓力測試獲取系統的峯值指標時,通常忽略思考時間
通常狀況下,思考時間函數不要放入事物內,以避免後期影響計算事物響應時間
集合點:做用:設集合點是爲了更好模擬併發操做,運行過程當中多個用戶能夠在集合點等待到必定條件後再一塊兒發後續的請求。
不適合單獨業務,適用於業務場景
設置策略:當%X所有用戶到達集合點時,開始釋放
當%X正在運行的用戶到達集合點時,開始釋放
當X個的用戶到達集合點時,開始釋放
函數:lr_rendezvous("集合點");