假设我已经在loadrunner参数中定义了键/值对
名为mytable.dat的部分(参数类型:表格)
loadrunner是否具有内置功能来更新此表?
我可以根据密钥访问值吗?
换句话说,假设此表由用户名组成,这将是关键
和电子邮件地址作为值-我想询问获取某个用户的地址并更新他的电子邮件,以便明天明天再次运行测试时,loadrunner将加载mytable.dat的更新版本。
我想避免在c中对其进行编程,如果在loadrunner中没有内置的方式可以做到这一点,那么我将更喜欢使用javascript处理它。
最佳答案
这是动态更新的核心问题。您在磁盘上更新的表不是您的虚拟用户使用的表。在测试开始时,将参数表加载到RAM中以减少磁盘访问。因此,您对表所做的任何写入操作仅在下一次测试执行时可用。
下一个问题并不简单,这是数据库管理解决方案存在的核心原因,您将如何管理成千上万/千/千用户对给定文件进行更新的读/写访问?这是一个困难的编程挑战。弄错了,您将把文件系统锁定在负载生成器上……甚至更糟的是,如果文件位于公用文件服务器上,您现在可以通过所涉及的网络进行访问了。这将导致虚拟用户的速度变慢,因为每个人都在等待排他锁来更新表。
使用队列确实是向您的虚拟用户提供最佳选择,您的虚拟用户拥有一个需要更新第二个业务流程使用的数据表的业务流程。在同一线程中注意到的是VTS,它是LoadRunner的一部分,以解决此问题。我的选择是RabbitMQ,因为它具有内置的HTTP接口,可以从队列中推送和弹出值。您也可以利用来自Amazon,Cloud Azure,IBM Cloud,Rackspace等的任何无服务器计算队列来进行此类事件。
某些人想为此数据库使用数据库服务器。我建议不要使用此选项,因为在实施该表单时,最经常使用的形式是使用与被测应用程序相同的数据库来提供数据。这会将负载施加到生产中不存在的AUT上。此负载也从未在查询中优化以返回所需的一行数据,因此负载与随后直接连接到数据库的用户数量不成比例,而这种情况在prod中不会发生。