本书主要为LoadRunner 使用人员精通脚本开发,培养LoadRunner 脚本开发专家而创作,LoadRunner使用人员通过系统而全面的学习书中的脚本开发知识与技巧,完全可以胜任各种颇具挑战的性能测试脚本开发工作,并成为这一领域的专家或高手。
全书共分10 章。第1 章为基础部分,系统讲解LoadRunner 虚拟用户开发的基础知识,如C 语言知识、
常用虚拟用户脚本函数、参数化等;第2 到第4 章介绍常用的虚拟用户,深入讨论了Web 虚拟用户、Web Service 虚拟用户、Sockets 虚拟用户的开发方法;第5 章到第7 章深入探讨了如何借助主流开发语言来增强或开发虚拟用户脚本,主要讲解通过Visual C++开发动态链接库、开发.NET 虚拟用户、开发Java 虚拟用户等知识;第8 章到第9 章为扩展内容,重点介绍了Tuxedo 协议虚拟用户开发、Mobile APP 虚拟用户方法;第10 章是一个脚本开发案例,深入探讨了一个UDP 网络应用的设计与实现过程及其虚拟用户脚本的开发方法,带领读者完成一项颇具挑战的虚拟用户开发工作。
资深测试专家十年磨一剑作品,各种LoadRunner脚本开发技术和方法娓娓道来,宝贵系统测试经验重磅呈现,助你成为顶级的系统性能测试高手。
丛书总序
近年来随着新兴技术的层出不穷和新业务场景的不断涌现,银行信息系统开发、测试、
运维的压力在持续上升。中国民生银行信息科技的广大员工坚持吃苦耐劳、勤于钻研、敢想
敢干、精益求精,持续提升软件开发能力和软件质量管理水平,完善测试管理体系,成功上
线了新一代核心系统、手机银行、直销银行等一系列业内领先的信息系统,为客户提供了
稳定、高效、便捷、易用的金融服务,强有力地支撑了民生银行业务的快速发展。在这个
过程中,测试条线以“科学管理、精益求精、服务民生、打动客户”作为管理目标,以“团
结互助、积极向上、勤学肯干、规范有效”作为工作准则,积极推进软件质量管理工作,
大胆探索质量管理技术和理论,以卓有成效的工作保障了全行信息系统的高质量交付,获
得了同行业的认可。绍英、志龙、成姬等就是测试条线涌现出的优秀代表,他们具有丰富
的测试工作经验,善于理论联系实际,乐于将多年的工作精华分享给大家,让我非常感动。
绍英带领团队策划出版的这套丛书,致力于推动“软件亚健康”问题的解决,探讨了
大型IT 系统性能测试之道,这个选题对于银行IT 系统测试乃至对于中国软件产业发展都
具有十分重要的现实意义。虽然国内软件测试方面的图书不少,但深入研究大型IT 系统性
能测试理论的并不多,尤其是探索银行、电信等领域大型IT 系统测试的作品则更少。本书
的作者们拥有银行、电信、互联网、电子政务等多个行业的测试经验,尤其在中国民生银
行新一代核心系统的建设期间参与了近百个项目的性能测试,积累了大量的经验。书中详
细描述了从银行、电信等大型项目实战中总结出的性能测试规划与实施方案,为各位IT 同
仁在实际项目中管理和实施性能测试提供了有效的指导。
预祝丛书早日出版,帮助大家全力去解决软件亚健康问题!也希望国内有更多的人来
关注软件性能测试,探讨解决软件亚健康问题的方法!
牛新庄
中国民生银行信息科技部总经理
2016-03-16
推荐序
再次为同一本书写序,这还是第一次,说明我和作者——绍英的感情深啊!当然,把
我们联系在一起的不仅仅是一本书,而是“软件测试”这个行业。绍英的新书——
《LoadRunner 虚拟用户高级开发指南》,距离其第一版《LoadRunner 虚拟用户开发指南》出
版的时间,已经过去七年了。七年的时间不算短,艰苦卓绝的抗日战争也就打了八年。正
如作者自己所说,在过去七年,绍英带领他的性能测试团队做了100 多个系统的性能测试,
厚积薄发,如浴火重生一般,从理论水平到解决问题的能力,都上了N 个台阶。就是在这
样一个背景下,作者和几个同事完成此书,分享其所获,非常难得。这也不是几个人的经
验,而是一支一流的性能与自动化测试团队的经验和智慧的结晶,足见本书所蕴含的价值。
认准一件事,一做就是13 年,在如今充满诱惑、比较浮躁的年代,实属不容易。绍英
是在2003 年进入到性能测试领域,一进来便一发不可收拾,一干就是13 年。他也乐于分
享,且持续有分享,从他的第一本书《Web 性能测试实战》于2006 年出版以来,先后已出
版了4 本性能测试的书,这是即将出版的第5 本性能测试方面的专业图书,可见作者的极
为专注之精神。这本书也是作者正在筹划的《陈绍英作品系列》图书中的一本,承前启后,
也是这一领域高度专业的图书。这样一本书,值得我们测试人收藏。
言归正传,说说这本新书。它目的是帮助读者成为性能测试的一流高手。要成为一流
高手,能熟练运用工具是远远不够的,必须具备良好的工具或脚本开发能力,这其中包括
熟悉各种通信协议(如HTTP、Socket/SSL、TCP/UDP 等),熟练运用编程语言(如Python、
Java、C#/C++等)。通过本书的学习,的确能达到这种目的。大家知道,性能测试工具
通过虚拟用户产生负载,实际上就是通过向服务器发送符合某种协议的数据包来达到加载
效果的。
本书覆盖了Web/Web Service、.NET、Java、Tuxedo、Mobile App 等常用的虚拟用户,
自然涉及针对上述协议进行脚本开发的相关技术,包括请求模式、基于端口映射的代理方
式、参数化处理和DLL 的调用等,把这些技术学到手,性能测试工作中开发的技术障碍就
几乎不存在了。本书实践性强、案例和代码都极其丰富,提倡做中学,用到什么就讲什么,
循序渐进,使读者轻轻松松地就能学会虚拟用户高级开发所需的技能。
希望本书成为LoadRunner 工具方面的一本经典的书,也成为这方面的性能测试工程师
身边的红宝书,绍英写作团队为此的辛勤劳动也就物有所值。当然,我们会更期待他未来
的作品。
朱少民
2016 年6 月于上海
前 言
在刚刚出版的作品《大型IT 系统性能测试入门经典》中,我们提出了“亚健康软件”
的概念,并提出了治疗“亚健康软件”的良药——全面性能测试方案。在性能测试工作中
实施全面性能测试方案,无疑离不开强大的性能测试工具,而LoadRunner 几乎成了性能测
试的必备工具。
在实际工作中,很多使用LoadRunner 的测试人员开发Vuser 脚本时总会遇到这样或那
样的问题,影响到性能测试工作的正常进展。而对于性能测试人员而言,Vuser 脚本开发技
能是一项基本功,需要在工作中长期修炼才能学有所成。
本书主要为了LoadRunner 使用人员精通脚本开发而创作,目的是分享作者们的经验,
使大家在更短的时间内成为LoadRunner 的高手。
创作特色
本书从构思之初到创作完成,一直把“如何使LoadRunner 性能测试人员成为Vuser 脚
本开发高手”作为主要目标。因此本书既注重实战经验的推广,又注重开发技能的培养。
在内容设计上,本书精选了最常使用的LoadRunner 协议作为研究对象,结合相关的开发知
识深度讲解如何学习各类Vuser 脚本开发,从而达到触类旁通的学习效果。
本书在创作上具有以下的特色:
?? 实践性强:本书讲解的知识大多数来源于作者们的一线工作经验,在讲解方式上
非常注重从实际应用的角度进行探讨与分析,并提供大量的实际案例。例如,对
于API 函数绝对不是仅仅翻译帮助文档中的相关内容,而是实际中用到什么就重
点讲解什么,而将查阅帮助文档这类基础工作留给读者自己来完成。通过这种训
练方式,读者才能真正提高自己的脚本开发能力。
?? Vuser 类型全面而典型:本书精选HTTP、Web Service、Socket、.NET、Java、Tuxedo、
移动APP 相关的Vuser 作为典型讲解对象,同时结合C 语言、DLL、C++、C#、
面向对象等知识,基本覆盖到了各种架构的Vuser 开发知识。掌握这些技能后,
读者完全有能力去开发各类LoadRunner 脚本。
?? 丰富的实战案例:本书提供的案例非常丰富——既有一个个实用的小案例,又有
内容全面的大案例,这些案例可以直接迁移到自己的测试环境中来使用。例如第
3 章的代理录制方式,很好地解决了一些客户端不能录制脚本的问题。读者可以
按照这种方式开发移动APP、嵌入式平台客户端、Linux 客户端,以及一些C/S
架构应用程序客户端的Vuser 脚本。
?? 大量实用的代码:代码丰富是本书非常突出的一大特点。本书既提供了大量Vuser
开发过程中经常使用到的代码——这些代码可以在实际Vuser 开发过程中直接使
用,又提供了一些开发项目的源代码——使得读者可以深入了解一些产品的开发
原理与实现过程。
?? 广度与深度适中:本书范围非常广泛,既讲解了VuGen 相关的Vuser 开发知识,
又讲解了C、C++、C#、.NET、Java 等开发语言,以及相关IDE 的使用知识。在
内容深度上,本书尽量选择难度适中的例子,通过循序渐进的学习,使读者逐步
掌握开发要领。
学习建议
对于开发基础薄弱的初学者,学习本书时可以分为两个阶段:
第一阶段:建立信心,打好基础。很多测试人员不是没有能力开发程序,而是畏惧自
己动手去写程序。正是因为没有足够的信心,导致很多测试人员对程序开发这座大山望而
却步,一直从事相对容易的功能测试工作。因此,对于想从事测试开发的工程师而言,首
先应该突破心理上的畏惧,“勇敢”地挑战这一工作。
本阶段的具体做法就是动手调试书中的每一个小程序,特别强调的是千万别“只看不
练”。看懂了不一定能自己写出来,写出来也不一定在自己的环境中运行正确。只有自己动
手,才能为后续的学习打好基础。本书提供了大量的案例,只有通过学习与练习,才能实
现建立信心、打好基础的目标。
在练习这些小例子的过程中,还应该注意查看VuGen 的函数帮助文档。通过学习帮助
文档的内容,能达到举一反三的学习效果,从而做到活学活用。
第二阶段:巩固基础,提高技能。在写出小程序后,接下来的目标是形成一定的设计能力。这一阶段的主要任务是完成复杂案例程序的开发。对于复杂的案例程序,尽量不要
完全照搬书中的代码,而是根据相关产品的功能,结合书中产品的设计思路,自己独立来
完成代码——这是一个创造的过程。
例如,对于第6 章的示例程序CommandRunner,可以自己去查阅.NET 中相关Socket
知识,完成其功能开发,最后再完成Vuser 脚本的开发工作。或者可以先参考各个类的设
计思路,然后自己实现具体的功能设计和程序开发工作。
这一阶段还应该做的就是博览群书——LoadRunner 涉及的开发知识很多,因此需要借
鉴大量的相关图书资料来提高自己,这也是成为高手的前提条件。
对于有一定经验的读者,可以直接开始进行第二阶段的学习
下面具体介绍各章的学习方法:
第1 章 虚拟用户开发基础。本章是全书的基础,掌握好本章的内容才能更好地学习
后续内容。学习本章时,要重点掌握C 语言与Vuser 脚本、Vuser 开发常用函数、参数化功
能详解三部分内容。Vuser 开发常用函数部分重点学习字符串处理函数、消息处理函数部分。
学习时应该认真调试相关函数,并查阅函数在VuGen 函数帮助文档中的相关内容。
第2 章 深入解析Web 虚拟用户。本章重点学习HTTP 协议基础、检查点、关联的相
关知识,尤其是一些Web 虚拟用户常用函数的用法。本章是开发Web 虚拟用户的基础,建
议读者学习时积极练习相关知识点的应用。
第3 章 深入解析Web Services 虚拟用户。本章重点学习Web Service 脚本的三种开
发方式,每种开发方法都要进行足够的练习。在实际工作中,这三种脚本开发方法通常需
要逐一进行尝试,以确定哪种更适合当前系统的脚本开发,因此需要全部掌握。
第4 章 深入解析Socket 虚拟用户。对于本章内容的学习,应该首先掌握基本Socket
虚拟用户函数的用法,这是开发Socket 协议Vuser 的基础;其次应该深入掌握基于端口映
射的代理方式录制脚本方法,对于很多不能直接录制脚本的应用,例如移动APP、基于
Linux/Unix 的客户端应用,通常采用这种方式来开发虚拟用户脚本。
第5 章 深入解析动态链接库技术。在Visual C++中开发DLL,以及DLL 的高级应
用一直是学习LoadRunner 脚本开发的难点之一,本章循序渐进地讲解了这部分知识。
读者学习时按照书中的步骤进行演练即可,如果有兴趣可以查阅相关书籍来掌握更多的
知识。
第6 章 深入开发.NET 虚拟用户。本章的重点学习内容是.NET 虚拟用户常用程序、C/S 应用开发与测试案例、视频播放性能测试案例等三部分。建议读者将常用程序部分建
议看懂后,自己独立实现其功能——只有这样才可以得到很好的程序开发训练。同理,
C/S 案例部分学习完成后,一定要自己开发出CommandRunner,这样才能建立系统的面
向对象意识,设计出好的脚本程序。视频播放案例部分主要是学习解决问题的思路,读
懂即可。
第7 章 深入开发Java 虚拟用户。本章主要讲解Java 虚拟用户的开发知识,重点内
容是Java 虚拟用户的开发基础知识,以及如何调用开发人员已经实现的API。如果读者
对这部分内容特别感兴趣,可以独立练习本节的案例,也可以去看一些专业的Java 开发
作品。
第8 章 Tuxedo 协议虚拟用户开发。本章重点学习Tuxedo 协议虚拟用户开发的基础
知识,掌握Tuxedo 这一重要交易中间件的Vuser 脚本开发方法。学习过程中,首先需要动
手掌握Tuxedo 域环境的搭建方法,然后练习Tuxedo 两种缓冲区脚本的开发方法。
第9 章 深入开发Mobile APP 虚拟用户。本章重点学习Mobile APP 的Vuser 脚本开
发方法。读者需要掌握模拟器和代理两种方式来开发Mobile APP 的Vuser 脚本。在实际应
用中,这两种开发方式都会用到,因此全部需要认真掌握。
第10 章 网络通信虚拟用户开发案例。本章主要为了扩充知识面而编写,重点讲解了
一个基于UDP 协议应用程序的Vuser 脚本开发方法。本章既讲解了程序客户端与服务器的
实现过程,又讲解了Vuser 的开发方法,融合了前面各章节的诸多内容。读者学习时可以
主动查阅相关资料来扩充自己的知识体系。如果对案例程序比较有兴趣,可以进行更深入
的研究与开发。
读者对象
如果想成为LoadRunner 高手,本书知识是必不可少的修炼内容。本书读者可以细分
如下:
?? 《大型IT 系统性能测试入门经典》《LoadRunner 性能测试指南》等《陈绍英作品
系列》的读者:可以继续深入学习LoadRunner 高级开发知识,以解决实际工作中
遇到的各种Vuser 脚本开发问题;
?? 受各种Vuser 开发问题困扰的测试工程师:很多Vuser 脚本开发的问题都可以在
本书中找到答案,甚至可以通过学习本书独辟蹊径来解决自己遇到的问题;
?? 希望提高Vuser 开发技能的测试工程师:学习本书可以大大提高测试工程师的Vuser 脚本开发技能,有了本书就不必再四处搜寻资料或者去论坛上学习;
?? 有LoadRunner 经验的开发/测试工程师:本书中很多高级内容仍然值得有经验的
工程师来学习,可以帮助其开阔眼界,提高开发方面的技能;
?? 具备一定开发基础的开发/测试工程师:即使没有LoadRunner 使用经验,仍然可
以通过本书学习LoadRunner 虚拟用户开发。有了开发基础可以大大加快本书的学
习速度;
?? 准备成为性能测试工程师的技术人员:希望向性能测试领域发展的测试工程师,
可以将本书与《LoadRunner 性能测试实战》一书同步来学习。
关于本书
全书共分为10 章。第1,2,4,5,6,7 章主要由陈绍英创作完成,第3,8,9,11
章主要由周志龙创作完成,第10 章主要由冯艳硕创作完成。
各章主要内容如下:
第1 章 虚拟用户开发基础。本章首先介绍了Vuser 的一些背景知识,接着深入探讨
了Vuser 开发的必备知识:C 语言基础、Vuser 开发常用函数、参数化。C 语言部分主要介
绍了数组、指针、字符串、printf 输出函数、分支与循环语句、Vuser 开发中常用C 函数、
文件访问等内容;Vuser 开发常用函数主要介绍了用户事务函数、字符串处理函数、消息处
理函数、脚本信息函数、错误处理函数等内容;参数化部分深入探讨了参数化基础知识、
文件类型参数等内容,并结合实际案例讲解了参数化的具体应用。
第2 章 深入解析Web 虚拟用户。本章首先讲解了HTTP 协议基础、Cookie 应用等基
础知识,接着讲解了检查点、关联等常用Vuser 开发技术;最后讲解了Web 类脚本开发常
用函数的用法以及常见问题的处理方式。
第3 章 深入解析Web Services 虚拟用户。本章重点讲解了Web Service 脚本的三种
常用开发方式:web_service_call 模式、soap_request 模式、web_custom_request 模式。通过
依次尝试这三种模式,可以解决大部分Web Service 应用的脚本开发问题。
第4 章 深入解析Socket 虚拟用户。本章首先讲解了Socket 虚拟用户常用函数的用法,
重点介绍了基本函数、关联函数、超时函数、Buffer 函数、转换函数;接着以基于Socket
的网络应用程序WinSocketSample 作为实战测试对象,讲解了如何使用代理方式来录制基
于Socket 应用的用户操作以生成Vuser 脚本,其中的代理方式分别介绍了单机代理和多机
代理两种方式,并介绍了如何对生成的脚本进行参数化;然后分享了一些项目中的实战经验;最后介绍了一个通过脚本日志定位性能问题的案例,向读者展示了如何在实际中灵活
使用所学的知识来发现性能问题。
第5 章 深入解析动态链接库技术。本章详细探讨了动态链接库这一在LoadRunner
中经常用到的技术,尤其深入探讨了DLL 在Visual C++中进行使用的相关知识。本章包含
DLL 的基本使用、Visual C++中创建与调用DLL、函数名称改编、C++类的导出与封装、
MFC DLL、DLLMain 函数等知识。
第6 章 深入开发.NET 虚拟用户。本章前半部分全面系统地介绍了.NET 虚拟用户基
础知识,包含.NET 虚拟用户适用范围及安装配置、创建.NET 虚拟用户项目、面向对象开
发基础、常用.NET 程序等四部分内容。本章后半部分介绍了一个C/S 架构应用的Vuser 脚
本开发案例,通过深入了解测试对象CommandRunner 的设计与实现过程,使读者掌握这类
Vuser 脚本开发的基本方法。
第7 章 深入开发Java 虚拟用户。本章首先介绍了Java 虚拟用户基础知识;接着介
绍了如何在Eclipse 创建与编译Java 类文件以及如何在Java 虚拟用户中调用编译好的类文
件;然后分享了一些项目中的实战经验;最后通过并发下载文件、信用卡审批、脚本数量
精简等案例讲解如何在实际中使用Java 虚拟用户。
第8 章 Tuxedo 协议虚拟用户开发。本章详细介绍Tuxedo 协议虚拟用户开发的基础
知识:首先介绍了Tuxedo 域环境的搭建方法;接着介绍了Tuxedo 中CARRAY类型、FML(32)
类型两种缓冲区脚本的开发方法。通过这些基础知识的学习,读者可以掌握Tuxedo 这一重
要交易中间件的Vuser 脚本开发方法。
第9 章 深入开发Mobile APP 虚拟用户。本章探讨了Mobile APP 的Vuser 脚本开发
方法,重点介绍了模拟器和代理两种开发脚本的方式。目前,Mobile APP 得到了空前的推
广,因此读者需要系统掌握Mobile APP 虚拟用户的开发方法。
第10 章 网络通信虚拟用户开发案例。本章重点讲解了一个基于UDP 协议应用程序
的Vuser 脚本开发方法。首先讲解TCP 与UPD 协议的相关知识,接着介绍案例协议的相
关实现方式,然后讲解服务器与客户端的设计与实现,最后介绍了Vuser 脚本的设计与开
发方法。通过本案例的学习,读者可以系统掌握网络通信类应用的Vuser 脚本开发方法。
配套视频
本书免费提供了作者录制的两门LoadRunner 学习视频课程:《LoadRunner 性能测试快
速入门》、《LoadRunner Controller 使用基础》,共计14 学时。读者可以微信扫描下面的二维码来学习课程:
借助上面的视频课程,读者可以很容易掌握LoadRunner 这一强大性能测试工具的基础
用法,从而快速在性能测试中应用。
建议读者可以先学习视频中的内容,大致了解LoadRunner 性能测试的过程,然后再开
始学习本书的理论知识。这样可以更容易领悟本书的精髓,最终实现融会贯通的效果。
致谢
感谢上海漫索计算机科技有限公司总经理林锐博士,林老师在我写作第一本作品《Web
性能测试实战》时给了我重要的指导意见,并将这本作品推荐到电子工业出版社,从此我
和写作结下了不解之缘;
感谢电子工业出版社的郭立、孙学瑛两位老师,她们对本书的出版提供了非常大的支
持;
感谢本书的主要合作者周志龙、金成姬、刘蕙兰、刘建华,本书的写作过程占用了各
位大量的休息时间;
感谢我的朋友冯艳硕,他具有丰富的开发经验,他的参与使本书内容更加丰富;
感谢我的朋友范本银,他参与了第2 章HTTP 协议等相关内容的写作;
感谢民生银行合作公司的团队成员,特别感谢路来强、雷宏波等人。在团队进行项目
攻坚的过程中,我们收获了很多创意,这些创意、解决方案集腋成裘,成为本书中用来分
享的实战经验;
感谢电子工业出版社为本书辛勤付出的所有朋友们;
特别要感谢各位家属们的支持。尤其是各位小朋友,写作占用了大量本来可以陪他们
的时间。