Jmeter
Jmeter目录结构
- bin目录:存放可执行文件和配置文件
- jmeter.bat:windows的启动文件
- jmeter.log:日志系统
- jmeter.sh:linux的启动文件
- jmeter.properties:系统配置文件
- jmeter-server.bat:windows分布式测试要用的服务器配置
- jmeter-server:linux分布式测试要用的副武器配置
- doc和printable docs目录:主要存放Jmeter的API帮助文档
- lib目录:该目录用来存放Jmeter依赖的jar包和用户扩展所依赖的jar包
Jmeter基本配置
- 语言设置
方法1.在选项中修改语言
方法2.安装目录下bin目录下,在jmeter.property文件中,修改language=zh_CN
如果响应数据里面包含中文乱码,需要修改jmeter的jmeter.properties文件里面,把sampleresult.default.encoding设置为UTF-8,改完后需要重启
Jmeter基本使用流程
使用jmeter发送get请求,并查看请求和响应信息
- 启动Jmeter
- 在测试计划下添加线程组
- 在线程组下添加HTTP请求取样器
- 填写‘HTTP请求‘的相关请求数据
- 在“在线程组”下添加“查看结果树”监听器
- 点击“启动”按钮运行,并查看结果
Jmeter元件
- 常用元件
线程组:用户模拟多线程,一个线程代表一个用户操作
配置元件:进行测试环境和测试数据的初始化,类似于自动化脚本中的setup
前置处理器:对要发送的数据进行预处理,类似于自动化脚本中的参数化
取样器:往服务器发送请求,类似于自动化脚本中的发送请求
后置处理器:对收到的服务器响应数据进行处理,类似于自动化脚本中获取响应中特定字段的操作
断言:将收到的响应结果与预期结果作对比,
与自动化脚本中的断言一致
监听器:查看测试脚本运行的结果和日志,类似于自动化测试脚本中的测试报告
定时器:等待一段时间,类似于自动化测试脚本中的sleep
测试片段:封装基本功能的代码块,不单独执行,需要脚本进行调用,类似于自动化中封装的函数
- 元件作用域
确定元件作用域的大的原则:
- 在JMeter中2,元件的作用域是根据测试计划的树形结构中元件的父子关系来确定的
- 元件中取样器是核心,其他组件都是以取样器为核心运行的,组件添加的位置不同,生效的取样器也不同。
取样器:取样器都是一个独立的请求,不和其他元件相互作用,因此不存在作用域的问题;
逻辑控制器:该元件只对其子节点中的取样器和逻辑控制器作用
其他六大元件:除取样器和逻辑控制器元件外,如果是某个取样器的子节点,则该元件对其父子节点起作用
如果其父节点不是取样器,则其作用域是该元件父节点下的其他所有后代节点(包括子节点的子节点)
if控制器只对他得到子节点中的http请求3起作用,当条件满足if控制器时http请求3才执行
察看结果树2是http请求2的子节点所以他只对http2起作用
察看结果树1的父节点不是取样器(是线程组)所以他对线程组下所有的后代节点起作用,所以他能看到http请求1、2、3的结果
- 元件执行顺序
- 配置元件
- 前置处理器
- 定时器
- 取样器
- 后置处理器
- 断言
- 监听器
Jmeter基础组件
- 重点组件
- 线程组
- HTTP取样器
- 查看结果树
- Cookie管理器
线程组
线程组是控制JMeter将用于执行测试的线程数,也可以把一个线程理解为一个测试用户,线程组即一组用户
线程组的特点:
- 设定线程数(模拟多人操作)
- 取样器(请求)和逻辑控制器必须依赖线程组才能使用
- 线程组可以添加多个,多个线程组可以并行或串行
- 线程组下可以添加其他元件下的组件
线程组的分类:
- 线程组:普通的、常用的线程组,可以看做一个虚拟用户组,线程组中的每一个线程都可以理解为一个虚拟用户
- setUp线程组:一种特殊类型的线程组,可用于执行预测试操作,凡是setup线程组一定是先执行的
- tearDown线程组:一种特殊类型的线程组,可用于执行测试后工作,凡是tearDown线程组一定是最后执行的
线程组的属性配置
取样器错误后要执行的动作:
- 继续:如果取样器里的执行出现错误失败的时候,请求不会停止,继续执行。
- 启动下一线程循环:如果出错,则同一线程中的余下请求将不再执行,直接开始新一轮迭代。
- 停止线程:只限当前线程停止,不影响其他线程执行。一般不会设置此项。
- 停止测试:当前执行的线程全部执行完毕后结束
- 立即停止测试:立即停止所有线程操作