你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 Azure 负载测试从 JMeter 中的 CSV 文件读取数据
本文介绍如何使用 Azure 负载测试从 JMeter 中的逗号分隔值 (CSV) 文件中读取数据。 使用来自外部 CSV 文件的数据使你的 JMeter 测试脚本可配置。 例如,可以循环访问 CSV 文件中的所有客户,以将客户详细信息传递到 API 请求中。
在 JMeter 中,可以使用 测试脚本中的 CSV 数据集配置元素 从 CSV 文件读取数据。
若要从 Azure 负载测试中的外部文件读取数据,必须在负载测试中将外部文件与 JMeter 测试脚本一起上传。 如果跨多个并行测试引擎实例横向扩展测试,可以选择跨这些实例均匀拆分输入数据。
首先从 GitHub 克隆或下载示例项目。
先决条件
- 具有活动订阅的 Azure 帐户。 如果没有 Azure 订阅,请在开始之前创建一个免费帐户。
- 一个 Azure 负载测试资源。 若要创建负载测试资源,请参阅创建并运行负载测试。
- Apache JMeter 测试脚本 (JMX)。
- (可选)Apache JMeter GUI,用于创作测试脚本。 若要安装 Apache JMeter,请参阅 Apache JMeter 入门。
更新 JMeter 脚本以读取 CSV 数据
在本部分中,将 Apache JMeter 脚本配置为引用外部 CSV 文件。 使用 CSV 数据集配置元素 从 CSV 文件读取数据。
重要
Azure 负载测试将 JMX 文件和所有相关文件上传到一个文件夹中。 在 JMeter 脚本中引用外部文件时,请验证测试脚本中没有文件路径引用。
使用 Apache JMeter GUI 修改 JMeter 脚本:
在 测试脚本中选择 CSV 数据集配置 元素。
更新 Filename 信息并删除任何文件路径引用。
(可选)在跨测试引擎拆分 CSV 文件时,请在“变量名称”中输入 CSV 字段名称。
拆分 CSV 文件时,Azure 负载测试不会保留标题行。 在“CSV 数据集配置”元素中提供变量名称,而不使用标题行。
对脚本中的每个“CSV 数据集配置”元素重复上述步骤。
保存 JMeter 脚本并将脚本上传到负载测试。
将 CSV 文件上传到负载测试
从测试脚本引用外部文件时,请确保将所有这些文件与 JMeter 测试脚本一起上传。 负载测试启动时,Azure 负载测试会将所有文件复制到每个测试引擎实例上的单个文件夹。
重要
拆分 CSV 文件时,Azure 负载测试不会保留标题行。 在将 CSV 文件添加到负载测试之前,请从该文件中删除标题行。
使用 Azure 门户将 CSV 文件添加到负载测试:
在 Azure 门户中,转到你的 Azure 负载测试资源。
在左窗格中,选择“测试”以查看测试列表。
通过选中相应复选框来从列表中选择你的测试,然后选择“编辑”。
在“测试计划”选项卡上,从计算机中选择 CSV 文件,然后选择“上传”以将文件上传到 Azure。
如果使用基于 URL 的负载测试,则可以在“变量”列中以逗号分隔的列表的形式输入变量名称。
如果 CSV 文件的大小大于 50 MB,请压缩文件。 zip 文件的大小应小于 50 MB。 Azure 负载测试会在测试运行期间自动解压缩文件。 每个 zip 中最多允许有 5 个 zip 项目,每个 zip 文件最多 1000 个,总大小为 1 GB。
选择“应用”以修改测试并在重新运行测试时使用新配置。
提示
如果使用基于 URL 的负载测试,则可以使用 $(variable)
语法从 HTTP 请求中的 CSV 输入数据文件引用值。
跨测试引擎拆分 CSV 输入数据
默认情况下,Azure 负载测试会在所有测试引擎实例中复制和处理未经修改的输入文件。 默认情况下,每个测试引擎都会处理整个 CSV 文件。 或者,Azure 负载测试允许跨所有引擎实例均匀拆分 CSV 输入数据。 如果有多个 CSV 文件,则每个文件被均匀拆分。
例如,如果你有大型客户 CSV 输入文件,并且负载测试在 10 个并行测试引擎上运行,则每个实例都会处理客户的 1/10。
要将负载测试配置为拆分输入 CSV 文件,请执行以下操作:
疑难解答
测试状态失败,并且测试日志具有 File {my-filename} must exist and be readable
当负载测试完成并显示“失败”状态时,可以 下载测试日志。
在测试日志中收到错误消息 File {my-filename} must exist and be readable
时,在运行 JMeter 脚本时找不到输入 CSV 文件。
Azure 负载测试将所有输入文件与 JMeter 脚本一起存储。 在 JMeter 脚本中引用输入 CSV 文件时,请确保 不包括 文件路径,但只使用文件名。
以下代码片段显示 JMeter 文件的提取,该文件使用 CSVDataSet
元素读取输入文件。 请注意, filename
该文件不包含文件路径。
<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="Websites CSV" enabled="true">
<stringProp name="filename">websites.csv</stringProp>
<stringProp name="fileEncoding">UTF-8</stringProp>
<stringProp name="variableNames">CustomerId,CustomerName,Url</stringProp>
<boolProp name="ignoreFirstLine">true</boolProp>
<stringProp name="delimiter">,</stringProp>
<boolProp name="quotedData">false</boolProp>
<boolProp name="recycle">false</boolProp>
<boolProp name="stopThread">true</boolProp>
<stringProp name="shareMode">shareMode.all</stringProp>
<stringProp name="TestPlan.comments">Read all records from the CSV file - stop thread at end of file</stringProp>
</CSVDataSet>
相关内容
- 使用环境变量和机密配置负载测试。