本书是一本总结实践经验和成果的作品,主要为测试人员规划、设计、实施Web性能测试而编写。本书既包含Web性能测试的基础理论,又包含理论在实践中的应用。\r\n 本书第1章介绍了性能测试基础知识和性能测试常见的误区。第2章专门针对Web性能测试提出了“Web全面性能测试模型”,把制订性能测试策略、编写测试用例计划以及使用模型的方法融会在一起,提供了规划与设计性能测试的新思路。第3章进一步讨论了如何在项目中进行性能测试需求分析、设计与实施性能测试,并深入讨论了基于场景设计性能测试用例的方法。第4章则介绍了针对Web应用程序进行性能分析的基本方法。第5章是案例部分,分别以银行卡、电子政务、门户网站等典型Web应用系统为实例,讨论了如何在项目中应用“Web全面性能测试模型”。通过真实的实例,向读者展示了如何在项目中制订性能测试计划、实施与控制性能测试、分析系统瓶颈等内容。\r\n 本书主要针对项目经理、测试组长、测试(设计)工程师以及对性能测试感兴趣的开发人员。通过本书的学习,可以更加规范地做好性能测试设计与实施工作。
第1部分 兵法篇\r\n 第1章 Web性能测试基础\r\n 1.1 Web性能测试简介\r\n 1.2 Web性能测试种类\r\n 1.3 性能测试常见的认识误区 \r\n 1.4 性能调整基础知识\r\n 1.5 小结\r\n 第2章 Web全面性能测试模型\r\n 2.1 Web全面性能测试模型简介\r\n 2.2 Web性能测试策略模型\r\n 2.3 Web性能测试用例设计模型\r\n 2.3.1 预期性能指标测试用例\r\n 2.3.2 用户并发性能测试用例 \r\n 2.3.3 疲劳强度与大数据量测试\r\n 2.3.4 网络性能测试\r\n 2.3.5 服务器性能测试\r\n 2.4 Web性能测试模型使用方法\r\n 2.5 小结\r\n第2部分 方案篇\r\n 第3章 性能测试实施与管理\r\n 3.1 性能测试管理概述\r\n 3.1.1 性能测试流程\r\n 3.1.2 性能测试管理的障碍\r\n 3.2 性能测试规划与设计\r\n 3.2.1 性能测试需求分析\r\n 3.2.2 性能测试整体规划\r\n 3.2.3 性能测试计划制定\r\n 3.2.4 性能测试用例设计\r\n 3.3 性能测试实施和监控\r\n 3.3.1 实施性能测试\r\n 3.3.2 进度与变更控制\r\n 3.4 测试分析与经验总结\r\n 3.4.1 性能测试规划总结\r\n 3.4.2 测试用例设计总结\r\n 3.4.3 测试工具与技术总结\r\n 3.4.4 瓶颈分析方法总结\r\n 3.5 小结 \r\n 第4章 Web性能测试分析\r\n 4.1 性能分析基础知识\r\n 4.1.1 几个重要的性能指标\r\n 4.1.2 性能分析的基本原则\r\n 4.2 Web应用程序分析\r\n 4.2.1 用户事务分析\r\n 4.2.2 Web资源分析\r\n 4.2.3 网页元素细分\r\n 4.3 小结\r\n第3部分 实践篇\r\n 第5章 Web性能测试案例解析\r\n 5.1 架构设计阶段的性能测试 \r\n 5.1.1 项目背景\r\n 5.1.2 性能测试策略、目标、范围、环境\r\n 5.1.3 性能测试分析与设计\r\n 5.1.4 性能测试实施\r\n 5.1.5 测试结果分析\r\n 5.1.6 案例点评\r\n 5.2 某企业OA系统测试案例\r\n 5.2.1 项目背景、测试策略、范围\r\n 5.2.2 性能测试用例设计\r\n 5.2.3 性能测试实施\r\n 5.2.4 测试结果分析\r\n 5.2.5 案例点评\r\n 5.3 银行卡申请审批系统测试 \r\n 5.3.1 项目背景\r\n 5.3.2 性能测试策略\r\n 5.3.3 测试需求分析与规划\r\n 5.3.4 性能测试计划及评审\r\n 5.3.5 性能测试用例\r\n 5.3.6 性能测试实施\r\n 5.3.7 性能测试结果分析\r\n 5.3.8 案例点评\r\n 5.4 小结 \r\n附录A 性能测试计划模板\r\n附录B 性能测试用例模板\r\n附录C 性能测试报告模板\r\n后记
初次听说电子工业出版社准备策划出版一套《测试实践丛书》,我就感到一种欣慰,这个选题对中国软件产业发展具有十分重要的现实意义。
当今世界软件产业之所以称之为产业,不仅是因为其产品的产值具有了超过传统产业的规模,而更重要的是因为其产品的工程化和工业化的生产与服务体系为整个人类社会提供了必要的质量保证。
随着用户对软件产品质量要求的不断提高以及软件工程技术的日益成熟,软件测试在软件生产与服务过程中成为一个越来越重要的环节,在软件企业、IT服务企业、客户IT部门等机构中扮演着更为重要的角色。对于一个软件企业,“你不去发现缺陷,那一定是你的客户去发现缺陷”,提高软件产品质量已经成为增强企业竞争力的重要任务。
测试经理、测试工程师已经成为一个热门的职业,国际知名的软件企业和IT服务公司,从内设独立的测试部门、质量管理部门,到委托或承接第三方测试、测试外包、建立完整的缺陷测试管理与服务体系,组织形态日渐成熟,产业分工日趋细化,独立的测试行业已经初步形成。
近十几年来,在国家发展软件与集成电路产业政策的引导下,我国软件产业发展很快,软件企业成长迅速,但在整体上和发达国家软件企业差距还很大。其中的差距之一就体现在软件测试和质量控制上。虽然目前对测试的重视程度已经普遍提高,但是几乎所有的国内IT公司都存在测试时间不充分、测试软硬件资源不充分、缺乏合格的测试人力资源等问题。
发展中国的软件测试产业,无论是面向国际还是国内需求都应具有巨大的潜力和广阔的商业前景。其中,最关键的就是人才培养。培养一个优秀的测试工程师不容易,培养一个优秀的测试项目经理更困难。一个优秀的测试从业人员,不仅需要掌握测试理论、方法、技术、工具,还需要深刻理解过程管理,更需要具有很高的素质(理念、思路、沟通、表达等)。一个优秀的测试企业需要把人(People)、过程(Process)和技术(Technology)三要素有机地结合好。发展中国的软件测试产业还需要一批既懂技术又懂管理的企业家,他们才是中国软件测试产业发展的主力军。
《测试实践丛书》致力于从实践的视角融会贯通测试的理论、技术和管理,通过案例分析真正让人们理解People, Process, Technology三角关系在测试行业的成功运用。丛书的作者们把他们多年来理性的思考和宝贵的实战经验奉献给读者,相信会给大家带来思考和启发。
最后,衷心希望这套丛书能够为培养一批有志于发展中国软件测试产业的测试技术人才和管理人才做出重要的贡献。
北京大学软件与微电子学院院长 陈钟博士
陈钟老师简介:
2004年被评为“影响中国软件开发的20人”之一。现任北京大学教授、博士生导师,北京大学软件与微电子学院院长、北京大学网络与信息安全实验室主任、北京大学工程学位评审委员会副主任。社会兼职有中国软件行业协会常务理事、教育部计算机科学与技术教学指导委员会委员等。
序
“软件亚健康”这个名词目前还不多见,但我们软件的性能问题却屡见不鲜,就像亚健康伴随着很多IT人一样。
得益于软件工程技术、方法和工具的发展,人们开发的软件的结构越来越复杂(尤其是多层结构的软件),软件的规模越来越庞大,开发软件的速度也越来越快,随之而来的是软件质量问题也越来越多。另一方面,用户对软件的要求日益提高,对软件的质量越来越关注。因此,软件测试工程师成了备受青睐的专业人才。
在多数公司,测试人员的职责主要是发现软件功能或者界面等方面的问题,很少对软件进行专业的性能测试,这是亚健康软件存在的主要原因之一。
很多软件项目在设计和编码过程中没有充分考虑性能问题。开发出的Web应用投入使用后,随着数据的累积和用户规模的扩大,系统逐渐变慢,甚至慢到不能满足要求而被废弃。
因此,我们很有必要分析和研究如何提高软件性能,尤其是要从根本上来解决性能问题,而不是等软件开发出来后再去分析是“哪个模块”或者“哪个表”导致系统性能下降。
虽然国内软件测试方面的图书不少,但性能测试方面的不多,《Web性能测试实战》正好填补了这个空白。《Web性能测试实战》是理论联系实际的作品,书中详细描述了Web全面性能测试模型和性能测试规划与实施方法,并结合具体的案例来说明如何应用这些模型和方法。
本书是绍英等几位作者实战经验的结晶。几位作者来自不同的IT公司,有不同的行业背景。绍英有电子政务、银行、门户网站等领域的应用软件性能测试经验。他曾到很多公司去推广自己的性能测试模型,对企业在软件测试方面的需求很熟悉;海涛则有很多大型项目的性能测试经验,是银行、电信等领域的应用软件测试专家;玉亭曾是Mercury的专业服务顾问,有将近两年的测试服务经验,熟悉Mercury的全部测试产品及解决方案。相信他们的行业经验是很多的测试人员都很需要的。
本书对国内软件企
陈绍英,北京大学软件工程硕士。拥有多年的软件开发以及测试经验,现在主要从事软件测试工作,研究方向为软件测试过程管理和测试分析技术、性能测试等。拥有大型电子政务系统、银行卡业务系统等软件项目的测试管理及技术经验。善于组织和协调工作,在软件项目管理和测试管理方面拥有很高的能力,在工作中积累了丰富的管理经验。
前 言
从前我们很少看到“软件亚健康”这样的概念,之所以提出这个概念,是因为现在亚健康不但威胁着IT人的生活质量,也威胁很多应用软件的性能。
伴随着IT行业的高速发展,软件开发方法越来越先进,实现的功能也越来越强大,应用软件几乎涉及了国计民生的各个领域。而与之相反的是,这些应用系统的整体性能却呈下降趋势,尤其是一些涉及多用户并发的Web应用系统。因此,近几年保障软件性能的测试工作显得越来越重要,各种性能测试工具也应需而生。“软件亚健康”和“亚健康软件”的概念就是在这种背景下提出的。
“软件亚健康”决非危言耸听。作者曾亲身经历了一个由于性能不合格而废弃掉的项目。此项目是某国外公司为国内某银行开发的一套“银行卡申请审批系统”,此系统历经用户三次测试,每次均以服务器崩溃而告终,最后银行只好忍痛让此公司出局。
目前,软件应用系统基本离不开Web,因此,本书重点研究Web应用系统的性能测试。但是本书的性能测试理论对大多数软件的性能测试都是可以借鉴的。
本书首次针对Web应用系统提出了“Web全面性能测试模型”,和读者共同探讨如何更加有效地诊断与治疗Web软件性能低下的“亚健康”问题。下面就先从“亚健康软件”开始本书的讨论。
亚健康IT人与亚健康软件
亚健康IT人定义:2005年8月的某一天,作者和几位测试同行一起爬香山,结果第二天几个人累得几乎下不了床,一个星期之后,才觉得走路时的腿是自己的。无疑,我们这几个人的身体都已进入“亚健康”状态。当时躺在床上忽然想到亚健康IT人就是“爬了一次香山需要休息一个星期才能恢复正常的从事IT行业的人”。
类似也可以做如下的定义。
超级健康IT人——爬了一次香山之后没有什么感觉的IT人,这类人应该属于具有运动员素质的IT人。
健康IT人——爬了一次香山之后休息一两天就恢复正常的IT人。
不健康IT人——爬了一次香山之后需要休息一个月甚至更长时间的人。
在软件领域中,判定软件性能高低的依据是,其满足用户性能需求的程度以及是否存在一定的扩展空间。所以评价软件性能不要脱离具体用户背景,用户的性能需求与软件是否健康有着很大的关系,这一点与人的健康分类是有很大的区别的。例如对于OA系统,可以认为达到“自行车的性能”就是健康的,而银行或者电信的应用系统,至少要达到“飞机的性能”才是健康的。
与四类IT人的健康分类相对应,软件也可按其性能高低划分为四类。
超级健康软件——UNIX是“超级健康软件”的典型,“体魄”像运动员一样,非常“抗折腾”。
健康软件——性能稳定,可以满足用户现在以及将来一定时期内的扩展需求。例如我们日常用到的数据库管理系统。
亚健康软件——软件性能很一般,就像亚健康IT人正常上下班一样,能满足使用要求,但是扩展性、稳定性都很一般,只要环境发生变化,极有可能成为“不健康软件”。
不健康软件——性能很差,甚至存在严重缺陷的软件。
毫无疑问,开发人员应以做出超级健康或健康的软件为目标。但是现实恰恰相反,就像很多IT人都处于亚健康状态一样,在现实的软件中,超级健康和健康软件的比例很低,多数软件都存在性能问题。
亚健康软件是大多数公司做项目的产物,也是本书讨论的重点。亚健康软件的例子很多:下面表0-1是某OA系统进行并发测试时,5个用户与50个用户的一些事务对比测试结果。
表0-1 某OA系统不同用户并发的响应时间对比(单位:秒)
事务名称 最小值 平均值 最大值 90%用户的响应时间
5个
用户 50个用户 5个
用户 50个用户 5个
用户 50个用户 5个
用户 50个用户
保存修改 0.183 0.164 0.193 16.591 0.204 45.247 0.2 23.465
保存新建记录 1.285 25.736 1.973 43.829 3.016 70.259 3.014 61.313
修改操作 0.026 0.024 0.03 1.63 0.043 7.522 0.04 4.143
删除公文记录 1.308 15.403 1.621 25.579 1.892 37.362 1.887 32.271
新建记录 0.683 8.776 1.263 20.253 1.674 30.765 1.674 28.954
查看公文 0.126 0.114 0.128 32.196 0.13 83.371 0.12 81.207
用户登录 0.472 1.088 0.509 14.912 0.576 76.929 0.572 24.072
这个OA系统是亚健康软件的典型。可以看出此OA系统在50个用户并发时,其响应时间是5个用户并发时的几十倍,甚至上百倍。这套系统倒是与我们这些IT人很类似,平时上班走路根本看不出什么,可是爬一爬山,是否健康就见分晓了。作者做了多年的性能测试工作,一直在思考着如何更准确有效地诊断和解决软件性能问题,并根据这几年的工作经验提出了“Web全面性能测试模型”。
软件亚健康良药——全面性能测试模型
随看软件系统日益复杂和普及,软件亚健康问题将会越来越突出,因此我们应该尽早寻找诊断和治疗这一问题的方法。为此,本书提出了“Web全面性能测试模型”,期望能够成为帮助解决软件亚健康问题的一剂“良药”。
“Web全面性能测试模型”包含了测试策略制定、测试用例设计、模型使用方法三部分,基本覆盖了性能测试规划和设计的相关内容,为开展Web性能测试提供了一种可行的方案。尽管模型是针对Web系统提出的,但是对大多数客户机—服务器模式的系统同样有效。因此,本模型在书中也称之为“全面性能测试模型”。模型主要特点如下:
来自实践领域,适用范围广:“Web全面性能测试模型”是综合了大量项目的性能测试经验而提出的性能测试模型,可以满足银行、电信、OA、互联网等诸多领域和Web相关的应用系统的性能测试需要。
测试工具无关性:目前性能测试工具的使用已经不再是难题,比较困难的是有了工具去测试什么,以及如何分析测试结果。“Web全面性能测试模型”不是针对某一特定性能测试而提出的,而是一种通用的性能测试方法,它的目标是为使用性能测试工具的人员解决测什么和如何测的难题的。测试人员掌握“Web全面性能测试模型”后,设计和执行测试时可以选择WebLoad、LoadRunner、Web Application等任何一种性能测试工具。
根据策略来裁剪测试内容:测试用例设计方案按照由浅入深的顺序设计,因此可以根据测试策略进行灵活的裁剪。可以裁剪的特点使模型更加灵活,测试设计人员可以根据实际情况选择对应的测试用例部分进行设计,间接节约了测试成本。
对于很多项目,性能测试是一项需要大量时间和资金投入的工作,因此,即使有了“Web全面性能测试模型”,并不意味着可以杜绝亚健康软件的产生。但是建议有能力的公司,应该增加合理的投入做出健康的软件,否则将会终日祈祷“不要发生性能问题”!如果一旦发生,将意味着更大的修复成本,防患于未然才是上策!
最后祝所有IT人都摆脱亚健康状态,做出健康的软件!
关于本书
本书分为3部分,包括了性能测试设计理论、实施和分析方法、性能测试实际案例等内容。
第1部分:兵法篇,包含第1章和第2章。第1章主要介绍性能测试基础理论,内容有性能测试简介、性能测试种类、性能测试误区、系统调整等。第2章介绍Web全面性能测试模型,是全书的核心部分,主要讲解性能测试策略制定、用例设计模型、模型使用方法等。
第2部分:方案篇,包括第3章和第4章。第3章主要探讨如何在性能测试工作中设计与实施性能测试,包含了性能测试的启动、计划、实施、控制、收尾等内容。第4章介绍性能测试分析的基础方法。
第3部分:实战篇,即第5章。本章详细讨论了一些涉及银行、OA、门户网站等不同领域的性能测试案例,介绍了如何在实际中应用前面几章的理论。
致谢
感谢林锐博士,因为本书的最初创意来自于林老师,同时还要感谢林老师热情为本书写了新书推荐,并审校了全书结构。
感谢电子工业出版社博文视点资讯有限公司的编辑陈元玉、陈兴璐。
感谢合作者夏海涛,他的积极参与给了我很大的动力,而且他提出了很多中肯的意见。
感谢师兄王玉亭,即使在工作非常繁忙的情况下,他仍然支持本书的编写。
感谢电子工业出版社为本书辛勤付出的所有编辑们。
感谢测试同行段念、同事刘远志、上海51testing的朴春龙和王威、MI大中华区的李康,他们关注着本书并为本书提出了宝贵的意见,其中部分人参加了校稿工作,尤其同事刘远志为书中一些章节设计了插图。
尤其要感谢自己未来的夫人金成姬,她通篇审校了本书并润色了那些难于理解的句子,特别是她对我写作的支持,因为写作占据了大量可以陪她的时间。
最后要感谢自己的父母和老师,因为能写出本书是父母和老师多年教育的结果。本书投入了大量的时间和精力,直接影响是没有更多的精力来孝敬远在农村的父母,希望本书能作为赠给他们的2006年的新春礼物!
无封面