天天看點

性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式

https://blog.csdn.net/weixin_45912307/article/details/120191558

性能測試階段6之jmeter元件和基本使用

  • day01 jmeter基礎
    • 1.1jmeter環境配置及安裝
      • 1.1.1jmeter安裝及啟動
    • 1.2jmter常用目錄檔案介紹
      • 1.2.1bin目錄
      • 1.2.2 docs
      • 1.2.3 lib
      • 1.2.4 Printable_docs
    • 1.3jmeter基本使用&元件介紹
      • 1.3.1 首頁面布局
      • 1.3.2 jmeter入門腳本
      • 1.3.3 測試計劃元件
    • 1.4 jmeter運作原來
    • 1.5 測試計劃要素
    • 1.6 錄制腳本
      • 1.6. 1badboy錄制
      • 1.6.2 jmeter自身代理錄制腳本
    • 1.7 注意事項
    • 1.8 接口基礎知識
  • day02 jmeter核心知識
    • 2.1 發送http請求
      • 2.1.1 http管理器
      • 2.1.2 http請求配置
      • 2.1.3 http請求預設值
    • 2.2 參數化
      • 2.2.1 csv資料控件實作參數化
      • 2.2.2 使用者參數化
      • 2.2.3 使用者定義的變量
      • 2.2.4 jmeter參數化總結
    • 2.3 jmeter連接配接資料庫---以MySql為例
    • 2.4關聯
      • 2.4.1 xpath關聯
      • 2.4.2 json提取器
      • 2.4. 3 正規表達式提取器
    • 2.5 斷言
      • 2.5.1 響應斷言
      • 2.5.2 json斷言
      • 2.5.3 大小斷言和響應時間斷言
    • 2.6 集合點
    • 2.7 内置函數
    • 2.8 線程組間通信
    • 2.9 邏輯控制器
      • 2.9.1 if控制器
      • 2.9.2 ForEach控制器
      • 2.9.3環控制器
  • day 03 jmeter中元件總結
    • 3.1什麼是元件
    • 3.2 元件作用域
    • 3.3 元件執行順序
  • day04 分布式
    • 4.1 jmeter分布式步驟
    • 4.2 非GUI模式運作
    • 4.3 性能名額解讀:
    • 4.4 jmeter靜默壓測

day01 jmeter基礎

1.1jmeter環境配置及安裝

1.1.1jmeter安裝及啟動

  • 安裝jdk1.8
  • 再官網下載下傳jmeter的zip檔案
    • https://jmeter.apache.org/
    • 解壓zip檔案,将解壓後的檔案放在一個沒有中文的路徑下
  • jmeter啟動
    • 進入jmeter路徑 的bin目錄并且打開
    • 在bin目錄下找到jmeter.bat檔案,輕按兩下
  • 在windows下啟動jmeter
    • jmeter/bin jmeter.bat
  • 在liunx下啟動jmeter
    • jmeter/bin jmeter.sh

1.2jmter常用目錄檔案介紹

性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式

1.2.1bin目錄

  • jmeter.properties

    系統配置檔案
    • 如果配置檔案有修改,必須重新開機jmeter才能生效
  • jmeter.sh

    linux下啟動檔案
  • jmeter.bat

    Windows下啟動檔案
  • jmeter-server.bat

    windows分布式測試要用的伺服器配置
  • jmter-server

    linux分布式測試要用的伺服器配置

1.2.2 docs

  • 接口文檔目錄

1.2.3 lib

  • 存放jar包,jmeter核心檔案

1.2.4 Printable_docs

  • printable_docs的usermanual子目錄下的内容是JMeter的使用者手冊文檔,其中usermanual下component_reference.html是最常用到的核心元件幫助文檔。

1.3jmeter基本使用&元件介紹

1.3.1 首頁面布局

jmeter主要頁面布局标題欄、菜單欄、工具欄、樹形标簽欄和内容欄

  • 标題欄:主要顯示計劃資訊及JMeter版本。
  • 菜單欄:全部的功能的都包含在菜單欄中。
  • 工具欄:工具欄中的按鈕在菜單欄都可以找到,工具欄就相當于菜單欄常用功能的快捷按鈕樹形
  • 标簽欄:樹形标簽欄通常用來顯示則試用例(計劃)相關的标簽。
  • 内容欄:配合樹形标簽欄顯示,樹形标簽中點選哪個标簽,内容欄中就顯示相應的内容和操作。

