LR之集合点

来源:互联网 发布:app软件开发合同模板 编辑:程序博客网 时间:2024/05/20 00:49

LR之集合点

1.    集合点的含义

当通过controller虚拟多个用户执行该脚本时。用户的启动或运行步骤不一定都是同步的。集合点是在脚本的某处设置一个标记。当有虚拟用户运行到这个标记处时,停下等待,直到所有的用户都达到这个标记处时,再一同进行下面的步骤,这样能够用最大的用户并发去做下面的操作,就像集合再前进一样。集合点之名由此而得。集合点主要用于对关键步骤的加压。

2.插入集合点的目的

集合点的用处对于LoadRunner来说意义非常大,它可以设置多个虚拟用户等待到一个点,同时触发一个事务,以达到模拟真实环境下同时多个用户操作,同时模拟负载,实现性能测试的最终目的。由此可见,插入集合点主要是为了衡量在加重负载的情况下服务器的性能情况,从而找到性能瓶颈。可以把集合点理解成是一种特殊情况下的并发。

  举例如下:在客户的需求中,可能会要求系统能够承受1000人同时提交数据。在LoadRunner中可以通过在提交数据操作前面加入集合点,当虚拟用户运行到提交数据的集合点时,Loadrunner就会检查同时有多少用户运行到集合点,如果我们设定脚本运行的虚拟用户数为1000,等到这1000个虚拟用户都运行到集合点后,就会触发同时进行提交数据的操作,从而能够测试系统对于这1000个用户提交数据的响应情况,依此来看系统是否满足客户的该点需求。

3.集合点用于功能测试

集合点除了用于多用户并发操作对服务器施压的性能测试外,还可以用户系统的功能测试,而且这些功能测试都是手工测试所不能实现的,以下面的两种情况进行说明。

  A.用集合点测试编号生成策略:

  被测系统为一个订单处理的准生产系统,在系统中形成订单的时候会自动生成订单编号,订单编号的生成规则是【日期+时间+4位随机数+2位编号】,如:20120311104924276201,系统中要保证所有生成的订单编号不能重复,而订单编号中关系编号是否重复的关键是“4位随机数。现在系统的实际操作可能会出现同时有200个订单录入员提交订单,提交订单时会生成订单编号,要保证不会出现重复的编号,设计测试用例:在提交订单之前插入集合点,虚拟用户为200,运行脚本,运行结束后查看运行后提交的订单个数,然后查看订单编号是否有重复的情况;

  如果运行脚本发现频繁出现有订单编号重复的情况,可能订单编号的4位随机数生成策略不能满足需求,需要考虑采用更好的生成策略;如果多次运行脚本未出现有订单编号重复的情况,那么可以说明4为随机数生成策略以满足订单编号生成的需求和设计。

  B.用集合点测试互斥锁定策略:

  被测系统还是订单处理的准生产系统,生成后的订单是可以被部分用户把信息读取到另一个系统中的,读取的时候要保证一个订单同时只能被一个用户读取,一旦一个订单被一个用户读取到后,其他的用户就不能再读取到这个订单,只能读取到其他可以被读取的订单。读取订单时是可以选择读哪一个订单,也可以不选定,不选定系统就会自动分配。

  设计实现这个功能的时候,实现方式是,订单被用户读取到后,就将该订单加锁,加锁的订单其他的用户是不能读取到的,这时系统就会按照策略分配其他可被提取的订单给其他的用户。手工测试是这样进行的:

  预置条件:系统中有多个待读取的订单ABC……,默认读取顺序就是ABC……

  操作步骤:

  1、用户1选择读取订单A,读取成功;然后用户2选择读取订单A;

  2、用户1读取订单,读取到订单A;然后用户2读取订单;

  预期结果:

  1、用户2读取订单A失败,返回正确合理的提示信息;

  2、用户2读取到订单B;

  手工测试并未测试出设计和实现有什么样的缺陷,功能正常。

  考虑到客户实际使用系统时,提取订单的用户是上百个的,很可能出现这些用户同时读取订单的情况,这样的场景下,几个测试人员手工测试是不现实的,这时考虑设计集合点并触发多个用户同时进行读取订单事务操作就比较适用。

而实际运行的情况是,在订单读取操作前设置集合点,只使用两个虚拟用户在同一时刻读取订单就出现了读取到同一订单的情况,说明程序在实现上是存在缺陷的,这也很好的对手工测试不能覆盖到的地方做了测试补充。

