本书在介绍软件性能测试概念的基础上,结合实际测试案例的剖析,重点讲解了LoadRunner工具的使用技巧和实战技术。
本书是为从事软件性能测试和正在使用或学习LoadRunner工具的人员量身打造的专业书籍,针对测试人员经常遇到的难题进行答疑解惑。结合实际测试案例进行剖析,重点讲解应用LoadRunner工具的过程,实例讲解实战的经验体会、应用中遇到的问题及相应的解决方法等。
全书是按照概念解析、实践应用、问题解答的顺序来编写,不仅仅在实践和问题解答部分提供了很多真实、详细的案例,在进行概念解析的同时也给出了很多非常重要的实例,这对于读者深入理解相关概念和少走弯路,尽快融入测试实战起到很大的帮助。
全书共分为三4个部分。在:“基础篇”中,介绍了使用LoadRunner工具进行软件性能测试的基本应用,如性能软件测试的相关概念、分类、测试与开发的关系、测试流程、测试自动化的意义以及典型的性能测试场景和、工具的安装、性能测试的基础概念、脚本的调试技术、以多个B/S、C/S的实例讲解了多个协议、事务、集合点、检查点、思考时间、关联、IP欺骗、多机联合测试等技术技术在工具中应用。在“实战篇”中,则分别对数据库、邮件协议、FTP协议以及LoadRunner .NET 插件等在开发环境的应用进行了详细的的讲解,同时提供几十个大家经常问道的问题进行详细的讲解。在“项目实战提高篇”中,讲解了以实现一个完整的GISIS案例测试为内容案例,把前面的知识整体贯穿起来,同时培养读者具有具有大型项目测试的能力和经验。附录部分,最后,根据作者近十年的工作经验总结出做好提供了软件测试工作需要了解的必备知识、性能测试策略以及中经常用到的非常重要的模板文件和规范化的软件测试相关文档。
本书图文并茂,通俗易懂,适合性能测试设计人员、性能测试开发人员、性能测试分析人员、项目经理、测试组长参考学习。
目 录
第1部分 基础篇
第1章 基本概念1
1.1 性能测试的基本概念2
1.1.1 性能测试的概念及其分类2
1.1.2 典型的性能测试场景2
1.1.3 性能测试工具的引入3
1.2 LoadRunner及样例程序安装3
1.2.1 Windows 版本的安装4
1.2.2 许可协议的应用5
1.2.3 LoadRunner工具样例程序的安装5
1.2.4 其他样例程序的安装7
1.3 运行机制和主要组成部分9
1.4 LoadRunner相关概念解析10
1.4.1 集合点10
1.4.2 事务12
1.4.3 检查点13
1.4.4 思考时间15
第2章 LoadRunner基本使用17
2.1 协议的选择18
2.1.1 Vuser类型18
2.1.2 协议选择18
2.2 脚本的创建过程19
2.2.1 协议理解的误区21
2.2.2 B/S架构应用程序脚本的实例应用21
2.2.3 C/S架构应用程序脚本的实例应用25
2.3 脚本的参数化27
2.3.1 参数化的方法及其技巧28
2.3.2 数据分配方法29
2.3.3 数据更新方式30
2.3.4 实例讲解数据分配和数据更新方式的应用30
2.3.5 详解表数据参数类型31
2.3.6 内部数据参数类型33
2.4 负载设置与执行过程37
2.4.1 负载运行机制介绍37
2.4.2 场景设置描述37
2.4.3 负载选项设置详解41
2.5 执行结果分析过程43
2.5.1 合并图的应用45
2.5.2 关联图的应用45
2.5.3 分析相关选项设置46
2.6 实例讲解脚本的录制、场景设计、结果分析过程49
2.6.1 LoadRunner测试过程模型49
2.6.2 实例讲解Web应用程序的应用49
2.6.3 脚本处理部分51
2.6.4 负载处理部分61
2.6.5 结果分析部分64
2.6.6 系统性能改进意见69
2.7 调试技术69
2.7.1 断点设置69
2.7.2 单步跟踪70
2.7.3 日志输出70
第3章 LoadRunner操作技巧73
3.1 关联的应用74
3.1.1 什么是关联74
3.1.2 如何做关联75
3.1.3 关联函数详解80
3.1.4 实例讲解简单关联的应用82
3.1.5 实例讲解较复杂关联的应用85
3.2 动态链接库函数的调用89
3.3 特殊函数应用注意事项90
3.4 自定义函数应用94
3.4.1 自定义函数仅应用于本脚本的实例94
3.4.2 自定义函数的复用实例97
3.5 IP欺骗及其多机联合测试的应用98
3.5.1 详解IP Wizard配置与应用98
3.5.2 多机联合测试和IP欺骗注意事项101
第2部分 实战篇
第4章 不同协议应用实例讲解105
4.1 一种特殊的数据库性能测试方法106
4.1.1 数据库集群项目背景介绍106
4.1.2 批处理方式解决方案108
4.2 手工编写FTP脚本109
4.2.1 手工编写脚本的策略109
4.2.2 实例讲解手工编写FTP脚本109
4.2.3 脚本编写注意事项111
4.3 Foxmail邮件的发送脚本112
4.4 详解.NET 2003插件在开发环境中的应用115
第5章 LoadRunner工具疑难问题解决方案121
5.1 如何突破参数的百条显示限制122
5.2 如何突破Controller可用脚本五十条限制123
5.3 如何解决数据库查询结果过大,导致录制失败124
5.4 如何调整经常用到相关协议脚本模板124
5.5 如何将Connect()中的密文改为明文126
5.6 如何添加并运用附加变量128
5.7 如何解决脚本中的乱码问题130
5.8 如何在录制时加入自定义标头131
5.9 线程和进程运行方式有何不同132
5.10 如何实现脚本分步录制135
5.11 如何在脚本中应用常量和数组136
5.12 VuGen中支持哪些步骤类型137
5.13 如何处理ASP.NET中的ViewState138
5.14 如何理解Return的返回值143
5.15 如何解决负载均衡将压力作用到一台机器144
5.16 如何对Apache服务器上的资源使用情况监控146
5.17 如何在脚本中加入DOS命令147
5.18 如何下载并保存文件到本地148
5.19 如何理解常用图表的含义151
5.20 基于目标和手动场景测试有何联系和不同153
5.21 如何在命令行下启动Controller156
5.22 如何解决由于设置引起的运行失败问题157
5.23 如何实现对服务器系统资源监控器158
5.24 如何实现对数据服务器的监控162
5.25 如何实现对Web应用程序服务器资源监控165
5.26 如何在Analysis图表中添加分析注释167
5.27 如何确定登录达到响应时间为3秒的指标170
5.28 如何使用自动关联对测试结果进行分析172
5.29 如何根据分析结果判断性能有所改善175
5.30 如何对图表进行合并,定位系统瓶颈176
5.31 如何应用Java Vuser验证算法的执行效率178
5.32 如何用程序控制网站的访问次数181
5.33 几种不同超时的处理方法186
5.34 如何才能参数化日期类型数据到脚本中187
5.35 如何自定义请求,并判断返回数据的正确性192
5.36 LoadRunner如何运行WinRunner脚本193
5.37 LoadRunner如何利用已有文本数据197
第3部分 提高篇
第6章 其他测试必备知识199
6.1 HTTP协议基础知识200
6.2 AT命令和计划的运用204
6.3 Vmware虚拟机的使用206
6.3.1 虚拟机的概念206
6.3.2 为什么要使用虚拟机206
6.3.3 Vmware简介207
6.3.4 Vmware使用技巧212
6.3.5 Vmware建议212
6.4 HTTP 状态代码212
6.5 相关计数器指标概述215
6.5.1 Memory相关215
6.5.2 Processor 相关216
6.5.3 网络吞吐量以及带宽217
6.5.4 磁盘相关217
6.5.5 Web 应用程序218
6.5.6 IIS218
6.5.7 SQL Server218
第7章 性能测试策略221
7.1 性能测试在企业中的应用——量体裁衣222
7.1.1 性能测试介绍222
7.1.2 性能测试在软件企业的应用223
7.1.3 总结225
7.2 开发环境下的性能测试225
7.2.1 负库存现象226
7.2.2 插件的应用226
7.2.3 总结230
7.3 性能测试场景的选择及其用例设计、执行策略231
7.3.1 性能测试用例的设计方法231
7.3.2 实例讲解性能测试用例的设计233
7.3.3 性能测试执行236
7.3.4 性能测试的分析237
7.3.5 系统的调优237
7.4 性能测试常用计算公式汇总238
7.4.1 吞吐量计算公式238
7.4.2 并发数量计算公式239
7.4.3 思考时间计算公式240
第8章 系统性能测试综合案例243
8.1 GIS系统性能测试案例244
8.1.1 项目性能测试需求的分析244
8.1.2 确定性能测试考察指标245
8.1.3 模型建立247
8.1.4 集合点的说明249
8.1.5 性能测试用例设计251
8.1.6 工具的引入253
8.1.7 脚本代码253
8.1.8 场景设计255
8.1.9 测试环境256
8.1.10 场景执行257
8.2 性能结果分析258
第9章 测试面试试题精解269
9.1 性能测试人员面试经典技术问题270
9.2 LoadRunner英文性能测试的面试题目270
9.3 经常被问道的智力面试题目272
9.3.1 百枚金币问题272
9.3.2 污染药丸问题272
9.3.3 三人住宿问题273
9.3.4 小鸟飞行距离问题273
9.3.5 烧香问题273
9.3.6 分金条问题274
9.3.7 过桥问题274
9.3.8 三个灯泡问题274
9.4 综合测试试题275
9.5 找测试工作的策略275
9.5.1 找工作前您需要做些什么276
9.5.2 面试时您该做些什么279
9.5.3 面试后您该做的事情282
附录A 测试计划样例模板283
附录B 测试设计说明模板289
附录C 测试用例模板293
附录D 测试项传递报告297
附录E 测试日志样例模板299
附录F 测试事件报告模板301
附录G 测试总结样例模板303
附录H LoadRunner常用函数307
参考文献313
前 言
随着国内软件企业的日益成熟和规范,作为软件质量控制中的重要一环,性能测试已经越来越受到软件开发商和用户的重视,成为软件测试的重中之重。作为软件测试行业的从业人员,掌握并灵活应用一个主流的性能测试工具是其必备技能之一。LoadRunner就是使用最广泛的工具之一,它以其界面友好、方便易用、支持协议众多、功能强大等优势,吸引了重多用户将其应用于软件产品测试当中。
本书是为从事软件性能测试和学习使用LoadRunner 工具的人员编写的。针对测试人员经常遇到的难题进行答疑解惑,并结合实际测试案例的剖析,重点讲解LoadRunner 工具在软件性能测试中的应用。
全书分为基础篇、实战篇、提高篇及附录4个部分。
“基础篇”包括本书的第1章至第3章的内容。
第1章介绍了典型的性能测试场景、性能测试的概念以及分类。详细介绍了LoadRunner及其样例程序的安装过程,重点介绍了LoadRunner的运行机制及其组成部分。同时结合案例场景,深入浅出地解释了LoadRunner中集合点、事务、检查点和思考时间等重要概念。
第2章介绍了协议的类型、协议理解误区和协议选择的方法,同时分别结合C/S和B/S两种构架的应用实例,详细讲解了协议的选择和脚本的录制,详细介绍了参数化的方法及其应用技巧,以及数据分配方式和更新方法。另外,以一个Web样例程序作为实例,将LoadRunner工具的VuGen 、Controller和Analysis 三者有机地结合起来,深入讲解了脚本录制、负载(场景设计、执行)、结果分析等实战技巧,对脚本的断点设置、单步跟踪和日志输出等调试技术也进行了详细讲解。最后,剖析了LoadRunner内部结构,并对主要文件进行介绍。
第3章介绍了关联概念,结合两个实例详细讲解了简单和复杂关联的应用。实例讲解用户自定义动态链接库和系统动态链接库的应用,并对系统函数示例、自定义函数及其自定义函数复用进行了详细介绍,最后,对IP Wizard和多机联合负载测试技术进行了详细描述。
“实战篇”包括本书的第4章至第5章的内容。
第4章详细讲解了测试人员最关心的数据库、邮件协议(SMTP)、文件传输协议(FTP)等脚本的开发。同时还为.NET开发和测试人员提供了另一种面向代码进行性能测试的手段,详细介绍了.NET插件的应用。
第5章结合作者工作经验,以及学员和网上论坛经常提出的问题,给出了关于LoadRunner设置、工具使用和结果分析等方面问题的解决方案,旨在起到举一反三和提高读者使用LoadRunner操作技巧的作用。
“提高篇”包括本书的第6章至第9章的内容。
第6章详细介绍了HTTP协议基础知识,AT命令和计划知识,HTTP状态代码含义以及内存、处理器、磁盘和数据库等计数器指标。这些知识对测试人员从事性能测试工作都是必备的知识,通过学习这些内容能够加深读者理解性能测试的内涵,并有利于提高工作效率。
第7章介绍了如何结合软件企业的特点量体裁衣定制性能测试策略,开发人员如何和测试人员协同做好基于.NET集成开发环境的性能测试。并详细介绍了有关性能测试场景、用例设计、执行策略和系统调优的内容。
第8章以实战测试一个完整的GIS项目为线索,全面介绍了LoadRunner在性能测试中的应用过程。具体包括模型建立、性能测试用例设计、工具的引入、脚本代码的编写、场景设计、性能结果分析等重要环节,培养读者独立进行项目测试的能力。
第9章通过剖析典型的测试面试题选,为软件测试从业人员提供就业指导和面试策略。
附录部分,提供一些测试中经常用到的非常重要的模板文件,例如测试计划、测试总结、测试日志、功能测试用例及性能测试用例等模板样例文档。
阅读建议
本书按照循序渐进的思路安排内容,无论读者是有经验的性能测试人员、开发人员、系统管理人员还是刚参加工作的测试人员,建议最好按照目录顺序进行阅读。因为全书是按照概念解析、实践应用、问题解答的顺序来编写的,不仅仅在实践和问题解答部分提供了很多真实、详细的案例,在进行概念解析的同时也提供了很多非常重要的经验,这对于读者深入理解相关概念和少走弯路都是不无裨益的。当然,读者也可以依据自己的需要选择关心的内容进行阅读。
作者提供了和本书对应的应用样例程序和脚本代码(下载网址:www.3atesting.com)供读者参考。希望读者在阅读本书的同时,能够边看代码边实践,深入理解脚本代码,这样可以缩短学习和掌握LoadRunner使用的周期,尽快将LoadRunner应用于实际性能测试工作中。
本书约定
本书遵循如下约定。
符号和术语 含 义 示 例
> 用于表示菜单项的层次结构 如:菜单项【Edit】>【Find】
“” 表示使用者键入双引号中的文字或引用的系统界面中的术语/表达式 如:在“Update value on”列表中选择一个数据更新方式
【】 代表屏幕对象名(菜单名或按钮) 如:菜单项【Edit】>【Find】
单击【OK】按钮
【重点提示】 关键知识点总结内容 1.事务必须是成对出现,即一个事务有事务开始,必然要求也有事务结束
2.……
谁适合阅读本书
本书是为对性能测试工具LoadRunner感兴趣的测试工程师、测试经理、软件开发工程师或者是希望了解LoadRunner工具的其他人员编写的,本书特别适合以下类型的读者:
希望学习、使用性能测试工具LoadRunner的初级、中级、高级测试人员;
希望了解性能测试工具LoadRunner的初级、中级、高级程序员,项目主管,项目经理;
希望解决LoadRunner应用过程中遇到性能测试问题的设计、执行、分析等相关人员;
测试组长、测试经理、质量保证工程师、软件过程改进人员。
本书作者
作者毕业于北京大学计算机专业,先后从事高级程序员、高级系统性能分析师、高级测试主管和高级测试经理等职位。拥有多年的软件开发和软件测试实践经验。尤其在自动化测试工具应用、性能测试和单元测试等方面擅长。曾为多家著名软件公司提供软件测试理论,软件性能测试,性能测试工具LoadRunner ,功能测试工具QuickTest Professional、WinRunner、JMeter等方面的指导和培训工作。
网上答疑
在本书写作过程中,本人已尽力而为,但由于时间仓促,水平有限,书中难免有错误之处,如读者在阅读过程中,发现本书存有错误或不妥之处,欢迎与作者联系,以便作者及时更正。本书的勘误、更新信息、答疑信息都可以从作者的博客—测试者家园(http://www. cnblogs.com/tester2test)上直接获得,代码下载网址为www.3atesting.com。读者有疑问,可以访问作者的博客直接留言,还可以通过测试人员交流平台——测试者家园论坛(http://groups.google.com/ group/tester2test)同作者进行交流和沟通。也可以和本书编辑联系,联系邮箱为zhangtao@ptpress.com.cn。
致谢
在本书编写过程中,很多测试同行提供了宝贵建议。我的学员们和网友提供了很多写作素材和资料,特别是好友高楼(51testing的Zee版主)为本书的撰写提供宝贵的建议,同时撰写了GIS性能测试案例章节。同时参与编写的还有于来河、岳玉清、高亚南、于跃、张书铭、岳玉花、高桂兰、武志新、唐君、于家、藤家庄、唐超等。我的好朋友汉英花费了很多宝贵时间认真阅读该书,并给予了文字上的修订。在这里向他们表示衷心感谢。
编者
2008年3月
无封面