天天看點

JMeter邏輯控制器之Module Controller

Module Controller

    • Module Controller的目标
    • 參數介紹
    • 控制運作測試片段
        • 建立測試片段
        • 新增Module Controller
        • 使用子產品控制器調用測試片段
    • 引入目前測試計劃
    • 引入另一個線程組的測試片段

子產品控制器(Module Controller)提供了一種在運作時将測試計劃片段替換為目前測試計劃的機制。

一個測試計劃片段由一個控制器和其中包含的所有測試元件(采樣器等)組成。該片段可以位于任何線程組中。如果該片段位于線程組中,則可以禁用其控制器,以防止該片段被子產品控制器運作(子產品控制器除外)。或者您可以将片段存儲在一個虛拟線程組中,并禁用整個線程組。

可以有多個片段,每個片段下面有不同系列的取樣器。隻需在下拉框中選擇适當的控制器,子產品控制器就可以很容易地在這些多個測試用例之間切換。這為快速且容易地運作許多替代測試計劃提供了便利。

子產品控制器使用的任何片段都必須有唯一的名稱,因為在重新加載測試計劃時,這個名稱用于查找目标控制器。出于這個原因,最好確定控制器名稱不是預設名稱,否則,當向測試計劃添加新元件時,可能會意外地建立一個重複名稱。

簡而言之:可以了解為引用、調用的意思。

Module Controller的目标

Module Controller的目标是向JMeter添加子產品化。一般的想法是,web應用程式由小的功能單元(即登入、建立帳戶、登出……)組成,這些功能單元由實作功能的請求組成。這些小的功能單元可以作為子產品存儲在SimpleControllers中,這些子產品可以快速連結在一起以形成測試。ModuleController通過充當指向工作台下面任何控制器的指針來促進這一點。控制器及其子元素将在運作時取代ModuleController。配置元素可以附加到ModuleController,以更改子產品的功能(哪個使用者登入了,建立了哪個帳戶,等等)。

參數介紹

JMeter邏輯控制器之Module Controller
屬性 描述 必填
Name 控制器名稱,可以根據實際情況進行設定
Comments 注釋,描述在業務中的作用
Find target element 快速查找元件并且跳轉到該元件界面
Module To Run 選擇需要運作的控制器對象

控制運作測試片段

建立測試片段

建立兩個測試片段(測試片段是應用在控制器上的一個特殊線程組,與線程組處于同一層級,必須與Include Controller或子產品控制器一起使用才被執行),登入片段和注冊片段。

JMeter邏輯控制器之Module Controller

登入片段新增一個Simple Controller控制器,在該控制器下再新增兩個登入請求,一個登入失敗的請求和一個登入成功的請求;注冊片段也新增一個Simple Controller控制器,在該控制器下再新增兩個請求,一個注冊成功的請求和一個注冊失敗的請求,如下圖所示:

JMeter邏輯控制器之Module Controller

新增Module Controller

在測試計劃下添加一個線程組,并在該線程組下新增一個Module Controller和一個監聽器,如下圖所示:

JMeter邏輯控制器之Module Controller

使用子產品控制器調用測試片段

同一個線程組中,有多個測試片段,隻需通過子產品控制器下拉框中選擇适當的控制器,即可在這些多個測試用例之間輕松切換。但注意這些片段名稱必須唯一。

  1. 子產品控制器隻選擇登入操作,則隻運作登入操作的測試片段,如下圖所示:
JMeter邏輯控制器之Module Controller

運作結果如下所示:

JMeter邏輯控制器之Module Controller
  1. 子產品控制器隻選擇注冊操作,則隻運作注冊操作的測試片段,如下圖所示:
    JMeter邏輯控制器之Module Controller
    運作結果如下圖所示:
JMeter邏輯控制器之Module Controller

引入目前測試計劃

在測試計劃中添加一個線程組,并且設定循環3次,線上程組下添加一個Once Only Controller和一個Sample Controller,如下圖所示:

JMeter邏輯控制器之Module Controller

子產品控制器選擇Once Only Controller,那麼此時該控制器下的請求隻會請求2次,那麼為什麼不是3次呢?因為按照順序往下執行時,Once Only Controller執行了一次,由于該控制器隻會執行一次,然後到子產品控制器時又調用了一次,是以隻執行了2次。執行結果如下圖所示:

JMeter邏輯控制器之Module Controller

如果選擇Sample Controller,那麼該控制下會執行6次,運作結果如下圖所示:

JMeter邏輯控制器之Module Controller

如果把Sample控制器禁用,并且子產品控制器下選擇的Sample 控制器,那麼仍然會執行,如下圖所示:

JMeter邏輯控制器之Module Controller

引入另一個線程組的測試片段

添加兩個線程組,第一個線程組下的内容,線程組名稱為“線程組一”,與章節“引入目前測試計劃”一樣,另外一個線程組下添加子產品控制器,然後把“線程組一”禁用,此時仍然可以調用線程組一下的測試片段,如果子產品控制器選擇Sample Controller,運作結果如下所示:

JMeter邏輯控制器之Module Controller

繼續閱讀