【转载】lr运行时设置,每个action 比例
提供了再脚本运行时所需要的相关选项。
性能测试的关键之一:能否通过脚本来完全模拟用户的行为,可以通过运行设置让脚本运行的更人性化。
1. Run Logic
脚本如何运行,每个action与action之间运行的先后顺序就在这里设置。
1) lr_output_message()函数的介绍?
与C中的printf类似,作用是将内容输出到Replay Log中(需要考虑输出的内容格式)
A. 输出整数型的内容,应该这样写:
- int x;
- x=10;
- lr_output_message("%d",x);
B. 输出字符串
- Char *x;
- x="welcome to 51testing";
- 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
【转载】lr运行时设置,每个action 比例的更多相关文章
- loadrunner 运行场景-运行时设置
运行场景-运行时设置 by:授客 QQ:1033553122 A. 查看.修改单个脚本的运行时设置 a) 途径1: Scenario Groups.Scenario Groups Script ...
- [转]Loadrunner11之VuGen运行时设置Run-Time Setting
转自:http://www.51testing.com/html/92/450992-248065.html General 1.Run Logic运行逻辑 脚本如何运行的,每个action和acti ...
- LoadRunner 学习笔记(2)VuGen运行时设置Run-Time Setting
定义:在Vugen中Run-Time Setting是用来设置脚本运行时所需要的相关选项
- 【转】使用DataConnectionDialog在运行时设置数据源连接字符串
介绍: DataConnectionDialog 类: 打开“数据连接”对话框,获取用户选择的数据连接信息. 命名空间为:Microsoft.Data.ConnectionUI 所在程序集:Micro ...
- 使用DataConnectionDialog在运行时设置数据源连接字符串
介绍: DataConnectionDialog 类: 打开“数据连接”对话框,获取用户选择的数据连接信息. 命名空间为:Microsoft.Data.ConnectionUI 所在程序集:Micro ...
- 转载 网页打印时设置A4大小
最近开发项目时遇到了网页打印的问题,这是问题之二,打印宽度设置 在公制长度单位与屏幕分辨率进行换算时,必须用到一个DPI(Dot Per Inch)指标. 经过我仔细的测试,发现了网页打印中,默认采用 ...
- loadrunner运行时设置中清空缓存方法
用函数web_cache_clearup()或run-time settings---browser emulation 把clear cache on each iteration打勾 W v\] ...
- Run-time Settings 运行时设置
1.执行顺序设置和执行概率设置 2.迭代之间的等待时间设置 3.日志设置 4.思考时间 5.杂项 线程进程选择: 一般服务器没有安全机制选择线程执行 但是有安全机制的话 比如第一个进程50个线程 第二 ...
- VC项目程序运行时设置指定目录读取Dll
方法一: 选择当前工程,右击"Properties" -> "Configuration Properties" -> "Debuggin ...
随机推荐
- [Go] 数据类型,变量与变量作用域,常量
// var.gopackage main import ( "fmt" ) func main() { // 声明变量的一般形式是使用 var 关键字,可以一次声明多个变量 // ...
- java 正则 replace 忽略大小写
String description = model.getDescription(); if (!"".equals(description)) { //replace(/\&l ...
- GetComponentsInChildren<Transform>(true)
GetComponentsInChildren<Transform>(true);//游戏对象下的子物体激活的没激活的都会被拿到,包括游戏对象本身GetComponentsInChildr ...
- C++ 工程师养成 每日一题third (子数列排序)
题目: 定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序的.牛牛有一个长度为n的整数数组A,他现在有一个任务是把数组A分为若干段排序子序列,牛牛想知道他最少可以把这个数 ...
- 前端框架之Bootstrap框架
下载地址:https://v3.bootcss.com/,下载Bootstrap3版本 下载之后把文件中不需要的文件都删掉 需要获取的样式代码,可以直接从这些地方找到,然后复制 一.HTML页面导入文 ...
- C语言 hello
#include <stdio.h> int main() { /* 我的第一个 C 程序 */ printf("Hello, World! \n"); ; } 实例解 ...
- nmon2influxdb+grafana:服务监控可视化部署
在工作中,无论是定位线上问题,还是性能优化,都需要对前端.后台服务进行监控.而及时的获取监控数据,能更好的帮助技术人员排查定位问题. 前面的博客介绍过服务端监控工具:Nmon使用方法及利用easyNm ...
- 警告:MySQL-server-5.6.26-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
警告:MySQL-server--.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY 错误:依赖检测失败: /usr/bin/ ...
- 详解java动态代理机制以及使用场景
详解java动态代理机制以及使用场景 https://blog.csdn.net/u011784767/article/details/78281384 深入理解java动态代理的实现机制 https ...
- C ProcessAsUser
class Interop { public static void CreateProcess(string app, string path) { bool result; IntPtr hTok ...
