图书前言

第3版前言

《软件测试方法和技术》第2版被选为普通高等教育“十一五”国家级规划教材,并得到上百所大学师生的钟爱,选为本科软件测试课程的教材,获得了良好的社会效益。但另一方面,作者也深感其荣誉所带来的压力和挑战,感到更有责任维护好本书的质量,及时更新本书,与时俱进。但苦于工作繁忙,更新不够及时,在第2版出版4年后终于完成其更新。

这几年,不仅Web应用、移动设备的App应用等得到迅猛发展,而且软件开发模式及其管理也发生了较大的变化,大多数软件企业从传统的瀑布开发模式转变为敏捷开发模式,对整个软件工程带来巨大的影响,其中也包括软件测试,越来越多的软件团队开始实施敏捷测试、探索式测试以适应软件开发新模式的需求。本书的第3版正是在这样一个背景下诞生的,再加上软件工程知识体系SWEBOK 3.0业已颁布,第3版在第2版的基础上做了较大的修改,以满足软件测试教学新的要求,更好地和业界的测试技术与实践保持同步,同时也尽可能与SWEBOK 3.0内容吻合,与国际领先的技术和理念保持一致。

在这一版修改中,只有第1章引论、第8章软件本地化测试、第11章设计和维护测试用例以及第12章部署测试环境没做修改或只做了较少修改,其他各章都有较大修改,不仅进行了一些删减,如去掉“软件过程模型、测试团队的构成和建设、实验室”等内容,使内容更紧凑、更专注软件测试方法和技术,而且增加了一些新的内容(如敏捷测试、探索式测试等),对第2版中的一些内容进行了整合,将本书从17章整合为14章,从而使第3版结构更合理,软件测试知识体系更丰富,能够更好地适应大学的课程计划,提高毕业生的竞争能力。本书第3版主要改动内容如下。

(1) 对一些概念定义进行了修改,和国际标准或国内测试规范保持一致,包括测试层次、测试类型等,并增加了“测试与质量保证之间的关系”。

(2) 在第2章根据新的质量评估模型标准(ISO 25000系列)增加了“内部质量、外部质量、使用质量”,这样更有利于理解和实施不同层次的测试: 单元测试和集成测试更侧重内部质量,系统测试侧重外部质量,验收测试侧重使用质量。

(3) 不再把“静态测试和动态测试”、“黑盒测试和白盒测试”作为测试的基本方法,而把它们归为一种测试形式或测试方法论,从第3章移到第2章。

(4) 将原第12章组建测试团队的大部分内容省去,只保留专职测试人员的责任和要求,并移到第2章(2.8节)来进行介绍。

(5) 第3章对内容没有做过多改动,只是对结构进行了较大改动,使本教材的测试方法分类和SWEBOK 3.0基本保持一致,但还是存在一定差异,因为作者认为SWEBOK 3.0有些分类也不一定合理,所以本书将测试方法分为基于直觉和经验的方法、基于输入域的测试、基于逻辑覆盖的测试、基于组合及其优化的测试、基于缺陷模式的测试、基于模型的测试、形式化验证等。

(6) 对第4章内容进行了精简,例如,删去软件测试管理和评判体系,对测试模型内容进行了更新,例如,将TMap、TPI提升到TMap NEXT、TPI NEXT版本。而且增加了软件测试流派相关内容,帮助学生扩展视野,提高学生思维能力。

(7) 将第6章的集成测试并入第5章单元测试,更符合业界实践,即单元测试和集成测试并行实施,两者关系更紧密。将第8章面向对象的测试内容进行精简,并入第5章单元测试和集成测试相应部分,“面向对象的测试”不再独立成章,因为现在的软件几乎都是采用面向对象的方法。

(8) 第6章系统测试加强了性能测试、安全性测试内容,特别是性能测试负载模式和过程、安全性测试的范围和方法,更为全面和专业。同时,将原来第7章验收测试的兼容性测试、第9章基于应用服务器的测试大部分内容、第11章软件测试自动化的工具部分等合并到这章,形成更完整的系统测试体系,使本章教学更容易做到理论和实践相结合,在介绍方法或技术之后能及时进行案例分析,使学生更有兴趣来完成各类系统测试的实验任务,学以致用。

