LoadRunner事务/集合点/思考时间详解(转)

时间:2021-04-22 21:18:20

 

在LoadRunner的脚步编写中,有三个重要的概念:事务集合点思考时间

一、事务:

  事务又称为Transaction,我们为了衡量某个action的性能,需要在action的开始和结束位置插入这样一个范围,这就定义了一个事务(transaction)。

  事务的作用:LoadRunner运行到该事务的开始点时,LoadRunner就会开始计时,直到运行到该事务的结束点,计时结束。这个事务 的运行时间在LoadRunner的运行结果中会有反映。通俗的讲LoadRunner中的事务就是一个计时标识,LoadRunner在运行过程中一旦发现事务的开始标识,就开始计时,一旦发现事务的结束表示,则计时结束,这个过程中得到的时间即为一个事务时间。通常事务时间所反映的是一个操作过程的响应时间结果。

  为什么在LoadRunner中使用事务?总结下来有如下5点:

1、事务是LoadRunner度量系统性能指标的有效手段;

2、事务能够用于度量高风险业务流程的性能指标;

  3、事务能够度量在一组操作中每一步的性能指标;

  4、通过事务计时实现了不同压力负载下的性能指标对比;

  5、通过事务计时可以帮助定位性能瓶颈。

  从性能测试的角度出发,我们需要知道不同的操作所花费的时间,这样我们就可以衡量不同的操作对被测系统所造成的影响,为了知道不同的操作所花费的时间,就需要用到事务,我们在操作之前插入一个事务开始标识,在操作完成后插入一个事务结束表示,这样我们就知道了这个操作所花费的时间。

二、集合点:

  执行负载测试时,需要模拟系统上有较重的用户负载。要实现此操作,可以同步 Vuser(即虚拟用户)以便恰好在同一时刻执行同一任务。通过创建集合点,可以配置多个 Vuser 同时执行操作。当某个Vuser(即虚拟用户)到达该集合点时,将进行等待,直到参与该集合的全部Vuser(即虚拟用户)都到达。指定数量的Vuser(即虚拟用户)全部到达后,释放所有这些 Vuser。

  可通过将集合点插入到Vuser脚本来指定会合位置。在Vuser执行脚本并遇到集合点时,脚本将暂停执行,Vuser将等待Controller或控制台的允许以继续执行。Vuser从集合释放后,将执行脚本中的下一个任务。

  注意:只能向 Action 部分(而不是 init 或 end 部分)添加集合。

  插入集合点是为了衡量在加重负载的情况下的性能情况。在计划中,可能会要求系统能够承受1000人同时提交数据,在LoadRunner中可以通过在提交数据操作前面加入集合点,这样当虚拟用户运行到提交数据的集合点时,LoadRunner 就会检查同时有多少用户运行到集合点,如果不到1000 人,LoadRunner 就会命令已经到集合点的用户在此等待,当在集合点等待的用户达到1000 人时,LoadRunner 命令1000 人同时去提交数据,从而达到计划中的需求

三、思考时间:

  关于性能测试思考时间的设置,有的设置是默认录制的值,有的是觉得在压力测试时要去掉思考时间这样服务器压力才足够大,才能达到压力测试的目的…每个人的理解不一样,系统的要求也不尽相同。个人认为在测试时是要适当加入思考时间但是时间不能太长一般都是1--5秒内。下面是对思考时间的一些说法。

  在录制脚本时我们一般会选择记录思考时间 record think time,Loadrunner作为性能测试工具,录制时记录的是客户端和服务端的交互,如果要精确模拟用户的行为,那么客户操作客户端时花费了很多时间要怎么模拟呢?录入填写提交的内容,从列表中下拉搜索选择特定的值等,这时loadrunner不会记录用户的客户端操作,而是记录了用户这段时间,成为思考时间(Think-time),因为用户的这些客户端操作不会影响服务端,只是让服务器端在这段时间内没有请求而已。所以加入思考时间就能模拟出熟练的或者生疏的用户操作,接近实际对于服务端的压力。

  Vuser 思考时间模拟实际用户在不同操作之间等待的时间。例如,当用户收到来自服务器的数据时,可能要等待几秒钟查看数据,然后再做出响应。这种延迟就称为“思考时间”。VuGen 使用 lr_think_time 函数将思考时间值录制到 Vuser 脚本中。例如以下录制的函数指明用户等待了 8 秒钟才执行下一个操作:lr_think_time(8);

     当我们实际运行了 Vuser 脚本并且 Vuser 遇到了上述 lr_think_time 语句时,默认情况下,Vuser 将等待 8 秒钟后再执行下一个操作。可以使用思考时间运行时设置来影响运行脚本时 Vuser 使用录制思考时间的方式。