LoadRunner脚本 《第二篇》
一、基础函数简介
在VU左边导航栏中,有三个LoadRunner框架函数,分别是vuser_init()、Action()、vuser_end()。这三个函数存在于任何Vuser类型的脚本中。
- vuser_init:虚拟用户的初始化函数,一般将用户初始化的操作放在这里,如登录操作、分配内存等。在做uvser_init的时候,Controller的Vuser状态区域会显示initialize状态(只运行一次)。
- Action:虚拟用户要做的业务,用户的业务操作,也就是测试内容的主体。在VU里设置迭代循环选项时,只针对Action有效,Action会被重复运行,而init和end部分则在脚本的运行过程中只会运行一次。
- vuser_end:与vuser_init相对应,uvser_end做收尾工作。在vuser_init中如果是登录,vuser_end里面就是退出登录;在vuser_init中如果是申请内存,比如使用了malloc函数,在vuser_end中应该就是释放内存,使用free函数。
在VU右侧脚本编辑框中,我们看到的是Action的实现主体,在运行时,Action内的web_url函数会被调用执行。
在LoadRunner的脚本中,我们可以调用三种函数:
- VU通用函数,一般以lr开头,就如上面的lr_start_transaction函数。
- 协议相关函数,不通类型的Vuser的函数一般以本协议类型开头。如果上面的脚本时Web(HTTP/HTML)类型的,web_url就是一个协议函数,web前缀说明它是属于Web HTTP协议的,HTTP协议函数还包括web_list、web_link。
- 语言相关函数。上面的VU脚本时用C语言写的,那么C语言的标准函数或dll都可以在这里被加载和使用。
二、通用VU函数
通用VU函数是构建在C语言基础之上的脚本框架函数,起支持作用。通用VU函数有一个特征,就是以LR开头,以标明它们属于LR,而不专属于任何协议,只要是C脚本,都可以使用。
通用VU函数可分为:
- 事务控制函数;
- 命令行分析函数;
- 系统信息函数;
- 字符串函数;
- 日志函数;
- 运行时函数;
1、事务与事务控制函数
软件系统的性能就是开一个个事务来度量的。LoadRunner中事务的定义就是靠事务函数来进行的,在执行性能测试时,LoadRunner会采集完成其定义的每个事务所花费的时间,并在性能测试后再Ayslysis中进行统计分析。
- lr_end_sub_transaction:标记子事务的结束以便进行性能分析。
- lr_end_transaction:标记LoadRunner事务的结束。
- lr_end_transaction_instance:标记事务实例的结束以便进行性能分析。
- lr_fail_trans_with_error:将打开事务的状态设置为LR_FAIL并发送错误消息。
- lr_get_trans_instance_duration:获取事务实例的持续时间。
- lr_get_trans_instance_wasted_time:获取事务实例浪费的时间。
- lr_resume_transaction:继续收集事务数据以便进行性能分析。
- lr_resume_transaction_instance:继续收集事务实例数据以便进行性能分析。
- lr_set_transaction_instance_status:设置事务实例的状态。
- lr_set_transaction_status:设置打开事务的状态。
- lr_set_transaction_status_by_name:设置事务的状态。
- lr_start_sub_transaction:标记子事务的开始。
- lr_start_transaction:标记事务的开始。
- lr_start_transaction_instance:启动嵌套事务。
- lr_stop_transaction:停止事务数据的收集。
- lr_stop_transaction_instance:停止事务数据的收集。
- lr_wasted_time:消除所有打开事务浪费的时间。
2、命令行分析函数
当LoadRunner用命令行方式启动和运行时,以下函数用来分析命令行,以得到命令行中的参数信息。
- lr_get_attrib_double:检索脚本命令行中使用的double类型变量。
- lr_get_attrib_long:检索脚本命令行中使用的long类型变量。
- lr_get_attrib_string:检索脚本命令行中使用的字符串。
3、系统信息函数
用来得到VU系统信息:
- lr_user_data_point:记录用户定义的数据采集点。
- lr_whoami:将有关Vuser的信息返回给Vuser脚本。
- lr_get_host_name:返回执行Vuser脚本的主机名。
- lr_get_master_host_name:返回运行LoadRunner Controller的计算机名。
4、字符串函数
主要是对参数进行操作,包括对不通类型参数的读取、存储和移动。
- lr_eval_string:返回参数的当前值。
- lr_save_string:将以NULL结尾的字符串保存到参数中。
- lr_save_var:将变长字符串保存到参数中。
- lr_save_datetime:将当前日期和时间保存到参数中。
- lr_advance_param:前进到下一个可用参数。
- lr_decrypt:解密已编码的字符串。
- lr_eval_string_ext:lr_eval_string的扩展,为指向包含参数数据的缓冲区的指针。
- lr_eval_string_ext_free:释放由lr_eval_string_ext分配的指针。
- lv_save_searched_string:在缓冲区中搜索字符串实例,并将改字符串实例保存到参数中。
5、消息函数
是VU发送和记录log的函数
- lr_debug_message:将调试消息发送到输出窗口。
- lr_error_message:将错误消息发送到输出窗口。
- lr_get_debug_message:得到当前的消息类。
- lr_log_message:将输出消息直接发送到output.txt文件,此文件位于Vuser脚本目录中。
- lr_output_message:将消息发送到输出窗口。
- lr_set_debug_message:为输出消息设置消息类。
- lr_vuser_status_message:生成格式化输出并将其打印到Controller Vuser状态区域。
- lr_message:将消息发送到Vuser日志和输出窗口。
6、运行时函数
运行时(run-time)多数是通过VU的runtime来设置的。
- lr_load_dll,加载外部dll。
- lr_think_time:暂停脚本的执行,以模拟思考时间。
- lr_continue_on_error,指定脚本如何处理错误场景,是继续还是退出。
- lr_rendezvous:在Vuser脚本中设置集合点。
三、协议相关函数
除了通用Vuser函数以外,Vugen还会在录制时生成特定于协议的函数,并将它们插入到Vuser脚本中。
1、Http协议
Header设置函数:
- Web_add_header
- Web_clean_header
点击链接:
- Web_link
- Web_image
提交表单:
- Web_submit_data
- Web_submit_form
2、Web系统设置
Cache设置:
- Web_cache_leanup
- Web_load_cache
Cookie设置:
- Web_add_cookie
- Web_cleanup_cookies
Proxy设置:
- Web_set_proxy
- Web_set_secure_proxy
3、LoadRunner框架支持
检查点:
- Web_find
- Web_image_check
关联:
- Web_create_html_param
- Web_create_html_param_ex
- Web_reg_save_param
- Web_set_max_html_param_len
控制:
- Lr_start_transaction
- Lr_rendzvous
- Lr_think_time
Action()
{
Web_add_cookie("nav = 140, Domain = Dogbert");
lr_think_time();
Web_url("Login",
"URL=http://127.0.0.1:9090/Account/Login",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTTP",
LAST);
}
- 第一条语句Web_add_cookie的作用是保存Server传过来的cookie,以后的访问都会基于此cookie,直到脚本的结束。
- 第二条语句lr_think_time,模拟用户思考时间,暂停7秒。
- 第三条语句Web_url显示用户在IE地址栏输入http://127.0.0.1:9090/Account/Login,然后回车,IE发起一个访问的请求。
LoadRunner脚本 《第二篇》的更多相关文章
- LoadRunner脚本编写(转)
性能测试工程师要懂代码么?答案是必须的.好多测试员认为在loadrunner中编写脚本很难很牛X ,主要是大多测试人员并未做过开发工作,大学的那点程序基础也忘记的差不多了.还有非计算机专业出身的测试员 ...
- LoadRunner脚本实例来验证参数化的取值
LoadRunner脚本实例来验证参数化的取值 SINM {3]!G0问题提出: 主要想试验下,在Controller中,多个用户,多次迭代中参数的取值.51Testing软件测试网(['H5f,d ...
- Loadrunner脚本录制常见问题整理
1.LoadRunner录制脚本时为什么不弹出IE浏览器? 当一台主机上安装多个浏览器时,LoadRunner录制脚本经常遇到不能打开浏览器的情况,可以用下面的方法来解决. 启动浏览器,打开Inter ...
- LoadRunner脚本设计、场景设计和结果分析
本次笔记主要记录LoadRunner脚本设计.场景设计和结果分析 1. 脚本设计 录制模式 手工模式:插入步骤.手动编写 1.1 脚本增强: ...
- [转]LoadRunner脚本录制常见问题整理
LoadRunner脚本录制常见问题整理 1.LoadRunner录制脚本时为什么不弹出IE浏览器? 当一台主机上安装多个浏览器时,LoadRunner录制脚本经常遇到不能打开浏览器的情况,可以用下面 ...
- 关注LoadRunner脚本回放日志中的Warning信息-转载
关注LoadRunner脚本回放日志中的Warning信息 最近在与大家的讨论中发现了LoadRunner的很多问题,出于解决问题的出发点,我也就相关自己不理解的问题在Google中搜索了一番,并 ...
- 转:如何在 LoadRunner 脚本中做关联 (Correlation)
如何在 LoadRunner 脚本中做关联 (Correlation) 当录制脚本时,VuGen会拦截client端(浏览器)与server端(网站服务器)之间的对话,并且通通记录下来,产生脚本.在V ...
- 老李分享:Eclipse中开发性能测试loadrunner脚本
老李分享:Eclipse中开发性能测试loadrunner脚本 前篇我分享了如何用loadrunner搭建javauser的性能测试脚本环境,本次我来告诉大家如何在eclipse开发loadrunne ...
- LoadRunner脚本准备
脚本录制1.启动LoadRunner2.打开VuGen在LoadRunner Launcher窗格中,单击创建/编辑脚本3.创建一个空白Web脚本在“新建虚拟用户”对话框里选择新建脚本的协议一般选择W ...
- loadrunner 脚本优化-事务时间简介
脚本优化-事务时间简介 by:授客 QQ:1033553122 事务概念 事务是指用户在客户端做一种或多种业务所需要的操作集(actions),通过事务开始和结束函数可以标记完成该业务所需要的操作内容 ...
随机推荐
- OkHttp 详解
OkHttp使用: http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0106/2275.html OkHttp源码: http:/ ...
- HDU 5701 中位数计数
这题真的很恶心,做了一天,最后问学长,才懂题意是什么,原来我一直都没读懂题.这我真的就无语了,你的题意多两句话会死啊?你测试样例多两个例子就不行啊?真蛋疼,题意都不懂,还做个shi? 题里说的是区间, ...
- hdu 1561 The more, The Better 背包型树形DP 简单题
The more, The Better Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- 读《java核心技术卷一》有感
过去一个多月了吧.才囫囵吞枣地把这书过了一遍.话说这书也够长的,一共706页.我从来不是个喜欢记录的人,一直以来看什么书都是看完了就扔一边去,可能有时候有那么一点想记录下来的冲动,但算算时间太紧,很多 ...
- 网页设计中常用的Web安全字体
但多数情况下,考虑各个因素的影响我们还是在尽量充分利用这些默认调用的字体实现CSS的编写,这里整理了19个Web安全字体,让你无需任何顾虑的情况下畅快使用. 1, Arial 微软公司的网页核心字体 ...
- Git hub pull时候的错误 : The current branch is not configured for pull No value for key branch.master.merge found in configuration
网上多半都是命令行下的解决方案,我用的是EGit,所以要在eclipse里(我的版本是kepler)把下面这句话添加到配置文件中. Window->Preference->Team-> ...
- JAVA 继承 extends
/* 继承 1.提高了代码的复用性,简化了代码 2.让类与类之间产生了继承关系,才有了后面的多态的特性的存在 注意:千万不要为了获取其它类的功能简化代码,而建立继承关系, 必须要类与类之间存在继承关系 ...
- CSS根据屏幕分辨率应用相应样式
当屏幕尺寸小于1200px时,应用下面的CSS样式 @media screen and (max-width: 1200px) { /*当屏幕尺寸小于1200px时,应用下面的CSS样式*/ .ind ...
- mysql事务与mysql储存引擎
事务概念及存储引擎 1.0 为何要事务? 先来看一个场景,银行转账汇款: 李彦宏和周鸿祎天天打架,现在让李彦宏给周鸿祎转款1000 元 设计如下表 account表 编号(id)用户名(user)金额 ...
- linux查看和开放某端口
查看某端口是否已打开: netstat -nulp //UDP端口netstat -ntlp //TCP端口 或者:lsof -i:port-num 开放某端口: 在/etc/sysconfig/ip ...