(9) 第7章验收测试修改不大,除了将兼容性测试移到第6章,对传统的验收测试和敏捷开发中的验收测试差异进行了介绍,对文档测试内容做了适当的调整。

(10) 由于业界越来越关注自动化测试框架的应用,所以第9章增加了“自动化测试框架”,帮助学生建立这个重要的概念。

(11) 第10章测试需求分析与测试计划,虽然是新的一章,但主要内容来源于第2版的第17章软件测试项目管理,但在第10章加强了软件测试需求分析,虽然人们重视测试设计,往往忽视了测试需求分析,但测试需求分析是测试计划、测试设计的基础,必须给予足够的关注。无论是传统测试还是敏捷测试,即使在探索式测试中不设计测试用例,也要进行测试需求分析。这章详细介绍了测试需求分析的方法和具体技术,以及如何更好地做好功能测试需求分析和非功能测试需求分析。除了测试需求分析,本章还详细介绍了测试的目标和准则、测试项目的估算与进度安排、测试风险和测试策略、测试计划的内容与编制等内容。

(12) 第12章只删除了建立测试实验室这一节,因为其内容对多数学生将来的测试工作和研究都没有太大帮助。

(13) 第13章内容主要来源于第2版的第15章报告所发现的缺陷,但增加了一节——软件测试执行与跟踪,侧重介绍测试执行过程的要点、测试项目进度的管理方法和测试过程管理工具等。

希望通过这样修改以后,教师和学生更喜欢本教材,但同时也深感其中还存在一些问题,而且离完美还有很大的距离。无论如何也不能为了追求完美,把已经修改的内容锁在计算机内,不能给大家带来价值,而应该拥有敏捷的思想,及时交付有价值的成果给大家,为大家的教学服务,作者将不断努力,持续获得大家的反馈,持续修改,继续出版其第4版、第5版……持续地服务大家。

最后,再一次请读者不吝赐教,及时提供反馈,为下一版的改进提出宝贵意见。

朱少民

2014年8月于同济大学嘉定校区

第2版前言

整整十年前——2000年,我们就全身心投入“软件测试”这一学科,但那时,“软件测试”还没有引起大家足够的关注,虽然今天“软件测试”这一领域已欣欣向荣,软件测试的培训很热,从业人员也是一个很大的数字,测试方面的图书也是琳琅满目,但是5年前,软件测试方面的图书很少,只有几本从国外翻译过来的。5年前,我们的《软件测试方法和技术》第1版和读者见面了,深受读者喜欢,多次印刷,还获得一些殊荣,例如第8届大学生图书节畅销图书一等奖、被选为普通高等教育“十一五”国家级规划教材。同时,也陆续收到读者的反馈,提出了不少宝贵的意见。

为了不辜负读者的厚望,我们认真吸取读者的反馈意见,参考更多的资料,历时一年多,对第1版内容做了大量修改。虽然保持了本书的整体结构,但对一些章节也做了调整。例如,将“白盒测试方法和黑盒测试方法”的基本内容从原来(第1版)第5章、第14章移到现在的第3章; 将测试策略、测试计划(第1版3.2和3.3节)内容移到最后第17章,从测试项目管理角度来全面介绍测试策略制定和测试计划,其中测试策略可以看作是测试计划过程中的重要工作之一。第2版还删除了一些和测试内容关系不够紧密的内容,例如“1.1 软件的含义”、“1.2 软件开发过程特性”、SQA和CMM相关内容、“9.1 应用服务器的分类和特征”、“16.1.2 软件度量的分工和过程”和“17.1.1 软件项目管理的共性”等,使本书更加专业,留出更大空间来介绍更多的软件测试知识和技术。所以,在第2版增加了比较多的内容,包括: 

正交试验法

形式化测试方法

基于模型的软件测试

扩展有限状态机方法

模糊测试方法

基于客户角度的Java测试

基于程序角度的Java测试

测试过程模型TMap

测试过程改进模型TMM/TPI/CTP/STEP

虚拟机技术

自动化部署

开源测试工具

嵌入式软件测试工具等

使之跟上软件技术的发展,更贴近软件测试领域的实际应用,同时,第2版在内容上更加完整,涵盖了实际测试工作上所需的各项技能。

