Jmeter基础配置元件详解篇

Jmeter基础篇:配置元件详解

    • (一)测试计划详解
    • (二)线程组详解
    • (三)取样器详解
    • (四)前置处理器详解
    • (五)定时器详解
    • (六)后置处理器详解
    • (七)断言器详解
    • (八)监听器详解

(一)测试计划详解

测试计划是Jmeter的根基,所有的测试内容都是基于测试计划的,每次打开Jmeter都会默认带有一个测试计划。
1、用户定义的变量:用来定义全局的变量值,在测试计划下任何地方都能引用该处定位的变量。考虑放在此处的变量特点:
(1)不会因为项目的环境的改变而改变的变量值,这样能使得脚本能够兼容各个环境。比如项目的用户名密码等变量会因为环境不一样而改变的就不建议放在此处定义,如果放在了此处,就会出现每次在不同环境执行脚本都要翻阅项目资料修改用户名密码等繁琐的操作
(2)注意点:由于直接在测试计划面板的【用户定义的变量】与在测试计划下新建【配置元件】->【用户定义的变量】完全等价,本人建议存放在此处的变量可以使用【配置元件】->【用户定义的变量】来替代,通过一次性新建好项目所有环境的变量信息,后面执行脚本的时候只需要控制各个环境的【用户定义的变量】的“禁用”与“启用”即可。例子:
Jmeter基础配置元件详解篇_第1张图片我们希望脚本在哪个环境下执行只需要操作对应【用户定义变量】的启用与禁用即可。
Jmeter基础配置元件详解篇_第2张图片
2、独立运行每个线程组:
(1)未勾选:有多个线程组时,其随机启动执行,
(2)勾选后:多个线程组时,等待前一个线程组执行完成后才开始下一个线程组。注意点:只影响同个优先级下的线程组的随机执行顺序,不影响整体的顺序,如:必定会先执行setUp线程组、再执行普通线程组、再执行tearDown线程组。
例子1:未勾选【独立运行每个线程组】时:
Jmeter基础配置元件详解篇_第3张图片
执行的时候,每次都会随机执行某个线程组下的请求,执行结果:
Jmeter基础配置元件详解篇_第4张图片

(二)线程组详解

一:在取样器错误后要执行的动作:
1、继续:该线程组下如果某个取样器执行失败,不会影响该线程组下的其他取样器的执行。
例子1:
Jmeter基础配置元件详解篇_第5张图片
执行结果:第二个请求发生错误后,不会影响线程组下面的请求继续执行,如图:
Jmeter基础配置元件详解篇_第6张图片

(三)取样器详解

一:Http请求
介绍下Http请求元件的各项信息
1、协议:可以省略不填,省略默认是http协议,端口号默认80,如果协议填的的https,则端口号默认是443
2、自动重定向:当发送HTTP请求后得到的响应是3XX状态码时,JMeter会自动重定向到新的页面,但不记录重定向的过程内容
3、跟随重定向:当响应是3XX状态码时,会记录重定向过程中的所有请求响应信息,在查看结果树中可以看到重定向过程中的所有请求,一般我们需要获取所有请求给与我们一些判断依据,所以此项一般都需要勾选。
4、keepalive:一种长连接通信方式,即发出多次请求时,不会频繁的建立连接和断开连接,勾选后,会在请求头带有:Connection:keep-alive的信息,通过此选项可以大大节约了3次握手协议所需的时间。
5、对post使用multipart/form-data:发送post请求时,使用multipart/from-data或者application/x-www-form-urlencoded方法发送。
此取样器一般保持默认使用即可。
Jmeter基础配置元件详解篇_第7张图片

(四)前置处理器详解

一、用户参数
【用户参数】与前面介绍过的【用户定义的变量】有相似之处,先来介绍下用户参数的使用方法再去区分两者的异同。
1、注意作用域的问题,(1)如果是放在测试计划下,则整个测试计划都可以引用该处定义的变量
(2)如果是放在线程组下,则只能在所放的线程组下引用
(3)如果是在请求下,则只能在具体请求下引用
2、用户参数有名称,用户_N的定义,下面进行实例讲解。
实例1:只定义一个用户,则在引用变量的时候,永远都是这个用户的值。如图:
Jmeter基础配置元件详解篇_第8张图片
Jmeter基础配置元件详解篇_第9张图片
执行结果:
Jmeter基础配置元件详解篇_第10张图片

(五)定时器详解

