目录
前言
作为经常使用 jmeter 来做接口测试的人,肯定对各类用户参数元件不陌生,常见的有两大类:一类是依赖外部获取,如 CSV Data Set Config元件;二类是元件自存储的,如用户自定义变量、用户参数。他们都是用来存储和传递变量值的功能组件,但它们在作用范围、初始化时机以及是否动态获取值等方面存在区别。接下来就让我们从 「 类型 」 、「 位置 」、「 作用域 」、「 功能 」、「 使用场景 」、「 初始化 」、「 动态性 」来分析比对。
用户自定义变量
-
类型:配置元件
-
位置:测试计划层级,以便在整个测试计划中全局生效。
-
作用域:全局作用域,可以在任何线程组或其他子元素中引用。
-
功能:用于设置静态常量值,这些值在整个测试计划执行过程中保持不变
-
使用场景: 适合设置那些在整个测试期间不需要改变的通用变量。
-
初始化:在测试脚本启动时一次性获取并设置变量的值。
-
动态性:非动态,一旦设置后,在整个测试执行过程中,其值始终保持不变。
用户参数
-
类型:前置处理器
-
位置:一般放在具体线程组或HTTP请求等需要使用参数的元件内部。
-
作用域:局部作用域,仅在当前线程组内有效,不能跨线程组引用。
-
功能:可以动态生成一组变量及其对应的值,这些值可以在同一线程的后续请求中使用。在每个线程开始前处理一次,如果在循环迭代中,每次迭代可以使用不同的值(取决于配置)。
-
使用场景: 适用于需要为每个线程提供不同输入参数的情况。
-
初始化:在每个线程(虚拟用户)开始前获取一次值,如果在线程循环中,每次迭代可能都会重新获取值(取决于实际配置)。
-
动态性:可动态获取值,尤其适用于需要在测试执行过程中动态生成不同参数值的情况。
CSV Data Set Config
-
类型:配置元件
-
位置:一般放在具体线程组或HTTP请求等需要使用参数的元件内部。
-
作用域:全局或局部(根据配置位置决定)
-
功能:从CSV文件中读取数据,并将其分配给变量。它支持多线程并行读取且可控制是否在每个线程/循环迭代中移动到下一行
-
使用场景: 适用于大规模参数化测试,尤其在需要大量并发用户具有不同输入数据的情况下
-
初始化:在每个线程(虚拟用户)开始前获取一次值,如果在线程循环中,每次迭代可能都会重新获取值(取决于实际配置)。
-
动态性:可动态获取值,尤其适用于需要在测试执行过程中动态生成不同参数值的情况。
-
参数化方式:“共享模式”选项决定了多个线程如何读取数据:
-
当设置为“所有线程”时,所有线程会共享同一行数据。
-
当设置为“当前线程(每个迭代)”时,每个线程都会独立地读取文件中的数据,在每个循环迭代中获取新的行。
-
其他模式也会影响数据读取的行为。
总结
综上所述,用户自定义变量用于设置固定不变的变量;用户参数是针对单个线程生命周期内的动态参数;而CSV Data Set Config则更适合实现大规模数据驱动的性能测试,从文件中逐行读取数据进行参数化。