大约 5 分钟
参数化是性能测试的核心技能,用于模拟真实用户行为,避免重复数据导致的缓存或数据库冲突。以下是 JMeter 中实现参数化与动态数据的三种主要方法及其应用场景。
一、使用 CSV 文件实现参数化
1. 核心元件:CSV Data Set Config
- 作用:从 CSV 文件逐行读取数据,分配给不同线程(用户)。
- 适用场景:多用户登录、批量订单提交、测试数据多样性需求。
大约 4 分钟
JSR223 介绍
- JMeter 支持使用编程语言来开发测试,最常用的莫过于 BeanShell
- 但是 BeanShell 脚本的效率却不高
- 针对此种情况,JMeter 给了测试开发人员更多的选择,引入了 JSR223 组件元素,提供了使用多种编程语言开发测试的可能性,其中包括了性能较高的Groovy语言
- 在使用 JSR223 组件元素开发测试时,可以使用其内置的变量,有助于精简脚本,提高开发测试的效率
- JSR223 定义了可集成在Java平台上运行的一系列脚本语言,比如 Groovy,JavaScript 等
小于 1 分钟
前提
BeanShell 有的内置变量,JSR223 也会有对应的变量,这里 JSR223 效率更高,所以以它为栗子
简单介绍
- ctx 变量是JMeter JSR223功能最强大的内置变量之一
- 通过它可以轻松的访问当前线程的上下文
- 在 JMeter 内部,ctx 映射为 org.apache.jmeter.threads 的 JMeterContext 类
- 由于JMeterContext 不具有线程安全性,故仅适用于在单线程中使用
- 官方文档: https://jmeter.apache.org/api/org/apache/jmeter/threads/JMeterContext.html
大约 1 分钟
Bean Shell 官方介绍
- BeanShell 是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法
- BeanShell 是一种松散类型的脚本语言(这点和 JS 类似)
- BeanShell 是用 Java 写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,具有对象脚本语言特性,非常精简的解释器 jar 文件大小为175k
- BeanShell 执行标准 Java 语句和表达式,另外包括一些脚本命令和语法
大约 1 分钟
前提
BeanShell 有的内置变量,JSR223 也会有对应的变量,这里 JSR223 效率更高,所以以它为栗子
简单介绍
- prev 提供对当前取样器结果的访问能力
- prev 映射 org.apache.jmeter.samplers 的 SampleResult 类
- 官方文档: https://jmeter.apache.org/api/org/apache/jmeter/samplers/SampleResult.html
大约 2 分钟
前提
BeanShell 有的内置变量,JSR223 也会有对应的变量,这里 JSR223 效率更高,所以以它为栗子
简单介绍
- props 映射 java.util 的 Properties 类
- 与 vars 作用大致相同,区别的是 vars 是对变量进行读写操作, 而 props 主要是对属性进行读写操作
- vars 只能在当前线程组内使用,props 可以跨线程组使用 ,因为属性可以跨线程组但是变量不行
- vars 只能保存 String 或者 Object,props 可以是 Hashtable 或者 Object
- java.util.Properties 这个类是线程安全的;多个线程可以共享一个 Properties 对象,而不需要外部同步
- 官方文档: https://tool.oschina.net/uploads/apidocs/jdk-zh/java/util/Properties.html
大约 1 分钟
前提
BeanShell 有的内置变量,JSR223 也会有对应的变量,这里 JSR223 效率更高,所以以它为栗子
简单介绍
- vars 是最常用的JMeter变量之一
- 在 JMeter 内部,映射 org.apache.jmeter.threads 的 JMeterVariables 类
- vars 提供了对当前线程变量的读写能力
- 所有的 JMeter 变量都是 java字符串
- 如果你需要把数据存放到一个 JMeter 变量中,需要先将它转换成字符串
- 官方文档:https://jmeter.apache.org/api/org/apache/jmeter/threads/JMeterVariables.html
大约 1 分钟
小于 1 分钟
断言的介绍
- 可以断言服务器的响应内容
- 在性能测试脚本中使用断言,一般是为了调试脚本
- 在接口自动化测试中使用断言,一般是为了严谨的校验接口响应内容是否符合预期
断言成功与否
- 断言成功与否,可以通过监听器-断言结果查看
- 如果断言失败,则将此请求标记为失败,还会显示在察看结果树中,错误率会显示在聚合报告中
小于 1 分钟