首页 > 其他分享 >JMeter参数化的多种方式

JMeter参数化的多种方式

时间:2023-05-09 16:33:50浏览次数:37  
标签:多种 请求 方式 Extractor 变量值 参数 使用 JMeter

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 则适用于执行数据库操作等。因此,在选择参数化方式时需要根据测试场景进行选择。

标签:多种,请求,方式,Extractor,变量值,参数,使用,JMeter
From: https://www.cnblogs.com/zwldyt/p/17385479.html

相关文章

  • SpringBoot - 参数接收方式
    SpringBoot-参数接收方式·前言·使用@PathVariable接收路径中的参数·使用@RequestParam获取路径中?后的参数·使用@RequestBody获取Map对象·使用@RequestBody获取实体对象前言使用@PathVariable接收路径中的参数@GetMapping(value="/param/{id}")publicStri......
  • js获取url中的参数
    functiongetUrlParam(strUrl){varurl,pos,urlStr,para;url=strUrl||window.location.href;pos=url.indexOf("?")if(pos<=0)return;url=url.substring(pos+1);varparams=url.split("&");......
  • Qt音视频开发45-音视频类结构体参数的设计
    一、前言视频监控内核组件重构和完善花了一年多时间,整个组件个人认为设计的最好的部分就是各种结构体参数的设计,而且分门别类,有枚举值,也有窗体相关的结构体参数,解码相关的结构体参数,同时将部分常用的结构体参数的获取和设置单独提供了函数,参阅海康大华等大厂的sdk的设计方式,也是......
  • @Accessors 注解参数
    @Accessors注解参数经常会在实体类上看到,记录一下,方便以后复习@Accessors注解的作用:当属性字段在生成getter和setter方法时,做一些相关的设置。@Accessors共有三个属性,分别是fluent,chain,prefixfluent属性不写默认为false,当该值为true时,对应字段的getter方法前面......
  • Jmeter详解
    目录Blazemeter界面详解Jmeter参数化1、用户定义的变量2、CSV数据文件设置3、用户参数4、函数counterRandomtime数据库引用数据库操作断言响应断言响应文本响应代码大小断言控制器IF逻辑控制器ForEach逻辑控制器循环逻辑控制器关联XPath提取器正则表达式提取器跨越线程组传值高并......
  • 入门8-Pytest部分测试用例的前后置(fixture)(1-参数详解)
    使用[email protected](scope=”function”,autouse=False,params=loginutil(),ids=[0,1,2],name="login")各个参数详解Scope:作用域             Function:用例之前和之后    Class:类之前和之后Package/session:#整个项目会话之......
  • ORM常用字段和参数
    一些说明:表myapp_person的名称是自动生成的,如果你要自定义表名,需要在model的Meta类中指定db_table参数,强烈建议使用小写表名,特别是使用MySQL作为后端数据库时。id字段是自动添加的,如果你想要指定自定义主键,只需在其中一个字段中指定primary_key=True即可。如果Django发现你......
  • @RequestParam注解参数
    做业务的时候经常忘记@RequestParam注解参数,记录一下首先,我们要清楚@RequestParam是干什么的@RequestParam:将请求参数绑定到你控制器的方法参数上,路径上有个参数+?@RequestParam注解参数:语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””)......
  • tensorflow 更新部分参数或参数分开更新
    思路: 1.根据变量名称过滤要更新的权重: 2.如果参数分开更新,还需要设置多个优化器 代码示例:defNet_1(input):  withtf.variable_scope('Net_1'):    fmap_input=tf.layers.conv2d(input,32,32,(1,1),padding='same',name='conv1')    _,xh,x......
  • 软件测试——实验七:JMeter性能测试
    JMeter下载参考博客:参考博客下载完JMeter之后,打开,首先新建线程组: 设置线程组的线程数等内容 在线程组中添加http请求和查看结果树,用于查看结果。    在http中设置测试网站,这里我测试的是新浪网  运行查看结果  初步测试通过,添加断言和聚合报告  ......