🌈 赏金任务 - JMeter 参数化的方式有哪些?

赏金任务每周更新,请持续关注哦 :love_letter:

题目

  • JMeter 参数化的方式有哪些?

参与方式

  • 本帖下方回复你的答案即可

赏金

  • 100元京东购物卡

活动时间

  • 2023å¹´5月8日 - 2023å¹´5月14日

本周赏金任务汇总: 🌈 赏金任务发布 2023-05-08

本问题参与赏金活动,详情点击 :rainbow: 赏金活动上线啦 丨做赏金任务挑战千元奖金 查看活动介绍

JMeter 中常见的参数化方式包括:

  1. CSV 数据文件:从 CSV 文件中读取数据,并将其用于请求参数。
  2. 数据库访问:从数据库中读取数据,并将其用于请求参数。
  3. 用户定义的变量:手动定义变量值,并将其用于请求参数。
  4. 随机变量:随机生成变量值,并将其用于请求参数。
  5. Counter:生成一个递增的计数器,并将其用于请求参数。
  6. BeanShell/JSR223:使用脚本来生成需要的参数值,并将其用于请求参数。
  7. XPath Extractor:从响应中提取指定的 XML 值,并将其用于请求参数。
  8. HTTP URL Re-writing Modifier:从请求 URL 中提取参数值,并将其设置为变量值。
  9. JDBC PreProcessor:在请求执行前,先执行 SQL 语句并将结果设置为变量值。
  10. JSON Extractor:从响应中提取指定的 JSON 值,并将其用于请求参数。
  11. Regular Expression Extractor:从响应中提取指定的文本值,并将其用于请求参数。

每种参数化方式使用方式如下:

1. CSV 数据文件
使用 CSV 数据文件的方式,可以将请求中的参数值替换为文件中的值。具体步骤如下:

  • 创建一个 CSV 文件,文件中包含需要替换的参数值。
  • 在 JMeter 中,使用 CSV Data Set Config 元件来读取 CSV 文件,并将其设置为变量名和变量值的映射关系。
  • 在请求中,使用 ${variable_name} 的方式来引用变量名,并将其替换为变量值。

2. 数据库访问
使用数据库访问的方式,可以从数据库中获取值并将其用于请求参数。具体步骤如下:

  • 在 JMeter 中,使用 JDBC Connection Configuration 元件来配置数据库连接信息。
  • 使用 JDBC Request 元件来执行 SQL 语句,并将结果设置为变量值。
  • 在请求中,使用 ${variable_name} 的方式来引用变量名,并将其替换为变量值。

3. 用户定义的变量
使用用户定义的变量的方式,可以在测试计划中定义变量,并在请求中使用这些变量。具体步骤如下:

  • 在测试计划中,使用 User Defined Variables 元件来定义变量名和变量值的映射关系。
  • 在请求中,使用 ${variable_name} 的方式来引用变量名,并将其替换为变量值。

4. 随机变量
使用随机变量的方式,可以使用 JMeter 提供的随机函数生成随机值,并将其用于请求参数。具体步骤如下:

  • 在请求中,使用 ${__Random(1,100)} 的方式来生成 1 到 100 之间的随机数,并将其替换为请求参数的值。

除了前面提到的 CSV 数据文件、数据库访问、用户定义的变量和随机变量之外,JMeter 还有以下参数化方式:

5.Counter
使用 Counter 元件的方式,可以生成一个递增的计数器,并将其用于请求参数。具体步骤如下:

  • 在测试计划中,使用 Counter 元件来定义计数器的起始值、步长和结束值。
  • 在请求中,使用 ${__counter(起始值,步长)} 的方式来引用计数器,并将其替换为请求参数的值。

6.BeanShell/JSR223
使用 BeanShell/JSR223 的方式,可以使用脚本来生成需要的参数值,并将其用于请求参数。具体步骤如下:

  • 在测试计划中,使用 BeanShell/JSR223 元件来编写脚本,并将脚本输出设置为变量值。
  • 在请求中,使用 ${variable_name} 的方式来引用变量名,并将其替换为变量值。

7.XPath Extractor
使用 XPath Extractor 的方式,可以从响应中提取指定的 XML 值,并将其用于请求参数。具体步骤如下:

  • 在请求中,使用 XPath Extractor 元件来提取 XML 值,并将其设置为变量值。
  • 在请求中,使用 ${variable_name} 的方式来引用变量名,并将其替换为变量值。

8. HTTP URL Re-writing Modifier
使用 HTTP URL Re-writing Modifier 的方式,可以从请求 URL 中提取参数值,并将其设置为变量值。具体步骤如下:

  • 在请求中,使用 HTTP URL Re-writing Modifier 元件来提取 URL 参数值,并将其设置为变量值。
  • 在请求中,使用 ${variable_name} 的方式来引用变量名,并将其替换为变量值。

