漫游测试之性能测试(3.1.7. 场景的设置 一)

3.1.7. 场景的设置

场景设置,即设计用户是如何对系统进行访问的,使服务端系统按照设定的步骤进行逐步的增加,尽量模拟服务端真实的的压力情况。

Loadrunner的场景运行分进程模式和线程模式。

默认使用线程模式,按线程运行VUSE,默认情况下每50个用户开启一个进程mmdrv.exe,而如果使用进程模式,则每个Vuser创建一个mmdrv.exe进程(也意味着占用客户端更多的资源)。

选择线程方式虽然可以减少mmdrv进程数,减少了内存的占用,但是也容易出现一个问题。例如:有时候用线程可能会出现超时、失败等,而用进程却没有问题。这是因为线程的资源是从进程资源中分配出来的,因此同一个进程中的多个线程会有共享的内存空间,假设a线程要用资源就必须等待b线程释放,而b线程也在等待其他资源释放才能继续,这样就会出现线程超时的问题。通常说来只有支持线程安全的协议才能使用线程,以下协议是不能用线程的Sybase-Dblib,Infomix,Tuxedo,and PeopleSoft-Tuxedo。当然大多数的时候,使用线程的模式即可。

3.1.7.1场景运行原理

Init,设置用户的加载方式,同时执行脚本中的vuser_init函数里的代码(一般这里用来加载用户)。

如下图,每30秒加载2个用户,直到加载100个用户为止。

Run, 设置用户全部加载完毕运行的时间,同时运行除vuser_init和vuser_end外的所有代码。如果设置Run-Time中的Run Logic的Interations,则会先循环设定次数,如果没有设置,则一直循环运行到时间结束。

如下图,设置压力持续时间5分钟。

End, 设置用户逐步退出的方式,同时运行vuser_end中的代码。如下图,设置用户每隔10秒退出5个用户。

同时需要注意检查Run-Time中的设置将会全部在运行场景中启作用,运行场景前请先检查Run-Time中的设置是否为你想要的设置,Run-Time中的设置可能会影响到测试结果的表现。

3.1.7.2集合点启用策略

集合点的设置需要在脚本里面插入lr_rendezvous("dd");函数的调用。如下图所示:

 

Release When xxx % of all Vusers arrive at the rendezvous:当百分之多少的用户到达集合点时脚本继续。(当全部用户到达集合点时才释放集合,让xxx个用户在此时运行后面的脚本)

Release When xxx% of all running Vusers arrive at the rendezvous:当百分之多少的运行用户到达集合点时脚本继续。(如果xx个用户选到达这里,就让这些用户开始运行后面的脚本,不等待其它用户)

Release When xxx Vuserx arrive at the rendezvous:多少个用户到达集合点时脚本继续。

注意:集合点应该定义在事务的前面,如果不设置集合点,可能用户同时对某事务发起请求的时间不一定是一起的,主要原因是由于开始加载时间的设置以及脚本运行的快慢引起的,故关于集合点可以理解为强并发性业务和弱并发性业务。如果要进行强并发性业务,则有必要设置,如弱并发性业务则可以不用设置。另,一般说来,如果是测试单一接口的性能,一般不进行这个设置。

3.1.7.3加载、退出、持续方式

系统性的性能测试时,用户的加载和访问的方式,需要依据性能测试方案设计的场景来添加,设计的原则是尽可能的模拟站点的真实压力场景。如果是测试接口最大的TPS,则不需要如此。

如下图所示,公司电梯每天压力发生的情况:

  1. 上班高峰期时,大家集中某个时间段出门,然后集中在10分钟内去挤电梯。
  2. 9:10左右,大家都上班了,电梯几乎这时候都没有用了。
  3. 中午下班了,5分钟内电梯具有了超强的运转能力,而且比上班的时候人更多了。
  4. 5分钟后,电梯就几乎没有人使用了。
  5. 然后12:40至13:10左右,电梯小容量的负载。
  6. 然后几乎每隔1分钟有可能会载那么1个人,用以观察系统资源的回收情况。
  7.  

猜你喜欢

转载自blog.csdn.net/womengdoushizhongguo/article/details/81330509