Jmeter(三)指令碼製作與調優

2021-10-02 09:58:07 字數 2676 閱讀 4750

重點:引數化、csv讀取資料、函式

難點:正規表示式

手工編寫指令碼

介面引數

介面的傳遞引數可由:

1、介面文件、api文件、swagger工具整合

2、抓包工具

錄製指令碼

badboy工具錄製

1、介面文件、api文件、swagger

2、抓包工具

http**伺服器

1、**配置

使用jmeter做介面測試的時候建議加上斷言。做效能測試的時候斷言課加可不加

http資訊頭管理器:http請求頭的必帶引數

後置處理器:獲取到請求的值傳給變數

***:輸出各種報告結果

引數化

引數值以 $ 取值

使用者定義的變數:

同乙個執行緒組,使用者定義變數值是不會變的(解決方法,可以把隨機函式放到引數值裡面)

斷言

json提取器

$.欄位名

層級取值:$.欄位名[索引值].二級欄位名

正規表示式:通常都是由perl語言改進來的

說明:(1)引用名稱:下乙個請求要引用的引數名稱,如填寫title,則可用$引用它。

(2)正規表示式:

():括起來的部分就是要提取的。

.:匹配任何字串。

+:一次或多次。

?:不要太貪婪,在找到第乙個匹配項後停止。

(3)模板:用$$引用起來,$1$表示解析到的第1個值

(4)匹配數字:0代表隨機取值,1代表全部取值,通常情況下填0

(5)預設值:如果引數沒有取得到值,那預設給乙個值讓它取。

補充:(.)換行符以外的所有字元

* 多次

? 一次

.* 0次或多次

.+ 1次或多次

[0-9] 1數字

[0-9]+ 至少匹配一次

\d+ 匹配0到多個數字

\w+ 多個字母或數字都可以匹配

[a-z]+ 配置所有字母

正規表示式:主要就是:左邊界(.*?)右邊界,左右邊界就是為了能準確定位到想匹配的內容,(.*?) 是替換了想要提取的內容

裡面的'?'為非貪婪匹配,(非貪婪模式就是說在遇到第乙個右邊界後就停止匹配,這樣就可以精確拿到想要的內容)

模板:對應正規表示式提取器型別,樣式為:$n$,

若模板為:$0$,則為整個表示式匹配到的內容,就是包括小括號內跟小括號外的內容

若模板為:$1$,則對應正規表示式中的第乙個(.*?)所匹配的內容,

若模板為:$2$,則對應正規表示式中的第二個(.*?)所匹配的內容,

若模板為$1$$2$,則把2個(.*?)所匹配的內容拼接起來,

匹配數字:正規表示式匹配資料的最終結果可以看做乙個陣列,匹配數字即可看做是陣列的第幾個元素。

當為 0 時,隨機返回匹配的資料

當為 1 時,表示返回匹配結果陣列的第乙個元素。當為負數(-1,-2,-99都可以)時,表示返回全部元素,並且同時會返回乙個元素總數的變數如sessid,在引用時:通過$的方式來取第1個匹配的內容,$來取第2個匹配的內容。

預設值:匹配失敗時的預設值。通常用於後續的邏輯判斷

檔案讀取

在國內置議使用.txt的文字格式檔案,如果使用.csv格式檔案很有可能出現亂碼

在.txt文字中,以換行為區分遍歷資料,在csv資料檔案設定中變數要以英文,分割

常用函式 random、time、v函式

random 隨機數

time 時間函式

如果引數需要為當前日期,那公式為:$ 或者 $

$ :格式化生成時間格式 2018-06-01 11:08:23:635

$ :預設該公式精確到毫秒級別,13位數 1527822855323

$ :該公式精確到秒級別,10位數 1527822871

v 巢狀函式

已經定義了乙個變數a 要再在這個變數名後面加乙個變數(如遞增數字)n 不能直接用$},必須用巢狀函式__v :$)}指令碼調優

寫入檔案

如果要把乙個介面請求到的資料寫到乙個檔案中去,則在察看結果數中的所有資料寫入乙個檔案,瀏覽到路徑即可

外掛程式安裝場景設計

階梯場景(stepping thread group)

next add *** threads *** seconds *** using ramp-up *** 

next add *** threads *** seconds *** using ramp-up *** 

波浪式場景(uitimate thread group)

serveragent 服務監控軟體(安裝在伺服器中啟動)

啟動服務監控,用tcpd

預設啟動

startagent.sh  預設埠4444

自定義埠啟動

startagent.sh --udp-port 0 --tcp-port 自定義埠號

--udp-port 0 關閉udp服務

三 指令碼編寫與執行

編寫指令碼的思路 明確指令碼實現的功能 哪些資料是變化的,把變化的資料用變數來表示 使用哪種流程控制 使用哪些系統命令 1 編寫指令碼 使用vim文字編輯器 每行一條linux命令,按執行順序依次編寫 2 賦予可執行許可權 若直接執行指令碼檔案,必須具有可執行屬性 3 執行指令碼檔案 指令碼檔案路徑...

Mysql資料備份三 指令碼備份mysqldump

使用mysqldump進行備份,這個是最保險最安全的資料備份方法.雖然使用它比mysqlhotcopy要慢些,但其匯出的是sql語句文字檔案,不存在平台的相容性問題.也可用於備份除myisam型別以外的資料表.下面給出shell指令碼,大家可以根據自己的實際需要對其進行修改,以完成自己需要的功能.s...

jmeter4 0指令碼錄製

jmeter錄製指令碼有兩種方式。1.通過第三方工具錄製比如 badboy,然後轉化為jmeter可用的指令碼 2.使用jmeter本身自帶的錄製指令碼功能。本次使用jmeter本身自帶的錄製指令碼功能 1.新建測試計畫 2.新增執行緒組 3.新增http cookie manager 4.新增 h...