基于LoadRunner的性能测试研究
基于LoadRunner的Web负载测试

由于 We b站点是一个 由硬件 、 软件和网络等多个来 自 同经销商的构件构成 , 不 因此如何预测 一个网 站在特定负载下的反应将是一个现实的挑 战. 负载测试在实现这一 目标过程中扮演了重要的角色 , 在负载 测试中, 可以尽可能真实 的模拟系统的容量和特定的信息流 , 能很好 的确定 系统在特定负载下 的性能m . 本 文根据 以往负载测试实践总结了一套 We 负载测试 的方法 , b 给出其相应 的测试流程 , 最后通过实 际应用 来说 明如何按照该流程来进行负载测试.
维普资讯
第9 ‘ 2卷第4 期
江西理工大学学报
vI ,0 。9 . .N4 2
2 8年 8 月 J U N LO A G I N V R I YO C E C N E HN L G A g. 0 0 0 O R A F I N X I E ST FS I N EA DT C O O Y J U u 2 8 0
1 4
江 西理工 大学 学报
2Q 年 8月 08
的关键也是设计负载测试的前提和基础. 良好的计划书能使负载测试具有全面性、 设计 针对性、 有效性 , 同 时也要尽可能准确地模拟用户的动作. 完成测试计划书, 需要用户和开发人员进行深入细致 的交 流, 全面 了解用户的需求 , 并将它应用于测试之 中. 通过对需求 的了解 、 对 b 应用系统的分析 , 确定负载测试对 象, 做到有 的放矢 . 编写 负载测 试计划 书一般 可包 括如下 内容嘲 :
一
是否添置硬件资源还是对软件进行整体架构进行变更提供依据 . 由于 We 的特殊性 , b 用人工的方法组织成千上万 的用户来实现负载测试, 非常困难 , 也不现实. 如果一 旦发现了问题且问题又不易重现 , 也就不能方便地找出系统的瓶颈所在. 目前负载测试 的基本策略是通过
Loadrunner 接口测试的两种方法

请求报文格式:<?xml version="1.0" encoding="ISO-8859-1"?>< Publish ><SNSID>123</SNSID><UserID>456</ UserID><CommentsTypeID>2</ CommentsTypeID><CommentsID>123</CommentsID><AuthorID>456</AuthorID><CommentsContent>Don't forget the meeting!</CommentsContent> </Publish>有了上述的说明书之后,测试人员可以根据文档的描述在LoadRunner书写相应的接口测试脚本。
LoadRunner中涉及到向服务器发送请求的API方法包括:web_url(),web_submit_form(),web_s ubmit_data(),web_custom_request()。
下面介绍两种我常用的方法:方法一:使用web_submit_data()web_submit_data("insert","Action=http://116.211.23.123/SNS/Publish.htm ","Method=POST","Referer=http://116.211.23.123/SNS/Publish.htm ","Mode=HTML",ITEMDATA,"Name= SNSID ","Value=6601",ENDITEM,"Name= UserID ","Value=123",ENDITEM,"Name= CommentsTypeID ","Value=1",ENDITEM,"Name= CommentsID ","Value=456",ENDITEM,"Name= AuthorID","Value=789",ENDITEM,"Name= CommentsContent ","Value=Just for testing",ENDITEM,LAST);方法二:使用web_custom_request()char str[1000];strcpy(str,"SNSID=7999&UserID=1&CommentsTypeID=1&CommentsID=1&AuthorID=1&CommentsContent=1 ");web_custom_request("Publish","Url= http://116.211.23.123/SNS/Publish.htm","Method=POST","Referer=http://116.211.23.123/SNS/Publish.htm ","Mode=HTTP",str,LAST);这也是一种写法,可以跟web_submit_data互换。
LoadRunner在基于Struts考试系统的性能测试中的应用

