前言
从前我们很少看到“软件亚健康”这样的概念,之所以提出这个概念,是因为亚健康不但威胁着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人都是处于亚健康状态一样,超级健康或者健康软件的“Percent”很低,多数软件都存在性能问题。
现实中亚健康软件通常是大多数公司做项目的产物,也是本书讨论的重点。亚健康软件的例子很多:下面表1是某OA系统5个用户与50个用户分别并发时一些操作的响应时间的对比测试数据:
Transaction Name | Minimum | Average | Maximum | 90 Percent | ||||
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 |
表1 某OA系统不同用户并发的响应时间对比(单位:秒)
这个OA系统是亚健康软件的典型。可以看出此OA系统在50个用户并发时,其响应时间平均是5个用户并发时的几十倍,甚至上百倍。这套系统倒是与我们这些IT人很类似,平时上班走路根本看不出什么,可是“爬一下山”,是否健康就见分晓了。我做了几年的性能测试,一直在思考着如何从根本上解决软件性能问题。为此,根据这几年的经验提出了“Web全面性能测试模型”。
一剂治疗软件亚健康的良药——全面性能测试模型
可以预言,软件亚健康问题将会越来越突出,因此我们应该尽早寻找从根本上来解决这一问题的方法。为了达到上述目的,本书提出了“Web全面性能测试模型”,做为一剂解决软件亚健康问题的“良药”。
“Web全面性能测试模型”包含了测试策略制定、测试用例设计、模型使用方法三部分内容,基本覆盖了性能测试启动和设计的相关内容,为开展Web性能测试提供了切实可行的方法。模型尽管是针对Web系统提出,但是对大多数涉及网络的系统同样有效,因此模型在书中也称为“全面性能测试模型”,它的主要特点如下:
l 来自实践领域,适用范围广: “Web全面性能测试模型”是综合了几十个项目的性能测试经验而提出的性能测试分析设计模型,可以覆盖银行、电信、OA、互联网等诸多领域的测试需求。
l 测试工具无关性:目前性能测试工具的使用已经不再是难题,性能测试中困难的是有了工具去测试什么,以及如何分析测试结果。“Web全面性能测试模型”不是依赖于某一特定性能测试工具而提出的,而是通用的性能测试方法,为使用性能测试工具的测试人员解决了上面的难题。测试人员掌握“Web全面性能测试模型”后,设计和执行测试时可以选择WebLoad、LoadRunner、Web Application等性能测试工具中的任何一种。
l 根据策略来裁剪测试内容:测试用例设计方案按照由浅入深的顺序设计,因此可以根据测试策略进行灵活的裁剪。可以裁剪的特点使模型更加灵活,以达到根据实际情况进行合理的投入,实现了节约成本最低化。
“Web全面性能测试模型”是关于测试设计的模型,是一套从测试准备阶段乃至软件需求和设计阶段来解决软件亚健康问题的方法,也是是本书的核心内容。同时,本模型也是一个发展的模型,需要作者和读者不断完善它,相信和广大IT同行的共同努力,一定能实现对软件亚健康的标本兼治!
关于本书
本书分为三部分,包含了性能测试设计理论、实施和分析、案例等内容。
第一部分:兵法篇,包含第一章和第二章。第一章主要介绍基础的性能测试理论,包含性能测试简介、性能测试种类、性能测试误区、性能测试调优等基础的性能测试知识,做为进一步开展性能测试的了解知识。第二章介绍web全面性能测试模型,是全书的核心部分,主要讲解性能测试策略制定、用例设计等内容。
第二部分:谋划篇,包含第三章和第四章。第三章主要探讨如何在性能测试工作中实施测试工作,包含了性能测试的启动、计划、实施、控制、收尾等内容。第四章介绍性能测试分析的基础方法。
第三部分:实战篇,包含第五章。第五章详细讨论了几个性能测试中的案例,内容涉及银行、OA、门户网站等不同领域的性能测试,其中每个案例都有不同的侧重点,介绍了前面几章内容在实际中的应用。
致谢
首先感 谢林锐 博士,因为本书的最初创意来自 于林 老师,同时还要感 谢林 老师在百忙中为本书做了序,并进行了对全书结构的审校;
其次感谢电子工业出版社博文视点资讯有限公司的陈兴璐,她是本书的策划编辑;
感谢合作者夏海涛,是他的积极参与保证了本书的编写进度;
感谢电子工业出版社所有为本书辛勤付出的编辑们;
感谢山东的网友张振芳、段念、同事刘远志、上海51testing的朴春龙和王威、Mi大中华区的李康,他们关注着本书并为本书提出了宝贵的意见,其中部分人参加了校稿工作,尤其同事刘远志为书中很多章节设计了精美的插图;
尤其要感谢自己未来的夫人金称姬,她通篇审校了本书并润色了哪些难于理解的句子,尤其是她对编写工作的支持,因为本书占据了大量可以陪她的时间;
最后要感谢自己的父母和老师,因为能写出本书是父母和老师多年教育的结果。本书进行了大量的时间和资金投入,直接影响是没有更大的能力来孝敬远在农村的父母亲,希望本书成为他们2006年的新春礼物!