LoadRunner 是Mercury Interactive 公司开发的一款成熟的性能测试工具,LoadRuner 作为性能测试的实现者,涉及了性能测试流程、性能测试技术和软件 体系架构等众多方面的知识点,可以说,学习LoadRuner 是理解和学习性能测试 的非常好的切入点。在本章,我们将从架构上了解一下LoadRunner 的三大模块,
看看它们是如何共同协作完成一次软件性能测试的。
2. 1 从性能测试到 LoadRunner 的映射
可以想象,如果没有性能测试工具,那么我们靠手工將如何做性能测试:
首先,我们需要一个测试执行指挥官和一群测试人员,测试指择官负责指挥 和协调整个测试过程,而测试人员则按照指挥官的又令 一起去操作自己的终端。准备好之后,指挥官通知大家“开始” ,然后各个测试人员开始按照测试案例的步骤来执行操作,并把自己的操作时间记录下来,在性能测试完牛后,记录下水 汇报给测试指挥官,测试指挥官把结果数据进行计算,得出性能测试是否通过的 结果。
显然,这样做应该是最符合软件系统的实际使用情況的,但是实际上我们在 做性能测试的时候,我们必须要提前考患几个问题:
( 1)资源。显然,手工性能测试需要多个测试人员和多台终端设备,如果性 能需求中说明软件系统的用户可能来自不同网络配置,如局域网、ADSL、拨号等, 那么做性能测试还要考虑制造这些条件,这无疑会增加测试的成本。
(2)协调。指挥官需协调各个测试人员,让他们同时开始,如果出现了问题, 测试指挥官应该立即决断,是继续测试,还是立即中断,去解决问题。
(3)重复。性能测试不可能一蹴而就,需要至轮测试,那么如何在相同的条 件 下重复第一轮测试,手工测试必然会带来误差。
(4)分析。测试指挥官需要分析结果数据,得出性能测试结果是否通过,如 果没有通过,最好还要指出是软件系统的哪个节点出了问题,提供解决问题的线 索。
我们来看看MI 的LoadRuner 是怎样解决这些问题的,如图2-1 所示。
( 1 ) 测 试 人 员 被 L o a d R u n n e r 的 V u s e r 代 替 (虚 拟 用 户 ) , 测 试 人 员 执 行 的 操 作以VuserScript (虛拟用户脚本)的方式固化下来。而一台计算机上可以运行多 个Vuser,因此LoadRunner 又诚少了性能测试对硬件的要求。
提示:虚拟用户: 虚拟用户是性能测试自动化实现中一个普遍的概念,顾名恩义,虛拟用 户并不是一个个真实的人,但对被测试的服务器来说,这些虛拟用户和真实 用产的行为并无差别。可以说,被测服务器并不清楚哪些请求是来自真实的 人还是虛拟用户。在LoadRunner 中,虛拟用户的实现原理是VU脚本t nun- time setting.
虛拟用产的另外一个好处是,一台工作站只能容纳一个实际用户 ,而多个Vuser可以同时以进程/线程的形式运行在同一台工作站上。实际上,一个测试场景可以包含几十、几百甚至几千个Vuser 。
虛拟用户脚本:
Vuser 在方案中执行的操作是用Vuser 脚本描述的。运行场景时,每个Vuser 都去执行 Vus er 脚本。Vuse r 脚本记录 了用户的动作,并且包含一系列度量并记 录服务器性能的函数,从而方便计算性能指标。这就像 一个真实的用户一边做 操作, 一边拿着秒表记录时间一样。
操作, 一边拿着秒表记录时间一样。
(2)测试指挥官被LoadRunner 的Controller 替代,顾名思义,Controller 就 是运行性能测试的司令部,Controller 负责生成性能测试场景,管理和协调多个 虚拟用户,在实际运行时,Controller 运行任务分派给各个Loadgenerator,同时 还联机监测软件系统各个节点的性能,并收集结果数据,提供给LoadRunner 的 Analysis.
提示:
性能测试场景:
使用IoadRunner 可以将应用程序性能测试需求划分为多个场景。场景定义 并控制要模拟的用户的数量及其执行的操作,以及他们运行模拟操作所用的计 算机。简单说来,场景是把虛拟用户按 一定规则组织起来去模拟真实世界的业 务 行为。场景的组织通常和真实世界的业务规则有很大关系。
( 3 )An al ysis 会对数据进行整合,分析出它们之间的关系,并把这些关系以图 表和报告的形式展现出来,使得性能测试的结果一目了然。
提示:Analysis:
Anallysis,名副其实,就是LoadRunner 用来分析数据的工具。一个测试场景运 行结束后,会在指定的目录下生成一个Access 数据文件,这时启动Analysis,就可 以分析这些数据 了。
以分析这些数据 了。
这些概念之间的关系,可以用下面的比喻来形象地说明。
把性能测试比作一场盛大的演出,虚拟用户(vuser )就是演员,导演 (Controller )则规定了参加演出的有多少个演员,各自如何在舞台上表演,这种规 则就是剧本(性能测试场景)。导演要在各个方面保证剧情不能离谱、脱离现实, 杏则就要砸锅了。因此,导演不仅要确保演出能顺利结束,而且还要同时观察和 收集观众的反馈信息(联机监测功能),以分析 (Analysis)、确认这次演出是否 成 功 (性 能 需 求 是 否 到 达 ) 。
2.2 LoadRunner 工作原理
现实中,性能测试这场演出就是这么进行的,如图2- 2所示。
(1 ) 性 能 测 试 人 员 操 纵 运 行 Controller ,启 动 性 能 测 试 。
(2)大量的虚拟用户被“激活” ,和真实用户所做的一样,向被测系统发送 第 一次亲密接触LoadRunner 请求。
(3)Controller 通过monitor 能够实时捕获系统所有层面,包括服务器、网络 资源的性能数据,并显示在Controller 上。
(4)执行结果存放在数据库里,用户通过 Analysi s 生成报告并进行测试结果 分析。
实际上,LoadRunmner 为了保证这场“浩大演出” 的成功,除了三个模块的基 本功能之外,还提供了一些“细心而方便” 的功能,这使得LoadRunner 变得更加 强大。
1. vuser提供录制/回放功能
学 习 LoadRunner 很 容 易 上 手, 其 关 键 是 LoadRunner 的 VirtualUserGenerator 具有录制/回放功能。可以通过录制直接生成脚本,极大地节省了开发和调试脚本 的工作量。vU可以先记录下业务流程,然后将其转化为测试脚木。建立测试脚本 后,可以对其进行参数化操作,这样可以利用几套不同的实际发生数据来测试应 用程序。以一个订单输入过程为例,参数化操作可将记录中的固定数据,如订单 号和客户名称,由可变值来代替。在这些交量内随意输入可能的订单号和客户名, 来匹配多个实际用户的操作行为。
2. Controller机智地创建性能测试方案
虚拟用户脚本生成后,使用LoadRunner 的Controller 可以根据需要设定负载 方案 、业务流程组合和虛拟用户数,创建不同的性能场景。
Controller 能够创建基于日标和手工的性能测试场景,前者可使用户关注于某 项他感兴趣的性能指标,后者可全面考察整个软件系统在既定负载下的性能表现。 实际上,我们可以通过手工和目标场景的设置来实现在上一章提到的性能测试策 略,如表2- 1所示。
3. 数据驱动
LoadRunner 做到了将业务流程和业务数据分离,并且很彻底。其中有一个很 有用的功能,就是Data Wizard。通过它的Data Wiz ard 米自动实现其测试数据的 参数化。Data Wizard 直按连于数据库服务器,从中可以获取所需的数据(如订单 号和用户名)并直接将其输入到测试脚本。这样避免了人工处理数据的需要。
4 . 服务器监测
LoadRunner 可检查出现性能延迟的地方:网络或客户端延迟、CPU性能、vo 延迟、数据库锁定和数据库服务器上的其他问题。这是因为LoadRunner 内含集成 的实时监测器,在负载测试过程的任何时候,都可以观察到应用系统的运行性能, 包括服务器、数据库、网络设备等。
5. 测试结果分析
一旦测试完牛后,LoadRunner 收集汇,总所有的测试数据,可以提供高级的分 析和报告工具,以便迅速查找到性能问题并追湖原由。使用LoadRunner 的Web 交易细节监测器可以了解到将所有的图像、框架和文本下载到每一个网页上所需 的时间。例如,这个交易细节分析机制能够分析是否因为一个大尺寸的图化文件 或是第三方的数据组件造成应用系统运行速度减慢。另外,web 交易细节监测器 分解用于客户端、网络和服务器上端到端的反应时间,便于确认问题,定位查找 真正出错的组件。例如可以將网络延时进行分解,以判断DNS解析时间,连接服 务器或sSL 认证所花费的时间。通过使用LoadRunner的分析工具,能很快地查找 到出错的位置和原因并做出相应的调整。 以上这些功能我们都将在后面的章节中详细地介绍。
2.3 安装LoadRunner
目前MI的LoadRunner 提供了Windows版本和UNIX版本,世就是説, ToadRunner 可法行在Windows 平台和UNIX平台下。返取決于被測軟件系統対客 戸端的要求。
而交装LoadRunner 対汁算机配置有要求,如表2-2所示。
随着计算机硬件成本的降低,上面的系统要求已经很容易达到。但是需要注 意的是,它们是最小的资源要求,我们在安装LoadRunner 的时候,往往要把这个 硬件要求提高一些,以保证性能测试的正常执行。具体安装步骤在本书就不花篇 幅 介 绍 了, 可 参看 L o a d R u n n e r 安 装 手 册。
2.4 揭开License的神秘面纱
License 又叫做授权,使用授权 ( License )是版权的拥有 者对作品的使用 者行为的 一种文档化的约束和规定。使用授权一般规定了用户使用该作品的条 件,是否能够修改或者重新发布。从法律意义上来讲,License 是一种契约或者 合同,具有法律效力。软件用户通过购买License 的方式水和软件厂商达成契 约关系。
一般地,软件的License 的实现方式分为硬件实现和软件实现两种。硬件实现 是将软件与硬件鄉定,通过硬件来实现对用户鉴权,代表性的做法有加密狗等: License 的软件实现则有序列号等。
目前,LoadRunner 的License 实现方式硬件和软件都有,应用在不同的功能 模块中。
可以通过LoadRunner Controller 来查看License 信息。
在Controller中,选择“帮助” >“关于LoadRunner”,查看Controller的版 本 信 息 。打 开 “ LoadRun nerController 版 本 信 息 ” 对 话 框 , 单 击 “ License Information” 按钮,即可显示许可证信息,如图2-3 所示。
在时间上,LoadRunner 有以下可用许可证类型:
。Per manent:这一类型的许可证没有有效期限限制。
• Timelimited:这
一类 型 的 许 可 证 有 期 限 限 制 。
• Temproray:这 一类型的许可证只能保证自产品安装后10 天的使用期。
• VUD-based:这一类型的许可证受虚拟用户天数(VUD)的限制。在24 小 时内,VUD 许可证允许用户使用该产品无限次。
• Plugged:这 一类型的许可证需要加密狗。
在空间上,LoadRunner 对可用虚拟用户类型也有限制,有以下内容:
• Global:Gilobal 许可证意味着只要不超过Vuser 总数限制值,可以运行任意 类型的Vuser。Global 后面跟着的数宇就是允许的Vuser 总数。
• Group ERP-1: 1 § SAP. Web. Oracle, MSSQL #I Siebel (GUI-Oracle)
虛拟用户协议。
• Group ERP-2:包含SAP、Siebel (GUL-Oracle)、Oracle、Oracle-NCA虚
拟用户协议。
• Group3:包含除SAP、Siebel (GU-Oracle)、Oracle、Oracle-NCA以外的 所有虚拟用户协议。
有以下可用监视器类型:系统资源、Web资源、web服务器资源、Wet 应用 程序服务器资源、数据库服务器资源、网络延迟、流媒体资源、防火墙服务器资 源及ERP 服务器资源。
当然包含越多功能的License 就越贵,我们使用LoadRunner 时,应该根据项 目 需 求, 选 择 合 适 的 L i c e n s e 。