用 户实施 并 发 负载及 实 时性 能检 测 的方 式来 确认 和 查找 , 以对 整个 考试 平 台进 行 测试 。 可 关 键 词 : tu s L a Ru n r 性 能 测 试 S r t o d n e
中图分 类号 :P 1 T 3
文 献 标 识 码 : A
文章 编 号 : 0 - 9 Z 1 ) 0 1 0 1 ( o —0 2 - 0 7 6 0o 9 0 5 2
模 型 : s r s 架 中 , 型 分 为 两 个 在 t ut 框 模
~
—
—
~
.
提 交 考 卷 图2 从 考 生 角度 系 统用 例 图
部 分 : ) 统 的 内 部 状 态 。 可 以 改 变 状 1系 2) 态 的操 作 ( 务 逻辑 ) 事 。内 部 状 态 通 常 由
一
组 AC i Fo m tn r
个 方 面 考 虑 。 义 的 性 能 测 试 是 指 通 过 模 狭 拟 生 产 运 行 的 业 务 或 用 户 使 用 场 景 来 测 试
( 户 ) 试 、 量 测 试 、 置 测 试 、 靠 性 用 测 容 配 可 测 试 等 和 性 能 相 关 测 试 的统 称 。
经 常 遇 到 很 多 系 统 在 同 一 时 段 登 陆 用 户 较 少 或 者 用 户 操 作 比 较 简 单 的 情 况 下 系 统 能 够 正 常 运 行 , 当 同 一 时 段 登 陆 用 户 数 量 而 较 多 或 用 户 操 作 比 较 复 杂 时 系 统 就 运 行 缓
慢 、 至瘫痪的情况 。 甚 这 种 情 况 的 出 现 是 因 为 开 发 人 员 在 开
发 过 程 中 没 有 进 行 严 格 的 性 能 测 试 , 并 当 发 用 户 数 量 剧 增 、 统 吞 吐 率 瞬 间 增 高 等 系 情 况 下 , 于 系 统 构 架 、 计 和 网 络 拓 扑 结 构 等 方 面 存
LoadRunner性能测试过程

二、脚本 --检查点
为什么要加入检查点 检查点是检查脚本运行后,是否真的得到了预期结果。 因为曾经发现场景运行后,LR反馈事务运行成功,但其 实没有真正运行成功,工单没有流转。虽然我们可以在数 据库中查询工单的状态,但插入检查点后,在场景运行的 过程中就可以看到事务运行是否出现了问题,比在数据库 中看更加方便;另外,像测试查询的性能类的脚本,在数 据库中是看不到变化的,所以插入检查点就是非常必要的 了。
上面这段代码要加在查询后面,因为查询之后才能看到结果。场景运行 过程中,如果待回单标识只找到一次,就会有错误在场景执行界面报出 来,由lr_error_message实现。
二、脚本 --检查点
调试脚本,验证检查点是否起作用 至少要用一个验证反例来验证检查点是否真的有效。 比如,更改验证的字符串标识为“待接单”,运行场景查 询同样的待回单工单出来,看是否报错; ■如果不报错,说明检查点没起作用,要检查加入的检查点 位置是否正确,语句是否正确,或改用其他检查方式来设 检查点; ■如果反馈报错信息“找到1次,操作没成功!”说明检查 点设置生效了,可以继续往下做。
另:svr_pub_da_dispqueue派工工单处理表,也就是子单的一些信息 svr_pub_da_mainqueue工单主表,也就是主单的信息,张主单包含多张子单
二、脚本 --参数化
参数化 1.建立参数化文件*.dat,放入脚本文件夹内 2.在PLSQL中根据sql语句查询出所得的数据, 拷贝到参数化文件内 3.在脚本中找到要参数化的字段,对其进行 参数化,引用参数化文件中的数据
三、场景
--场景分类
场景模式的选择
场景分为手工场景和面向目标的场景。 ◆手工场景要达到某个测试目的需要根据场景每次运行的结果,需要使 用者自己调整虚拟用户数,直到达到预期目标。 ◆面向目标场景是在场景运行前设置了目标值,LR在运行的过程中自动 逐步加载虚拟用户以达到预设的目标。 目前我们用的都是手工场景,面向目标的场景还没有仔细研究过,但 前不久我试验了一下,手工场景和面向对象场景得出的结果差别还比 较大,现在还不知道具体原因,待以后解决。
性能测试(LoadRunner)

开始 分析应用系统 定义压力测试的对象和目标 测试计划评审 编写测试案例 测试环境的搭建 测试数据的准备 测试工具的准备 录制脚本,增强脚本 实施方案,监视系统资源 分析测试结果 是否可以接受
Part4 . L oa d R u n n e r 应 用
2、录制、编辑及调试脚本 性能测试最重要的一步是生成虚拟用户脚本
Virtual User Generator
事务:为了衡量服务器的性能,需要定义事务;如:数据查询 操作,为了衡量服务器执行查询操作的性能,需要把这个操作 定义为一个事务,这样在运行测试脚本时,LoadRunner运行 到该事务的开始点时,LoadRunner就会开始计时,直到运行 到该事务的结束点,计时结束。这个事务的运行时间在结果中 会有反映。
数据准备时根据测试需要,在执行测试之前在被 测系统种加入复合要求的数据。 数据准备方法: 1、手工:要加入的数据量比较少的情况下可以手工 在系统中加入。 2、使用LR或其他自动化测试工具:在数据量比较多 的情况下就要使用工具,录制脚本反复迭代运行脚本 或在场景中运行脚本; 3、数据直接写入数据库:这种方法使用sql语句(或 存储过程)实现数据批量写入数据库;
Part1.性 能 测 试 简 介
性能测试的定义
(5)思考时间:Think Time,也被称为“休眠时间”,从业务的角度来说,这个时间指的是用户在进行操作时, 每个请求之间的间隔时间。从自动化测试实现的角度来说,要真实地模拟用户操作,就必须在测试脚本中让各个 操作之间等待一段时间,体现在脚本中,具体而言,就是在操作之间放置一个Think 的函数,使得脚本在执行两 个操作之间等待一段时间。 (6)TPS :Transaction per second,每秒钟系统能够处理的交易或者事务的数量。它是衡量系统处理能力的重要 指标。 (7)HPS:点击率Hit Per second ,每秒钟用户向WEB服务器提交的HTTP请求数。这个指标是WEB应用特有的一个 指标,WEB应用是"请求—响应"模式,用户发出一次申请,服务器就要处理一次,所以点击是WEB应用能够处理 的交易的最小单位。如果把每次点击定义为一个交易,点击率和TPS就是一个概念。容易看出,点击率越大,对 服务器的压力越大。点击率只是一个性能参考指标,重要的是分析点击时产生的影响。需要注意的是,这里的点 击并非指鼠标的一次单击操作,因为在一次单击操作中,客户端可能向服务器发出多个HTTP请求。
Loadrunner在Web系统性能测试中的应用

级性 能 测 试工 具 Larne 对 We odunr b系统 的性 能 指
标 进行 测试 和分 析 。
2 获取 We b系统 性能测试 需求
在 进行 We b系统性 能测 试 时 , 先要 合 理定 义 首 性 能测 试 的需求 , 性能需 求必 须 明确 有 多少用 户 , 在 什么 时 间 , 续 多久 , 行什 么业 务 , 注什 么指标 。 持 进 关
时 间开始 执行 场 景 。使 用 计 划 生成 器 , 以对 手 动 可 场景 进 行 计 时 设 置 , 制 场 景 的 执 行 持 续 时 间 和 控
V sr 在场 景 中的持 续 时 间。也 可 通过 指 定 场景 ue 组
G n , 以针对 各种应 用 程 序类 型 和通 信 协 议 开发 e)可
为 We b系统 开发应 用 过程 中 的必不 可少 的环节 , 与 传统 软件 测试 相 比 We b系统 的多 样 性 和 复 杂性 使 得 性能 测试工 作更 加 困难 , 给性 能 测试 工 作 者 带 这
来 了新 的挑 战 。本 文介绍 了如何 借助 于强 大 的工 业
测试 目标 , 制定 测试需 求规格 说 明书 , 以此作 为测试 的依据 和准则 。
摘
要:随着 We 技术的不断发展 ,其应用的多样性和复杂性给性 能测试工作带来了困难和挑 b
战 ,介 绍 了如何 借 助于 强大 的工业 级 性 能测 试 工具 L arn e 对 We odu nr b系统 性 能进 行 测试 ,如 何
获取 测试 需 求、制 定测试 计划 、生成 测试脚 本 、设 计 测试场 景 、监 控 系统性 能 ,分析 测 试结果 。 关键 词 :性 能测 试 ; 发用户 ; 并 响应 时 间
Loadrunner进行性能测试的步骤

