Threads
线程,主要设定虚拟用户数以及执行虚拟用户前前后后的操作,包括以下:
- setUp Thread Group:执行预测试操作
- tearDown Thread Group:执行后置测试操作
- 定义虚拟用户数
配置元件
用于初始化默认值和变量,以便后续采样器使用。有以下配置:
- CSV Data Set Config:从文件中读取数据行,并将它们拆分后存储到变量中。
- FTP Request Defaults:设置FTP请求的默认值。
- DNS缓存管理器(DNS Cache Manager):只用在线程组或者测试计划的根节点。不要将它作为特定HTTP采样器的子元件。只能与采用HTTPClient实现的HTTP请求一起工作。
- HTTP授权管理器(HTTP Authorization Manager):帮助测试人员针对Web页面(使用服务器校验限制)的一个或者多个登录。
- HTTP Cache Manager:被用来为其作用域范围内的HTTP请求提供缓存功能。
- HTTP Cookie管理器(HTTP Cookie Manger):两个功能,一是像Web浏览器一样存储和发送cookie。其二是手动为Cookie管理器添加一个cookie。
- HTTP请求默认值(HTTP Request Defaults):设置HTTP请求使用的默认值。
- HTTP信息头管理器(HTTP Header Manager):添加或者重载HTTP信息头。
- JDBC Connection Configuration:数据库连接设置。
- Java请求默认值(Java Request Defaults):设置java默认请求值。
- 密钥库配置元件(KeyStore Configuration):配置如何加载密钥库,以及使用哪些密钥。
- 登录配置元件:为采样器添加或重载用户名和密码
- LDAP请求默认值(LDAP Request Defaults):这是LDAP测试的默认值。
- LDAP Extended Request Defaults:设置扩展LDAP测试的默认值。
- TCP采样器配置(TCP Sampler Config):提供TCP采样器的默认数据。
- 用户定义的变量(User Defined Variables):用户定义的变量,常用。
- Random Variable:设置随机产生数字字符串,然后将其放到变量之中。
- 计数器(Counter):创建一个计数器,可以在线程组中任意一个地方被引用。
- 简单配置元件(Sample Config Element):给用户在采样器中添加或者重载任意值。
监听器
监听器是展示采样结果的测试元件。
假如用户需要查看采用结果中的服务器响应,可以在测试计划中加入View Results Tree(查看结果数)或者View Results in table(用表格查看结果)这两种监听器。
如果用户要通过绘图方式查看响应时长,则可以使用图形结果(graph results)、spline results、distribution graph这三种监听器。
定时器
作用于采样器上。
- 固定定时器(Constant Timer):请求之间间隔固定时长。
- 高斯随机定时器(Gaussion Random Timer):暂停每个线程请求一个随机时长,大多数时间间隔接近于一个固定值。
- .Uniform Random Timer:暂停每个线程请求一个随机时长,每个时间间隔都有同样的出现几率。
- Constant Throughput Timer:引入可变暂停市场,通过计算来保证总吞吐量尽可能接近指定的值。
- Synchronizing Timer:阻塞线程,等同于集合点。
- BeanShell Timer:产生延迟。
- BSF Timer:使用BSF脚本来产生延迟。
- JSR223 Timer:使用JSR223脚本语言来产生延迟。
- Poisson Random Timer:暂停线程请求一个随机的时长,其中大多数时间间隔接近一个特定值。
前置处理器
用来修改其作用域范围内的采样器。
- HTML链接解析器(HTML Link Parser):修改器解析从服务器得到的HTML响应,并从中提取链接和表单。
- HTML URL重写修饰符(HTML URL Re-writing Modifier):与HTML Link Parser类似
- 用户参数(User Parameters):为独立线程的用户变量指定值。
- BeanShell PreProcessor:在发生采样之前执行代码
- JSR PreProcessor:在发生采样之前执行代码
- JDBC PreProcessor:在采样运行前执行SQL statement
- RegEx User Parameters:通过正则表达式从其他HTTP请求提取的HTTP参数指定动态值。
后置处理器
后置处理器在采样器之后生效。
- 正则表达式提取器(Regular Expression Extractor):通过正则表达式从服务器响应中提取值
- CSS/JQuery Extractor:像语法分析一样从服务器响应中提取值
- XPath Extractor:通过XPath查询语言从结构化响应(XML或者(X)HTML)中提取值
- Result Status Action Handler:在相关采样器失败时停止线程或整个测试
- BeanShellPostProcesser:发生采样之后执行代码
- JSR223 PostProcessor:发生采样后执行JSR223脚本代码
- JDBC PostProcessor:采样结束后运行一些SQL statement
断言
用于对采样器进行额外的检查。
- 响应断言(Response Assertion):模式字符串与响应文本各个域进行比较。
- Size Assertion:测试每个响应包含正确的字节数。
- XML Assertion:测试响应数据包含一个形式上正确的XML文档。
- BeanShell Assertion:对BeanShell Script进行断言。
- XPath Assertion:测试文档有没有良好的结构,它有通过DTD验证的选项,或者把文件通过JTidy并测试XPath。
- JSR223 Assertion:使用JSR223脚本代码去检查前一次采样的状态。
- SMIME Assertion:从Mail Reader Sampler中评估采样结果,断言验证一个MIME消息的包体是否被签名了。
Samplers
Jmeter中执行各种测试元件。包含以下测试元件:
- FTP请求(FTP Request)
- HTTP请求(HTTP Request)
- JDBC请求(JDBC Request)
- Java请求(JavaRequest)
- LDAP请求(LDAP Request)
- LDAP扩展请求(LDAP Extended Request)
- 访问日志采样(AccessLogSampler)
- BeanShell采样器(BeanShell Sampler)
- JSR223采样器(JSR223 Sampler)
- TCP采样器(TCP Sampler)
- JMS Plublisher
- JMS Subscriber
- JMS Point-to-Point
- JUnit Request
- Mail Reader Smapler
- SMTP Sampler
17.操作系统进程采样器(OS Process Sampler)
逻辑控制器
逻辑控制器来决定采样器的处理顺序。有以下逻辑控制器:
- 简单控制器(Simple Controller):组合采样器以及其他逻辑控制器。
- 循环控制器(Loop Controller):如果将采样器或者逻辑控制器放到循环控制器之下,那么JMeter会将他们循环执行数次,循环次数在循环控制器中设定。
- 仅一次控制器(Once Only Controller):仅一次控制器会告诉Jmeter只执行其下的控制器一次,接下来测试计划中的循环执行会跳过该控制器下的所有请求。
- 交替逻辑控制器(Interleave Controller):交替执行该控制器下的元件。
- 随机控制器(Random Controller):类似于交替控制器,唯一不同的就是其下的自测试元件不会按顺序轮流执行,而是每次循环随机选择一个执行。、
- 随机顺序控制器(Random Order Controller):其每一个子测试元件都至多执行一次,但是执行顺序确是随机的。
- 吞吐量控制器(Throughout Controller):吞吐量控制器允许用户设定其被执行的频率。
- 运行时长控制器(Runtime Controller):控制子测试元件允许运行的时长。
- 如果控制器(If Controller):控制其下的子测试元件是否执行。
- While Controller:一直运行自己的子测试元件,直到条件变为false。
- Switch Controller:每一次循环都执行其下的子测试元件,按照Switch Value选择执行。
- ForEach控制器:循环遍历一系列相关变量。
- 模块控制器(Module Controller):模块控制器提供了一个机制,即在当前测试计划中动态地替换测试计划片段。
- Include Controller:被设计用于使用外部jmx文件。
- 事务控制器(Transaction Controller):会产生一个额外的采用,用于衡量执行嵌套测试元件所耗费的全部时间,常用,特别是测一类的业务的时候会用到。
- 录制控制器:是一个存放位置,指明了代理服务器录制的采样应该放在那里。
- 临界区控制(Critical Section Controller):确保它的子元件(采样器/控制器等)只会被一个线程执行,在控制器的子元件执行前会上锁。