1.3.2 jmeter入門腳本

  • 添加測試計劃
    • 打開jmeter預設有一個測試計劃
  • 添加線程組
    性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
  • 線程組下添加取樣器:http請求
    • 滑鼠右鍵Thread Group —> sampler —> HTTP Request
      性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
      性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
  • 設定斷言:
    • 采樣器下添加響應狀态碼斷言
    • 采樣器下添加響應文本斷言
      性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
      性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
      性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
  • 添加監聽器:檢視結果樹、聚合報告
    • 在取樣器下添加檢視結果樹
    • 線上程組下添加聚合報告
      性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
      性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
  • 設定線程組:并發數、加載時間、循環次數
    性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
  • 運作腳本:點選綠色三角按鈕
    性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
  • 結果 檢視
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式

1.3.3 測試計劃元件

  • 測試計劃:項目名稱
  • 線程組:業務流程
    • Number of Theads(users):并發數
    • Ramp-up period(seconds):使用者全部啟動時間(s)
    • Loop Count:循環次數
  • 取樣器(Sampler):測試用例(一個接口請求)

    作用: 向伺服器發送請求并記錄響應内容和響應時間

    • 是性能測試中向伺服器發送請求,記錄響應資訊,記錄響應時間的最小單元
    • 一個取樣器通常進行三部分的工作:向伺服器發送請求,記錄伺服器的響應資料和記錄響應時間資訊
  • 邏輯控制器(Logic Controller)
    • 一類:用于控制testplan中sample節點發送請求的邏輯順序的控制器,常用:IF、SwitchController、Runtime Controller、循環控制器
      性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
    • 另一類:用于組織可控制sample節點的,如:事務控制器、吞吐量控制器
  • 配置元件(Config Element):用于提供靜态資料配置的支援(一般用于參數化)
  • 前置處理器(pre Processors):實際發送請求之前對即将發出的請求進行特殊處理
  • 後置處理器(post Processors):對sample送出請求後得到的伺服器響應進行處理。一般用于提取響應中的特定資料
  • 定時器(Timer)
    • 用于操作之間設定等待時間,等待時間是性能測試中常用的控制用戶端QPS的手段
  • 斷言(Assertions):檢查測試中得到的響應資料是否符合預期
  • 監聽器(Listener):對測試結果處理和可視化展示的一系列元件,常用有圖形結果、檢視結果樹、聚合報告

1.4 jmeter運作原來

  • 以線程方式在jvm虛拟機上運作
  • jmeter GUI模式運作測試腳本對電腦本身的資源消耗較大,無法實作大的并發和壓力測試
  • 使用指令行模式實作高并發和壓力測試
  • 使用GUI模式:用于編寫和調試測試腳本

1.5 測試計劃要素

  • 測試計劃
  • 在測試計劃中至少有一個線程組
  • 線上程組中至少有—個取樣器
  • 在測試計劃中必須有監聽器

1.6 錄制腳本

1.6. 1badboy錄制

  • 安裝badboy
  • 打開badboy在位址欄輸入被測位址,回車
  • 打開badboy時預設記錄狀态,輸入網址,直接操作即可
  • 操作完成,點選停止記錄
  • 導出腳本
    • file----export jmeter 儲存
  • 在jmeter中打開已有檔案
    • jmeter檔案名.jmx
    • 在jmeter點選打開檔案,選擇檔案路徑,找到需要的檔案進行打開即可
  • 添加監聽器|:檢視結果樹/聚合報告
  • 設定使用者數、線程組、循環次數,點選運作
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式

1.6.2 jmeter自身代理錄制腳本

  • 1.打開jmeter建立新的測試計劃
  • 2.在測試計劃下添加一個線程組
  • 3.添加http代理伺服器
    • 在測試計劃下—滑鼠右鍵–非測試元件—http代理伺服器
  • 4.配置http代理伺服器
    • 端口号預設
    • https domains:填寫電腦本地ip
    • 在Plan Creation中選擇目标控制器
    • 在requests Filtering中配置
      • 添加比對的url:

        .*\.(baidu\.com).*

        ;過濾的url:

        .*\.(css|js|PNG|jsp|icon|png|gif).

  • 5.手動設定代理
  • 6.線程組下添加錄制控制器
  • 7.http代理伺服器點選Start按鈕,錄制完畢點選停止
  • 8.線程組下添加檢視結果樹
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式

