3.10 集合点 - AJava

来源:百度文库 编辑:神马文学网 时间:2024/05/01 21:17:43

3.10  集合点

集合点函数可以帮助我们生成有效可控的并发操作。虽然在Controller中多用户负载的Vuser是一起开始运行脚本的,但是由于计算机的串行处理机制,脚本的运行随着时间的推移,并不能完全达到同步。这个时候需要手工的方式让用户在同一时间点上进行操作来测试系统并发处理的能力,而集合点函数就能实现这个功能。集合点只需要在脚本中插入lr_rendezvous()函数即可。打开Insert菜单下的Rendezvous选项,如图3.167所示。

在弹出的对话框中输入集合点名称run,确定后即可得到对应的脚本:

lr_rendezvous("run");

引号内的就是集合点名称,当脚本在多用户运行的情况下,每次运行到这个函数都会查看一下集合点的策略来决定是等待还是继续运行。集合点的设置内容存放在场景的设置中,当脚本中有集合点函数时,场景中的集合点设置功能就可以访问,如图3.168所示。

               

图3.167  添加集合点函数                图3.168  场景中的集合点设置

打开场景菜单下的集合点后,可以为集合点进行设置,包括哪些用户使用该集合点、集合点是否有效等,如图3.169所示。

如果脚本中没有集合点,那么场景中的Scenario/Rendezvous集合点功能将会是灰色显示。

集合点策略用来设置虚拟用户集合的方式,打开Policy对话框,如图3.170所示。

集合点提供了以下3种策略:

1.当百分之多少的用户到达集合点时脚本继续。

2.当百分之多少的运行用户到达集合点时脚本继续。

  

图3.169  场景中的集合点设置窗口                图3.170  场景中的集合点策略

3.多少个用户到达集合点时脚本继续。

这3个策略的区别在于:假设脚本由100个用户来运行,但100个用户并不是一开始就共同运行的。假设每隔1分钟添加10个用户,也就是说10分钟后系统才有100个在线用户。这里100就是指系统访问的所有用户数,而不同时间的在线用户数是不同的。设置的集合点策略百分比均为100%。

在场景运行时,当Vuser脚本运行到集合点函数时,该虚拟用户会进入集合点状态直到集合点策略满足后才释放。

策略1是指当全部用户都运行到了集合点函数才释放集合,让这100个用户并发运行后面的脚本。

策略2是指当前时间如果只有10个用户在线,那么只需要这10个用户都运行到了集合点函数就释放集合,让这10个用户并发运行后面的脚本。

策略3就比较好理解了,当到达集合点的用户数达到自己设置的数量后就释放等待,并发运行后面的脚本。

 

     

可以在多个脚本上设置相同的集合点名称来实现多个脚本同时并发的效果。

集合点超时

在脚本运行时,每个虚拟用户到达集合点时都会去检查一下集合点的策略设置,如果不满足,那么就在集合状态等待,直到集合点策略满足后,才运行下一步操作。但是可能存在前一个虚拟用户和后一个虚拟用户达到集合点的时间间隔非常长的情况,所以需要指定一个超时的时间,如果超过这个时间就不等待迟到的虚拟用户了。

超时时间是指虚拟用户之间的时间差,当出现两个虚拟用户到达集合点的时间差超过设定的超时时间时,所有在集合点处于等待状态中的用户将全部释放。

集合点和事务

集合点应该放在事务外,如果事务内存在集合点,那么虚拟用户在集合点等待的过程也会被算入事务时间,导致早进入集合点的用户的响应时间有误。

常见的田径比赛就是这样,大家先集合在同一起跑线上,鸣枪后开始计时,达到终点再计时,这样就能得到准确的事务时间。

小结

VuGen是性能测试开始的第一步,也是性能测试最重要的一个步骤,如何形成一个有效的负载脚本,决定了性能测试的实施分析能否在一个坚强可靠的基础上进行。本章详细介绍了VuGen的使用方式和脚本开发的各个要点。

脚本开发是一个体力活,通过自行编写一个脚本对服务器进行负载,而脚本开发又基于需求,在掌握用户真正的行为特征后,即可根据其开发性能测试脚本。另外一个方面,根据性能测试的目的,脚本可以分为两大类:一类是针对某个具体功能的调试型性能测试脚本,这种脚本的操作尽可能少,主要是为了测试某一个功能而开发的;另一种是模拟用户行为的脚本,该脚本完全模拟了用户的常见操作及逻辑分支,主要是为了进行稳定性测试或系统级别的性能测试而开发的。

在完成了脚本的开发后,接着可以开始设计场景完成性能测试负载工作了。在下一章中我们将会介绍如何使用Controller进行性能测试场景设计、负载生成及数据监控。

本章需要掌握的重点:

Ÿ VuGen录制脚本的录制等级和设置方式

Ÿ VuGen脚本录制的流程及生成脚本的原理

Ÿ 如何设置脚本的Runtime Settings,特别是Run Logic(运行逻辑)

Ÿ 参数化原理及各种参数取值的方式

Ÿ 关联原理及如何准确获得服务器返回的部分内容

Ÿ 事务时间和响应时间的组成

Ÿ 手工事务的使用方法

Ÿ 集合点策略