# jmeter 定時器
jmeter提供了很多元件,幫助我們更好的完成各種場景的性能測試,其中,定時器(timer)是很重要的一個元件,最新的3.0版本jemter提供了9種定時器(之前6種),下面一一介紹:
**一、定時器的作用域**
**1、**定時器是在每個sampler(采樣器)之前執行的,而不是之后(無論定時器位置在sampler之前還是下面);
**2、**當執行一個sampler之前時,所有當前作用域內的定時器都會被執行;
**3、**如果希望定時器僅應用于其中一個sampler,則把定時器作為子節點加入;
**4、**如果希望在sampler執行完之后再等待,則可以使用Test Action;
**二、定時器的作用**
**1、固定定時器(Constant Timer)**

如果你需要讓每個線程在請求之前按相同的指定時間停頓,那么可以使用這個定時器;需要注意的是,固定定時器的延時不會計入單個sampler的響應時間,但會計入事務控制器的時間。
我們通常說的響應時間,應該大部分情況下是針對某一個具體的sampler(http請求),而不是針對一組sampler組合的事務 。
**2、高斯隨機定時器(Gaussian Random Timer)**

如需要每個線程在請求前按隨機時間停頓,那么使用這個定時器,上圖表示暫停時間會分布在100到400之間,計算公式參考:Math.abs((this.random.nextGaussian()?\*?300)?+?100)
**3、均勻隨機定時器(Uniform Random Timer)**

和高斯隨機定時器的作用差異不大,區別在于延時時間在指定范圍內且每個時間的取值概率相同,每個時間間隔都有相同的概率發生,總的延遲時間就是隨機值和偏移值之和。
下面表示的是隨機延遲時間的最大值是100毫秒:
(1)Random?Delay?Maximum(in?milliseconds):隨機延遲時間的最大毫秒數
(2)Constant?Delay?Offset(in?milliseconds):暫停的毫秒數減去隨機延遲的毫秒數
**4、固定吞吐量定時器(Constant Throughput Timer)**

可以讓JMeter以指定數字的吞吐量(即指定TPS,只是這里要求指定每分鐘的執行數,而不是每秒)執行。
吞吐量計算的范圍可以為指定為當前線程、當前線程組、所有線程組等范圍,并且計算吞吐量的依據可以是最近一次線程的執行時延。這種定時器在特定的場景下,還是很有用的。
**5、同步定時器(Synchronizing Timer)**

這個定時器和loadrunner當中的集合點(rendezvous point)作用相似,其作用是:阻塞線程,直到指定的線程數量到達后,再一起釋放,可以瞬間產生很大的壓力(人多力量大- -哈哈!)
(1)Number?of?Simulated?Users?to?Group?by:模擬用戶的數量,即指定同時釋放的線程數數量
(2)Timeout?in?milliseconds:超時時間,即超時多少毫秒后同時釋放指定的線程數
**6、BeanShell定時器(BeanShell Timer)**

這個定時器,一般情況下用不到,但它可以說是最強大的,因為可以自己變成實現想要做的任何事情,例如:希望在每個線程執行完等待一下,或者希望在某個變量達到指定值的時候等待一下。
這里給大家介紹下BeanShell:
BeanShell是一種松散類型的腳本語言(這點和JS類似),一種完全符合java語法的java腳本語言,并且又擁有自己的一些語法和方法。
**7、泊松隨機定時器(Poisson?Random?Timer)**

這個定時器在每個線程請求之前按隨機的時間停頓,大部分的時間間隔出現在一個特定的值,總的延遲就是泊松分布值和偏移值之和。
上面表示暫停時間會分布在100到400毫秒之間:
(1)Lambda(in?milliseconds):蘭布達值
(2)Constant?Delay?Offset(in?milliseconds):暫停的毫秒數減去隨機延遲的毫秒數
**8、JSR223定時器(JSR223 Timer)**