1.7 注意事項

  1. 解決中文亂碼問題
    • Jmeter安裝目錄

      /bin/ jmeter.properties

      sampleresult.default.encoding

      預設為

      “ISO-8859-1”

      ,将參數修改為

      sampleresult.default.encoding=utf-8

      即可
    • 同時注章将注輕符呂去掉,于不會牛動
  2. 修改預設語言
    • language = zh_CN
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
  1. 修改完重新啟動jmeter,檢查是否還有亂碼問題
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式

1.8 接口基礎知識

接口三要素

  • 請求位址/方式
  • 請求參數
  • 傳回值

    HTTP協定

  • 請求方式
    • get
      • 帶參數params
      • 不帶參數
    • post
      • x-www-form-urlencoded參數類型鍵值對
        • content-type:application/x-www-form-urlencoded
      • json格式資料參數類型
      • content-type:application/json
    • put
    • delete

day02 jmeter核心知識

2.1 發送http請求

2.1.1 http管理器

  • http資訊頭管理器<==>http請求頭
  • 主要使用Content-Type參數
    • Content-Type指請求參數的資料類型
  • 在jmeter中,發送http的post請求時,需要添加http資訊頭管理器
  • 執行個體:https://www.ctrip.com/
    • 浏覽器輸入https://www.ctrip.com/
    • 谷歌浏覽器打開F12,輸入目的地,點選搜尋
    • 對照抓取的資料,在http采樣器中填寫:協定(https)、伺服器名稱或ip、請求方式(post)、路徑、請求體
    • 在http采樣器下添加http資訊頭管理器,對照request header,添加請求資料類型
      • accept:json
      • content-type:application/json
    • 添加檢視結果樹,點選運作
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式

2.1.2 http請求配置

http協定 預設端口80

https協定 預設端口443

  • 協定 http
  • 伺服器名稱或ip:接口域名
  • 端口号:如果有填寫具體端口号,如果沒有端口号不填
  • 方法:get、post、put、delete、PATCH、HEAD、copy、options
  • 路徑:接口位址
  • 内容編碼:utf-8
  • 參數:針對post請求是

    x-www-form-urlencoded

    格式和

    form-data

    格式
  • 消息體資料:針對post請求中json格式/xml格式請求參數,相當于postman中raw
  • 檔案上傳:上傳檔案接口

2.1.3 http請求預設值

  • 位置:
    • 線程組—添加----配置元件—HTTP請求預設值
  • 作用:
    • 将同一線程組下所有HTTP請求的協定和伺服器域名統一管理
    • 如果HTTP請求中自己填寫的協定和伺服器域名,當發送請求時,使用本身的
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式

2.2 參數化

  1. 參數化定義:根據需求擷取資料并進行指派的過程
  2. jmeter中常用方式
    • csv data set Config
      • 适用氛圍:适用于需要大量測試資料的前提
    • jmeter引用變量寫法:

      ${變量名}

2.2.1 csv資料控件實作參數化

  • 建立一個csv格式檔案
    • 在excel建立檔案另存為csv格式,使用notepad++轉碼為utf-8
    • 配置jmeter中csv資料檔案設定
      • 位置:線程組–添加----配置元件-----CSV資料檔案設定。
      • 檔案名:選擇準備好的csv檔案
      • 檔案編碼:UTF-8
      • 變量名稱:變量名;如果有多個使用英文逗号隔開
      • 忽略首行:如果csv檔案首行寫的是變量名稱,選擇忽略首行True,如果不是選擇False
      • 分隔符:如果csv檔案使用的是逗号隔開,即預設值。其餘選項按照預設值即可
    • 在HTTP請求中引用參數
      • ${變量名}
      • x-www-form-urlencoded格式是:

        "${變量名}"

    • 如果使用csv檔案中所有資料,需要設定線程組的線程數或循環次數
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式

