LR:我可以在LoadRunner中确定伪随机吗?

时间:2010-07-06 11:42:02

标签: random load-testing deterministic loadrunner

LoadRunner场景中有几个随机源:

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

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

我可以使用srand()为rand()设置种子值。在init上设置特定(硬编码)种子值总是会导致rand()为所有虚拟用户提供相同的序列。如果我使用VUser ID号播种,我甚至会为每个vuser获得不同的rand()序列,而对于每个用户,它们在运行时仍然是相同的。

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

我认为这会有很大帮助。

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

已经涵盖。我从4.51开始就一直在使用LoadRunner,我不记得没有设置随机种子的版本。通常,这是在控制器中设置的方案运行时设置中。您应该可以通过打开Controller用户指南的Acrobat版本并搜索术语“种子”来查找适用于您的LoadRunner版本的文档。

答案 2 :(得分: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小时或更长时间的测试并不罕见。这还显示了服务器上是否存在任何内存泄漏以及后台进程如何影响“夜间”服务器性能