一、Jmeter的目录结构
backups:脚本备份目录,格式JMX
bin目录:存放Jmeter的启动脚本,配置文件,模块文件。
jmeter.bat 启动Jmeter
Jmeter.properties 核心配置文件:Jmeter中文界面只需要在此文件中增加一项配置
language=zh_CN,然后重启Jmeter就可以啦!
docs:离线帮助文档
extras:存放有第三方的集成构建文件,集成Ant,Jenkins
lib目录:存放jar包,而第三方的jar包放在 lib/ext 目录下
licensce:许可证文件
二、元件的基本介绍
元件:多个类似功能组件的容器(类似于类)
元件 | 作用 |
取样器 | 发送请求 |
逻辑控制器 | 控制语句的执行顺序 |
前置处理器 | 对请求参数进行预处理 |
后置处理器 | 对响应结果进行提取 |
断言 | 检查接口的返回结果是否与预期结果一致 |
定时器 | 设置等待 |
测试片段 | 封装一段代码,供其他脚本调用 |
配置元件 | 测试数据的初始化配置 |
监听器 | 查看Jmeter脚本的运行结果 |
三、Jmeter常用组件
1. 测试计划:启点,所有组件的容器
2.线程组:代表一定数量的用户
组件:实现独立的某个功能(类似于方法)
例如取样器的组件:HTTP请求,TCP取样器
自动化脚本的实现过程:
- 初始化测试数据 -- 配置元件
- 对请求参数化进行赋值 -- 前置处理器
- 调用GET/POST方法发送请求 -- 取样器
- 提取响应中特定字段的值 -- 后置处理器
- 对提取出来的值与预期结果进行对比 -- 断言
- 在控制台查看脚本运行的结果 -- 监听器
四、元件作用域和执行顺序
4.1 元件的作用域
是靠测试计划的树形结构中元件的父子关系来确定的
提示:所有的组件都是以取样器为核心来运行的。组件添加的位置不同,生效的取样器也不同。
4.2 作用域的原则
- 取样器:核心,不和其他元件相互作用,没有作用域
- 逻辑控制器:只对其子节点中的取样器和逻辑控制器起作用
- 其他元件:
- 如果是某个取样器的子节点,则该元件只对其父节点起作用
- 如果其父节点不是取样器,则其作用域是该元件父节点的其他所有后代节点(包括子节点、子节点的子节点等)
4.3 元件的执行顺序
同一个作用域下不同类型元件
1. 配置元件(config elements)
2. 前置处理程序(Per-processors)
3. 定时器(timers)
4. 取样器(Sampler)
5. 后置处理程序(Post-processors)
6. 断言(Assertions)
7. 监听器(Listeners)
同一作用域下相同元件:
从上到下的顺序一次执行
三、常见的应答的状态码系列
- 1XX:通知
1XX系列响应代码仅在与HTTP服务器沟通时使用。
- 2XX:成功
2XX系列响应代码表明操作成功了。
200:它表示服务器成功执行了客户端所请求的动作
- 3XX:重定向
客户端需要做些额外工作才能得到所需要的资源。它们通常用于GET请求。
- 4XX 客户端错误
401:客户端试图对一个受保护的资源进行操作,却又没有提供正确的认证证书。客户端提供了错误的证书,或者根本没有提供证书。
404:表明服务器无法把客户端请求的URI转换为一个资源
- 5XX 服务端错误
500:通用的服务器错误响应。对于大多数web框架,如果在执行请求处理代码时遇到了异常,它们就发送此响应代码。
四、Jemeter之发送GET和POST请求
4.1 GET请求
4.2 POST请求
与GET请求类似
五、Jmeter的参数
5.1 之param参数
如何填写参数:键值对形式
注意空格:如果报错,而且确定参数值和参数名都正确,就检查是否有空格
5.2 Jmeter之bodydata参数
如何填写参数:json,xml格式的参数
六、Jemeter之http请求默认值
如何添加:线程组右键--配置元件--http请求默认
作用:http请求默认值 会在发送http请求的时候,自带这些参数
七、Jmeter之响应断言
如何添加:线程组右键--断言--响应断言
Jmeter中有个元件叫做断言(Assertion),它的作用和LoadRunner中的检查点类似;用于检查测试中得到的接口返回值是否正确。
7.1 添加断言:
1、apply to:通常发出一个请求只触发一个请求,所以勾选"Main sample only";若一个请求可以触发多个服务器请求,就有"main sample" 和 "sub-sample"之分了。
2、测试字段
(1)一般的http响应,都勾选“相应文本”;
(2)url样本是对sample的url进行断言,如果请求没有重定向,就请求url,如果有重定向,就请求url和重定向url;
(3)响应代码:http响应代码,如101,200,404等。当我们要验证404,501等http相应代码时,需要勾选“忽略状态”。因为当http相应代码为400,500时,jmeter默认这个请求是失败的。
3、模式匹配:
(1)包括:返回结果包括你指定的内容,支持正则匹配。
(2)匹配:相当于equals。
(3)字符串:与"包括"差不多,都是指返回结果包括你指定的内容,但subString不支持正则字符串。
4、测试模式:输入结果期望值(空格要去掉)
7.2 添加断言结果
监听器->断言结果
如果返回的是“http结果”,而没有报错信息,说明断言成功。
八、Jmeter请求元件之用户自定义变量
配置元件->用户自定变量
自定义变量如何引用:${变量名}
九、Jmeter请求元件之CSV参数化
配置元件->CSV 数据文件设置
9.2 线程组设置的循环次数与文件的行数一致就可以生成多个案例
十、Jmeter函数CSVRead参数化数据
工具->函数助手对话框
线程组设置
线程数设置成多线程才能读取文件多行数据。
十一、函数助手-randomstring
十二、正则表达式
元字符 | 意义 | 限定符 | 意义 |
. | 任意单个字符 | + | 匹配至少大于1次 |
\d | 任意单个数字 | ? | 匹配0次或1次 |
[0-9] | 等价0-9 | * | 匹配0次或多次 贪婪匹配 |
[a-zA-Z] | 等价所有的大小写字母 | {n,}、{n,m}、{n} | 匹配限定次数 |
一般使用方法为:
元字符+限定符
十三、Jmeter请求元件之正则表达式提取器提取响应结果
13.1 在需要的http请求下,添加后置处理器->正则表达式提取器
13.2 添加取样器->Debug Sampler(调试取样器)
通过调试取样器可以看到正则表达式的提取结果。
13.3 新建一个http请求,使用正则表达式提取结果
十四、正则表达式提取数组数据
十五、Jmeter请求元件之foreach循环控制
添加->逻辑控制器->foreach
十六、Jmeter之Json path
添加->后置处理器->JSON提取器
十七、Jmeter请求之cookie