zoukankan      html  css  js  c++  java
  • 【转载】lr运行时设置,每个action 比例

    提供了再脚本运行时所需要的相关选项。

    性能测试的关键之一:能否通过脚本来完全模拟用户的行为,可以通过运行设置让脚本运行的更人性化。

    1. Run Logic

    脚本如何运行,每个action与action之间运行的先后顺序就在这里设置。

    1) lr_output_message()函数的介绍?

    与C中的printf类似,作用是将内容输出到Replay Log中(需要考虑输出的内容格式)

    A. 输出整数型的内容,应该这样写:

    [plain] view plaincopy
     
     
     
    1. int x;  
    2.   
    3. x=10;  
    4.   
    5. lr_output_message("%d",x);  

    B. 输出字符串

    [plain] view plaincopy
     
     
     
    1. Char *x;  
    2.   
    3. x="welcome to 51testing";  
    4.   
    5. lr_output_message("%s",x);  

    运行脚本后,对应的内容会显示在Replay Log中。

    在各个action中插入lr_output_message()函数,

    在Vuser_init中写入以下内容:

    lr_output_message("this is vuser_init");

    在Action中写入:

    lr_output_message("this is action");

    在Vuser_end中写入以下内容:

    lr_output_message("this is vuser_end");

    回放脚本,在日志中可以看到脚本的运行顺序,脚本运行的顺序和脚本的名称没有关系,而与Run Logic的设置有关。

    操作:insert Action按钮将脚本添加到运行逻辑中,move up/move down按钮将脚本的先后顺序进行调整。

    修改Iterations迭代值为2,可以看到Run上多 了一个x2的标记:说明Run下的action将运行两次,日志信息如下:

    vuser_init.c(3): this if Vuser_init

    .....

    Action.c(3): this is action

    ......

    Action.c(3):this is action

    ......

    vuser_end.c(3): this is vuser_end

    .....

    可以看到this is action被显示了两次,说明Action()函数被运行了两次。再观察日志能够发现在每次迭代进行时,都可以得到以下成对的信息

    Starting iteration x

    Ending iteration x

    只有在Run上的迭代次数才能产生这样的迭代效果。

    选择Run右键,打开属性设置对话框:

    Run Logic 提供了两种运行模式,Sequential(顺序)模式和Random(随即)模式。Iterations用来设置Run上的迭代次数。

    若选择了Random方式:则Run下的脚本将根据各自设置的比例进行随机选择并运行。这里需要对每个Run下的Action进行单独的属性设置,修改它们的百分比。Random可以随机用户行为的模拟。例如需要模拟用户有40%的可能性去注册,60%的可能性去登陆,就可以通过Action在Run Logic中的随机运行来简单解决这个问题。

    Block是一个有趣的功能,它提供了一个脚本块的功能。方便的对脚本进行层次组合。

    Insert block按钮可以为脚本添加一个块,在这个块中可以继续添加脚本,而每个快都可以实现顺序/随机的运行方式,并且块上海可以防止循环的次数,通过这种块的扩展,就能实现各种复杂的脚本。

    用户打开首页后,有两种选择,40%可能性登陆,其余不登陆。登陆的有两种随机选择,不登陆也有两种选择,这个时候用块能很简洁的解决这个问题。

    如果需要用编程的方式来控制脚本运行的策略,又如何做呢?

    1. 熟悉action之间的调用方式?

    在VuGen中录制的脚本被放在一个函数中。

    Action(){

    return 0;

    }

    如果需要在Action函数中调用其他文件的函数,只需要在代码中直接添加被调用的函数名即可,例如:

    Action(){

    Vuser_init();

    Return 0;

    }

    这样就实现了代码级得逻辑控制。

    如何解决随机的问题?

    在脚本中使用随机函数来解决。模拟用户有30%的概率去执行一个操作,30%是什么概念?

    可以这样理解:如果随机生成一个1-100的数字,且随机结果在1-30这个范围内,那么这就是30%的概率了,通过这个方法我们就可以实现随机操作的模拟了。

    Action(){

    int rowNum;

    rowNum = rand()%100+1;//使用rand()获得随机值,然后对100取余后加1,即可得到1-100的随机内容

    if(rowNum<=30)//如果值小于30,那么就是30%内的概率,则执行vuser_init()函数

    Vuser_init();

    return 0;

    }

    在Run Logic 中删除的脚本不会被执行,但仍可以通过编程的方式来调用。

    原文转载自:https://blog.csdn.net/shilijun988/article/details/45248499

  • 相关阅读:
    SGU 176.Flow construction (有上下界的最大流)
    POJ 2391.Ombrophobic Bovines (最大流)
    poj 1087.A Plug for UNIX (最大流)
    poj 1273.PIG (最大流)
    POJ 2112.Optimal Milking (最大流)
    SGU 196.Matrix Multiplication
    SGU 195. New Year Bonus Grant
    关于multicycle path
    ppt做gif动图
    codeforces 598A Tricky Sum
  • 原文地址:https://www.cnblogs.com/lelexiong/p/8974835.html
Copyright © 2011-2022 走看看