4.集合点的插入位置

集合点一般是跟事务(事物就是用户某一步或者某几步操作的集合。当我们需要通过某一步或是某几步操作从而衡量服务器的性能的时候,这时我们就把这些操作设置成一个事务,当事务开始执行的时候lr就开始计时当事务运行结束计时停止,执行事务的时间会在在最后的结果中显示出来)结合使用的,不要把集合点设置到事物里面,因为那样的话脚本等待的时间都计算在事务的时间内,进行压力测试的时候查看响应时间就会有一定的偏差。

集合点应插入到事务开始的前面,这样在这个地方达到用户的数量后同时执行下面的事务才能测试出多个用户能否同时执行某一操作。

插到开始事物前:

插到开始事物后:

5.集合点插入方法

集合点

1>录制时,在需要并发操作的事务前直接点击插入集合的按钮;

插入Text检查点

改变录制的Options设置

创建新的Action

 插入题外

Record the application startup”默认情况下是选中的,说明应用程序一旦启动,VuGen就会开始录制脚本;如果没有选中,应用程序启动后,VuGen出现以下对话框,并且暂时不会开始录制脚本,用户操作应用程序到需要录制的地方,按下“Record”按钮,VuGen才开始录制。

Options按钮,进入录制的设置窗体,这里一般情况下不需要改动。

Recording 标签页:默认情况下选择“HTML-based Script”,说明脚本中采用HTML页面的形式来表示,这种方式的Script脚本容易维护,容易理解,推荐这种方式录制。

URL-based Script”说明脚本中的表示采用基于URL的方式,WASACT中的录制方式就是这种。

选择哪种方式录制,有以下参考原则:

1 基于浏览器的应用程序推荐使用HTML-based Script

2 不是基于浏览器的应用程序推荐使用 URL-based Script

3 如果基于浏览器的应用程序中包含了 JavaScript并且该脚本向服务器产生了请求,比如DataGrid的分页按钮等,也要使用URL-based方式录制。

4 基于浏览器的应用程序中使用了 HTTPS安全协议,使用URL-based方式录制。

 Advanced 标签页:取默认情况即可。

 Correlation 标签页:这里的内容比较重要,需要定制,主要是为了在录制过程中设置自动关联。

由于内容比较多,就不再一一介绍各项的含义了。

注意:在录制过程中,不要使用浏览器的“后退”功能,LoadRunner支持不太好!

2>录制后,录制的脚本中,在并发操作事务提交前插入,点击右键,选择,然后选择后面出现的,输入集合名称,脚本中出现,即添加集合点成功(见下图)


或者点击菜单栏插入集合点

 

                                                                                                               

然后输入集合点的名称,注意,名称最好能够清楚地说明该集合点所完成的动作。

备注:集合点只能插入到Action部分,vuser_initvuser_end中不能插入集合点。如果想要测试系统所能支持同时登录的用户数,登录的事务要写入到Action中,然后插入集合点进行测试。

6.Controllervuser的数量和集合策略中的释放设置

集合策略释放的意思是指当你的vuser达到这个数目时才同时释放。

比如,设置vuser的数量是9,在集合策略中设置,当vuser5个到达集合时释放,那么在释放前5个后,剩余的4个并未达到5个最低要求,所以实际上是等待超时(可设置)了才释放的;但,如果设置vuser的数量是10,那么,剩余5个刚好满足,就不用等了。

7. Controller中集合策略设置

1>脚本创建设置了集合点,在控制台中集合策略设置才是可用状态:

该按钮需在场景运行中才可用

Rendezvous:显示脚本中包含的所有集合点。默认情况下这些集合点处于启用状态。

Disable Rendezvous:将集合点设置为禁用状态。

Disable VUser:将一些Vuser设置为不参与到该集合点策略中来。

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

Release:释放当前正在选定集合点等待的所有 Vuser。如果您希望在并非所有 Vuser都到达集合时,继续运行场景,请单击此按钮。

Reset:将删除当前显示的信息来重置状态信息。

2>点击Policy按钮,进入策略设置窗口

注意,一般不选择第一个策略,如果选择此选项,场景将不按计划运行。

总结:测试并发不一定有集合点,但有集合点一定会是测试并发。

在场景中,多个脚本同时并发时,把所有集合点改为同一名称即可。

原创粉丝点击