1

在 LoadRunner 场景中有几个随机源:

  • rand() 功能
  • 随机思考时间增量(运行时设置)
  • 随机起搏时间组件(运行时设置)
  • 随机参数(作为 VUGen 测试的一部分)

我使用这些功能,我可以忍受它们的伪随机性。但是,我不能接受这样一个事实,即包含至少其中一个功能的所有场景运行都是伪随机且不确定的,即对于给定的开始状态(随机种子),我希望两次运行生成完全相同的负载,包括时间(步调和思考时间)。所以我希望两次运行都基于完全相同的随机序列。这意味着我想自己播种所有随机生成器,作为每次运行初始化的一部分。

我可以使用srand() 为 () 设置种子值rand。在初始化时设置一个特定的(硬编码的)种子值总是导致由rand() 传递的相同序列——对于所有虚拟用户。如果我使用 VUser ID 号播种,我什至会rand为每个 vuser 获得不同的 () 序列,而对于每个用户,它们从运行到运行仍然是相同的。

LR 中的其他伪随机源,那些超出rand() 的呢?我是否有机会将它们全部播种,以便获得确定性的场景行为?

我认为这将有很大帮助。

如果没有这样的机制,就必须计划很长时间和/或非常高流量的测试场景,以便“平均”结果统计中的随机性(你同意这一点吗?),我整天都在做。

4

3 回答 3

2

对于像负载运行器这样的系统来说,播种随机数生成器是必不可少的。完美的例子 - 我有一个想要测试的代码更改。我为随机数生成器播种,然后在使用和不使用更改的代码的情况下运行。执行的函数顺序将是随机的,但两个测试将使用相同的顺序。这让我可以看到我的代码更改的确切影响。如果无法查看随机数生成器,我将不得不在非常高的负载下运行非常长的测试来尝试平均随机性。

如果没有种子,第二次测试将选择完全不同的路径。而在另一次迭代中,又是另一条完全不同的道路。我想要 RANDOM 序列,但要 REPEATABLE RANDOM 序列。这就是为什么所有现代语言都允许您播种随机数生成器。Load Runner 客户端只需添加一个文本字段,允许您为其随机数生成器输入“种子值”。

于 2010-11-05T16:11:09.260 回答
2

已经覆盖了。自 4.51 以来,我一直在使用 LoadRunner,如果没有设置随机种子的能力,我无法回忆起一个版本。通常这是在控制器中设置的场景运行时设置中。打开控制器用户指南的 Acrobat 版本并搜索术语“种子”,您应该能够找到与您的 LoadRunner 版本相关的文档。

于 2010-12-06T14:21:52.747 回答
0

您的问题的简短回答是:

Random implies just what it says => "Random". 

如果您使用参数的“内置”随机特征,您几乎会被搞砸,因为您无法控制内部随机种子的初始化方式,并且这无法以任何方式预测下一个值。

如果您最终想要实现的是推断结果并预测负载下的服务器行为,那么您将走上一条非常艰难的道路。

外推结果

Your run with 100 vusers and achieve an avg. of 50-60 hits/sec with
response times under 3 sec.

Logically 1000 vusers (10x load) would give you 500-600 hits/sec ... 

But what about the response times? How do you extrapolate them? How do you know
when the web-server(s) chokes and achieves it's knee-point? 

请记住,点击次数/秒与响应时间成正比......因此预测点击次数/秒(或页面/秒)变得非常困难和不准确

你无法控制的事情

即使您获得了另一次运行的“精确”副本,您仍然必须处理响应时间和网络延迟,这实际上总是不同的,无论情况如何(而且完全不受您的控制)。

一种更“现实”的方式来定义负载

负载测试本身并不是一门精确的科学,没有任何负载测试可以完全模拟现实世界,但我们可以接近。我们在这里的做法是尝试尽可能接近地模拟单个用户。通过这种方式,我们可以根据用户类型设置负载预期,“业务”人员通常对此有所了解。

我们还将“用户”划分为不同类型,例如超级用户、普通用户或新手用户——区别在于他们操作的速度(以及他们使用 UI 的方式)。

通过这样做,我们可以使用特定的“预期用户负载”而不是页面/秒或点击/秒值或其他技术指标来“加载”目标应用程序。

我们还执行更长时间的运行以查看服务随时间的变化情况,因此 72 小时或更长时间的测试对于 Endurance 测试阶段来说并不少见。这还显示了服务器上是否存在任何内存泄漏以及后台进程如何在“夜间”影响服务器性能

于 2010-07-07T09:18:32.640 回答