(八)设置参数化数据

一.做参数化之前,应该考虑什么

在性能测试中,我们要关注的数据主要有:参数化数据、监控数据、基础铺地数据。

参数化测试数据的获取和考虑上,一般有以下疑问:

  1. 参数化数据应该用多少数据量?
  2. 参数化数据从哪里来?
  3. 参数多与少的选择对系统压力有什么影响?
  4. 参数化数据在数据库中的直方图是否均衡?
1.参数化数据应该用多少数据量
  • 参数化数据要用到多少取决于场景,举例来说,对一个压力工具线程数为 100,TPS 有 1000 的系统,如果要运行 30 分钟,则应该取得的参数化数据是下面这样的。
    在这里插入图片描述
  • 我们需要保证测试时间足够长、满足测试的负载请求需求,根据「目标tps x 持续时间(秒级)」可以计算出参数化数大概的量级。
2.参数化数据从哪里来?
  • 分为两种:

    • 死水数据,即out-of-box(事先创建测试数据),数据存在后台的数据库中;
    • 活水数据,即On-the-fly(实时创建),数据库不存在这些数据,构造参数化数据需要符合业务特点;
      • 通过 API 调用生成测试数据;
      • 通过数据库操作生成测试数据;
  • 要满足生产环境中数据的分布;要满足性能场景中数据量的要求

3.参数多与少的选择对系统压力有什么影响?
  • 数据在系统中的流转:
    在这里插入图片描述
  • 满足测试的负载请求足够多和数据足够多样化,从而最大限度地减少或者掩盖缓存等其他因素的影响。参数取得过多,对系统的压力就会大;参数取得过少,不符合真实场景中的数据量,则无法测试出系统真实的压力。
4.参数化数据在数据库中的直方图是否均衡?
  • 如果数据取自于数据图,我们通常要检查一下数据库中的数据直方图。 对于直接从生产上拿的数据来说,数据的分布更为精准。参数化数据需要符合真实业务数据分布情况,这样更符合业务真实场景。

二.如何设置参数化数据

  • 例如用户登录, 以 JMeter 的 CSV Data Set Config 功能为例。配置如下:
    在这里插入图片描述

    • “Allow quoted data?”这里有两个选择,分别是 False 和 True。它的含义为是否允许带引号的数据, 比如说在参数化文件中有这样的数据:
      在这里插入图片描述
      • 如果有引号,这个选择必须是 True。如果设置为 False,那么我们在脚本中会看到如下的数据(由于设置为 False,JMeter 将(")转换为了 %22 的 URL 编码):
        Java username=%22test00001%22password=%22test00001%22
    • Recycle on EOF? :这里有三个选择,False、True 和 Edit。False 是指在没有参数的时候不循环使用;True 是指在没有参数的时候循环使用。Edit 是指在没有参数的时候会根据定义的内容来调用函数或变量。
    • Stop thread on EOF?:这里有三个选择,False、True 和 Edit。同上。
    • Sharing mode : 这里有四个选择,All threads、Current thread group、Current thread、Edit。 参数是在所有线程中生效,在当前线程组生效,还是在当前线程中生效。但这里的 Edit 和前两个参数中的 Edit 相比,有不同的含义。这里选择了 Edit 之后,会出现一个输入框,就是说这里并不是给引用函数和参数使用的,而是要自己明确如何执行 Sharing mode。举个栗子, 假设我们有 Thread Group 1-5 四个线程组,但是参数化文件只想在 Thread Group 1、3、5 中使用,不想在线程组 2、4 中使用,那么很显然前面的几个选项都达不到目的,这时我们就可以选择 Edit 选项,在这里输入SharedWithThreadGroup1and3and5。而在其他的线程组中配置其他参数化文件。也就是说同样的一个变量名,在线程组 1/3/5 中取了一组数据,在线程组 2/4 中取了另一组数据。
    • 以上三个参数的选项可以随意组合。于是就会得到如下表( EOF 是文件结束符的意思。在下面的解释中,为了更符合性能测试中的术语,特意解释为参数不足时)。
      在这里插入图片描述
      • 这个组合显然是矛盾的,没有参数时不让循环,还不让停止线程。
        在这里插入图片描述
      • 这个组合中第二个选项显然是没意义的,既然参数允许重复使用了,又怎么会发生参数不足停止线程的情况呢?
        在这里插入图片描述
      • 这个组合因为第一个选项为“Edit”所以变得不确定了,如果在 Edit 的函数或变量返回为 True,则和第 2 种组合一样;如果返回为 False,则和第 1 种组合一样。
        在这里插入图片描述
      • 这是一个合理的组合
        在这里插入图片描述
      • 第二个选项没有意义
        在这里插入图片描述
      • 这个组合同样因为第一个选项为 Edit,所以变得不确定了,如果在 Edit 的函数或变量返回为 True,则和第 3 种组合一样;如果返回为 False,则和第 4 种组合一样。
        在这里插入图片描述
      • 这个组合因为是否停止线程的不确定性会出现两种可能,有可能是第 1 种组合,也有可能是第 4 种组合。
        在这里插入图片描述
      • 这个组合中是否停止线程的 Edit 配置没有意义,因为可循环使用参数,所以不会发生参数不足导致线程停止的情况。
        在这里插入图片描述
      • 这个组合 具有相当的不确定性,有可能变成第 1、2、4、5 种组合。
      • 其他衍生的设置组合:
        在这里插入图片描述
  • 性能工作中参数化的逻辑总结:

    • 分析业务场景;
    • 罗列出需要参数化的数据及相对应的关系;
    • 将参数化数据从数据库中取出或设计对应的生成规则;
    • 合理地将参数化数据保存在不同的文件中;
    • 在压力工具中设置相应的参数组合关系,以便实现模拟真实场景。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值