您的位置:首页 > 其它

LoadRunner 脚本语言基础

2013-05-25 23:32 260 查看

LoadRunner 脚本语言基础

1. LoadRunner简介

LoadRunner 是Mercury Interactive公司开发的一款成熟的性能测试工具。LoadRunner 的三大模块:Virtual User Generator , Controller , Analysis 。

Virtual User Generator (虚拟用户产生器)实际上是一套开发调试脚本的环境,它的任务是生成编译、解释成功的脚本,供Controller调用。

Controller是整个性能测试的核心,它是一个框架程序,与LoadRunner的各个模块都有交互,可以说Controller是“集大权于一身”,控制着整个性能测试的过程。

Analysis负责在一大堆数据中寻找不同数据之间的关联关系,构建纯属函数,以报表、图示的方式展现给用户。为我们分析系统性能瓶颈提供重要线索。

2. LoadRunner的功能

1)Vuser 提供录制、回放脚本功能

2)Controller 创建性能测试方案(场景)

3)数据驱动(将业务流程和业务数据分离,通过Data Wizard来自动实现其测试数据的参数化)

4)服务器监测(在负载测试过程中,可实时监测应用系统的运行性能)

5)测试结果分析(通过Analysis工具,可以快速查找到性能问题并追溯原由)

3. LoadRunner录制技术

LoadRunner录制协议选择说明:Socket方式是一切应用层协议的基础,Socket脚本是一种通用的方式。对于Vugen不支持的应用层协议,只能通过Socket层次来录制。LoadRunner的Winsock协议可算得上是万能协议,但它的使用概率却可能是LoadRunner协议族中最低的。一方面是loadrunner基本覆盖了所有的主流软件系统网络架构,除非特殊的网络应用,用户一般都能在协议族中找到合适的解决方案;另一方面是,Winsock协议由于其过于低层,决定了它“什么都能干”,但其实是“什么都干不好”的命运。

4. LoadRunner框架函数

a)vuser_init:虚拟用户的初始化函数,如登录操作,分配内存等。

b)Action:虚拟用户要做的业务。用户的业务操作,也就是测试内容的主体。在VU里设置迭代循环时,只有Action会生效,被重复运行,而init和end部分则在脚本的运行过程中只会运行一次。

c)vuser_end:与vuser_init相对应,vuser_end做收尾工作。如果vuser_init是登录,则vuser_end是退出登录;vuser_init如果是申请内存,如用了malloc函数,则vuser_end就是释放内存,使用free函数。

5. LoadRunner常用函数

a) VU通用函数,一般以lr开关,如lr_start_transaction函数。通用VU函数可分为 事务控制函数,命令行分析函数,系统信息函数,字符串函数,日志函数和运行时函数。

i.事务和事务控制函数

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_get_transaction_duration:获取事务的持续时间(按事务名称)。

lr_get_transaction_think_time:获取事务的思考时间(按事务名称)。

lr_get_transaction_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:标记事务的开始。

ls_start_transaction_instance:启动嵌套事务(由它的父事务的句柄指定)。

lr_stop_transaction:停止事务数据的收集。

lr_stop_transaction_instance:停止事务(由它的句柄指定)数据的收集。

lr_wasted_time:消除所有打开事务浪费时间。

ii.命令行分析函数

lr_get_attrib_double:检索脚本命令行中使用的double类型变量。

lr_get_attrib_long:检索命令行中使用的long类型变量。

lr_get_attrib_string:检索命令行中使用的字符串。

iii.系统信息函数

lr_user_date_point:记录用户定义的数据采集点。

lr_whoami:将有关vuser的信息返回给Vuser脚本。

Lr_get_host_name:返回执行Vuser脚本的主机名。

Lr_get_master_host_name:返回运行Controller的计算机名。

iv. 字符串函数

v.消息函数

vi.运行时函数(run-time)

b)协议相关函数,不同类型的vuser的函数一般以一个本协议类型开关。如web(http/html)类型的,web_url,web_list,web_link.

c)语言相关函数。用C编写的标准函数等,都可以加载使用。

6. 编写最佳脚本流程

a) Generate:录制或开发脚本。

b) SUSI(Single User Single Iteration,单用户单循环):运行录制生成的脚本,解决可能存在的关联问题。

c) SUMI(Single User Multiple Iteration,单用户多循环):参数化脚本,在Run-time中设置Iteration,再次运行,验证参数化问题。

d) MUSI(Multi User Single Iteration,多用户单循环):Controller里多用户运行脚本,验证脚本中可能的多线程同步问题。

e) MUMI(Multi User Multi Iteration,多用户多循环):即性能测试开始。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: