首页 > 代码库 > 大开测试:性能- 基于目标和手动场景测试有何联系和不同(连载20)

大开测试:性能- 基于目标和手动场景测试有何联系和不同(连载20)

7.20  基于目标和手动场景测试有何联系和不同

1.问题提出

在应用LoadRunner的Controller进行性能测试场景的设计时,有两种方案可以对场景进行设置,一种为手工方式,另一种为基于目标方式,那么在什么情况下针对性地选择这两种方式,它们之间有什么联系和不同呢?

2.问题解答

要使用LoadRunner进行系统性能测试,对系统进行负载,必须创建一个场景。场景中包含关于测试会话信息的文件。场景是一种模拟实际用户的方式。场景包含有关如何模拟实际用户的信息:虚拟

用户组、测试脚本以及用于运行这些脚本的负载生成器计算机。LoadRunner提供两种方式:手动场景设计(Manual Scenario)和面向目标场景设计(Goal-Oriented Scenario)。手动场景设计可以通过建立组并指定脚本、负载生成器和每个组中包括的Vuser数来建立手动场景;还可以通过百分比模式建立手动场景,使用此方法建立场景可以指定场景中将使用的Vuser的总数,并为每个脚本分配负载生成器和占总数一定百分比的Vuser。

如果选择创建常规手动场景,则在“新场景设计对话框”中选择的每个脚本将被分配给Vuser组,如图7-33所示。然后,可以为每个Vuser组分配多个虚拟用户。可以指定一个组中的所有Vuser在同一台负载生成器计算机上运行相同的脚本,也可以为一个组中的各个Vuser分配不同的脚本和负载生成器,如图7-34所示。

技术分享            技术分享

图7-33  新场景设计对话框                                                           图7-34  场景设计对话框

技术分享           

图7-35  面向目标场景设计对话框                                               

如果选择创建面向目标场景设计,则在“新场景设计对话框”中选择该选项,同时选择脚本,如图7-35所示。在面向目标的场景中,可以定义要实现的测试目标,LoadRunner会根据这些目标自动构建场景。可以在一个面向目标的场景中定义希望场景达到的下列5种类型的目标:虚拟用户数、每秒单击次数(仅Web Vuser)、每秒事务数、每分钟页面数(仅Web Vuser)或事务响应时间。可以通过单击【Edit Scenario Goal...】设置,如目标类型、最小用户数、最大用户数、运行时间等,如图7-36所示。

技术分享

图7-36  面向目标场景编辑对话框

在图7-36中,【Goal Type】下拉框可以选择虚拟用户数、每秒单击次数(仅Web Vuser)、每秒事务数、每分钟页面数(仅WebVuser)或事务响应时间5种类型。可以设定目标,在这里我们以100次/s作为测试的目标。同时,可以设置为了要达到这个目标,需要运行的最小和最大用户数。也可以在【Run Time】指定当目标达到以后继续运行的时间,在【If target cannot be reached】选择如果测试目标达不到的情况下,可以选择【Stop scenario and save results】(指示Controller在无法达到定义的目标时停止场景并保存场景结果)或【Continue scenario without reaching goal】(指示Controller即使无法达到定义的目标,也要继续运行场景),同时,可以选择【Receive notification】(指示Controller向用户发送一个错误消息,指明无法达到目标),如果希望LoadRunner使用脚本中录制的思考时间来运行场景,请选择【Do not change recorded think time】。

在【Load Behavior】页,可以选择3种不同的Vuser加载方式,如图7-37所示。

l  【Automatic】:指示Controller运行一批中默认数量的Vuser(每两分钟运行50个Vuser,或者在定义的最大Vuser数少于50时运行所有的Vuser)。

l  【Reach target number of hits per second after XXX HH:MM:SS】:用来选择Controller达到目标之后场景运行的时间。

l  【Step up by XXX hit per second】(对于每秒事务数和事务响应时间目标类型不可用):用来选择Controller达到定义的目标的速度(一定时间内的虚拟用户数/单击次数/页面数)。

下面以每秒单击次数/事务数和每分钟页面数目标类型作为例子,在定义每分钟页面数或每秒单击次数/事务数目标类型时,Controller将用定义的目标值除以指定的最小Vuser数,并据此确定每个Vuser应该达到的每秒单击次数/事务数或每分钟页面次数的目标值。然后,Controller将根据定义的加载行为设置开始加载Vuser,具体表述为:如果选择自动运行Vuser,LoadRunner将在第一批中加载50个Vuser。如果定义的最大Vuser数小于50,LoadRunner将同时加载所有的Vuser。如果选择在场景运行一段时间之后达到用户的目标,LoadRunner将尝试在这段时间内达到定义的目标。第一批Vuser数的大小将根据用户所定义的时间限制以及计算得到的每个Vuser的单击次数、事务数或页面数的目标值来确定。如果选择按指定的速度(一定时间内的页面数/单击次数)达到用户的目标,LoadRunner将计算每个Vuser的单击次数或页面数的目标值,并据此确定第一批Vuser的数量。运行每一批Vuser之后,LoadRunner都将评估是否已达到该批的目标。如果未能达到该批目标,LoadRunner将重新评估每个Vuser的单击次数、事务数或页面数的目标值,并重新调整下一批的Vuser数,以便能够达到定义的目标。注意,默认情况下,每两分钟加载一批新的Vuser。如果Controller在运行最大数量的Vuser之后仍不能达到目标,LoadRunner将重新计算每个Vuser的单击次数、事务数或页面数的目标值,并且运行最大数量的Vuser,再一次尝试达到定义的目标。

在下列情况下,面向每分钟页面数或每秒单击次数,事务目标的场景将被标注“失败”状态。

l  Controller已经两次尝试使用指定的最大Vuser数来达到目标,却均未达到目标。

l  在运行了第一批Vuser之后,未注册每分钟页面数或每秒单击次数/事务数。

l  在Controller运行了几批Vuser之后,每分钟页面数或每秒单击次数/事务数却未增加。

l  所有Vuser都运行失败。

l  没有可用于要尝试运行的Vuser类型的负载生成器。


更多信息请关注大开科技公众号或官方网站

www.dakaikeji.com.cn

技术分享

大开测试:性能- 基于目标和手动场景测试有何联系和不同(连载20)