关于测试计划
测试计划是指定测试的整体设置的地方。
测试计划-用于运行测试的JMeter脚本,由测试元素组成。比如线程组,逻辑控制器,样本生成控制器,监听器,定时器,断言和配置元素。每个测试计划中至少应有一个线程组。 前言中的快速开始就是一个测试计划。
测试计划控制面板中的元素:
-
名称和注释
-
用户定义的变量
-
独立运行每个线程组
-
主线程结束后运行tearDown线程组
-
函数测试模式
-
添加目录或jar包到classpath
用户定义的变量
测试计划面板中提供的用户定义的变量
,作用域为整个测试计划,可以通过${变量名称}
的方式来引用。用户定义的变量
用于在不同的请求或操作中使用相同的数值,从而更加方便地维护和修改。
示例Jmeter脚本
-
测试计划下添加线程组、查看结果树
-
测试计划中添加用户定义的变量。变量名:
UserDefinedVariables
、变量值:姜振园
-
线程组下添加HTTP请求
-
HTTP请求:
GET HTTP://127.0.0.1:5000/UserDefinedVariables/
-
HTTP请求参数:变量名:
UserDefinedVariables
、变量值:${UserDefinedVariables}
运行结果
请求体中的?UserDefinedVariables=姜振园
表明正确引用了测试计划中用户自定义变量的值姜振园
。
JMeter提供的配置元件中也包含用户定义的变量
元件,通过测试计划/线程组/取样器-添加-配置元件-用户定义的变量
添加。用法与测试计划面板中的用户定义的变量
一致。
测试计划下添加的用户定义的变量
将在整个测试计划中生效,与测试计划面板中的用户定义的变量
作用范围一致。如果用户定义的变量
位于取样器中,其作用范围将仅限于该特定取样器内。
独立运行每个线程组
勾选独立运行每个线程组
,测试计划下同类型线程组串行(顺序执行)。不勾选独立运行每个线程组
,测试计划下同类型线程组并行。
示例Jmeter脚本
-
测试计划下添加两个线程组-名称:
线程组1、线程组2
-
测试计划下添加查看结果树
-
两个线程组下皆添加HTTP请求-名称:
HTTP请求1、HTTP请求2
-
HTTP请求1、HTTP请求2:
GET HTTP://127.0.0.1:5000/GetList/
-
线程组1下添加固定定时器-线程延迟:
3000
(使线程组1中的取样器延迟3秒执行)
不勾选独立运行每个线程组
测试计划中不勾选独立运行每个线程组
,运行
HTTP请求2排序在前,总用时3秒
——右上角红框标记。
HTTP请求2的Sample Start——请求释放的时间为:2024-06-28 11:40:59 CST
,HTTP请求1的Sample Start为:2024-06-28 11:41:02 CST
。
固定定时器使HTTP请求1的释放时间延迟3秒
——用时3秒
的原因,因两个线程组并发,造成HTTP请求2比HTTP请求1的释放时间早了3秒
。
勾选独立运行每个线程组
测试计划中勾选独立运行每个线程组
,运行
HTTP请求1排序在前,总用时3秒
——右上角红框标记。
HTTP请求1及HTTP请求2的Sample Start均为:2024-06-28 11:51:17 CST
。
固定定时器使HTTP请求1的释放时间延迟3秒
——用时3秒
的原因,但因两个线程组串发,HTTP请求2在HTTP请求1后释放——日志信息中红色下划线,HTTP请求2的释放时间晚于HTTP请求1的释放时间21毫秒
。
主线程结束后运行tearDown线程组
JMeter 中,线程组
的执行优先级大于tearDown 线程组
,tearDown 线程组
将会等待所有线程组
执行完毕后才会执行。
线程组
中的取样器-在取样器错误发生后要执行的动作
配置为停止测试
或立即停止测试
,如果取样器
发生错误,tearDown线程组
就不会执行。
这种场景下,如果需要执行tearDown线程组
,则可以勾选主线程结束后运行tearDown线程组
。它的作用是普通线程由于取样器错误而导致线程结束执行时,Jmeter也会继续执行 tearDown 线程。
这意味着即使在测试中发生了错误,系统仍会在整个测试结束前执行 tearDown 线程,以确保在测试运行结束时执行一些清理或必要的操作。
示例Jmeter脚本
-
测试计划下添加线程组、tearDown线程组、查看结果树
-
线程组面板中的
在取样器错误后要执行的动作
中勾选停止测试
或立即停止测试
-
线程组和tearDown线程组下添加http请求取样器
-
线程组下取样器名称:
线程组-HTTP请求
-
线程组-HTTP请求的请求地址:
HTTP://1.1.1.1:1111/error/
(错误的请求地址,会造成取样器错误) -
tearDown线程组下取样器名称:
tearDown线程组-HTTP请求
-
tearDown线程组-HTTP请求的请求地址:
HTTP://127.0.0.1:5000/GetList/
-
线程组-HTTP请求及tearDown线程组-HTTP请求的请求方式:
GET
不勾选主线程结束后运行tearDown线程组
测试计划中不勾选主线程结束后运行tearDown线程组
,运行
执行了线程组-HTTP请求
,但没有运行tearDown线程组-HTTP请求
。
tearDown 线程组
会在线程组
执行完毕后执行,所以tearDown线程组-HTTP请求
会在线程组-HTTP请求
结束后执行。
线程组-HTTP请求
响应体中的异常信息显示尝试连接到IP地址1.1.1.1上的端口1111时超时,导致取样器发生错误。这是肯定的,因为请求地址就是个错误地址。
线程组中设置在取样器错误后要执行的动作-停止测试
,Jmeter检测到线程组-HTTP请求
错误后,不再执行后续取样器请求。
造成的结果就是tearDown线程组-HTTP请求
不会被执行。
勾选主线程结束后运行tearDown线程组
测试计划中勾选主线程结束后运行tearDown线程组
,运行
这次执行了tearDown线程组-HTTP请求
。它的作用就是无论如何都会执行tearDown线程组
。
函数测试模式
若选择了此选项,并且监听组件(比如“查看结果树”)配置了将结果保存到文件中,JMeter会将每次的请求结果记录到文件中。这种做法相对消耗资源,只推荐在平时脚本调试的情况下,启用该选项。
实际应用场景相对有限,因此在本文中不进行详细演示。
添加目录或jar包到classpath
添加文件或 JAR 包功能主要用于调用外部的 JAR 包。当脚本需要引用外部的 Java 文件或 JAR 包时,可以通过将 JAR 包的路径添加到此功能中。这样,在 Beanshell 脚本中就可以通过 import 语句导入外部 JAR 包,并直接调用其中的方法。
在后续的内容中,当涉及到 Beanshell 时,将详细阐述如何使用这一功能。
© 转载需要保留原始链接,未经明确许可,禁止商业使用。CC BY-NC-ND 4.0
...