Loadrunner进⾏性能测试的步骤Loadrunner 11是⼀款免费的性能测试⼯具,他包含三个⼤模块•使⽤VuGen:创建脚本•运⽤Controller:设置⽅案•查看Analysis:分析测试结果结合软件测试的流程可以知道使⽤LoadRunner进⾏性能测试的过程如下:•规划测试:分析应⽤程序、定义测试⽬标、⽅案实施•创建Vuser脚本•创建⽅案:⽅案包括运⾏Vuser 的计算机的列表、运⾏Vuser 脚本的列表以及在⽅案执⾏期间运⾏的指定数量的Vuser 戒Vuser 组。
•运⾏⽅案:可以指⽰多个Vuser 同时执⾏任务,以模拟服务器上的⽤户负载。
可以通过增加戒减少同时执⾏任务的Vuser 的数量杢设置负载级别。
•监视⽅案:使⽤LoadRunner 联机运⾏时、事务、系统资源、Web 服务器资源、数据库服务器资源、⽹绚延时、流媒体资源、防⽕墙服务器资源、Java 性能等、应⽤程序部署和中间件性能监视器杢监视⽅案的执⾏•分析测试结果:在⽅案执⾏期间,LoadRunner 将记录丌同负载下的应⽤程序性能。
可以使⽤LoadRunner 的图和报告杢分析应⽤程序的性能。
根据性能测试计划,搭建好测试环境后,我们使⽤lr进⾏性能测试的步骤如下:1.使⽤VuGen录制vu要执⾏的测试脚本并完善精简。
录制过程可能有点⿇烦,所以录制成功后最好先做好备份,然后使⽤其中的⼀份进⾏完善脚本的操作,其中需要完善的项⽬有:参数化、关联、检查点、集合点、思考时间、事务等。
再完善了脚本后最后⼀步对脚本进⾏精简⼯作。
(录制的脚本回放时不出错不代表脚本是正确的,单⽤户运⾏脚本不出错也不代表多⽤户运⾏时不出错)录制:设置好录制选项和运⾏时选项,录制好脚本后做好备份⼯作。
参数化:a.为什么做参数化(需要⽤户提供不同的数据才能正常运⾏,这个是从脚本⾃⾝⾓度);b.哪些地⽅需要做参数化;3.怎么做参数化。
a.如果⽤户在录制脚本过程中,填写提交了⼀些数据,返些操作都被记录到了脚本中。
LoadRunner性能测试实战教程

