Jmeter检查点/断言
在上一章节中,我们通过调试脚本,通过人工验证脚本可以完成业务功能,
但在性能测试中,我们希望能通过自动验证脚本是否完成业务功能,在Jmeter
中我们可以通过检查点,也就是断言来实现自动验证脚本的正确性。
断言组件:
Jmeter通过断言组件完成断言、自动验证的功能。
断言组件通过获取服务器响应数据,然后根据断言规则去匹配响应数据;
正常匹配脚本不会出现任何问题或者提示,如果匹配不到,就会出现异常情况,
此时Jmeter就会判断这个事务失败,那么我们在察看结果树中看到的请求名称
是红色字体。
通过右击单个请求-添加--断言,可 以看到Jmeter的断言元件非常多,一
般常使用的是响应断言(Response Assertion)。
响应断言既是对服务器的响应数据进行规则匹配。
响应断言界面如下:
响应断言界面介绍:
名称、注释、Apply之前在讲正则表达式提取器的时候介绍过,不做重复讲解。
要测试的响应字段:针对响应数据的不同部分进行匹配,包含如下7个部分。
响应文本:服务器返回的响应文本内容,HTTP协议排除Header部分
Document(text):对文档内容进行匹配。
URL样本:匹配URL链接。
响应代码:匹配响应代码,如”200”。
响应信息:匹配响应信息,如"0K"。
Response Headers:匹配响应中的头信息。
Ignore Status:一个请求有多个响应断言,当第一个断言设置该选项,那么如果第一个断言失败后,第二个断言成功,事务还是成功状态。
模式规则匹配:包含如下5个部分。
包括:响应内容包括需要匹配的内容,支持正则表达式。
匹配:响应内容要完全匹配需要匹配的内容,大小写不区分,支持正则表达式。
Equals:响应内容要完全与需要匹配的内容相同,区分大小写,不支持正则表达式
Substring:响应内容包含需要匹配的内容,区分大小写,不支持正则表达式。
否:选择Equals、Substring时匹配的是字符串,大小写敏感,选择此项类似降级。
要测试的模式:填入需要匹配的字符串或者正则表达式。
Jmeter事务
Jmeter能够做到把每个请求统计成一个事务,但事务一般是用户宏观上的概
念,所以系统把多个请求统计成一个事务, 在Jmeter中可以通过逻辑控制器下的事务控制器来完成此要求。
逻辑控制器概念:
逻辑控制器可以控制采样器(samplers)的执行顺序。由此可知,控制器需要
和采样器一起使用,否则控制器就没有什么意义了。放在控制器下面的所有的采样器都会当做一个整体,执行时也会一起被执行。
逻辑控制器分类:
a)控制测试计划执行过程中节点的逻辑执行顺序,如:循环控制器(Loop
Controller)、如果控制器(If Controller)等;
b)对测试计划中的脚本进行分组、方便]Meter统计执行结果以及进行脚本的
运行时控制等,如:吞吐量控制器(Throughput Controller)、事务控制器
(Transaction Controller)等。
我们需要做Jmeter的事务操作,所以需要用到事务控制器。
事务控制器界面如下:
Generate parent sample:如果事务控制器下有多个采样器(请求),勾选后,在察看结果树中不仅可以看到事务控制器,还可以看到每个采样器;并且事务控制器定义的事务是否成功取决于子事务是否都成功,任何一个失败代表整个事务失败。
Include duration of timer and per-post processors in generated sample:是否包括定时器、预处理和后期处理延迟的时间,选中这一项会统计定时器(timer)的时间,否则只统计采样器(sample)的时间。
Jmeter集合点
在做性能测试过程中,我们会根据场景做狭义的并发,这个时候就需要用到
集合点,集合点能够尽量让虚拟用户同一时刻发送请求,在Jmeter中集合点是通过定时器来完成的。
定时器概念:
Jmeter定时器用来控制取样器的执行时机,有固定定时器,随机定时器等。
要实现集合点,一般我们需要用到同步定时器来进行控制。
同步定时器(Synchronizing timer)概念:
同步定时器用来保证取样器在同一-时刻向服务器发起负载,考虑到线程运行
的时间快慢与场景的需要,也提供了同步线程数量的设置。如下图界面: