是否可以在loadrunner中维护一个参数table?

Is it possible to maintain a parameter table in loadrunner?

假设我在 load运行ner 参数中定义了一个 key/value 对 名为 mytable.dat 的部分(参数类型:Table)

load运行ner 是否有更新此 table 的内置函数? 我可以根据键访问值吗?

换句话说,假设这个 table 包含用户名,这将是关键 和电子邮件地址作为价值 - 我想问获取某个用户的地址并更新他的电子邮件,所以当我明天 运行 再次测试时,加载 运行ner 将加载 [= 的更新版本20=]

我想避免用 c 语言编程,如果在 load运行 中没有内置的方法比我更愿意使用 javascript 来处理它。

在 LoadRunner 中有 3 种类型的参数:

1) 静态 - 您使用 VuGen 中的参数对话框定义的参数(例如,您正在谈论的 Table 类型参数)。这些参数是只读的,可以使用大括号表示法访问:

lr_message(lr_eval_string("{NewParam}"));

2) 动态 - 您使用脚本中的代码定义的参数,可以用代码读取和写入(并通过大括号访问):

lr_save_string("aaaa","bbb");
lr_message(lr_eval_string("{bbb}"));

3) VTS - 这基本上是一个小型数据库,您可以从任何 vUser 运行 脚本访问它,并且您可以通过适当的 API 完全控制那里发生的事情(请阅读VTS 上的文档)

一些其他注意事项: "Table" 参数是一种通过一个参数访问多个值的方法,请确保这是您真正需要的参数类型。

一些协议支持 JavaScript 作为脚本语言。要将语言切换为 JavaScript,请转到“录制”->“录制选项”,在对话框“常规”->“脚本”中将语言更改为 JavaScript。然后重新生成脚本(或者记录一个空脚本),会在JavaScript

重新生成

这是动态更新的核心问题。您在磁盘上更新的 table 不是您的虚拟用户使用的 table。在测试开始时,参数 table 被加载到 RAM 中以减少磁盘访问。因此,您对 table 所做的任何写入都只会在下一次测试执行时可用。

下一个问题并非微不足道,它是数据库管理解决方案存在的核心原因,您将如何管理 tens/hundreds/thousands 用户对给定文件进行更新的 read/write 访问权限?这是一个困难的编程挑战。弄错了,您将把文件系统锁定在负载生成器上……如果文件位于您现在可以跨网络访问的公共文件服务器上,情况更糟。这将导致虚拟用户变慢,因为每个人都在等待独占锁更新 table.

使用队列确实是为您的虚拟用户提供服务的最佳选择,因为您有一个业务流程需要更新数据 table,该数据由第二个业务流程使用。在同一线程中注意到 VTS,它作为 LoadRunner 的一部分提供以解决这个问题。我更喜欢 RabbitMQ,因为它有一个内置的 HTTP 接口来从队列中推送和弹出值。对于此类事件,您还可以利用来自 Amazon、Cloud Azure、IBM Cloud、Rackspace 等的任何无服务器计算队列。

有些人想为此提要使用数据库服务器。我建议不要使用此选项,因为在实施时最常使用的形式是使用与被测应用程序相同的数据库来提供数据。这会在生产中不存在的 AUT 上增加负载。此负载也从未针对 return 所需的一行数据的查询进行优化,因此负载与直接连接到数据库的用户数量不成比例,这在产品中不会发生。