Random LR:我可以在LoadRunner中设置伪随机吗?

Random LR:我可以在LoadRunner中设置伪随机吗?,random,load-testing,deterministic,loadrunner,Random,Load Testing,Deterministic,Loadrunner,LoadRunner场景中有两个随机源: 兰德函数 随机思考时间增量运行时设置 随机起搏时间组件运行时设置 作为VUGen测试一部分的随机参数 我使用这些功能,我可以忍受它们的伪随机性。 但是,我不能接受这样一个事实,即所有场景运行至少包含其中一个功能的行为都是伪随机和不确定的,即,对于给定的开始状态随机种子,我希望两次运行生成完全相同的负载,包括计时速度和思考时间。 所以我希望两次运行基于完全相同的随机序列。 这意味着我想自己为所有随机生成器设置种子,作为每次运行初始化的一部分 我可以使用sr

LoadRunner场景中有两个随机源:

兰德函数 随机思考时间增量运行时设置 随机起搏时间组件运行时设置 作为VUGen测试一部分的随机参数 我使用这些功能,我可以忍受它们的伪随机性。 但是,我不能接受这样一个事实,即所有场景运行至少包含其中一个功能的行为都是伪随机和不确定的,即,对于给定的开始状态随机种子,我希望两次运行生成完全相同的负载,包括计时速度和思考时间。 所以我希望两次运行基于完全相同的随机序列。 这意味着我想自己为所有随机生成器设置种子,作为每次运行初始化的一部分

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

那么LR中的其他伪随机源呢,那些超出兰德的伪随机源呢? 我是否有机会将它们全部播种,从而获得确定性场景行为

我想这会大有帮助


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

对你的问题的简短回答是:不

如果您使用参数的内置随机特性,那么您将非常糟糕,因为您无法控制内部随机种子的初始化方式,并且这无法以任何方式预测下一个值

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

外推结果

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

你无法控制的事情

即使你想获得另一次跑步的准确副本,你仍然需要处理响应时间和网络延迟,事实上,这总是不同的,不管环境如何,也完全超出了你的控制范围

定义载荷的更现实的方法


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

我们还将用户分为超级用户、普通用户或新手用户等类型,不同之处在于他们的操作速度和使用UI的方式

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


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

如果您使用参数的内置随机特性,那么您将非常糟糕,因为您无法控制内部随机种子的初始化方式,并且这无法以任何方式预测下一个值

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

外推结果

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

你无法控制的事情

即使你想获得另一次跑步的准确副本,你仍然需要处理响应时间和网络延迟,事实上,这总是不同的,不管环境如何,也完全超出了你的控制范围

定义载荷的更现实的方法


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

我们还将用户分为超级用户、普通用户或新手用户等类型,不同之处在于他们的操作速度和使用UI的方式

通过这样做,我们可以使用特定的预期用户l加载目标应用程序 oad,而不是pages/sec或hits/sec值或其他技术仪表


我们还执行更长的运行,以查看服务在一段时间内的行为,因此72小时或更长的测试对于耐久性测试阶段来说并不少见。这还显示了服务器上是否随时间发生内存泄漏,以及后台进程如何在夜间影响服务器性能。对于load runner这样的系统,随机数生成器是必不可少的。完美的例子-我想测试一个代码更改。我给随机数生成器设定种子,然后在有更改的代码和没有更改的代码的情况下运行。执行的函数序列是随机的,但两个测试将使用相同的序列。这使我能够看到代码更改的确切影响。如果没有看到随机数生成器的能力,我将不得不在非常高的负载下运行非常长的测试,以尝试平均随机性


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

对于类似Load Runner的系统,种子设定随机数生成器是必不可少的。完美的例子-我想测试一个代码更改。我给随机数生成器设定种子,然后在有更改的代码和没有更改的代码的情况下运行。执行的函数序列是随机的,但两个测试将使用相同的序列。这使我能够看到代码更改的确切影响。如果没有看到随机数生成器的能力,我将不得不在非常高的负载下运行非常长的测试,以尝试平均随机性


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

已经介绍过。我从4.51开始使用LoadRunner,如果没有设置随机种子的功能,我想不起任何版本。通常这是在控制器中设置的场景运行时设置中。通过打开Acrobat版本的控制器用户指南并搜索“种子”一词,您应该能够找到LoadRunner版本的相关文档。