LoadRunner性能测试实战讲解内容介绍:很多使用LoadRunner的测试人员经常面临两个难题:脚本开发与性能测试分析。
本书就是基于帮助测试人员解决这两个问题而编写,致力于使读者学精LoadRunnner这一强大的性能测试工具。
全书共分为四部分:入门篇、基础篇、探索篇、实战篇。
第一篇入门篇的内容包括第1章和第2章,着重于讲解性能测试与LoadRunner的基础理论知识。
第二篇基础篇的内容包括第3章至第5章,是LoadRunner 的基本使用部分,着重讲解Virtual User Generator、Controller、Analysis的使用方法。
第三篇探索篇的... 第1部分入门篇.. (1)第1章性能测试基础知识.. 31.1 性能测试基本概念 (4)1.1.1 什么是性能测试 (4)1.1.2 性能测试应用领域 (6)1.1.3 性能测试常见术语 (8)1.2 全面性能测试模型 (11)1.2.1 性能测试策略模型 (14)1.2.2 性能测试用例模型 (17)1.2.3 模型的使用方法 (20)1.3 性能测试调整基础 (21)1.4 如何做好性能测试 (24)1.5 本章小结 (28)第2章LoadRunner基础知识.. 292.1 LoadRunner简介 (29)2.1.1 LoadRunner主要特点 (29)2.1.2 LoadRunner常用术语 (31)2.2 LoadRunner工作原理 (32)2.3 LoadRunner测试流程 (33)2.4 LoadRunner的部署与安装 (35)2.5 本章小结 (41)第2部分基础篇 (43)第3章脚本的录制与开发.. 453.1 Virtual User Generator简介 (45)3.1.1 VuGen录制原理 (46)3.1.2 VuGen功能简介 (48)3.1.3 如何选择协议 (49)3.2 VuGen录制功能详解 (50)3.2.1 录制参数设置 (50)3.2.2 脚本录制与创建事务 (57)3.2.3 回放与调试脚本 (61)3.2.4 脚本录制的基本原则 (63)3.3 修改虚拟用户脚本 (64)3.3.1 参数化功能 (64)3.3.2 深入集合点 (71)3.3.3 巧用检查点 (72)3.3.4 关联 (78)3.4 配置虚拟用户脚本 (80)3.5 两个常用函数介绍 (84)3.6 本章小结 (86)第4章场景的创建与执行.. 87 4.1 Controller简介 (87)4.2 场景类型介绍 (88)4.2.1 手动测试场景 (88)4.2.2 面向目标的测试场景 (90)4.3 测试场景设计 (93)4.3.1 配置测试脚本 (93)4.3.2 配置Generator 944.3.3 配置Schedule. 954.3.4 集合点配置 (99)4.3.5 IP Spoofer配置 (100)4.3.6 其他设置场景 (106)4.4 执行测试场景 (108)4.4.1 启动测试场景 (108)4.4.2 控制用户与用户组 (108)4.4.3 查看场景与用户状态 (109)4.4.4 控制集合点 (110)4.4.5 查看运行数据图 (110)4.5 监控系统资源 (111)4.5.1 监控Windows系统资源 (112)4.5.2 监控Linux/Unix系统资源 (114)4.6 本章小结 (121)第5章性能测试结果分析.. 1235.1 如何分析性能测试结果 (124)5.1.1 性能分析基础知识 (125)5.1.2 Analysis使用基础 (127)5.1.3 一个视频网站例子 (135)5.2 如何从分析图中发现问题 (148)5.2.1 虚拟用户图 (148)5.2.2 事务图 (151)5.2.3 Web资源图 (160)5.2.4 网页细分图 (166)5.2.5 小结 (179)5.3 分析图的处理方法 (179)5.3.1 修改默认配置 (180)5.3.2 合并分析图 (187)5.3.3 自动关联 (188)5.3.4 场景运行比较 (191)5.4 Analysis分析报告 (193)5.4.1 事务活动报告(Activity Reports) (193)5.4.2 事务性能报告(Performance Reports) (196)5.4.3 HTML与Word报告 (199)5.5 本章小结 (206)第3部分探索篇 (209)第6章用Visual C++增强虚拟用户.. 2116.1 认识LoadRunner动态链接库的调用功能 (211)6.1.1 动态链接库调用功能简介 (211)6.1.2 动态链接库调用功能适用范围 (212)6.2 创建与调用动态链接库 (212)6.2.1 用Visual C++创建Dll 2126.2.2 Dll调用方法 (215)6.2.3 载入头文件方法 (217)6.2.4 Dll调用需注意的问题 (220)6.3 UDP发包应用案例 (222)6.3.1 测试内容简介 (222)6.3.2 测试程序设计 (222)6.3.3 虚拟用户脚本 (223)6.3.4 测试场景设置 (224)6.3.5 测试结果分析 (225)6.4 本章小结 (226)第7章深入Java虚拟用户.. 2277.1 认识Java虚拟用户 (227)7.1.1 Java虚拟用户协议 (227)7.1.2 Java虚拟用户适用范围 (230)7.1.3 脚本开发环境配置 (231)7.2 Java脚本开发基础 (234)7.2.1 Java虚拟用户开发基础 (234)7.2.2 LoadRunner的Java API. 2437.3 Java算法测试案例 (245)7.4 本章小结 (260)第8章深入.NET虚拟用户.. 2618.1 认识.NET虚拟用户 (261)8.1.1 .NET虚拟用户适用范围 (261)8.1.2 安装与配置.NET插件 (262)8.2 创建.NET虚拟用户 (264)8.2.1 创建虚拟用户项目 (264)8.2.2 参数、集合点、事务 (266)8.3 网站视频性能测试应用案例 (271)8.3.1 创建自定义的播放器类 (272)8.3.2 创建抽象虚拟用户类 (276)8.3.3 创建抽象并发测试类 (282)8.3.4 创建自定义虚拟用户脚本 (284)8.3.5 创建LoadRunner .NET虚拟用户 (287)8.3.6 案例总结 (290)8.4 本章小结 (290)第9章LoadRunner特殊协议应用.. 2919.1 Windows Sockets协议应用 (291)9.1.1 录制Windows Sockets协议脚本 (292)9.1.2 增强Windows Sockets协议脚本 (294)9.2 WAP协议应用 (298)9.3 Web Services协议应用 (302)9.3.1 Web Services协议简介 (302)9.3.2 录制Web Services协议脚本 (303)9.4 FTP协议应用 (312)9.5 本章小结 (317)第4部分实战篇 (319)第10章电子商务平台测试案例.. 321 10.1 GBE测试项目简介 (321)10.1.1 项目背景信息 (321)10.1.2 系统功能简介 (322)10.1.3 项目测试计划 (323)10.2 性能测试规划与设计 (323)10.2.1 性能测试的种类、范围、目标 (324)10.2.2 人力资源、进度安排 (325)10.2.3 测试环境需求 (325)10.2.4 选择测试工具 (327)10.2.5 用户场景分析与设计 (328)10.2.6 性能测试计划 (333)10.2.7 测试用例设计 (334)10.2.8 其他事项 (341)10.3 性能测试准备 (341)10.3.1 测试环境 (341)10.3.2 系统使用培训 (342)10.3.3 测试数据 (343)10.3.4 虚拟用户脚本 (346)10.4 测试的实施与控制 (349)10.4.1 设计测试用例场景 (349)10.4.2 执行测试用例场景 (351)10.4.3 进度与变更控制 (359)10.5 测试结论与建议 (360)10.5.1 测试结果综述 (360)10.5.2 系统性能优化建议 (361)10.5.3 风险分析 (362)10.6 本章小结 (362)附录A LoadRunner性能测试常见问题.. 365 附录B LoadRunner性能测试模板.. 373 B.1 性能测试计划模板 (373)B.1.1 项目背景简介 (373)B.1.2 测试方案简介 (373)B.1.3 测试环境与资源 (373)B.1.4 项目里程碑 (374)B.1.5 技能培训计划 (374)B.1.6 风险分析 (374)B.1.7 计划结束标准 (374)B.2 性能测试用例模板 (374)B.2.1文档介绍 (374)B.2.2 测试需求分析 (375)B.2.3 性能测试用例 (375)B.3 性能测试报告模板 (380)B.3.1 基本信息 (380)B.3.2 测试环境描述 (381)B.3.3 性能测试用例执行分析 (381)B.3.4 测试结果综合分析及建议 (381)B.3.5 测试经验总结 (381)后记.. 383前言在作者的另一作品《Web性能测试实战》中,曾经提到过“软件亚健康”这个概念。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2015年第2期 No.2,2015 九江学院学报(自然科学版) (总第109期) Journal ofji ̄iang Uniw ̄rsity(natural sciences) (Sum No.109)
基于LoadRunner 的性能测试研究术
陈佳丽 (龙岩学院数学与计算机科学学院福建龙岩364012) 摘要:本文介绍了性能测试的相关概念,并利用LoadRunner测试工具,针对具体实 例给出了性能测试的实施步骤与方案,结合测试结果分析了该实例在性能方面可能存在的 瓶颈,最后提出了性能测试在互联网应用领域、移动应用领域及敏捷开发模式中进行测试 时所面临的挑战。 关键词:性能测试,软件测试,LoadRunner 中图分类号:TP 393文献标识码:A文章编号:1674—9545(2015)02—0021一(05)
近年来,随着互联网、移动应用、物联网、 云计算等各种信息技术的日趋成熟 J,软件测试 的地位也日趋重要。同时,伴随着IT领域中“大 数据集中”时代的到来,测试领域中的性能测试 显得尤为重要,引起了人们的广泛关注。不同的 应用系统都有其特定的性能或效率指标,可理解 为该系统在特定负载和不同环境配置下应具备的 响应时间和吞吐量。当前信息系统的结构越来越 庞大,使得性能测试不论是在技术方面,还是在 人员、时间及资源等方面都面临着巨大的挑战。 本文在已有研究的基础之上,着重分析了性能测 试的相关概念,包括其定义、原理及常见术语, 并利用LoadRunner测试工具结合实例给出了性能 测试的实施步骤与方案,结合测试结果分析了该 实例在性能方面可能存在的瓶颈,最后提出了性 能测试在互联网应用测试领域、移动应用测试领 域及敏捷开发模式中进行测试时所面临的挑战。 l性能测试简介 1.1性能测试的定义 软件系统的性能是一个宽泛的概念,通常包 含系统的执行效率、资源占用、稳定性、安全性、 兼容性、可靠性及可扩展性等 J。系统的性能测 试则是为了描述测试对象的性能特征而实施和执 一基金项目:龙岩学院第三批教学改革项目成果。 收稿日期:2014—10—20 通讯作者:陈佳丽。chenjialiej1425@163.tom。 行的一类测试-3 J。性能测试的合理实施,一方面 可以验证目标系统是否符合用户性能指标;另一 方面可得到相关的性能数据,为目标系统的优化 提供参考。组件测试(Component testing)、负载 测试(Load testing)、压力测试(Stress testing) 及容量测试(Volume testing)等都属于性能测试 的范畴 J。 1.2性能测试的原理 系统性能测试以多进程/多线程(Multiple processes/threads)的方式进行,其主要原理是通 过性能测试工具来模拟成千上万用户同时向后台 发送请求(该请求可理解为客户端与服务器端之 间的通讯包或协议),每个请求以测试脚本的形式 存在,以进程/线程形式运行,从而达到产生巨大 压力或指定压力的目的,同时监控后台系统资源 消耗情况以及用户端的请求处理时间。在典型的 信息系统三层架构中,若设tl、t2、t3分别为网 络延迟时间、应用服务器处理时间、数据库处理 时间,则用户端总的处理时间T=tl+t2+t3。性 能测试的目的之一就在于通过测试找到合适的解 决方案尽量降低tl、t2及t3的值,从而降低T的 值,如图l所示。 ・22・ 九江学院学报(自然科学版) 2015年第2期 闻 图1信息系统三层架构中用户请求处理时间分解 1.3性能测试常见术语 性能测试领域常见的术语有如下几个: (1)请求响应时间。请求响应时间是指从客 户端发出请求到得到响应的整个时间,一般包括 网络延迟时间和服务器处理时间(如图1中的 T)。 (2)并发用户数。是指同一时刻与同一服务 器进行交互的在线用户数。 (3)吞吐率。吞吐率是衡量网络性能的主要 指标,表示单位时间在网络上传输(从服务器发 送给客户端)的数据量。 (4)点击率。是指每s发送的Http请求数, 其值越大,该服务器上的压力更大。 (5)基线。基线可理解为对被测试系统所提 供的一个标准,性能测试需要有一个测试的基线 或标准,以此来判断被测试系统在不同环境中的 性能。 1.4性能测试工具I ̄adRunner简介 随着计算机处理速度越来越快,要想考察系 统的某项功能,如业务处理速度是否达到要求, 采用手工方式来记录处理时间,是不现实也不明 智的。同时,当需要模拟大量用户访问系统时, 例如要监测某个论坛是否能承受1O万个终端用户 的同时访问,要在同一时刻寻找10万个人、l0万 台电脑登录该网站的做法也是不现实的。因此, 执行性能测试时必须有专门的测试工具的帮助。 LoadRunner是目前应用最多的测试工具之一,可 适用于各类不同构架的应用,主要包括:脚本录 制开发工具(VuGen)、集中控制器(LR Control- ler)、结果分析器(LR Analysis)及压力机(Load Generator)等4个组件【‘】,其基本结构框架如图2 所示。
国~一 …国 一
一 一一一一 白 ~~~ ~~~ 岫
图2 LoadRunner的结构组成 2性能测试实施 性能测试的实施流程是测试中的一个关键问 题,需要在测试前做好充足的准备。其基本实施 流程如图3所示。
分析需求,构建环境
照睡磋 }… 张葡磊 一 . …~ … ~…一…… …
设计测试用例 创建测试用例脚本
__。一 、 、
l 蔓 ] 霞 _i真插 分析测试结果
图3性能测试实施流程 本节以下内容将结合《某酒店预订系统》,利 用LoadRunner测试工具,按上述实施流程,分析 性能测试的具体实施步骤。 2.1性能测试需求分析 该“酒店预订系统”是B/S架构模式,采用 J2EE开发。主要实现两个核心的功能:①查询检 索功能,即查询出符合用户输入条件的酒店列表; ②预订功能,即能正常预订用户所选定的某一酒 店。该酒店预订系统的性能测试需求如表1所示。 表1酒店预订系统的性能需求 需求内容 详细描述 需求1 检索功能支持1000个并发用户 需求2 预订功能支持120个并发用户 需求3 检索响应时间在3s以内
需求5 系统要连续稳定运行72h 2.2测试环境构建 根据2.1节对酒店预定系统功能的描述和表1 对该系统性能测试需求的描述,构建该系统的测 第2期 陈佳丽:基于LoadRunnez’的性能测试研究 ・23・ 试环境,如表2所示。 表2酒店预订系统性能测试环境
2.3测试用例设计 针对同一个性能测试需求,有多种不同的测试 方法。在确定了性能测试需求之后,可将用户业务 操作形成更详细的测试用例描述,据此设计如表3 所示的测试用例。 表3酒店预订系统性能需求对应的测试用例
2.4创建测试脚本
设计完测试用例之后,接下来的工作是结合用 例的内容,进行测试脚本的创建与编写工作,该工 作主要在l_ ̄adRunner的脚本录制开发工具(Vu. Gen)中完成,启动VuGen应用(如基于B/S结构 的酒店预订系统),选择合适的录制协议(如Web (HrIq'P/HTML)协议),打开被测应用的客户端程 序,按照预期的操作步骤即可进行录制 J。 录制完后的每个Vuser脚本都至少包含以下3 个部分的内容: (1)vuser_init,记录登录到服务器上的活动, 在脚本启动时运行,运行次数为1次; (2)Action,脚本的主体内容,记录客户端的 活动,运行次数由Run Time Setting决定; (3)vuseE end,记录注销服务器活动的过程, 在脚本退出时运行,运行次数为1次。 2.5测试场景设计 性能测试场景的设计是以所设计的性能测试用 例、所编写的测试脚本为基础而进行的。结合表1 和表3,可确定该系统中的几个典型的测试场景, 如表4所示。
表4酒店预订系统典型的测试场景 名称 描述 指标 性能计数器
。 …。 主兰行 耄 . ①应用服务器cPu使用情况 竺 竺模块 长 : 加 页面响应时间≤3 内存 黥 4佣户… …一 ~……一
⑤迭代时间间隔:30s ………… ・24・ 九江学院学报(自然科学版) 2015年第2期 黻垂 ……一3s
………=, 、 ① c 使用 定性测试场(。 暨模 型场景 ;.处否 ; 内存 景 要
:倍… …”…~ ~……。
②测试持续时间:72h 力也无明显改变 …… …一
2.6执行场景 执行测试场景是关系到测试结果是否准确的一 个重要过程,该过程相对简单。当单击运行页面中 的“Start Scenario”按钮时,LR控制器会自动开始 运行场景,并在场景状态中显示运行时的信息。在 时间充裕的情况下,同样一个测试用例最好能执行 至少3次,然后再分析结果,若结果相接近,才能 初步证明此次的测试是成功的。因而从场景执行到 测试结果的分析是一个循环的过程。 2.7分析测试结果 根据上述分析步骤,对该系统执行负载测试, 结果如下表5所示。 表5酒店预订系统服务器资源利用情况测试结果
上述结果表明,对检索功能而言,当并发用 户数达到1 000时,系统检索的平均响应时间为 3.8s,不满足检索响应时间在3s以内的要求,因 而该项测试结果不满足性能指标;当检索并发用 户数达到1 200时,系统检索的平均响应时间为 6.6s,超出了3.6s,但此时的并发用户数是l 200 人,故可看作是满足性能指标。就系统测试而言, 当查询功能模块并发用户数为1 ooo,预订功能模 块为120时,系统CPU平均的占用率为88%,不 满足CPU利用率≤85%的性能指标,因而该项测 试结果不满足要求;而当查询功能模块并发用户 数为1200,预订功能模块为140时,系统CPU平 均的占用率为93%,同前分析,也可看作是满足 性能要求。 综上,当并发用户数超过一定数量时,系统 检索响应时间和CPU的占用率都不能满足需求, 因而该系统的性能暂时无法达到预期的结果。其 存在的瓶颈可能包含以下几个方面:①系统没有 采用合适的并发/并行策略;②数据库设计和优化 不充分;③服务器的网络带宽不足;④服务器的 CPU性能不够等。后续的解决方案是针对这些可 能的瓶颈,尽快对其进行改进,使其性能尽可能 达到预期的要求。 3性能测试面临的挑战 3.1互联网应用测试 与测试传统系统一样,在针对互联网的应用 系统进行测试时,同样必须在程序部署到互联网 之前就暴露其中的错误。互联网用户往往需要的 是能即时得到响应的页面,他们不会长时间地等 待页面加载,几秒的延时都可能导致客户的离开, 较差的性能也会导致客户怀疑网站的可靠性。再 加上基于互联网的应用系统越来越复杂,各部件 之间紧密耦合,对数据的准确性和安全性提出了 更高的要求,使得对其进行性能测试的难度也越