同步定时器
用于设置达到所设定的用户量后在同一时刻发起请求,在进行压测时候所用的定时器多数就是这个定时器
Jmeter基础配置元件详解篇_第11张图片
我上述例子模拟的是:达到100个用户后,再一起发起请求,如果等到了5000毫秒即5秒后,还没等到100个用户,最长时间等到了多少用户就用多少用户同时发起请求

(六)后置处理器详解

一:Json提取器
通过JsonPath语法提取取样器信息。
1、Jmeter的Json提取器页面介绍:
Jmeter基础配置元件详解篇_第12张图片
(1):Apply to选项
(1.1)Main sample and sub-samples:应用于主样本和子样本
(1.2)Main sample only:仅应用于主样本,一般选这个选项即可
(1.3)Sub-samples only:仅应用于子样本
(1.4)Jmeter Variable Name to use:应用于Jmeter变量中,
(2)Names of created variables:给提取到的变量取名
(3)JSON Path expressions:JsonPath的表达式
(4)Match No:可以填写数字(0,1,-1),0表示随机取一个数据,1表示取第一个数据,-1表示取全部数据,也可以不填,不填写默认取第一个数据
(5)Default Values:未取到值的时候默认值
JsonPath的语法介绍:

1)$:表示根节点元素
(2)@:表示当前所在位置节点元素
(3*:表示通配所有元素
(4.:表示匹配当前路径的下级节点
(5..:表示递归匹配当前路径的所有节点
(6[index]:表示匹配数组索引类型的节点
(7)?(表达式):对数据进行筛选

案例1:此处通过调用【聚合报告】的【新闻头条】请求,获取一个数据信息
(1)在Jmeter中发起【新闻头条列表】请求:
Jmeter基础配置元件详解篇_第13张图片
(2)发起请求后,得到了接口响应的JSON信息:
Jmeter基础配置元件详解篇_第14张图片
(3)我们想要获取提取响应信息里的“titile”信息,那么就可以使用JSON提取器。
(3.1)分析Json层级关系,位于"result"->“data”->"title"下
我们可以逐层取数据如:$.result.data[*].title
Jmeter基础配置元件详解篇_第15张图片

(七)断言器详解

一:响应断言
该种断言器一般放到具体的取样器下,断言具体的取样器是否包含自己的预期内容。
Jmeter基础配置元件详解篇_第16张图片
1:测试字段
(1)响应文本:对响应的文本做断言,此选项不包含响应头信息
(2)响应代码:对响应的状态码断言
(3)响应信息:对响应的全部信息做断言,此选项包含响应所有信息
(4)响应头:对响应头做断言
(5)请求头:对请求头做断言
(6)URL样本:对取样器URL做断言
(7)文档:对响应文档内容断言,至今未使用过
(8)忽略状态:博主也没使用过,应该不怎么使用,默认即可
(9)请求数据:对请求数据做断言
2、模式匹配规则
(1)包括:延段测试字段是否包含指定的文本或者字段值,支持正则表达式
(2)匹配:断言测试字段是否与期望值完全匹配,一般需要结合正则表达式使用
(3)相等:断言测试字段是否与期望值完全相等,此处不支持正则表达式
(4)字符串:断言测试字段是否包含指定的字符串,不支持正则表达式
(5)否:不进行匹配
(6)或者:博主也没使用过,默认即可
3、自定义失败消息
对于断言不通过的时候,可以输出自定义的失败消息
实例:
对百度发起请求,断言响应信息是否包含“百度”字符串,如果包含即断言成功,不包含则断言失败,自定义失败消息“该请求断言不通过噢噢噢”
Jmeter基础配置元件详解篇_第17张图片
执行结果:
Jmeter基础配置元件详解篇_第18张图片

(八)监听器详解

一,聚合报告:
Jmeter基础配置元件详解篇_第19张图片
1、Label:请求的名称,即取样器名称
2、样本:总共发给服务器的请求数量,如果模拟10个用户,每个用户迭代10次,那么总的请求数为:10*10 =100次;
3、平均值:当前此脚本运行的取样器的响应平均值
4、中位数: 当前脚本运行的取样器的响应时间的中位数
5、90%:90%的请求的响应时间
6、95%Line:95%的请求的响应时间
7、99%Line:99%的请求的响应时间
8、最小值:最小的响应时间
9、最大值:最大的响应时间
10、异常%:错误率=错误的请求的数量/请求的总数
11、吞吐量: 每秒完成的事务数,即我们常听说的TPS,一般越大证明系统性能越好,是性能测试里的一个重要指标
12、接收KB/sec: 每秒从服务器端接收到的数据量
13、发送KB/sec: 每秒向服务器端发送的数据量

你可能感兴趣的:(Jmeter性能测试,jmeter,java,python)