LoaRunner性能测试系统学习教程:场景设计实践之集合点(1)

前面已经讲述了场景设计的一些基础知识,鉴于场景设计在整个性能测试过程中的重要性,在实际使用过程中也当然存在很多使用技巧或者说是一些高级使用方法。通过这些技巧或高级使用方法可以帮助我们更好地进行场景设计或监控场景执行的情况。本章主要对场景设计过程中常用的一些技巧进行讲解,主要涉及的内容有:

集合点设置

IP欺骗技术

负载均衡技术

执行路径转换

在LoadRunner中使用功能测试脚本

集合点

首先需要明确在性能测试过程中为什么要进行集合点设置,在LoadRunner测试过程中,其实并不能保证所有的Vuser真的在同一时刻进行操作,这样就达不到并发测试的目的,故需要使用到集合点技术,集合点的意思是如果在一个操作之前设置了一个集合点,LoadRunner会等待所有的Vuser都准备好要执行该功能时才开始执行,其强调的是所有的Vuser都已准备好了,如果只是部分Vuser准备好了,该功能还是不会被执行。

集合点设置

选择Scenario→Rendezvous,如图所示。
LoaRunner性能测试系统学习教程:场景设计实践之集合点(1)

接下来会弹出集合点信息对话框,如图所示。
LoaRunner性能测试系统学习教程:场景设计实践之集合点(1)

Rendezvous:这里显示出脚本中包含的所有集合点。默认情况下这些集合点处于启用状态。可以点击按钮,将集合点设置为禁用状态。

Scripts:显示了场景运行的所有脚本。

Vusers:场景运行设置虚拟用户情况。默认情况下所有的Vuser都会参与到集合点的策略中来,可以手动点击按钮,将一些Vuser设置为不参与到该集合点策略中来。

点击按钮,系统弹出Policy对话框,如图所示。在该对话框中可以设定集合点执行的策略。
LoaRunner性能测试系统学习教程:场景设计实践之集合点(1)

第一项:表示当所有用户数的X%到达集合点时,开始释放等待的用户并继续执行场景。

第二项:表示当前正在运行用户数的X%到达集合点时,开始释放等待的用户并继续执行场景。

第三项:表示当X个用户到达集合点时,开始释放等待的用户并继续执行场景。

其中还有一项Timeout between Vusers,就30秒来说,当第一个用户到达集合点后,再等待30秒,如果在30秒内到达的用户数达到指定的数量,就开始继续执行场景。如果在30秒内还没有达到指定的用户数量,就不再等待,开始释放等待的用户并继续执行场景,如图所示。
LoaRunner性能测试系统学习教程:场景设计实践之集合点(1)

从上图中可以看出,当前面三个虚拟用户到达集合点后,第四个虚拟用户在30秒之内并未到达集合点,这样已经到达的虚拟用户不会再等后面的虚拟用户,而是直接释放虚拟用户,运行后面的脚本。

以上都是自动控制Vuser释放的情况,但在实际使用的过程中,也可以手动对Vuser进行释放,这涉及到手动释放Vuser技术。在正常情况下会发现在集合点信息对话框中,下面的Release按钮不可用,如图所示。
LoaRunner性能测试系统学习教程:场景设计实践之集合点(1)
以下是手动释放Vuser的步骤:

1.开始执行场景。

2.在场景执行过程中选择

Scenario→Rendezvous

打开集合点信息对话框。

3.在场景运行过程中,下面的按钮和

按钮会变成可用状态,这时可以点击

按钮,进行手动释放Vuser,如图所示。
LoaRunner性能测试系统学习教程:场景设计实践之集合点(1)

集合点与事务的关系

在进行并发测试时需要设置集点,同时为了获取事务的响应时间必须添加开始和结束事务,那么集合点设置在开始事务代码后面还是在开始事务之前呢?即两者之间的关系如何?

第一种情况,集合点设置在开始事务代码后面,其运行的过程图,如图所示。

LoaRunner性能测试系统学习教程:场景设计实践之集合点(1)
从上图中可以看到当虚拟用户运行到开始事务起点时,事务就开始统计时间,但仔细研究发现,当第一个虚拟用户到达集合点时,后面的虚拟用户还没有到达集合点,这样第一个虚拟用户就不得不等其它的虚拟用户到达集合点后才能接着运行,但虚拟用户到达集合点之前事务一直在统计时间,并没有暂停,那么这个等待的时间其实根本就不是事务的真实时间,真实的事务响应时间应该除去虚拟用户之间的等待时间。

第二种情况集合点设置在开始事务代码前面,如图所示。

LoaRunner性能测试系统学习教程:场景设计实践之集合点(1)
从上图中可以看出,虽然需要等待所有的虚拟用户都到达集合点后才开始释放虚拟用户,但是此时事务并没有开始计时,只有运行到开始事务代码时才会开始计时,这样统计出来的时间值就不包含虚拟用户因为集合点的原因所浪费的等待时间。

所以综上描述,一般将集合点设置在开始事务代码之前。

猜你喜欢

转载自blog.51cto.com/14645850/2541748