标题：柳胜
基本信息
柳胜，国内首批以软件测试方法与技术为研究课题毕业的硕士研究生之一，之后数年一直致力于软件性能测试以及软件测试自动化的研究和实践，曾供职于摩托罗拉中国研发中心，任高级软件测试工程师角色。到2008年已有八年的软件测试从业经历，因此在软件测试理论及实践上均有深厚的功底和经验。 
此外，作者长期担任国内人气最旺的软件测试门户网站——51Testing软件测试网的论坛版主，网名sunshinelius，曾在网络上发表多篇脍炙人口的性能测试的文章。
人名
软件业界自动化测试专家，在性能测试和功能测试自动化领域有深厚的经验。
著作
《让LoadRunner走下神坛》、《性能测试从零开始-loadrunner入门》、《软件自动化测试框架设计与实践》等《性能测试从零开始:LoadRunner入门与提升》
目录
第1章 软件性能测试
1.1 什么是软件的性能
1.1.1 软件
1.1.2 软件性能的产生
1.1.3 功能与性能的关系
1.1.4 用户眼里的软件性能
1.1.5 软件人员眼里的软件性能
1.2 软件性能测试
1.2.1 性能测试在软件测试的周期位置
1.2.2 性能测试策略揭秘
1.3 如何做性能测试
1.3.1 goal（定义目标）
1.3.2 analysis（分析）
1.3.3 metrics（度量）
1.3.4 execution（执行）
1.3.5 adjust（调整）
1.4 性能测试工具的评估和选择
1.4.1 测试预算vs工具价格
1.4.2 协议、开发技术、平台、中间件vs工具的支持
1.4.3 工具可使用的复杂程度vs项目计划的影响
.第2章 第一次亲密接触loadrunner
2.1 从性能测试到loadrunner的映射
2.2 loadrunner工作原理
2.3 安装loadrunner
2.4 揭开license的神秘面纱
第3章 走近loadrunner
3.1 loadrunner的运行原理
3.1.1 loadrunner三大高手
3.1.2 三大高手联手的一场性能测试盛大演出
3.2 loadrunner的录制原理
3.2.1 网络协议与loadrunner的vuser
3.2.2 选择loadrunner protocol的两大定律
3.2.3 loadrunner录制技术
第4章 loadrunner脚本语言基础
4.1 c语言与loadrunner脚本
4.1.1 看不见的main
4.1.2 全局变量与局部变量
4.1.3 在loadrunner脚本里灵活使用c语言
4.1.4 高级——用户自定义函数
4.2 通用vu函数
4.2.1 事务和事务控制函数
4.2.2 命令行分析函数
4.2.3 系统信息函数
4.2.4 字符串函数
4.2.5 消息函数
4.2.6 运行时（run-time）函数
4.3 协议相关函数
4.3.1 http协议原理
4.3.2 http在loadrunner的实现
第5章 vu——用户行为的模拟器
5.1 序：图灵试验与loadrunner vu模拟奥秘
5.1.1 图灵试验场景
5.1.2 loadrunner模拟揭秘
5.2 录制脚本
5.2.1 选择协议
5.2.2 规划脚本结构
5.2.3 http vuser中的url mode和html mode
5.2.4 查看日志
5.3 回放脚本
5.4 关联
5.4.1 录制前correlation（关联）
5.4.2 录制后关联
5.4.3 手动关联
5.5 脚本视图和树视图
5.5.1 树视图（tree view）
5.5.2 脚本视图（script view）
5.5.3 理解snapshot
5.6 事务、同步点和思考时间
5.6.1 transaction（事务）
5.6.2 rendezvous point（同步点）
5.6.3 注释
5.6.4 think time（思考时间）
5.7 数据驱动——参数化（parameters）
5.7.1 为什么需要参数化
5.7.2 参数的创建
5.7.3 定义参数的属性
5.7.4 高级——从已存在的数据库中导入参数数据
5.8 检查点（check point）
5.8.1 序：为什么需要检查点
5.8.2 检查点实施之一：contentcheck定义
5.8.3 检查点实施之二：检查函数
5.8.4 检查点设置技巧
5.9 高级——多action
5.10 高级——脚本错误处理机制
5.11 高级——脚本调试技巧
5.11.1 动态运行（animated run）与非动态运行（non-animated run）
5.11.2 日志设置
5.12 高级——编写脚本的最佳实践
5.13 vu脚本运行成功后
第6章 controller——性能测试的指挥中心
6.1 得到细化后的性能需求
6.2 设计性能测试场景
6.2.1 创建手工场景
6.2.2 百分比模式创建手工场景
6.2.3 创建面向目标场景
6.2.4 多ip的实现原理以及模拟
6.3 运行场景
6.3.1 场景控制
6.3.2 执行期间查看场景
6.3.3 监视场景
6.3.4 高级——用户自定义数据采集点
6.3.5 附：主要的计数器
6.3.6 实例：分析实时监视图表
6.4 场景运行后
第7章 analysis——寻找系统瓶颈的得力助手
7.1 analysis报告概要（summary）
7.1.1 概要部分
7.1.2 统计部分
7.1.3 事务统计
7.1.4 http响应统计
7.2 analysis标准图
7.2.1 vuser图
7.2.2 事务图
7.2.3 网页细分图
7.3 交叉结果和合并图
7.3.1 叠加
7.3.2 平铺
7.3.3 关联
7.4 生成测试报告
7.4.1 创建html格式报告
7.4.2 创建word格式报告
7.4.3 高级——数据点报告
第8章 欲善其事先利其器——vu脚本开发实战
8.1 邮件服务smtp/imap协议介绍
8.1.1 电子邮件的工作原理
8.1.2 smtp协议介绍
8.1.3 pop3协议介绍
8.1.4 imap协议介绍
8.2 vu的smtp vuser对smtp协议的封装及实现
8.2.1 使用smtp vuser录制outlook 2003发送邮件
8.2.2 对smtp vuser录制生成的脚本进行分析
8.2.3 回放smtp vuser脚本并分析网络日志
8.3 vu java vuser自开发smtp程序
8.3.1 vu创建java模板虚拟用户
8.3.2 设置java环境
8.3.3 在java vuser中开发smtp发送mail脚本
8.3.4 参数化增强脚本
第9章 学以致用——一步一步做web系统性能测试
9.1 软件系统背景及架构设计介绍
9.2 性能要求和性能指标分析（goal阶段）
9.2.1 性能指标
9.2.2 业务模型分析和需求细化
9.3 性能测试方案和用例设计（analysis阶段）
9.4 性能测试各种度量的建立（metrics阶段）
9.4.1 性能脚本的生成
9.4.2 定义用户行为
9.4.3 场景的设置与运行
9.4.4 计数器的设置与性能数据收集
9.5 运行场景，得到测试结果和相关数据（execution阶段）
9.5.1 脚本的开发
9.5.2 数据的生成
9.5.3 并发登录测试
9.5.4 负载测试
9.6 分析测试瓶颈（adjust阶段）
9.6.1 并发测试结果分析
9.6.2 交易流程测试结果分析及性能评价
9.6.3 查询流程测试结果分析
第10章 循序渐进——进阶loadrunner高手
10.1 性能测试用例的设计策略
10.1.1 “普遍撒网，重点查看”的原则
10.1.2 保证数据的有效性
10.2 loadrunner高级功能的使用——web click vuser
10.2.1 web click vuser的产生背景
10.2.2 web click vuser与传统vuser的差别
10.2.3 使用web click vuser
附录a 有关loadrunner常见问题解答
前言
本书的编写背景. 
LoadRunner是一个内涵丰富、功能强大的性能测试工具，这是许多专业人士选择它的原因。初学者面对许多的性能测试概念和LoadRunner专业术语，常常感到无所适从，这是因为LoadRunner作为软件性能测试的实现者，涉及了软件测试及软件体系架构众多方面的知识。可以说，学习LoadRunner是理解和学习软件性能测试的非常好的切入点。 
本书既有深厚的性能测试理论的系统完整性，又有非常现实的实践指导意义。所以此书既可作为刚进入性能测试领域的测试工程师的入门参考书籍；对已经有一定工作经验的朋友来说，也是一本整理思路、融会贯通的总结笔记。 
本书的特色：让复杂变成简单，让简单成为行动 
本书的风格为思路清晰，通俗易懂，形象生动，其目的是能让读者迅速理解如下概念。 
1．什么是软件性能测试 
一场庞大的性能测试演出正在进行，这里没有瞩目的男女主角，都是成千上万涌动的群众演员（并发用户）；没有华丽绚烂的剧本，只有细致缜密的情节安排（性能测试场景）；演至跌宕回肠之处无人喝彩，落幕又意味着新一场演出的开幕（分析调优）。这不是一出梦幻浪漫的咏叹调，更像是一场对百姓平凡生活的写实剧。 
只是，这场写实剧还缺少一个最重要的灵魂角色——总导演，那么，你准备好了吗？ 
2．什么是LoadRunner 
性能测试的庞大演出要能够顺利完成，需要众多的资源，有经验丰富的演员（图灵考验），能够处乱不惊（食客问题），要有逼真的道具（IP虚拟欺骗），要有宽大的舞台（负载生成器），最重要的还要保持团队精神和良好的组织纪律（场景创建和监控），并且善于总结和改进（anaylysis分析器）。 
以上括号内的解决方案均由LoadRunner厂商提供友情赞助。 
3．本书的思路地图 
性能测试中需要明确的问题 本书的答案 
软件的性能测试对于你意味着什么 用户眼里的性能（第1章） 
开发人员眼里的性能（第1章） 
测试人员眼里的性能（第1章）.. 
性能测试策略揭秘（第1章） 
怎样迅速有效地规划和开展一个性能测试 性能测试最佳实践（GAMEA模型）（第1章） 
善其事利其器——工具的选择（第1章） 
为什么是LoadRunner 性能测试到LoadRunner的映射（第2章）
内容简介
LoadRunner是一个内涵丰富、功能强大的性能测试工具，这是许多专业人士选择它的原因。初学者面对许多的性能测试概念和LoadRunner专业术语，常常感到无所适从，这是因为LoadRunner作为软件性能测试的实现者，涉及了软件测试及软件体系架构众多方面的知识。可以说，学习LoadRunner是理解和学习软件性能测试的非常好的切入点。
《软件自动化测试框架设计与实践》
目录
第一篇　初级篇——认识自动化测试框架. 
第1章　将降大任——自动化测试　1 
1.1　软件测试面临的困境与迷局　2 
1.1.1　软件质量困境　2 
1.1.2　软件成本困境　6 
1.2　“时势造英雄”——软件测试自动化的异军突起　8 
1.2.1　软件自动化测试如何代替手工测试　8 
1.2.2　推动软件自动化测试的源动力　12 
第2章 “神话”破灭——自动化测试能否担当大任　16 
2.1　企业自动化测试实施的情景　17 
2.1.1　自动化测试实施背景介绍　17 
2.1.2　自动化测试实施场景回放　17 
2.2　自动化测试的“神话”破灭　20 
2.2.1　昂贵的自动化测试实施成本　20 
2.2.2　实际上并不强大的自动化测试脚本　21 
2.2.3　自动化测试实施的命门：维护成本　22 
第3章　成功之道——如何构建高质量的自动化测试　24 
3.1　peral模型的实施背景　25 
3.2　purpose：如何建立一个务实明确的自动化测试目标　25 
3.2.1　问题1：自动化还是手工测试　26 
.3.2.2　问题2：如何估算分析自动化测试效益　26 
3.2.3　问题3：如何构建高收益成本比自动化测试目标　29 
3.3　evaluation：评估和估算的量化决策指南　37 
3.3.1　工具选择定律一：测试界面决定工具类族　38 
3.3.2　工具选择定律二：测试项目综合特征确定工具应用方案　41 
3.3.3　工具选择实际案例分析　44 
3.3.4　总结　47 
3.4　architecture：构建和设计自动化测试　48 
3.4.1　自动化测试的最终用户是测试工程师　48 
3.4.2　自动化测试的实质是开发一个测试软件　49 
3.5　run and debug：开发调试　49 
3.5.1　高内聚和低耦合的模块实现原则　49 
3.5.2　数据驱动原则　53 
3.5.3　自动化脚本开发质量优先级　56 
3.6　link with manual test：自动化测试与手工测试的有效整合　57 
3.6.1　自动化测试和手工测试的关系　58 
3.6.2　自动化测试与手工测试流程整合　59 
3.7　pearl模型实施成功经验　60 
3.7.1　重置目标，长远规划　60 
3.7.2　强大的自动化测试框架　61 
3.8　总结　62 
第4章　组织实施——怎样建立与培养自动化测试团队　63 
4.1　测试团队简介　64 
4.2　明确自动化测试目标　64 
4.2.1　好的目标是自动化测试实施的发动机　64 
4.2.2　建立一个高收益并可行的自动化测试实施目标　65 
4.3　积极有效的沟通技巧　70 
4.3.1　勤汇报，多交流　72 
4.3.2　实用为先　74 
4.4　培养和建立自动化测试团队　75 
4.4.1　手工测试团队的规划　76 
4.4.2　自动化测试实施中的团队　78 
4.4.3　自动化测试实施后的团队　80 
4.5　自动化测试技术储备　81 
第二篇　中级篇——自动化测试框架基本原理及实现 
第5章　庐山真面目——自动化测试框架　82 
5.1　自动化测试框架简介　83 
5.2　测试的自动化——以工具为中心　83 
5.3　百家争鸣——形形色色的自动化测试框架　85 
5.3.1　数据驱动测试框架(the data-driven testing framework)　85 
5.3.2　关键字驱动或表驱动测试框架(the keyword-driven or table-driven testing framework)　89 
5.3.3　总结　90 
5.4　自动化的测试——测试框架原型　91 
5.4.1　框架包括的具体技术　91 
5.4.2　框架的用户　92 
5.4.3　制定和开发框架..　93 
5.5　测试框架集大成者——无需人工干预的自动化回归测试　93 
第6章　实例研究——单元自动化测试框架解决方案　95 
6.1　被测对象介绍　96 
6.1.1　背景简介　96 
6.1.2　单元测试对象urlencoder. encode函数介绍　97 
6.1.3　对urlencoder.encode的单元测试案例设计　98 
6.2　自动化测试框架逐步实施　100 
6.2.1　第一步：单元测试自动化　100 
6.2.2　第二步：框架——数据驱动　101 
6.2.3　第三步：框架——整合开发测试流程　104 
6.2.4　第四步：框架(高级)——定义自动化测试管理策略和规范　107 
6.3　单元自动化测试框架实施总结　108 
第7章　实例研究——基于ui功能的自动化测试框架解决方案　109 
7.1　gui的软件自动化测试原理与技术基础　110 
7.1.1　gui软件测试简介　110 
7.1.2　gui自动化测试原理与实例演示　114 
7.1.3　在构建自动化测试框架时的工具因素　124 
7.2　基于qtp的功能自动化测试框架原型的搭建　125 
7.2.1　qtp工具简介　125 
7.2.2　自动化测试框架预期功能目标　126 
7.2.3　自动化测试框架的实现　127 
第三篇　高级篇——自动化测试框架案例实战 
第8章　自动化测试框架实例——automation center(ac)　142 
8.1　产品测试案例分析　143 
8.1.1　被测软件产品介绍——某大型分布式企业协同组件介绍　143 
8.1.2　软件产品测试需求分析　144 
8.1.3　测试需求矩阵分析　146 
8.1.4　全球化测试需求分析　149 
8.2　测试中应用ac的效益分析　153 
8.2.1　预期成本计算　154 
8.2.2　预期收益计算　154 
8.2.3　预期收益比　155 
8.2.4　ac实施过程规划　155 
8.3　ac框架中脚本开发规范　156 
8.3.1　自动化测试中的规范　156 
8.3.2　规范应该考虑的因素　157 
8.3.3　有效地推行自动化测试规范　159 
8.3.4　ac中qtp脚本规范实例　159 
8.4　ac框架测试报告格式及规范　163 
8.4.1　总览报告　163 
8.4.2　细分报告　164 
8.4.3　ac测试报告总结　169 
8.5　ac框架中客户端自动化测试解决方案　171 
8.5.1　ac中qtp agent介绍　171 
8.5.2　“一次编码，多语言运行”的qtp脚本开发思想及实现　172 
8.5.3　ac中qtp agent在企业内部环境的部署　178 
8.5.4　ac中qtp agent收益　183 
8.6　ac中安装自动化解决方案　185 
8.6.1　windows下软件安装：默认式安装与交互式安装　185 
8.6.2　linux下软件安装：文本模式与图形化模式　192 
8.7　ac中自动化管理与控制平台　199 
8.7.1　ac拓扑结构设计　199 
8.7.2　ac的工作协作图　202 
8.7.3　ac工作流程图　203 
8.8　ac应用经验　205 
8.8.1　明确而务实的需求　205 
8.8.2　有效的人员培训　205 
8.8.3　敏捷高效的反馈机制　206 
8.9　ac开发技术实例　206 
8.9.1　基于事务(transaction)机制的测试案例状态栈的实现　206 
8.9.2　测试案例状态轮询java实现　207 
8.9.3　ac与agent协议原语　208 
第9章　开发高质量测试脚本　210 
9.1　案例1：脚本开始处首先进行环境检查　211 
9.2　案例2：函数入口检查　213 
9.3　案例3：使用正则表达式处理字符串　214 
9.4　案例4：脚本健壮性出错处理　219 
9.5　案例5：测试脚本中参数变量的规范命名　222 
9.6　案例6：内存的利用和回收　225 
9.7　案例7：数据驱动　228 
附录　与自动化测试实施人员的对话实录　...232
前言
自动化测试是当今软件测试行业一个很受关注的方向。目前，业界实施比较成熟的是性能测试自动化。在系统测试自动化方面，包括UI测试自动化、单元测试自动化等领域，虽然可以用强大的第三方测试工具作为解决方案，如QTP、WinRunner、Selenium等，但在具体实践中，企业依靠某个工具很难成功实施测试自动化。究其原因，一是，理论上利用测试工具进行自动化测试可以替代部分工作，但在实践过程中并不能完整地解决测试质量与效率、投入与产出等一系列现实因素之间存在的矛盾。从这个角度来说，测试工具提供的测试技术只是自动化测试实施的一部分。二是，测试人员开发了一堆自动化测试脚本若没有具体的框架来规定实施和执行的原则，也会无用武之地，这就像造车一样，只具备了零件等元素但缺少整体的造车图纸来指导使用它们也难以造出整车。因此，现实的测试实践中，我们需要一个完整而务实的自动化测试解决方案——测试框架，以便真正地实现高效、高质量的软件自动化测试。. 
测试框架(Test Framework)作为实现高效率、高质量自动化测试的完整解决方案，从诞生之日开始，越来越多的软件组织和个人用自己的逻辑去诠释测试框架，所以，我们听到了种种说法，一套测试管理系统被称之为测试框架，一个测试工具被冠以关键字驱动框架之名，甚至，一段程序也被声称其实现了数据驱动的框架。测试框架犹如盲人摸象中的那头大象一样，有人说它是一个软件，只不过它的功能是测试另外一个软件，有人认为它是一套流程和规范，否则怎称框架。 
本书的作者看来，所谓“测试眶架”这个概念只是一个封装了很多东西的盒子，这个盒子的外观和形状对我们来说无关紧要，我们最关心的是这个盒子里面到底存放了什么东西，否则就成了“买椟还珠”的现代版。因此，本书旨在帮助读者打测试框架这个盒子，把里面的“宝贝”呈现给读者。相信读者读了本书之后，不会再追问测试框架到底是什么，而会更关心怎样构建一个高效务实的自动化测试解决方案。 
本书从自动化测试思想、技术和实施操作等层面进行了深入分析，全面讲解了如何针对企业或项目需求，并以量体裁衣的方式来设计完成自动化测试框架，从而为自动化测试实施的企业和个人提供实战指南。具体内容包括自动化测试实施风险因素分析、PEARL过程模型建立、自动化测试团队的培养和规划、自动化框架设计思想、自动化测试技术储备、自动化测试工具的有效评估、高质量程序/脚本编程技巧与原则等。另外，本书并不停留在框架理论层面，在第8章介绍了框架实例分析——Automation Center(AC)，这些都能对从事自动化测试的读者有很强的现实借鉴意义。
本书特色
本书全面阐述了集测试人员组织、流程管理、开发技术于一体的自动化测试框架的主要知识，并通过大量实例贯穿每个知识点，对于开发框架的核心知识反复强调和应用，真正做到了学用结合地引导读者掌握自动化测试框架开发的技术，是软件测试业界第一本有关自动化测试框架开发的实战技术书籍。 
谁适合阅读本书 
本书面向有一定自动化开发经验的读者，通过本书的学习，可以迅速掌握如何根据实际测试需求，设计和实现自动化测试框架。对于刚入门自动化测试的读者也可通过本书的学习，树立正确的自动化测试思想，找到测试实战的捷径，尽快融入实战角色。.. 
本书特别适合以下类型的读者： 
·希望学习软件测试框架知识的初级、中级、高级测试人员： 
·希望解决应用测试框架过程中遇到问题的设计、执行、分析等相关人员； 
·测试组长、测试经理、质量保证工程师、软件过程改进人员。
阅读建议
本书按照循序渐进的思路安排内容，无论读者是有经验的软件测试人员、开发人员、系统管理人员还是刚参加工作的测试人员，建议最好按照目录顺序进行阅读。因为全书是按照概念解析、实践应用、问题解答的顺序来编写的，不仅仅在实践和问题解答部分提供了很多真实、详细的案例，在进行概念解析的同时也提供了很多非常重要的经验，这对于读者深入理解相关概念和少走弯路都是不无裨益的。当然，对于自动化测试经验相对丰富的读者也可以依据自己的需要，选择关心的内容进行针对性的阅读。
本书作者
本书编著柳胜，计算机应用硕士，拥有多年的软件开发和测试实践经验。尤其擅长在自动化测试工具应用、性能测试和单元测试等方面的工作。曾在摩托罗拉等大型外企担任高级开发工程师、高级自动化测试工程师等职务。
本书编委
张海波、魏岩岩、王伟庆、赵子如、马志强、王智群、郑金鑫、李东方、王冰、王颖、于迪、厉敏、刘桂梅、厉德仁、田月琴等。