第2版在第1、2、3、4章上做了很大改动,加上前面所述的修改,使本书在内容组织上更加自然、合理,从基本概念到方法,再从方法到技术,逐步推进,使软件测试这门课程学习达到最好的效果。第2版在测试工具应用上增加了分量,不仅提高了测试技术水平,而且涉及面更广,从单元测试、GUI功能测试到服务器的性能测试等各个方面,进行了更深入的讨论。在性能测试上,也比第1版有更详细的介绍。

第2版修订工作由朱少民负责和定稿,其中第1、2、3、4、6、7、10、11、12、13、14、15、16、17章由朱少民修订,第5、8章由王顺修订,第9章由朱少民、王顺共同修订。

本书特别重视理论与实践相结合,使读者既能领会软件测试的思想和方法,又能将这些方法和技术应用到实际工作中去。因此,本书既适合作为计算机应用、计算机软件、软件工程、软件测试等学科的大学教材,也适合从事软件开发和维护的工程技术人员阅读,包括软件测试人员、开发人员、项目经理和产品经理。

由于作者水平有限,经过修订,本书仍会存在一些问题,欢迎读者继续提出宝贵意见,不断提高本教材的质量。

作者

2010年2月

第1版前言

2002年, 国家信息产业部在软件产业发展公报中列举了我国软件业发展的三大问题,其中一个问题就是国内软件企业出口能力很弱,公报指出“随着国内软件企业的发展壮大,国内软件企业也在开始不断开拓海外市场。但由于缺乏有自主知识产权的拳头产品,同时又缺乏较强的项目分析和设计经验,对国际市场信息、先进软件的设计、开发方式缺乏了解,大多没有完善的质量保障体系,对软件开发过程缺乏有效的管理体系,缺乏严格的质量认证和规范化管理,不能与国际标准接轨,这些都构成了软件出口的重要障碍”。由此可见,完善的质量保障体系、严格的质量认证是提高软件企业生产能力和竞争能力的重要因素。

软件测试是软件质量保证的关键步骤。软件测试研究的结果表明: 软件中存在的问题发现越早,其软件开发费用就越低; 在编码后修改软件缺陷的成本是编码前的10倍,在产品交付后修改软件缺陷的成本是交付前的10倍; 软件质量越高,软件发布后的维护费用越低。另据对国际著名IT企业的统计,它们的软件测试费用占整个软件工程所有研发费用的50% 以上。 

相比之下,中国软件企业在软件测试方面与国际水准相比仍存在较大差距。首先,在认识上重开发、轻测试,似乎程序是编出来的,忽略了如何通过流程改进和软件测试来保证产品或系统的质量; 也没有认识到软件项目的如期完成不仅取决于系统设计水平和代码实现能力,而且取决于设计、代码、文档等各方面的质量; 其次,在管理上表现为随意、简单,没有建立规范、有效的软件测试管理体系; 另外,缺少自动化工具的支持,大多数企业在软件测试时并没有采用软件测试管理系统。所以对软件企业来说,不仅要提高对软件测试的认识,同时要建立起独立的软件测试组织、采用先进的测试技术、充分运用测试工具、不断改善软件开发流程、建立完善的软件质量保证的管理体系。只有这样才有可能达到软件开发的预期目标,降低软件开发成本和风险,提高软件开发效率和生产力,确保及时地发布高质量的软件产品。

为了缩小国内软件测试水平和国际水准的差距,我们将多年来所积累的软件测试经验与技术实践,依理论、方法和实践三个部分整理成书,与大家共享。同时,也将作者在大学软件学院所开设的软件测试专业课程、在全国性软件测试和质量保证高级培训班以及其他培训班等上的授课经验与交流体会,融入本书之中。

全书共三篇,分为17章,涵盖了软件测试技术和方法所涉及的各方面内容,包括软件测试团队的建立、测试环境的设置和维护、软件测试的组织和管理等,既有理论方法,又有实践经验。

第1篇,软件测试的原理,共分为4章来阐述软件测试的重要性、基本概念和方法等。

第1章介绍软件开发过程以及在软件开发过程中所采用的过程模型,结合过程模型来明确软件测试的地位,并力图从一些经典的软件质量事故中给读者一些启发。