已经介绍过。我从4.51开始使用LoadRunner,如果没有设置随机种子的功能,我想不起任何版本。通常这是在控制器中设置的场景运行时设置中。通过打开Acrobat版本的控制器用户指南并搜索“种子”一词,您应该能够找到LoadRunner版本的相关文档。

我明白了,并同意72小时或更长时间的测试对于耐力测试阶段声明来说并不罕见,这正是我的来源。然而,我强烈反对Random仅仅意味着它所说的=>“Random”。因为我们讨论的是伪随机生成器,它是100%确定的,因此如果你能控制种子值,它是可复制的,如果你不能控制种子值,它仍然是伪随机的。因此,如果我确实可以访问所有种子,我不明白为什么我不应该通过生成完全相同的负载使某个负载测试运行更具可复制性,这取决于测试目标。目前的情况是,随机选择的测试用例会导致处理复杂度非常非常不同的数据集,我没有一种便宜或可靠的方法来对我的测试用例数据集进行分类,以便只选择复杂的测试用例,或者只选择便宜的测试用例。因此,随机选择任何东西而不控制所有种子迫使我执行非常非常长的负载测试运行,因此测试用例之间的巨大差异会得到平均值,并且运行会返回有用的结果。通过这种方式,我们可以根据用户类型设置负载预期,这是业务人员通常会有所了解的。-是的,通常;我现在很难接受K.Sandell的否定和肯定。约翰的命令式回答。两者都是正确的-不,因为这是不可能做到的,是的,因为需要在长时间不产生负载的情况下获得稳定、可比较的结果,所以随机平均。我明白了,并同意72小时或更长时间的测试对于耐久性测试阶段声明来说并不罕见,这就是我的来源。然而,我强烈反对Random仅仅意味着它所说的=>“Random”。因为我们讨论的是伪随机生成器,它是100%确定的,因此如果你能控制种子值,它是可复制的,如果你不能控制种子值,它仍然是伪随机的。所以如果我做了哈
如果我可以访问所有种子,我不明白为什么我不应该通过生成完全相同的负载使某个负载测试运行更具可复制性——这取决于测试目标。目前的情况是随机选择的测试用例导致处理的复杂度非常非常不同的数据集,我没有一种便宜或可靠的方法来对我的测试用例数据集进行分类,以便只选择复杂的测试用例,或者只选择便宜的测试用例。因此,随机选择任何东西而不控制所有种子迫使我执行非常非常长的负载测试运行,因此测试用例之间的巨大差异会得到平均值,并且运行会返回有用的结果。通过这种方式,我们可以根据用户类型设置负载预期,这是业务人员通常会有所了解的。-是的,通常;我现在很难接受K.Sandell的否定和肯定。约翰的命令式回答。两者都是正确的-不,因为这是不可能做到的,是的,因为需要在长时间内不产生负荷的情况下获得稳定、可比的结果,所以随机平均。我完全同意。那么,如何为VUgen提供VUgen脚本的随机生成器种子?特别是基于随机的参数?问题不在于是否,而在于如何。我现在很难接受K.桑德尔的否定和肯定。约翰的命令式回答。两者都是正确的-不,因为这是不可能做到的,是的,因为需要获得稳定的、可比较的结果,而不产生长时间的负载,所以随机平均。我必须补充一点,即使你要实现一个精确的RND序列,控制器/LoadGen上还有其他不同的东西,这使得运行无论如何都不同。lr_think_time使用,如果将随机X%设置为Y%,那么这个随机时间是你无法控制的,据我所知,这是不可能的。我完全同意。那么,如何为VUgen提供VUgen脚本的随机生成器种子?特别是基于随机的参数?问题不在于是否,而在于如何。我现在很难接受K.桑德尔的否定和肯定。约翰的命令式回答。两者都是正确的-不,因为这是不可能做到的,是的,因为需要获得稳定的、可比较的结果,而不产生长时间的负载,所以随机平均。我必须补充一点,即使你要实现一个精确的RND序列,控制器/LoadGen上还有其他不同的东西,这使得运行无论如何都不同。lr_think_time使用,如果将随机X%设置为Y%,那么这个随机时间是你无法控制的,据我所知,这是不可能的。哇,太酷了。因为这是真的。我怎么能忽视这一点。这是它应该在的地方,但我不知道。下一次,我将验证这是否真的有效,但我认为这正是我要寻找的指针。谢谢。哇,太酷了。因为这是真的。我怎么能忽视这一点。这是它应该在的地方,但我不知道。下一次,我将验证这是否真的有效,但我认为这正是我要寻找的指针。谢谢
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?