关于测试计划

测试计划是指定测试的整体设置的地方。

Apache JMeter中文网 测试计划 🌐

测试计划-用于运行测试的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