|
本章详细介绍了LoadRunner 的工具组成和实现原理。LoadRunner是一个性能测试工具包,其中包含了性能测试所需要的行为模拟、负载生成监控、数据收集分析组件。
一、LoadRunner 测试工具的组成及每个模块的功能:
整个LoadRunner 主要由4部分组成:
1. 脚本生成器 Virtual User Generator (只能安装在Windows操作系统上)
VuGen提供了基于录制的可视化图形开发环境,可以方便简洁地生成用于负载的性能脚本。
2. 压力调度和监控系统 Controller (只能安装在Windows操作系统上)
负责对整个负载的过程进行设置,指定负载的方式和周期,同时提供了系统监控的功能。
3. 压力生成器 Load Generator
负责将VuGen脚本复制成大量虚拟用户对系统生成负载。
4. 结果分析工具 Analysis
通过Analysis我们可以对负载生成后的相关数据进行整理分析。
二、性能测试基于协议模拟的原理:
LoadRunner的录制行为和行为模拟都是基于协议的。作为任意一种性能测试来说,实现的原理主要包含以下3点。
1. 用户行为模拟
低成本且具有可行性,模拟大量用户操作的一种技术,借助这种技术将被测试系统在测试阶段运行起来,以检测系统工作是否正常。
a)不同用户使用不同的数据(LoadRunner通过“参数化”实现)
b)多用户并发操作 (LoadRunner 通过“集合点”实现)
c)用户请求间的依赖关系(LoadRunner 通过“关联”实现)
d)请求间的延时时间 (LoadRunner 通过“思考时间”实现)
2. 性能指标监控
通过上面技术模拟用户的行为,在系统运行中需要监控各项性能指标,并分析指标的正确性。
a)请求响应时间监控(LoadRunner 通过“事务”实现)
b)服务器处理能力监控(LoadRunner 通过“事务”计算吞吐量获得)
c)服务器资源利用率监控(LoadRunner 提供全面简洁的计数器接口)
3. 性能调优
通过指标监控发现系统存在的性能缺陷,利用分析工具定位并修正性能问题。
LoadRunner是通过以下流程实现用户行为模拟(脚本的录制和修改是由VuGen完成,而场景的创建和执行是由Controller完成的),如下:
录制脚本-----> 修改脚本(参数化、关联、事务)-----> 创建场景----->执行场景
通过使用VuGen对用户的行为进行录制,将操作转化为对应的脚本,进一步将该脚本进行修改来完善对用户行为的模拟。随后通过Controller设计一个场景,指定负载生成的方式,从而执行场景,完成最终的用户负载行为的模拟。
而性能指标监控是通过以下方式实现的(计数器的管理由Controller负责,而结果的总结统计由Analysis完成),如下:
配置服务器端监控环境----->添加服务器地址和计数器----->监控结果数据统计显示
在场景中可以远程管理被负载服务器的相关计数器(这里可以先简单认为计数器就是操作系统自带的类似于CPU占用率这在的基础指标),当场景运行结束,负载生成的数据和服务器计数器数据会被统一保存。最后调用Analysis对所有负载数据进行整合分析,最终得出结论并生成报告。
Load Generator就是生成负载的负载生成器,通过VuGen录制生成的用户脚本,最终都会在Load Generator上运行并生成负载。由于生成的负载一般数量比较大,通过一台电脑进行负载往往力不从心(常见配置下一台Load Generator大概能模拟200--500个虚拟用户),通过一台Controller调用多台Load Generator即可模拟成千上万虚拟用户对系统的负载过程。
在调用Load Generator 时注意不要让生成负载成为瓶颈,导致性能测试结论的偏差。
三、HTTP的请求应答格式:
HTTP请求主要由三个部分构成,分别是:
方法- URI - 协议/版本 (如:GET /kaixin.asp HTTP/1.1 ,其中GET就是请求方法;/kaixin.asp表示请求的 URI;HTTP/1.1是协议和具体的版本。在互联网应用中,最常用的请求方法是GET和POST)
请求头 包含许多有关客户端环境和请求正文的有用信息。具体说明所能接受的内容类型,也就是能够在客户浏览器中直接打开的格式。
请求正文
Host 是指请求的主机地址。请求头和请求正文之间是一个空行(只有CRLF符号的行),这个行非常重要,它表示请求头已经结束,接下来的是请求正文。一些介绍网络编程的书籍把这个CRLF视为HTTP请求的第四个组成部分。
HTTP应答也主要由三个部分构成,分别是:
协议 - 状态代码 - 描述
应答头
应答正文
四、使用HttpWatch 工具对请求进行捕获
通过协议的性能测试首先要解决的问题就是协议捕捉,只有在协议捕捉之后才能实现用户行为的模拟,可以借助第三方工具来实现协议的捕获并进行分析。
HttpWatch 是由英国Simtec Limited 公司开发并可以在IE 或者 Firefox 上安装并监控录制所有Http 请求的插件。成功安装后,IE的工具栏中会新增一个HttpWatch的快捷按钮。单击该按钮后,在IE 的窗口中会多出一个HttpWatch主窗口,上半块是请求录制窗口,下半块是明细内容。
首先单击左上角的Record按钮,接着在IE 中进行网页访问操作(例如在地址栏中输入一个地址),随着操作的进行,每个操作所产生的HTTP请求会被完全地录制出来。
简单介绍一下HttpWatch的几个主要功能,当选中一个具体的HTTP请求时,界面下方会出现以下几个标签:
Stream
这里有完整的HTTP请求和应答记录,可以在左边看到浏览器所发送出去的访问google.cn的请求,而右边是服务器的返回结果。
Content
Content表示正文内容,这里看到的和你在IE 窗口中看到的源代码的效果是相同的,就是正文还原后的内容,这里还提供了压缩比的计算。
POST Data
如果某请求使用POST方法提交数据,那么在这个标签中会显示所有提交内容的属性名和属性值,我们即可了解数据提交的元素及其对应值。
Time Chart
这个功能非常强大,通过Time Chart可以了解整个HTTP请求从发出到服务器返回中间所消耗的时间,比如连接到服务器消耗了多少时间、请求发送、等待服务器响应、服务器返回内容等,通过 Time Chart可以进行前端的性能分析。
五、协议回放的原理
通过录制我们得到了用户行为的协议正文,但这还是无法实现性能测试,接下来需要完成协议回放的过程。服务器无法区分真实用户操作客户端发出的请求和通过工具模拟出的手工请求。这里推荐一个工具--IBM Rational HTTP Request Editor,这个工具是在IBM的Appscan安全工具中免费提供的。
使用这个工具可以手工编写一个HTTP请求来模拟用户进行网页操作,并且在RESPONSE中得到服务器的返回。例如在HOST栏中输入 www.baidu.com ,然后单击Update From Parsed。
模拟一个用户访问Baidu 首页的请求。接着单击Send Raw Request 按钮发送请求,稍等片刻就可以在Response标签中看到服务器的返回了。
对于服务器来说,它并不知道也不在乎你是否真的使用浏览器在访问页面,它只在乎你发送的请求是否符合规范。如果符合了,那么它就返回对应的内容。如果同时开启多个这样的HTTP Request Editor,并且使用进程或者线程的方式来进行管理,就实现了性能测试中最重要的行为模拟和性能负载。
通过录制用户的行为来生成一个规范的HTTP客户请求,接着通过自身回放该HTTP请求欺骗服务器,从而实现对被测试服务器进行负载,而服务器对请求的返回也会被LoadRunner捕获下来,从而实现关联检查点等操作。
六、LoadRunner 安装
在WINDOWS下安装LoadRunner
在安装LoadRunner 之前,需要安装以下组件:
1. MSI 3.1 (Windows Installer)
2. .NET Framework 2.0
3. WSE 2.0 SP3 for Microsoft.NET
4. WSE 3.0 for Microsoft.NET
5. MSXML 6.0 Parser
6. VC++2005 Redistributable
7. Microsoft Data Access Components 2.8 SP1
在光盘的Irunner\CHS\prerequisites 目录下可以找到对应的安装包。
七、LoadRunner 性能测试操作流程预览
简单的性能测试流程:
用户行为录制(选择协议、录制用户交互、编辑脚本)-----> 生成场景负载(设计场景、监控)-----> 获得性能测试数据(定位性能瓶颈、生成测试报告) |
|