第2章一开头就介绍“软件质量”这个重要概念,然后以此为出发点引出软件测试的基本概念和方法、软件缺陷(Bug)的含义以及软件测试的分类、阶段和过程。

第3章主要介绍软件测试策略和测试计划的内涵、制定方法,并讨论了质量保证与测试的区别,以及如何进行质量可靠性、测试风险性的评估。 

第4章从软件质量标准,逐步深入到软件测试的依据和规范,介绍了什么是规范的软件测试和质量管理的评判体系,简单地讨论了CMM和ISO 9001思想和结构体系。

第2篇,软件测试的技术,共分为7章来介绍软件测试在各个阶段(单元测试、集成测试、系统测试、验收测试和安装测试)的技术和方法,并通过对典型的应用软件领域的测试特点讨论,更好地帮助读者深入理解本章的核心内容——软件测试的技术。

第5章主要介绍单元测试的概念和各种方法,包括等价划分、边界条件确定、程序路径与逻辑验证、程序状态变化等测试方法,简单讨论了编码标准和规范、代码的审查等。

第6章介绍集成测试和系统测试,重点在系统测试上,包括压力测试、容量测试、性能测试、安全性测试、可靠性和容错性测试等方法及其对比。

第7章内容集中在验收测试阶段,其中包括安装测试,涉及产品说明书的验证、可用性、兼容性、可安装性、可恢复性和文档等各个方面的测试。

第8章介绍目前比较流行的面向对象软件这一领域的各种特定的测试方法,包括数据流测试、面向对象的单元和集成测试以及基于UML的系统测试等。

第9章介绍面向应用服务器的测试,具有内容新、技术深的特点,包括Web服务器、数据库应用服务器、J2EE平台等应用系统的测试技术。

第10章介绍软件国际化和本地化的测试方法和注意事项,国际化(I18N)和本地化(L10N)的应用,随着我国加入WTO后越来越多,其测试越来越受到重视。

第11章介绍了软件测试自动化的概念、流行测试工具的分类和应用,最后给出了基于IBMRational、MI、Compuware这三家著名公司产品的整体解决方案。

第3篇,软件测试的实践,共分为6章,来介绍软件测试的团队和环境的建立,以及如何设计测试用例、如何报告软件缺陷、如何写测试报告,最后介绍了软件测试项目管理的方法和经验。

第12章介绍软件测试团队的任务、构成、规模和组织模型,并详细介绍了测试团队的招聘、面试、激励、发展等实践经验。

第13章介绍一个标准的、规范的测试环境是如何建立和配置起来的,以及如何做好维护,满足测试对环境的严格要求。

第14章介绍软件测试用例的设计方法和经验,不仅包括白盒测试和黑盒测试的用例设计方法,还包括用户使用情景的测试用例设计方法,以及用例的组织、维护和改善。

第15章介绍一般测试人员所需要掌握的、最基本的实践能力——如何描述、处理和跟踪所发现的软件缺陷。

第16章介绍如何写测试和软件质量分析报告,特别提供了评估系统测试的覆盖程度、产品质量的量化分析等方法,以及测试报告的模板和实例。

第17章介绍了国际化的、先进的软件测试项目的组织与管理的方法和经验,包括测试资源分配和进度控制、软件版本和分支的控制等。

每章后面都附有小结和思考题。

本书最后附有测试常用的中英文术语对照、常用的各种测试文档模板、参考文献和测试信息资源。

全书由朱少民主编、审稿和定稿。第1、2、10、11、12、16、17章由朱少民编写,第3、4章由张家银编写,第5、7、13章由吴培宏编写,第6、8章由王顺编写,第9、14章由高飞编写,第15章由朱晓婧编写。张静参与了第10章的部分编写工作、汪学娟参与了附录的编写工作。感谢张勤、钟声、胡晓明、范雅琛、张建华等对本书提出的修改意见以及其他工作,同时要感谢作者的家人、作者所在的网迅(WebEx)公司的大力支持,感谢清华大学出版社所提供的合作机会,使这本书可以早日和读者见面。

由于水平和时间的限制,书中不可避免会出现一些疏漏,请各界同仁不吝赐教。

作者

于合肥