2.2.2 使用者參數化

  • 位置
    • 前置處理器---->使用者參數
  • 使用方式
    • 針對哪個http請求使用就在哪個http請求下添加
    • HTTP請求---->添加---->前置處理器----->使用者參數
  • 配置使用者參數
    • 添加變量
      • 添加變量名稱
    • 添加使用者
      • 添加測試資料
      • 一個使用者就是—組測試資料
    • 使用使用者參數
      • 在HTTP請求中引用變量
      • 線上程組中設定線程數;線程數的值和使用者參數中的使用者數一緻
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式

2.2.3 使用者定義的變量

  • 位置
    • 測試計劃頁面(一般情況下)
    • 配置元件中—>使用者定義的變量
  • 配置
    • 添加變量
  • 使用
    • 凡是可以輸入的位置,都可以使用變量
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式

2.2.4 jmeter參數化總結

  • CSV資料檔案配置----位置:配置元件中。
    • 适用于大量測試資料時的使用
  • 使用者參數----位置:前置處理器中。
    • 适用于少量測試資料時
  • 使用者定義的變量-----測試計劃/配置元件
    • 适用于常量配置:資料庫位址,測試環境位址,登入資料

2.3 jmeter連接配接資料庫—以MySql為例

  • 在測試計劃中導入資料庫驅動jar包
    • jar包下載下傳連結及提取碼
      • 連結:https://pan.baidu.com/s/1nqtoV-KhhdcZRj_G9gZKUg 提取碼:1234
  • 測試計劃下添加線程組
  • 線上程組中添加

    JDBC Connection Configuration

    • 配置

      JDBC Connection Configuration

      • variable Name for created pool

        中填寫要連接配接的資料庫的名稱
      • Database Connection Configuration

        填寫資料庫相關參數
        • 資料庫連接配接位址
          • jdbc:mysql://資料庫域名或IP:端口/資料庫名稱
        • 選擇資料庫驅動
        • 資料庫使用者名
        • 資料庫密碼
  • 線上程組中添加

    JDBC request

    • Variable Name Bound to Pool

      中填寫和連接配接資料庫時—緻的名稱
    • 寫sql語句
  • 線上程組下添加

    檢視結果樹

  • 在測試計劃中設定使用者并發數(可選)
  • 擷取資料庫查詢結果
    • sql語句中變量引用
      • ${變量名}
    • 擷取sql中查詢結果
      • 在variable names中填寫變量名
      • 變量名指對查詢結果的命名 接收sql結果
    • debug sample
      • 作用:顯示腳本中變量的結果
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
  • 參數化:三種方式
    • CSV(不做示範)
    • 使用者參數
    • 使用者自定義變量
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式

2.4關聯

從上一條請求中擷取資料,使用在下一條請求的資料中

2.4.1 xpath關聯

  • 使用場景
    • 在接口傳回值為HTML或xml格式時,使用xpath提取器
  • xpath提取器
    • 後置處理器中---->xpath提取器
  • 配置xpath提取器
    • 引用名稱:接收傳回值資料的變量名
    • XPath query :xpath表達式
    • 比對數字:0表示随機選擇,-1表示取所有
    • 預設值:當沒有找到對應資料的時候,顯示預設值的内容
    • XML parsing Options中選擇

      Use Tidy

      Quiet

性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式

2.4.2 json提取器

  • HTTP請求---->右鍵---->添加-一>後置處理器---->json提取器使用場景
    • 在接口傳回資料為json格式時,使用
  • 配置json提取器
    • 引用名稱:接收傳回值資料的變量名
    • json path expressions:jsonpath表達式

      $..擷取字段名

    • 比對數字:0表示随機選擇,-1表示取所有
    • 預設值:當沒有找到對應資料的時候,顯示預設值的内容
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式

2.4. 3 正規表達式提取器

  • 正規表達式用法: https://blog.csdn.net/weixin_45912307/article/details/108615866
  • HTTP請求–>右鍵–>添加–>後置處理器–>正規表達式提取器
  • 使用場景:适用于任何傳回形式(json、text、html等)
  • 表達式示例
    • "token":"(.*?)"

      比對0次或多次
    • "token":"(.*+)"

      比對1次或多次
  • 配置正規表達式提取器。前2個選項預設即可
    • 引用名稱:接收傳回值資料的變量名。正規表達式:

      "session":{(.*?)}

    • 模闆:

      $1$

      表示取第—組資料
    • 比對數字:0表示随機選擇,1表示取第一個
    • 預設值:當沒有找到對應資料的時候,顯示預設值的内容
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式

