Jmeter模拟一群用户向目标服务器发起请求,然后以图标的形式返回目标服务器的功能,性能的统计数据。
什么是一个测试计划
测试计划可以看作是测试用例运行的容器。决定了测试什么和如何测试。一个完整的测试计划由一个或多个如下元素的组成
线程组,逻辑Controller,sample-generating controllers,监听器,定时器,断言,还有配置元素。一个测试需要至少一个线程组
刚打开Jmeter时,Jmeter中有两个节点
测试计划节点:测试计划放置的地方
工作台节点:它简单地提供了临时的地方来存放暂时不需要的测试元素,用来复制粘贴,当你保存你的测试计划时,工作台节点并不随之保存。
每一个线程组,我们可能会存放如下元素的一个或多个组合,Sampler,逻辑控制器,配置元件,监听器和定时器。每一个Sampler可以被一个或多个前置处理器处理,然后随后有后置处理器和断言。
线程组
线程组是测试计划的入口。就像它的名字那样,线程组元素控制着Jmeter在测试中使用的线程数。我们通过如下的操作来控制线程组:
- 设定线程的数目
- 设定ramp-up time(Jmeter在多长的时间内建立全部的线程)
- 设定测试次数
线程组的操作界面有着如下的元素
- 在取样器错误后执行的操作,万一在测试执行中出现的问题,你可以让它接着
- 继续执行 测试中的下一个元素
- 停止线程 停下当前的线程
- 停止测试 完全停止测试
- 线程的数目 跟服务器或者应用交互的线程数
- Ramp-Up Period 定义了Jmeter把全部的线程建立所需的时间
- 循环次数 定义了测试执行的次数
- 调度器复选框 一旦选定,就可以配置调度器
- 调度器配置 配置测试的启动时间和结束时间
控制器
Jmeter有两种控制器,采样器和逻辑控制器
采样器:
采样器允许Jmeter向服务器发送特定类型的请求,它们模拟一个页面向目标服务器发起请求。举个例子,你可以添加一个HTTP 请求采样器,如果你需要对一个HTTP服务执行 POST,GET或是DELETE操作
逻辑控制器
逻辑控制器允许你控制在线程中取样器的执行顺序。逻辑控制器可以控制任何它们子元件的请求。例子比如 ForEach Controller, While Controller, Loop Controller, IF Controller, Run Time Controller, Interleave Controller, Throughput Controller, Run Once Controller.
测试片段
测试片段是一个特殊的元素,它和线程组在同一个级别。它从线程组分离出来。除非被Module控制器或者是内在的控制器引用,否则不会执行。这个元素被纯粹用来复用代码
监听器
监听器允许你以图,表,树或者是简单的日志文本查看取样器的结果。提供了可视化的数据。
监听器可以在测试的任何地方添加。以下的监听器Jmeter都支持
- 邮件观察仪
- 聚合报告
- 用表格查看结果
- 生成概要结果
- 断言结果
- 查看结果树
- 图形结果
- 保存响应到文件
- 取样结果保存配置
定时器
默认地,一个Jmeter线程在两个取样器执行的中途并不停歇。这可能并不是你想要的。你可以添加一个定时器允许你在每个请求中途停歇。
- 常数定时器
- 满足高斯分布的定时器
- 标准随机定时器
- 常数吞吐量定时器
- 同步定时器
- 泊松随机定时器
断言
断言允许你在定时器执行之后添加一些验证操作。使用断言你可以保证你的应用返回正确的数据。支持如下的断言
- Beanshell 断言
- BSF 断言
- 比较断言
- JSR223 断言
- 响应断言
- 持续时间断言
- 大小断言
- XML断言
- MD5Hex断言
- HTML断言
- XPath断言
- XML格式断言
配置元件
配置元件允许你创建采样器使用的默认变量。用来添加或者修改采样器创建的请求。
它们在被放置的区域开头执行,提前于该放置区域里的所有采样器。支持如下的配置元件
- 计数器
- FTP 默认请求
- HTTP 鉴权控制器
- HTTP 缓存控制器
- HTTP Cookie 控制器
- HTTP 代理服务器
- HTTP 默认请求
- HTTP 头部管理器
- Java 默认请求
- Keystore 配置
- JDBC 连接配置
- 登陆配置
- 用户定义变量
- 随机变量
前置处理器
前置处理器是采样器执行之前执行的。用来更改采样器的请求,或者更新不从响应中提取的变量。支持如下的前置处理器
- HTML连接解析
- HTML URL 重写更改器
- HTTP 用户参数更改器
- 用户参数
- JDBC前置处理器
- JSR223前置处理器
后置处理器
后置处理器在采样器执行完之后执行。这个元素通常用来处理响应数据,比如获得一个用来之后使用的值。支持如下的后置处理器
- 正则表达式提取
- XPath 提取
- 结果状态处理
- JDBC 后置处理器
- BSF 后置处理器
- CSS/JQuery 提取器
- BeanShell后置处理器
- Debug 后置处理器
测试元件的执行顺序
- 配置元件
- 前置处理器
- 定时器
- 采样器
- 后置处理器
- 断言
- 监听器