第五节:有效负载文件

有效负载文件

有效负载文件是让加载程序将不同数据发送到应用的另一种方法。有两种类型的有效负载文件:经典和可变。

经典

经典有效负载文件包含一组键和一组数据。Loader 在每个请求上获取一组数据,并根据请求方法自动将数据添加到请求正文或查询字符串中。该文件应包含如下所示的 JSON 数据:

{
  "keys": ["username", "password"] ,
  "values": [
    ["steve", "h4x0R"],
    ["joe1", "silly"],
    ["jack", "<3jill"],
    ["jill", "<3jack"]
  ]
}

在每个请求中,loader.io 将从有效负载文件发送一组不同的数据:

request 1: username=steve, password=h4x0R
request 2: username=joe1, password=silly
request 3: username=jack, password=<3jill
request 4: username=jill, password=<3jack

数据不一定顺序相同 - 它确实是随机的。

将您的有效负载数据放在任何可公开访问的 URL(S3、Dropbox 或您自己的服务器都可以找到的地方)的文件中,然后在“参数”部分内的“有效负载文件 URL”字段中输入 URL:

变量

变量有效负载文件与此类似,但不是自动填充请求正文或查询字符串,而是将值作为变量提供,因此您可以在参数、标头甚至 URL 路径中使用它们。该文件应如下所示:

{
  "version": 1,
  "variables": [{
    "names": ["username", "password"],
    "values": [
      ["steve", "h4x0R"],
      ["joe1", "silly"],
      ["jack", "<3jill"],
      ["jill", "<3jack"]
    ]}
  ]
}

像经典有效负载文件一样将文件上传到公共 URL,然后将 URL 粘贴到参数部分中的同一输入中。若要使用这些变量,请使用与标头变量相同的语法。

这些有效负载中定义的变量范围是测试中的所有请求,因此您可以定义附加到第一个请求的单个文件,并在后续请求中使用相同的变量。

下面的屏幕截图显示了如何使用上面的变量有效负载文件示例使用变量创建 JSON 有效负载:

变量集

对于简单情况,您只需要一组变量。“变量”对象是一个数组,数组中的每个对象都是一个变量集。上面的示例定义了单个变量集。我们保证在同一变量集中定义的任何变量,如上面的“用户名”和“密码”,都将使用来自相同值子数组的值。

定义多个变量集可以让值独立变化,因此您可能有一组用户数据和一组位置数据,并且在每个请求中,您希望用户与纬度/经度组合随机配对。让我们看一个包含一些虚拟值的简化示例:

{
  "version": 1,
  "variables": [{
    "names": ["username", "password"],
    "values": [
      ["user-1", "pass-1"],
      ["user-2", "pass-2"],
      ["user-3", "pass-3"],
      ["user-4", "pass-4"],
      ["user-5", "pass-5"],
      ["user-6", "pass-6"],
      ["user-7", "pass-7"],
      ["user-8", "pass-8"],
      ["user-9", "pass-9"],
      ["user-10", "pass-10"],
      ["user-11", "pass-11"],
      ["user-12", "pass-12"],
      ["user-13", "pass-13"],
      ["user-14", "pass-14"],
      ["user-15", "pass-15"]
    ]
  },
  {
    "names": ["lat", "lng"],
    "values": [
      ["lat-1", "lng-1"],
      ["lat-2", "lng-2"],
      ["lat-3", "lng-3"],
      ["lat-4", "lng-4"],
      ["lat-5", "lng-5"]
    ]
  }]
}

如果没有随机化步骤,您将看到以下内容:

request 1: username=user-1, password=pass-1, lat=lat-1, lng=lng-1
request 2: username=user-2, password=pass-2, lat=lat-2, lng=lng-2
request 3: username=user-3, password=pass-3, lat=lat-3, lng=lng-3
request 4: username=user-4, password=pass-4, lat=lat-4, lng=lng-4
request 5: username=user-5, password=pass-5, lat=lat-5, lng=lng-5
request 6: username=user-6, password=pass-6, lat=lat-1, lng=lng-1
request 7: username=user-7, password=pass-7, lat=lat-2, lng=lng-2
request 8: username=user-8, password=pass-8, lat=lat-3, lng=lng-3
... and so on...

如您所见,我们独立迭代每组数据,因此一旦到达纬度/液化值的末尾,我们就会回到起点。当您在加载器中运行此测试时,也会发生同样的事情,但值首先按随机顺序排序,因此每次运行都会呈现不同的数据组合。

有效载荷拆分/唯一数据

对于所有“每次测试的客户端数”和“每秒客户端数”测试类型,我们会在负载生成器之间拆分有效负载数据,因此,如果您提供具有足够唯一值的有效负载文件,则保证每个请求都是唯一的。

如何知道需要多少个值才能避免重复:

  • 每个测试的客户端数:值的数量应与测试的客户端数匹配。对于“每次测试 1000 个客户端”测试,需要 1000 个值
  • 每秒客户端数:将客户端数乘以持续时间。对于 60 秒的“每秒 1000 个客户端”测试,您需要 60 * 1000 = 60,000 个值
  • 维护负载:数据不按服务器拆分

为所有“每个测试的客户端数”和“每秒客户端数”测试启用有效负载文件拆分。

维护负载测试通常比其他测试类型发出更多的请求,即使我们确实拆分了每个服务器的数据,大多数测试仍然可能出现重复项。所以我们不做任何试图阻止它们。

posted @ 2023-03-06 15:32  YF-GX  阅读(58)  评论(0)    收藏  举报
// 侧边栏目录 // https://blog-static.cnblogs.com/files/douzujun/marvin.nav.my1502.css