9. JDBC PreProcessor
使用 JDBC PreProcessor 的方式,可以在请求执行前,先执行 SQL 语句并将结果设置为变量值。具体步骤如下:

  • 在请求中,使用 JDBC PreProcessor 元件来执行 SQL 语句,并将结果设置为变量值。
  • 在请求中,使用 ${variable_name} 的方式来引用变量名,并将其替换为变量值。

10. JSON Extractor
使用 JSON Extractor 的方式,可以从响应中提取指定的 JSON 值,并将其用于请求参数。具体步骤如下:

  • 在请求中,使用 JSON Extractor 元件来提取 JSON 值,并将其设置为变量值。
  • 在请求中,使用 ${variable_name} 的方式来引用变量名,并将其替换为变量值。

11. Regular Expression Extractor
使用 Regular Expression Extractor 的方式,可以从响应中提取指定的文本值,并将其用于请求参数。具体步骤如下:

  • 在请求中,使用 Regular Expression Extractor 元件来提取文本值,并将其设置为变量值。
  • 在请求中,使用 ${variable_name} 的方式来引用变量名,并将其替换为变量值。

使用时的建议

这些参数化方式可以根据测试需求进行灵活选择和组合。根据测试需求进行参数化方式的选择和组合,可以根据以下几个方面进行考虑:

  1. 数据来源:不同的参数化方式适用于不同的数据来源,如 CSV 数据文件适用于从文件中读取数据,数据库访问适用于从数据库中读取数据等。因此,在选择参数化方式时需要根据数据来源进行选择。
  2. 数据格式:不同的参数化方式适用于不同的数据格式,如 XML 和 JSON 数据适用于 XPath Extractor 和 JSON Extractor 等。因此,在选择参数化方式时需要根据数据格式进行选择。
  3. 数据量:不同的参数化方式适用于不同的数据量,如随机变量适用于生成大量随机数据,而用户定义的变量适用于手动定义少量数据等。因此,在选择参数化方式时需要根据数据量进行选择。
  4. 数据处理:不同的参数化方式适用于不同的数据处理需求,如 BeanShell/JSR223 适用于需要使用脚本来处理数据,而 Regular Expression Extractor 适用于需要从响应中提取指定的文本值等。因此,在选择参数化方式时需要根据数据处理需求进行选择。
  5. 性能要求:不同的参数化方式对性能的影响不同,如使用 CSV 数据文件可能会导致性能下降,而使用用户定义的变量则不会。因此,在选择参数化方式时需要根据性能要求进行选择。
  6. 可维护性:不同的参数化方式对测试脚本的可维护性有影响,如使用 BeanShell/JSR223 脚本可能会导致测试脚本难以维护,而使用用户定义的变量则相对容易维护。因此,在选择参数化方式时需要根据测试脚本的可维护性进行选择。
  7. 测试场景:不同的参数化方式适用于不同的测试场景,如使用随机变量适用于模拟用户行为,而使用 JDBC PreProcessor 则适用于执行数据库操作等。因此,在选择参数化方式时需要根据测试场景进行选择。
1 Like

JMeter 参数化的方式有如下几种:

  1. CSV数据文件:使用CSV文件定义在Sampler中发送的请求中的参数值。可以使用逗号或制表符分隔参数值。CSV文件可以使用随机函数来生成或选择参数值。

  2. JDBC 数据库集成:可以使用JDBC连接池来向数据库中,包括数据库表中存储的参数、JDBC预编译语句、存储过程等获取参数的值。

  3. Properties文件:使用Properties文件来定义参数值。可以在JMeter中定义Properties文件的位置。

  4. HTTP URL:使用HTTP URL请求参数来定义参数值。

  5. HTTP 页面:使用HTTP页面请求参数来定义参数值。

  6. User-defined Variables:使用用户定义的变量来定义参数值。

  7. Randomizier:使用随机函数生成参数值。

JMeter 参数化的方式主要包括以下几种:

  1. CSV文件参数化:将参数值存储在CSV文件中,并通过读取CSV文件中的值替换请求中的参数值,CSV文件中的每一行代表一个请求;
  2. 数据库参数化:将参数值存储在数据库中,并通过查询数据库中的数据替换请求中的参数值;
  3. 用户定义变量参数化:在测试计划中定义变量,然后在请求中使用${}语法替换请求中的参数值;
  4. 随机变量参数化:使用内置的函数和变量来生成随机的参数值,包括随机数字、随机字符串等;
  5. 编写脚本参数化:利用BeanShell等脚本语言编写自定义的参数化逻辑,生成动态的参数值。

在使用参数化的过程中,需要注意以下几个场景:

  1. 参数名称的唯一性:确保每个参数名称在请求中是唯一的,否则可能会导致参数值被错误地替换;
  2. 参数值的类型和格式:确保替换后的参数值与请求中要求的类型和格式相同;
  3. 并发访问时的线程安全:保证在多个线程同时访问的情况下,参数化过程不会出现线程安全问题;
  4. 参数化的效率和可维护性:选择合适的参数化方式,并根据测试需要定期维护参数化文件或逻辑。
