51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2414|回复: 1
打印 上一主题 下一主题

[原创] 转:LoadRunner初探

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-8-28 17:07:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
转自:北大测试?有点记不清了,呵呵,感觉还不错,比较适合新手

Load Runner初探

LoadRunner(以下简称LR)是Mercury Interactive公司出品的一款性能测试工具。目前在LR国内应该算是主流的性能测试工具,LR功能强大,从脚本编制到场景设计再到结果分析,功能非常完善,这也是它成为主流根本原因,和一些同类型的工具比起来更有优势。比如 Robot的性能测试功能在实时监控和场景设计的功能上都和LR有一段的距离,而且就操作上而言,LR还要比Robot还要容易上手。
简单介绍一下LR,它是通过录制脚本记录客户端与服务器之间的交互,然后通过回放脚本模拟出成千上万的虚拟用户加载到服务器上,并采用实时监控,监控服务器与客户端的多项性能指标以完成对被测软件的性能评估。LR有三个主要组件构成:Visual User Generator(以下简称VuGen),Controller,Analysis,这也恰恰符合性能测试的基本工作流程,脚本编制---场景设定---结果分析。VuGen可以看作是脚本生成编辑器,可以在VuGen中录制脚本,修改并完善脚本;而在Controller中,你可以根据你的实际需要自由设定你的场景;Analysis则给你提供了一个分析测试结果的平台,在这里你可以比较测试结果图,分析被测软件性能。
在性能测试中,VuGen的脚本编制是基础,因为性能测试是和虚拟用户的加载分不开的,如果没有一个可靠的脚本,那么测试结果也就不可靠,也就不可能分析出什么实质性的东西。
在VuGen脚本编制的过程中,可以添加事务和集合点,并且对脚本中的数据进行参数化。
事务可以帮测试人员准确的定位系统的瓶颈究竟出现在什么地方,可以对一个操作或者是一系列的操作定义为事务,然后在回放场景的过程中,你就可以在计数器中观察事务资源占用情况或者当VU跑到你的事务的时候系统的各项性能指标,最直观的就是计数器列出了这些事务的各种响应时间(最大,最小,平均),事务是可以嵌套定义的,可以事务中再定义事务。
集合点则是帮助测试人员更好的实现场景,比如说需要模拟n多个人同时点击一个按钮,则可以在点击前加个集合点,VU到集合点前就会停住直到所有的VU到达的时候就释放(这里的具体到VU到达多少的时候释放,是可以设定的),这也更有利于确定系统的瓶颈,可以针对系统中的某些点进行施压已检查该点负载能力。参数化可以让VU更加真实,比如登录的时候,不可能同一个用户同时是多次登录到系统,这时只需要对用户名进行参数化就行了,而且参数的取法也可以设定。VuGen是测试人员展示自己编程能力的一个平台,可以根据需要修改脚本,添加函数什么之类的。
Controller的场景设计是中间环节,这里可以根据实际情况设计场景,例如一次加载多少用户,用户的加载频率是多少,这些用户需不需要循环加载,如果循环的话需要循环多少次,等等。Controller是最能体现测试人员能力的地方,VuGen中需要的是编程能力,Analysis考验你知识掌握的全面性和分析问题的能力,Controller中每个场景的设定都潜在的说明了测试的方法策略,测试方法和测试策略的重要性远大于测试工具的使用,工具只是帮助测试人员更好的实现测试目的,测试方法和策略才是真正内在的东西。需要多大的压力,这些压力要施加在什么地方,每次加载多少用户,加载的频率是多少这些都是需要按照需求来进行制定的。场景的实现就是测试目的实现。计数器的添加也是在这里设定的,一般情况下添加有几组默认的计数器,如果需要监测更多的内容还可以添加。计数器反映的是VU运行过程中客户端与服务器以及系统的性能指标,这些指标只是简单的图形或者是数字,如果需要得到更翔实的内容就要在Analysis中分析。
Analysis的结果分析是重要内容,根据多组场景的测试结果,分析软件的性能并找出软件的瓶颈,这才是性能测试的最终目的。要想做好分析是一件十分困难的事情,想要从各种图表中抽象分析出性能结果确实不容易,Analysis的分析工作需要多方面的知识,例如微机原理,网络,数据库等多方面的知识,运用这些知识去分析为什么图表是那样的而不应该是这样的,事务的响应时间过长到底是网络的原因还是SQL语句没有优化等等。在Controller中每组场景跑完之后都需要把监测到的结果保存起来,然后在Analysis中进行分析,Analysis的钻取可以更加细化测试图表和结果数据,让测试人员更准确的做出判断,同时也可以在一个框图中把多个有联系的图表进行比较分析,Analysis是三个主要组件中最容易使用的,但是性能测试中的结果分析却是整个测试过程最难的部分,Analysis只能提供更利于测试人员分析图表的功能而不能提供分析结果,真正有价值的东西是需要自己分析得来的。
附录LR中的部分函数中英文对照:
lr_start_transaction 为性能分析标记事务的开始
lr_end_transaction 为性能分析标记事务的结束
lr_rendezvous 在 Vuser 脚本中设置集合点
lr_think_time 暂停 Vuser 脚本中命令之间的执行
lr_end_sub_transaction 标记子事务的结束以便进行性能分析
lr_end_transaction 标记 LoadRunner 事务的结束
Lr_end_transaction("trans1",Lr_auto);
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 标记事务的开始
Lr_start_transaction("trans1");
lr_start_transaction_instance 启动嵌套事务(由它的父事务的句柄指定)
lr_stop_transaction 停止事务数据的收集
lr_stop_transaction_instance 停止事务(由它的句柄指定)数据的收集
lr_wasted_time 消除所有打开事务浪费的时间
lr_get_attrib_double 检索脚本命令行中使用的 double 类型变量
lr_get_attrib_long 检索脚本命令行中使用的 long 类型变量
lr_get_attrib_string 检索脚本命令行中使用的字符串
lr_user_data_point 记录用户定义的数据示例
lr_whoami 将有关 Vuser 脚本的信息返回给 Vuser 脚本
lr_get_host_name 返回执行 Vuser 脚本的主机名
lr_get_master_host_name 返回运行 LoadRunner Controller 的计算机名
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_ext_free 释放由 lr_eval_string_ext 分配的指针
lr_save_searched_string 在缓冲区中搜索字符串实例,并相对于该字符串实例,将该缓冲区的一部分保存到参数中
lr_debug_message 将调试信息发送到输出窗口
lr_error_message 将错误消息发送到输出窗口
lr_get_debug_message 检索当前消息类
lr_log_message 将消息发送到日志文件
lr_output_message 将消息发送到输出窗口
lr_set_debug_message 设置调试消息类
lr_vuser_status_message 生成带格式的输出,并将其写到 ControllerVuser 状态区域
lr_message 将消息发送到 Vuser 日志和输出窗口
lr_load dll 加载外部 DLL
lr_peek_events 指明可以暂停 Vuser 脚本执行的位置
lr_think_time 暂停脚本的执行,以模拟思考时间(实际用户在操作之间暂停以进行思考的时间)
lr_continue_on_error 指定处理错误的方法
lr_continue_on_error (0);lr_continue_on_error (1);
lr_rendezvous 在 Vuser 脚本中设置集合点
TE_wait_cursor 等待光标出现在终端窗口的指定位置
TE_wait_silent 等待客户端应用程序在指定秒数内处于静默状态
TE_wait_sync 等待系统从 X-SYSTEM 或输入禁止模式返回
TE_wait_text 等待字符串出现在指定位置
TE_wait_sync_transaction 记录系统在最近的 X SYSTEM 模式下保持的时间
WEB函数列表:
web_custom_request 允许您使用 HTTP 支持的任何方法来创建自定义 HTTP 请求
web_image 在定义的图像上模拟鼠标单击
web_link 在定义的文本链接上模拟鼠标单击
web_submit_data 执行“无条件”或“无上下文”的表单
web_submit_form 模拟表单的提交
web_url 加载由“URL”属性指定的 URL
web_set_certificate 使 Vuser 使用在 Internet Explorer 注册表中列出的特定证书
web_set_certificate_ex 指定证书和密钥文件的位置和格式信息
web_set_user 指定 Web 服务器的登录字符串和密码,用于 Web 服务器上已验证用户身份的区域
web_cache_cleanup 清除缓存模拟程序的内容
web_find 在 HTML 页内搜索指定的文本字符串
web_global_verification 在所有后面的 HTTP 请求中搜索文本字符串
web_image_check 验证指定的图像是否存在于 HTML页内
web_reg_find 在后面的 HTTP 请求中注册对 HTML源或原始缓冲区中文本字符串的搜索
web_disable_keep_alive 禁用 Keep-Alive HTTP 连接
web_enable_keep_alive 启用 Keep-Alive HTTP 连接
web_set_connections_limit 设置 Vuser 在运行脚本时可以同时打开连接的最大数目
web_concurrent_end 标记并发组的结束
web_concurrent_start 标记并发组的开始
web_add_cookie 添加新的 Cookie 或修改现有的 Cookie
web_cleanup_cookies 删除当前由 Vuser 存储的所有 Cookie
web_remove_cookie 删除指定的 Cookie
web_create_html_param 将 HTML 页上的动态信息保存到参数中。(LR 6.5 及更低版本)
web_create_html_param_ex 基于包含在 HTML 页内的动态信息创建参数(使用嵌入边界)(LR 6.5 及更低版本)。
web_reg_save_param 基于包含在 HTML 页内的动态信息创建参数(不使用嵌入边界)
web_set_max_html_param_len 设置已检索的动态 HTML 信息的最大长度
web_add_filter 设置在下载时包括或排除 URL 的条件
web_add_auto_filter 设置在下载时包括或排除 URL 的条件
web_remove_auto_filter 禁用对下载内容的筛选
web_add_auto_header 向所有后面的 HTTP 请求中添加自定义标头
web_add_header 向下一个 HTTP 请求中添加自定义标头
web_cleanup_auto_headers 停止向后面的 HTTP 请求中添加自定义标头
web_remove_auto_header 停止向后面的 HTTP 请求中添加特定的标头
web_revert_auto_header 停止向后面的 HTTP 请求中添加特定的标头,但是生成隐性标头
web_save_header 将请求和响应标头保存到变量中
web_set_proxy 指定将所有后面的 HTTP 请求定向到指定的代理服务器
web_set_proxy_bypass 指定 Vuser 直接访问(即不通过指定的代理服务器访问)的服务器列表
web_set_proxy_bypass_local 指定 Vuser 对于本地 (Intranet) 地址是否应该避开代理服务器
web_set_secure_proxy 指定将所有后面的 HTTP 请求定向到服务器
web_set_max_retries 设置操作步骤的最大重试次数
web_set_timeout 指定 Vuser 等待执行指定任务的最长时间
web_convert_param 将 HTML 参数转换成 URL 或纯文本
web_get_int_property 返回有关上一个 HTTP 请求的特定信息
web_report_data_point 指定数据点并将其添加到测试结果中
web_set_option 在非 HTML 资源的编码、重定向和下载区域中设置 Web 选项
web_set_sockets_option 设置套接字的选项
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-8-28 17:26:27 | 只看该作者
好贴 学习了sdlkfj2
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-24 06:27 , Processed in 0.074051 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表