2.5 斷言

2.5.1 響應斷言

  • 斷言狀态碼添加斷言:哪個接口需要斷言,在接口下添加斷言。
    • 配置斷言
      • 在測試字段----選擇響應代碼
      • 在測試模式—填寫期望的狀态碼 200
  • 斷言文本值
    • 配置斷言

      添加後置處理器—>bean shell postprocessor

      • 編寫腳本---->将傳回值中的中文解碼
    • 在測試字段—選擇響應文本
    • 在測試模式–填寫要斷言的具體字段和值
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式

2.5.2 json斷言

  • 作用範圍:傳回值格式為json格式添加JSON斷言
    • 個接口需要斷言,在接口下添加
  • 斷言配置JSON斷言
    • Assert JSON Path exists:擷取傳回結果的字段----實際結果
    • Expected Value:預期結果填寫具體資料也可以引用參數
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式

2.5.3 大小斷言和響應時間斷言

  • 大小斷言
    • 斷言傳回值所占位元組數的多少
    • 如果填寫20比較類型>則表示傳回值的位元組數>20
  • 持續時間斷言
    • 斷言接口響應時間是否≤所期望的時間
    • 注意:接口的響應時間都是毫秒級别的
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式

2.6 集合點

  • Synchronizing Timer —集合點
    • 位置:定時器---->

      Synchronizing Timer

    • 哪個接口需要并發,就在哪個接口下添加集合點
  • 配置集合點
    • 每次集合的使用者數
    • 集合使用者數所用時間(機關:毫秒)
      • 時間設定為0,表示無限等待,直到

        線程數量==集合數

      • 設定時長:表示在規定時間内啟動已集合線程,不管有沒有集合到預期的數量
  • 注意事項
    • 集合數最好能被線程數整除
    • 集合時間最好大于等于線程組中的啟動時間

2.7 内置函數

  • 1.點選jmeter頁面的函數助手
  • 2選擇需要使用的函數
  • 3.設定函數相關參數
  • 4.點選生成
  • 5.複制函數字元串
  • 6.粘貼到需要使用的位置
    性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式

2.8 線程組間通信

  • 作用:實作多個線程組間的資料傳遞
  • 操作步驟:
    • 1.将原來的參數提升作用域使用函數:

      setProperty

    • 2.設定

      setProperty

      • 屬性名稱:指提升作用域後的變量名稱
      • value of Property:需要提升作用域的變量值${token}
    • 3.線上程組1中添加一個新的取樣器—

      Bean shell

      取樣器
    • 4.将設定好的

      setProperty

      函數複制粘貼到

      Bean shell

      取樣器中
    • 5.設定Property函數
      • 屬性名稱:新的變量名—>提升作用域後的變量名稱
    • 6.将設定好的Property函數複制粘貼到線程組_2中
    • 7.設定線程組請求的先後順序
      • 線上程組—>排程器填寫持續時間和啟動延時
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式

2.9 邏輯控制器

2.9.1 if控制器

  • 位置

    線程組—>添加—>邏輯控制器---->如果(if控制器)

  • 配置果控制器
    • 不勾選任何選項的使用方法注冊
      • 符串比較
        • 參數和值都需要加引号,例如:"${time}"==“九點”
      • 數字比較
        • ${time}==9
      • 布爾值
        • ${[time}
        • 參數的值必須小寫true/falsel
    • 勾選

      将條件解釋為變量表達式

      • 借助函數_jexl3或groovy直接輸出true/falseo
    • 全部勾選
      • 借助

        ${(JMeterThread.last_sample_ok}

      • 傳回的是上一個取樣器的執行結果,如果執行通過,傳回true那麼下一個取樣器才可以正常執行;反之,下—個取樣器就不執行:

2.9.2 ForEach控制器

  • 作用: ForEach控制器一般和使用者定義的變量一起使用,在使用者自定義變量中讀取一系列相關的變量。
  • 位置邏輯控制器---->foreach控制器
  • 使用方式
    • 1.設定使用者定義變量
      • 變量名:字首_數字
        • 例:

          name_1

          要求字尾數字—定是連續的。
    • 2.配置foreach控制器
      • 1.輸入變量名字首:name
      • ⒉.開始循環字段(不包含):
      • 3.結束循環字段(包含):
      • 4.輸出的變量名稱:指使用者定義的變量通過foreach控制器後,新名稱
    • 3.使用foreach控制器輸出的變量

      ${新名稱}

    • 4.ForEach 控制器->HTTP請求
    • 5.則試計劃->察看結果樹
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式

2.9.3環控制器

  • 控制請求循環次數
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式
性能測試階段6之jmeter元件和基本使用day01 jmeter基礎day02 jmeter核心知識day 03 jmeter中元件總結day04 分布式

day 03 jmeter中元件總結

3.1什麼是元件

相同類似功能元件的集合稱為元件

3.2 元件作用域

分類:

1.取樣器是作用域的參考物,本身無所謂作用域的概念

2.以結果樹為代表的大部分元件

  • 作用域:直接父級取樣器+直接兄弟取樣器

3.以邏輯控制器為代表的元件未注冊隻對子級取樣器有效

3.3 元件執行順序

在同一作用域範圍内,test plan中的元件按照以下順序執行:

  1. config Elements—配置元件
  2. Pre-porcessors----前置處理器
  3. Timer—定時器
  4. Sampler—取樣器
  5. Post-porcessors(除非Sampler得到的傳回結果為空)—後置處理器
  6. Assirtions(除非Sampler得到的傳回結果為空)----斷言
  7. Listener(除非Sampler得到的傳回結果為空)—監聽器

注意: 不會因為在腳本中的放置順序而改變其執行順序;如果在一個腳本中有多個同類型的元件,他們的執行順序是按在腳本中的排序執行的

day04 分布式

4.1 jmeter分布式步驟

  • 執行機
    • 擷取本機IP,将IP寫在jmeter配置檔案中,

      remote_hosts=lP:1099

    • 執行機需要關閉防火牆和其他網卡
    • 執行機打開

      jmeter-server.bat

      檔案
  • 控制機
    • 将執行機的ip寫入到配置檔案中

      remote_hosts=lP:1099

      ,如果有多個,用逗号隔開
    • 如果控制機需要執行腳本,那麼,需要打開

      jmeter-server.bat

  • 注意事項
    • 執行中也需要放置jmeter腳本,并且放置路徑要和控制機的一緻
    • 控制機和執行機在同一個網段下
    • jmeter版本和ava版本一緻

4.2 非GUI模式運作

  • 在指令行模式下運作jmeter腳本,預設在jmeter/bin目錄下去尋找腳本,将執行結果和測試報告儲存在
  • bin目錄下如果想運作其他目錄下的腳本,或将結果和測試報告儲存在其他目錄下,那麼需要指定完整路徑

4.3 性能名額解讀:

-  Average :單個請求的平均響應時間
- Median :中位數,也就是50%使用者的響應時間				
- 90%Line : 90%使用者的響應時間
- 95%Line : 95%使用者的響應時間
- 99%Line : 99%使用者的響應時間
- Min :最小的請求響應時間
- 平均值的困擾個别極端結果對實際性能資料的幹擾
- %Line更能客觀反映實際性能情形
- Error ~
           

4.4 jmeter靜默壓測

  1. 靜默->脫離UI運作JMeter壓測
  2. 好處∶指令運作更容易“搞事情"
  3. 指令格式:

    jmeter -n -t $jmx_file -l $jtl_file

    -h

    幫助 -> 列印出有用的資訊并退出

    -n

    非 GUI 模式 -> 在非 GUI 模式下運作 JMeter

    -t

    測試檔案 -> 要運作的 JMeter 測試腳本檔案

    -l

    日志檔案 -> 記錄結果的檔案

    -r

    遠端執行 -> 啟動遠端服務

    -H

    代理主機 -> 設定 JMeter 使用的代理主機

    -P

    代理端口 -> 設定 JMeter 使用的代理主機的端口号
  4. jmx JMeter壓測程式腳本檔案,壓測控制過程記錄在jmx檔案中
  5. jtl檔案是JMeter壓測請求響應資料的原始檔案
  6. 壓測報告的生成

繼續閱讀