参数化方式 测试步骤 使用场景 举例
CSV 文件参数化 1. 准备 CSV 文件;2. 添加 CSV 数据集配置元件;3. 在测试脚本中使用变量 大规模测试,需要使用多个不同的测试数据;数据不需要经常更改 假设我们需要对某个网站进行登录功能测试,可以使用不同的用户名和密码进行测试。我们可以将用户名和密码存储在一个 CSV 文件中,并通过 CSV 数据集配置元件将它们导入测试脚本中。
数据库参数化 1. 添加 JDBC 连接配置元件;2. 编写 SQL 查询;3. 在测试脚本中使用变量 需要使用真实数据进行测试;测试数据存储在数据库中 假设我们需要测试一个在线商店的商品搜索功能,可以从数据库中获取商品名称和价格等信息作为测试数据。我们可以通过 JDBC 连接器连接到数据库,并编写 SQL 查询语句来获取测试数据。
用户定义的变量参数化 1. 定义变量;2. 在测试脚本中使用变量 在测试脚本中需要使用自定义变量 假设我们需要对某个 Web 应用程序进行性能测试,需要设置一些自定义的请求头或请求参数。我们可以在测试脚本中定义自定义变量,并使用它们来设置请求头或请求参数。
随机数参数化 1. 使用内置函数生成随机数;2. 在测试脚本中使用变量 需要使用随机数作为测试数据 假设我们需要测试某个网站的注册功能,需要使用不同的随机邮箱地址进行测试。我们可以使用 JMeter 内置的随机数函数来生成随机邮箱地址,并将它们作为测试数据。
外部插件参数化 1. 安装插件;2. 配置插件;3. 在测试脚本中使用变量 需要处理复杂的测试数据格式,如 JSON、XML 等 假设我们需要测试一个 RESTful API 的性能,需要使用 JSON 格式的请求数据。我们可以使用 JMeter 的 JSON 插件来处理 JSON 格式的数据,并将它们作为测试数据。
分布式缓存参数化 1. 配置缓存服务器;2. 在测试脚本中使用变量 多台机器共享测试数据 假设我们需要对一个分布式系统进行性能测试,需要在多台机器之间共享测试数据。我们可以使用分布式缓存来存储和读取测试数据,并通过 JMeter 中的分布式缓存配置元件来配置缓存服务器的位置和其他参数。
HTTP 参数化 1. 添加 HTTP 参数化元件;2. 配置参数;3. 在测试脚本中使用变量 需要在 HTTP 请求中使用动态参数 假设我们需要测试一个电商网站的购物车功能,需要向购物车中添加多个商品。我们可以使用 HTTP 参数化元件来设置商品的数量、名称、价格等参数,并将它们作为测试数据。
XPath 参数化 1. 使用 XPath 表达式提取数据;2. 在测试脚本中使用变量 需要从 XML 或 HTML 中提取数据作为测试数据 假设我们需要测试一个网站的搜索功能,需要使用多个关键词进行测试。我们可以使用 XPath 表达式从网页的 HTML 或 XML 中提取关键词,并将它们作为测试数据。
正则表达式参数化 1. 使用正则表达式提取数据;2. 在测试脚本中使用变量 需要从文本中提取数据作为测试数据 假设我们需要测试一个社交媒体应用程序的发布功能,需要使用多个不同的文本作为测试数据。我们可以使用正则表达式来从文本中提取测试数据,并将它们作为测试数据。
CSV 数据文件参数化 1. 创建包含测试数据的 CSV 文件;2. 添加 CSV 数据文件配置元件;3. 在测试脚本中使用变量 需要使用外部文件作为测试数据 假设我们需要测试一个电商网站的下单功能,需要使用多个用户的账号和密码进行测试。我们可以将账号和密码存储在 CSV 文件中,并使用 CSV 数据文件配置元件将其导入测试脚本中。
数据库参数化 1. 添加 JDBC 配置元件;2. 在测试脚本中使用变量 需要使用数据库中的数据作为测试数据 假设我们需要测试一个电商网站的商品详情页,需要使用多个商品的 ID 进行测试。我们可以使用 JDBC 配置元件来连接数据库,并使用 SQL 查询语句将商品的 ID 查询出来,并将其作为测试数据。
随机变量参数化 1. 添加用户定义的变量元件;2. 在测试脚本中使用变量 需要使用随机数或随机字符串作为测试数据 假设我们需要测试一个社交媒体应用程序的注册功能,需要使用多个随机的用户名和密码进行测试。我们可以使用用户定义的变量元件来生成随机的用户名和密码,并将其作为测试数据。