在jemter最新的版本中,新增了這個定時器,可以這么理解,這個定時器相當于BeanShell定時器的“父集”,它可以使用java、JavaScript、beanshell等多種語言去實現你希望完成的事情;
我們都知道jemter是一種開源的純java工具,可以自己構件各個組件,jar包去完成各種事情。
**9、BSF定時器(BSF Timer)**

BSF Timer,也是jmeter新的版本中新增的定時器,其使用方法和JSR223 Timer很相似,只需要在jmeter的lib文件夾導入其jar包,就可以支持腳本語言直接訪問Java對象和方法的一定時器。
有了它 , 你就能在java application中使用javascript, Python, XSLT, Perl, tcl, ……等一大堆scripting language. 反過來也可以;
就是在這些scripting language中調用任何已經注冊過了的JavaBean,java object。它提供了完整的API實現通過Java訪問腳本語言的引擎。
- 第一章-測試理論
- 1.1軟件測試的概念
- 1.2測試的分類
- 1.3軟件測試的流程
- 1.4黑盒測試的方法
- 1.5AxureRP的使用
- 1.6xmind,截圖工具的使用
- 1.7測試計劃
- 1.8測試用例
- 1.9測試報告
- 2.0 正交表附錄
- 第二章-缺陷管理工具
- 2.1缺陷的內容
- 2.2書寫規范
- 2.3缺陷的優先級
- 2.4缺陷的生命周期
- 2.5缺陷管理工具簡介
- 2.6缺陷管理工具部署及使用
- 2.7軟件測試基礎面試
- 第三章-數據庫
- 3.1 SQL Server簡介及安裝
- 3.2 SQL Server示例數據庫
- 3.3 SQL Server 加載示例
- 3.3 SQL Server 中的數據類型
- 3.4 SQL Server 數據定義語言DDL
- 3.5 SQL Server 修改數據
- 3.6 SQL Server 查詢數據
- 3.7 SQL Server 連表
- 3.8 SQL Server 數據分組
- 3.9 SQL Server 子查詢
- 3.10.1 SQL Server 集合操作符
- 3.10.2 SQL Server聚合函數
- 3.10.3 SQL Server 日期函數
- 3.10.4 SQL Server 字符串函數
- 第四章-linux
- 第五章-接口測試
- 5.1 postman 接口測試簡介
- 5.2 postman 安裝
- 5.3 postman 創建請求及發送請求
- 5.4 postman 菜單及設置
- 5.5 postman New菜單功能介紹
- 5.6 postman 常用的斷言
- 5.7 請求前腳本
- 5.8 fiddler網絡基礎及fiddler簡介
- 5.9 fiddler原理及使用
- 5.10 fiddler 實例
- 5.11 Ant 介紹
- 5.12 Ant 環境搭建
- 5.13 Jmeter 簡介
- 5.14 Jmeter 環境搭建
- 5.15 jmeter 初識
- 5.16 jmeter SOAP/XML-RPC Request
- 5.17 jmeter HTTP請求
- 5.18 jmeter JDBC Request
- 5.19 jmeter元件的作用域與執行順序
- 5.20 jmeter 定時器
- 5.21 jmeter 斷言
- 5.22 jmeter 邏輯控制器
- 5.23 jmeter 常用函數
- 5.24 soapUI概述
- 5.25 SoapUI 斷言
- 5.26 soapUI數據源及參數化
- 5.27 SoapUI模擬REST MockService
- 5.28 Jenkins的部署與配置
- 5.29 Jmeter+Ant+Jenkins 搭建
- 5.30 jmeter腳本錄制
- 5.31 badboy常見的問題
- 第六章-性能測試
- 6.1 性能測試理論
- 6.2 性能測試及LoadRunner簡介
- 第七章-UI自動化
- 第八章-Maven
- 第九章-測試框架
- 第十章-移動測試
- 10.1 移動測試點及測試流程
- 10.2 移動測試分類及特點
- 10.3 ADB命令及Monkey使用
- 10.4 MonkeyRunner使用
- 10.5 appium工作原理及使用
- 10.6 Appium環境搭建(Java版)
- 10.7 Appium常用函數(Java版)
- 10.8 Appium常用函數(Python版)
- 10.9 兼容性測試