LordRunner混合场景设置

有这样的一个案例:现网站有1000个同时在线用户,其中百分20%的用户浏览网页,30%的用户注册,%20的用户登录,30%的用户查询,如何针对这种需求设计场景,(注不单设场景,要求使用混合场景全程模拟真实用户行为):

设计 方法一:

1.录制完脚后,并对其进行完善,比如有这样三个脚本,Reg_Action,Login_Action,Order_Action

2.假如VU设为100个,30%的用户注册,20%的用户在登录,余下的用户做订票操作。

3.在场景中的run-time-setting中我们可以这样设置:在Run-Logic中在General Run Logic中设置run 属性,run有两种属性,一种是Sequential(顺序模式),另一种是Random(随机模式),通过Random这种方式,我们可以模拟30%的用户在注册,20%的用户在登录。(注,此设置是在控件器中的 run-time-setting中设置)

4.其中的 block块可以实现更为复杂的脚本运行策略

这种方法确少灵活性,下面描述如何用编程实现:

方法二:通过程序解决

1.用程序 来判断随机出来的概率和和其给定的值作判断,如果符合这个条件,则调用此函次(脚本一次)

2.比如说100个用户,20%就是20个用户,那么 【0-20】这个范围内,

在action中模拟20%的用户浏览网页,可以这么操作:

Action{

int rowNum;

rowNum=rand()%100+1;

if (rowNum <=20%)

   //调用一个脚本

return 0;

}


例如:性能测试场景设计--混合业务场景下的脚本比例控制


在某个业务场景中,包含数据创建和数据查询两项业务;现需考察数据创建和数据查询两项业务在并发比例为2:1、总并发量为100用户情况下的混合响应时间。


在Vugen端实现

对混合比例的设置,可直接在脚本中进行,即通过随机函数rand实现,脚本设计如下所示。

int num;
Action()
{
    num = rand()%3;
    lr_start_transaction("综合业务--数据创建与数据查询");
    if(num<2){
        Data_Create();  //数据创建
    }
    else{
        Data_Search();  //数据查询
    }
    lr_end_transaction("综合业务--数据创建与数据查询", LR_AUTO);
    return 0;
}

该种方式的优缺点对比:

优点:

  • 脚本本身实现了比例控制的功能,Controller端的设置较为简单,即在Controller中只需将该混合业务作为单一业务对待,设置也跟单一业务场景的设置方法完全相同;
  • 测试得到响应时间即为混合业务的响应时间。

缺点:

  • 在已有数据创建和数据查询脚本的情况下,针对混合业务场景需要单独创建一个混合业务脚本,且混合比例改变时需要重新修改脚本;
  • 当需要考察混合业务场景中不同业务类型各自的响应时间时,通过该种方式无法实现。

2、在Controller端实现

在业务类型较多,混合业务场景较为复杂的情况下,采用修改脚本的方式会比较麻烦。例如,若共有5种业务类型,现需要对其任意两种业务的混合场景进行压力测试,如果仍采用第一种方式,那么我们就必须得针对两两业务的混合情况,创建10个混合业务脚本。当业务类型更多,或者混合场景更为复杂(如需考虑任意三种、任意四种业务等的混合情况)时,脚本的创建量会大大增加,且均为乏味的重复性工作。

针对这种情况,直接在Controller端进行设置会简单得多,只需要加载各个业务脚本,并设置不同脚本的并发数即可。对于本文中的案例,在Controller中的设置方法如下所示。


该种方式的优缺点对比:

优点:

  • 无需单独创建混合业务脚本,特别是在业务类型较多的情况时优势更为明显;
  • 测试得到的响应时间为各个业务独自的响应时间,可以实现对混合业务场景下各个业务的单独分析。

缺点:

  • 计算混合业务的响应时间时,需要提取原始测试数据进行计算(不能直接对各个业务的平均响应时间取平均值来作为混合业务的平均响应时间),计算较为复杂。

Block(块)技术                         

  block(块)技术是应用于在一个脚本中实现不同事务、不同次数循环或不同百分比循环的情况。比如在一个脚本中,登录执行3次,查询执行1次。

  使用方法如下:

1、录制一个脚本,包含2个业务:登录和查询

2、vuser->run time settings->general->run logic,选择run,插入一个block块,然后选择block(),单击insert action按钮,选中要添加的action,如图1所示:

图1(为block添加action)

3、重复上面的操作,再新建一个block,然后删除block外的action,如图2所示:

图2(删除block外面的action)

4、设置block properties,如图3所示:

图3(block properties设置)

5、block(块)技术就是这样了,注意:事务迭代的总次数=该block迭代次数*number of iterations,如上图即是login迭代次数=3*1=3次。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章