本文介绍如何使用 Azure 负载测试从 JMeter 中的逗号分隔值 (CSV) 文件中读取数据。 你可以在测试脚本中使用 JMeter CSV 数据集配置元素

使用来自外部 CSV 文件的数据使你的 JMeter 测试脚本可配置。 例如,你可以为客户 CSV 文件中的每个条目调用一个 API。

在本文中,学习如何:

  • 将 JMeter 脚本配置为读取 CSV 文件。
  • 将 CSV 文件添加到负载测试。
  • (可选)跨所有测试引擎实例均匀拆分 CSV 文件。
  • 具有活动订阅的 Azure 帐户。 如果没有 Azure 订阅,请在开始之前创建一个 免费帐户
  • Azure 负载测试资源。 若要创建负载测试资源,请参阅 创建并运行负载测试
  • Apache JMeter 测试脚本 (JMX)。
  • (可选)Apache JMeter GUI,用于创作测试脚本。 若要安装 Apache JMeter,请参阅 Apache JMeter 入门
  • 配置 JMeter 脚本

    本部分,你将配置 Apache JMeter 脚本以引用外部 CSV 文件。 你将使用 CSV 数据集配置元素 读取 CSV 文件中的数据。

    Azure 负载测试将 JMX 文件和所有相关文件上传到一个文件夹中。 在 JMeter 脚本中引用外部文件时,请确认你仅使用文件名并删除任何文件路径引用。

    使用 Apache JMeter GUI 编辑 JMeter 脚本:

  • 在测试计划中选择 CSV 数据集配置元素。

  • 更新 Filename 信息并删除任何文件路径引用。

  • (可选)在跨测试引擎拆分 CSV 文件时,请在“变量名称”中输入 CSV 字段名称。

    拆分 CSV 文件时,Azure 负载测试不会保留标题行。 在“CSV 数据集配置”元素中提供变量名称,而不使用标题行。

  • 对脚本中的每个“CSV 数据集配置”元素重复上述步骤。

  • 保存 JMeter 脚本并将其添加到 测试计划 中。

    使用 Visual Studio Code 或首选编辑器编辑 JMeter 脚本:

  • 在 Visual Studio Code 中打开 JMX 文件。

  • 对于每个 CSVDataSet

  • 更新 filename 元素并删除所有文件路径引用。

  • variableNames 中将 CSV 字段名称添加为逗号分隔列表。

    <CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="Search parameters" enabled="true">
      <stringProp name="delimiter">,</stringProp>
      <stringProp name="fileEncoding">UTF-8</stringProp>
      <stringProp name="filename">search-params.csv</stringProp>
      <boolProp name="ignoreFirstLine">true</boolProp>
      <boolProp name="quotedData">false</boolProp>
      <boolProp name="recycle">true</boolProp>
      <stringProp name="shareMode">shareMode.all</stringProp>
      <boolProp name="stopThread">false</boolProp>
      <stringProp name="variableNames">username,query</stringProp>
    </CSVDataSet>
    
  • 保存 JMeter 脚本并将其添加到测试计划中。

    将 CSV 文件添加到负载测试

    在 JMeter 脚本中引用外部文件时,请将此文件上传到负载测试。 负载启动时,Azure 负载测试会将所有文件复制到每个测试引擎实例上的单个文件夹。

    拆分 CSV 文件时,Azure 负载测试不会保留标题行。 在将 CSV 文件添加到负载测试之前,请从该文件中删除标题行。

    使用 Azure 门户将 CSV 文件添加到负载测试:

  • Azure 门户中,转到 Azure 负载测试资源。

  • 在左窗格中,选择“测试”以查看测试列表。

    若要限制要在列表中显示的测试数,可使用搜索框和“时间范围”筛选器。

  • 通过选中相应复选框来从列表中选择你的测试,然后选择“编辑”。

  • 在“编辑测试”页中,选择“测试计划”选项卡。

  • 从计算机中选择 CSV 文件,然后选择“上传”,将文件上传到 Azure。

  • 选择“应用”以修改测试并在重新运行测试时使用新配置。

    如果在 CI/CD 工作流中运行负载测试,可将 CSV 文件添加到测试配置 YAML 文件。 要详细了解如何在 CI/CD 工作流中运行负载测试,请参阅自动回归测试教程

    若要将 CSV 文件添加到负载测试,请执行以下操作:

  • 将 CSV 文件提交到包含 JMX 文件和 YAML 测试配置文件的源代码管理存储库。

  • 在 Visual Studio Code 或首选编辑器中打开 YAML 测试配置文件。

  • 将 CSV 文件添加到 configurationFiles 设置。 可使用通配符或指定多个单独的文件。

    testName: MyTest
    testPlan: SampleApp.jmx
    description: Run a load test for my sample web app
    engineInstances: 1
    configurationFiles:
    - search-params.csv
    

    如果将 CSV 文件存储在单独的文件夹中,请使用相对路径名称指定相应文件。 有关详细信息,请参阅测试配置 YAML 语法

  • 保存 YAML 配置文件并将其提交到源代码管理存储库。

    在 CI/CD 工作流下次运行时,它将使用更新后的配置。

    跨测试引擎拆分 CSV 输入数据

    默认情况下,Azure 负载测试会在所有测试引擎实例中复制和处理未经修改的输入文件。 通过 Azure 负载测试,可以在所有引擎实例上均匀地拆分 CSV 输入数据。 如果有多个 CSV 文件,则每个文件将均匀拆分。

    例如,如果你有一个大型客户 CSV 输入文件,并且负载测试在 10 个并行测试引擎上运行,那么每个实例将处理 1/10 的客户。

    拆分 CSV 文件时,Azure 负载测试不会保留标题行。

  • 将 JMeter 脚本配置为在读取 CSV 文件时使用变量名。
  • 在将 CSV 文件添加到负载测试之前,请从该文件中删除标题行。
  • 要将负载测试配置为拆分输入 CSV 文件,请执行以下操作:

  • 转到负载测试的“测试计划”页。

  • 选择“在测试引擎之间均匀拆分 CSV”。

  • 选择“应用”以确认配置更改。

    下次运行测试时,Azure 负载测试会跨测试引擎均匀拆分并处理 CSV 文件。

    testName: MyTest
    testPlan: SampleApp.jmx
    description: Run a load test for my sample web app
    engineInstances: 1
    configurationFiles:
      - customers.csv
    splitAllCSVs: True
    
  • 保存 YAML 配置文件并将其提交到源代码管理存储库。

    下次运行测试时,Azure 负载测试会跨测试引擎均匀拆分并处理 CSV 文件。

  • 了解如何设置大规模负载测试
  • 了解如何配置自动性能测试
  • 了解如何使用 JMeter 插件
  •