软件测试基础
作者 : (美)Paul Ammann; Jeff Offutt 著
译者 : 郁莲 等译
丛书名 : 计算机科学丛书
出版日期 : 2010-09-30
ISBN : 978-7-111-29398-9
定价 : 36.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 262
开本 : 16
原书名 : 软件测试基础
原出版社: Cambridge University Press
属性分类: 教材
包含CD :
绝版 :
图书简介

经过大量的课堂检验,本文采用的软件测试方法可谓独具匠心:它将软件测试定义为,把许多定义良好的、通用的测试标准应用到软件结构或模型的过程。本文的结构直接反映了教学方法,融入了最新的测试创新,包括现代软件方法(如OO)、Web应用程序和嵌入式软件。本书通篇包含了大量的实例,并且可以在网站www.introsoftwaretestins.com上获取教师手册、PPT、教学大纲、丰富的例子及更新、学生用的测试工具和用Java编写的软件程序样例。

图书特色

软件测试基础
Introduction
to Software Testing
(美) Paul Ammann  Jeff Offutt (乔治·梅森大学) 著  郁 莲 (北京大学) 等译

“关于测试的书很多,但是大部分书涉及的主题范围都很窄并且讲述不详细。而Ammann和Offutt的这本书中所展示的概念和技术广泛地覆盖了业界和学术界使用的各种语言及平台,是一本全面、实用的测试书。”
—— Roger Alexander,华盛顿州立大学

本书采用创新方法来讲述软件测试,定义测试为将几个通用的测试准则应用于软件结构或软件模型的过程。书中融入了最新的测试技术,包括现代软件方法(如面向对象)、Web应用程序和嵌入式软件。另外,本书包含了大量的实例。

作者简介
Paul Ammann
在美国弗吉尼亚大学获得计算机科学博士学位,现为乔治·梅森大学软件工程副教授。他于2007年获得乔治·梅森大学Volgenau信息技术与工程学院的杰出教学奖。

Jeff Offutt
在乔治亚理工学院获得计算机博士学位,现为乔治·梅森大学软件工程教授。他是《Journal of Software Testing, Verification and Reliability》的主编,是IEEE软件测试、验证和确认国际会议指导委员会主席,还是许多期刊的编委。他于2003年获得乔治·梅森大学Volgenau信息技术与工程学院的优秀教师奖。

图书前言

本书把软件测试当作生产高质量软件必不可少的一个工程实践活动。可以作为本科生或研究生软件测试课程的主要教材,也可以作为软件工程或数据结构等一般课程的补充材料,或者作为软件测试工程师和开发人员的资源。这本书有许多独特之处:
   本书用一种新颖而简单的结构把测试覆盖标准中复杂的、晦涩难懂的观点组织起来。从技术层面上来说,软件测试是以满足覆盖标准为基础的。本书的中心观点是,真正不同的覆盖标准很少,各种覆盖标准很易于归为以下四类:图形、逻辑表达式、输入空间和语法结构。这不仅简化了测试,而且也易于将每个分类直接地加以理论化处理。传统的方法将开发过程中各个阶段的测试区别对待,而该方法与之形成鲜明对比。
   本书是作为一本教科书来构思和撰写的,写作风格直截了当,从基础讲解概念,把所需的背景知识降到最低。本书包括了大量的例子、家庭作业和教辅材料。它在理论和实际应用之间保持了很好的平衡,把测试当作客观的、可测量和重复的量化活动的集合。本书会在必要的地方提出理论概念以支持测试工程师的后续实践活动。
   本书认为,测试是帮助IT专业人士开发更高质量软件的一种智力训练。测试不是一个反工程化的活动,也不是一个具有内在破坏性的过程。本书不仅仅是针对测试专家的,也面向对编程或数学知之甚少的领域专家。
   本书采用模块化结构,彼此间相互关联,所以可以用于多种课程。书中的大部分内容仅需要基础的离散数学和编程知识,需要更多背景知识的地方会清晰地标明。正如在前言的稍后部分描述的那样,对讲述内容进行合理搭配,本书可以用于多种课堂。
   本书假定,读者学习的目标是成为用最低的成本做出最好的软件的工程师。书中的概念在理论上是非常基础的,但也是非常实用的,大多是当前正在使用的。
为什么要用这本书
  不久前,软件开发公司可能会雇用不会测试的程序员和不会编程的测试者。对于大多数企业来说,双方没有必要知道对方背后的技术原理。在行业历史上,软件测试一直被当成一个非技术性的活动。软件企业主要从管理和过程的角度来看测试,对测试者的技能培训没抱多大期望。
  随着软件工程行业日趋成熟,软件已渗透到人们日常生活的各个方面,对软件可靠性、可维护性和安全性的要求越来越高。软件企业必须用多种方法来应对这些变化,其中就包括改善软件测试方法。这需要提高测试工程师的专业技能,还需要不断强调软件开发者做测试的重要性。值得庆幸的是,经过30多年的研究和实践,已涌现出许多知识和技术。本书把这些知识整理起来,使学生、测试工程师、测试管理者和开发者都能使用。
  同时,我们也发现在大学中教授测试的课程相对较少。只对少数本科生安排了测试课,对计算机科学或软件工程专业的硕士生几乎没有安排软件测试课程,少数十几个教学课程中安排一个测试选修课。测试不仅没有成为本科生计算机科学教育的必要部分,而且大部分计算机科学的学生根本就没有任何测试知识,或者只是作为一般课程的一部分,在软件工程课上讲几节课。
  本书的作者给软件工程和计算机科学专业的学生讲授软件测试已经超过15年了。在此期间,我们得出了一个很不期望看到的结论:没有人写出一本我们想要的书。所以,如果我们想要,就必须自己写。
  以前的测试类书籍把软件测试当作一个相对简单的学科,认为这个学科依赖于过程,而不是从技术的角度去理解软件是如何构成的;有的书把测试作为一个需要详细理解大量软件开发技术的复杂的、割裂的学科;还有的书把测试当作一个只有数学家和计算机理论科学家才能掌握的纯理论学科。大多数关于测试的书籍围绕着一个典型的软件开发周期的各个阶段展开,这种方法会使原本普通的测试主题变得难懂。最后,大多数测试类书籍是作为参考书而写的,而不是教科书。所以,只有先前有过专门软件测试知识的教师才能轻松使用。而本书对于那些不是测试专家的教师也是易于使用的。
  本书在许多重要方面不同于其他的软件测试类书籍。许多书讲解如何管理测试过程,当然这很重要,但告诉测试者基于基础理论的具体测试技术同样重要。本书在理论和实践应用之间保持了很好的平衡。这是软件公司必须有的重要信息,但是本书特别注重设计和创建测试用例的基本技术问题。目前市面上其他的测试类书籍主要关注技术或活动,比如系统测试或单元测试,而本书旨在综合软件开发的整个过程,涵盖尽可能多的技术。
  如前所述,本书的目的是支持多种软件测试课程。我们在乔治·梅森大学软件工程硕士研究生的软件测试课上做了第一个尝试,每学期有30多个计算机科学和软件工程专业的学生选修这门课程。我们还组织了软件测试的博士研讨会,举办了特定方向的短期企业培训,还为许多本科课程进行了讲座。虽然有关软件测试的本科课程不多,但我们相信不久的将来会有很多。许多关于测试的书并不是用在课堂上的,我们特地写了这本书来支持课堂教学,因此在本书网站(www.cs.gmu.edu/~offutt/softwaretest)上本书目录的后面看到我们的测试课程的提纲就不足为奇了。
  本书采用了许多精心打造的实例来帮助学生和老师学习略显复杂的概念。教辅资源包括高质量的PPT、演讲提示、习题解答和相关软件。我们的思想是:我们不仅仅是在写一本书,同时也在为社区提供课程。我们的目标之一是,所写的内容作为研究文献有学术性,对于非研究人员也是易于使用的。虽然本书的论述与出自研究论文的资料有些不同,但其本质思想是忠实于文献的。为了使文章更为通顺,我们删除了论述中的引用。对于那些喜欢追根溯源的研究者,每章最后都有一个参考文献注释,它对概念的来源进行了总结。
本书的读者对象
  学生通过本书可以学到软件测试背后的基本原理,学到如何应用这些原理来更快、更好地生产软件。他们不仅会成为优秀的程序员,而且他们还可以为未来的雇主实施高质量的软件测试活动。教师即使没有软件测试的实际经验,也可以在课堂上使用本书。即使教师不是软件测试方面的专家,本书附带的大量的练习、启发式的问题、课堂上的幻灯片和给出的课外练习也会使他们很容易教授这些课程。研究生(如一年级的博士生)会发现这本书是介入这一领域的无价之宝。清晰合理地讲述理论,用实际应用说明哪些有用,哪些没用;用高级阅读和参考文献把对这些内容感兴趣的读者引向相关资料。虽然软件测试的研究生相对较少,但是我们认为他们是关键读者群,因为通俗、低门槛会使研究生较容易加入测试研究者社区。已经熟悉这一领域的研究者会发现“标准-方法”新颖而有趣。可能有人不同意这种教学方法,但是我们发现,把测试当作将有限的几个标准应用到极少数的软件结构中的观点对我们的研究很有帮助。我们希望将来的测试研究能够从寻找更多的标准转向对现有标准的创新使用和评测上。
  企业中的测试者将发现本书收集了帮助他们提高测试水平的宝贵技术,无论他们当前的水平如何。这里所提出的标准更倾向于成为发现缺陷的技巧“工具箱”。阅读这本书的开发者将发现大量改善软件的方法。他们的自测活动将变得更快速、更有效,关于测试工程师找出软件缺陷的讨论将帮助开发者避开它们。正如一个很有名的寓言所讲的,如果你想教一个人成为好的渔夫,就要讲解鱼如何以及在哪里游泳。最后,管理者将发现本书很好地解释了聪明的测试工程师如何做好他们的工作,以及测试工具如何运行。这样,他们在雇人、晋升和购买工具时,就可以做出更有效的决定。
如何使用本书
  本书结构的一个主要优势是,它能够轻松地用于多种不同的课程。大多数教材依赖大学和高中所教授的知识:数据结构和离散数学的基本概念。本书各个部分的组织使得每章前面的内容对于低年级或者基础不太好的学生也很易于使用,需要更高级知识的材料都会明确标出。
  特别地,本书定义了7个单独的章节集合,它们组成了贯穿本书的模块分类:
  1)计算机科学专业大学二年级课程模块。
  2)软件测试专业大学二年级水平的课程模块。
  3)一般软件工程课程模块。
  4)软件测试高级课程模块。
  5)理学硕士一年级水平的软件测试课程模块。
  6)面向研究的研究生高级软件测试课程模块。
  7)从业人员的相关章节模块。
  这种模块分类方法可见后面的简略目录。每个章节都标明了它属于哪个模块。当然,有的教师、学生和读者更愿意按照自己的兴趣或目标来使用这些模块。我们的建议是,第1章的前两节和第6章的前两节用于在数据结构(CS II)课程中阅读,它们后面都有一个简单的作业。我们最喜欢的是让学生们找一个他们以前写的评过分的程序,然后,让程序满足某种简单的测试标准,比如分支覆盖。每发现一个缺陷,我们都给出分数,这使人理解了两个概念:一是“A”级并不意味程序总可以运行,二是发现缺陷才是一件好事情。
模块
1 2 3 4 5 6 7
第一部分  概览
第1章  概述
 1.1  测试工程师的工作
 1.2  软件测试的局限性和术语
 1.3  测试覆盖标准
 1.4  以往的软件测试术语
 1.5  参考文献注释
(续)
模块
1 2 3 4 5 6 7
第二部分  覆盖标准
第2章  图覆盖
 2.1  概述
 2.2  图覆盖标准
 2.3  源代码的图覆盖
 2.4  设计元素的图覆盖
 2.5  规格说明的图覆盖
 2.6  用例的图覆盖
 2.7  用代数方法表示图
 2.8  参考文献注释
第3章  逻辑覆盖
 3.1  概览:逻辑谓词和子句
 3.2  逻辑表达式覆盖标准
 3.3  程序的结构化逻辑覆盖
 3.4  基于规约的逻辑覆盖
 3.5  有限状态机的逻辑覆盖
 3.6  析取范式标准
 3.7  参考文献注释
第4章  输入空间划分
 4.1  输入域建模
 4.2  组合策略标准
 4.3  划分中的约束
 4.4  参考文献注释
第5章  基于句法的测试
 5.1  基于句法的覆盖标准
 5.2  基于程序的语法
 5.3  集成与面向对象测试
 5.4  基于规范的语法
 5.5  输入空间语法
 5.6  参考文献注释
第三部分  在实践中运用的标准
第6章  实际的考虑
 6.1  回归测试
 6.2  集成和测试
 6.3  测试过程
 6.4  测试计划
 6.5  识别正确的输出
 6.6  参考文献注释
第7章  技术的工程标准
 7.1  测试面向对象软件
 7.2  测试Web应用和Web服务
 7.3  测试图形用户界面
 7.4  实时软件和嵌入式软件
 7.5  参考文献注释
(续)
模块
1 2 3 4 5 6 7
第8章  创建测试工具
 8.1  图和逻辑表达式标准的插桩
 8.2  构造变异测试工具
 8.3  参考文献注释
第9章  软件测试中的挑战
 9.1  测试紧急性属性:安全性和保密性
 9.2  软件的可测试性
 9.3  测试标准和软件测试的未来
 9.4  参考文献注释
  大学二年级水平的软件测试课程(模块2)紧跟着数据结构课程。标出部分的材料只需要数据结构和离散数学的知识。
  一般的软件工程课程模块(模块3)可以增加这些课程的文献综述材料。标出部分提供了软件测试的基础知识。
  软件测试的高级课程(模块4)是本书的主要部分。它增加的材料就软件开发而言需要比大学二年级模块更多的背景知识。这包括第2章中有关数据流测试的章节,涉及多个模块集成测试的章节和依赖于文法或有限状态机的章节。大多数三年级计算机科学专业的学生已经在其他的课程中看到过这些材料。出现在模块4但不在模块2中的大多数章节,可以加上适当的简介到模块2中。值得注意的是,测试工程师使用数据流测试时不需要懂得所有的语法分析理论,要使用测试状态图也不需要知道所有有限状态机的理论。
  研究生水平的测试课程(模块5)增加了许多章节,这些章节需要大量的理论上有待成熟的背景知识。例如,某些章节需要初级形式化方法、多态和UML图的知识。许多高级主题和构建测试工具的整章内容也是为研究生准备的,可以为一个好项目提供一个基础,比如,实现一个简单的覆盖分析器。
  研究生的高级软件测试课程(模块6)侧重于研究,就像一个博士的研讨会,包括仍未证实或还在研究的问题。参考文献注释是给那些想在将来进一步深入阅读的学生准备的。
  最后,在模块7中标注出来的章节可广泛地用于企业中,特别是那些有商业工具支持的企业。这些章节涉及的理论最少,省略了那些在可用性上仍有问题的标准。
  在本书的网站上可以获取大量的补充材料,包括教学大纲、PPT、演讲提示、习题解答、可运行的软件和勘误表。
致谢
  在撰写本书的过程中,许多人帮助过我。乔治·梅森大学软件测试课上的学生们不仅能够非常宽容地使用本书的半成品,而且还很热情地提供反馈来改进本书。我们不能把这些学生一一列出(有10个学期的学生都使用了本书),下面仅列出了做出突出贡献的几位学生:Aynur Abdurazik、Muhammad Abdulla、Yuquin Ding、Jyothi Chinman、Blaine Donley、Patrick Emery、Brian Geary、Mark Hinkle、Justin Hollingsworth、John King、Yuelan Li、Xiaojuan Liu、Chris Magrin、Jyothi Reddy、Raimi Rufai、Jeremy Schneider、Bill Shelton、Frank Shukis、Quansheng Xiao和Linzhen Xue。我们特别感激那些给本书提出无私的评论的人:Guillermo Calderon-Meza、Becky Hartley、Gary Kaminski和Andrew J.Offutt。我们感谢其他教育机构的初期使用者提出的反馈:Roger Alexander、Jane Hayes、Ling Liu、Darko Marinov、Arthur Reyes、Michael Shin和Tao Xie。我们也想感谢许多为本书提供素材的人:Roger Alexander、Mats Grindal、Hong Huang、Gary Kaminski、Robert Nilsson、Greg Williams、Wuzhi Xu。我们很高兴收到他们的建议:Lionel Briand、Ren巈 Bryce、Kim King、Sharon Ritchey、Bo Sanden和Steve Schach。很感谢我们的编辑Heather Bergman提供的坚定支持,他为我们的项目推迟了截稿时间,也同样感谢剑桥大学出版社的Kerry Cahill为这个项目提供的强大支持。
  我们还要感谢乔治·梅森大学为我们两个人提供公休,还在关键时刻为我们提供助教。我们的系主任Hassan Gomaa也为这个项目提供了热情的支持。
  最后,这本书的完成也离不开我们家人的支持。谢谢Becky、Jian、Steffi、Matt、Joyce和Andrew让我们稳定地生活,感谢他们在过去的5年中给我们带来的快乐。
  正如所有程序都有缺陷一样,所有的书都有错误。我们的书也是如此。软件缺陷的责任在于开发者,而书中内容错误的责任在于我们作者。值得一提的是,参考文献注释部分反映了我们对于软件测试领域的观点,这项工作庞大而繁琐。我们提前为书中的纰漏致歉,敬请指正。

Paul Ammann
Jeff Offutt

上架指导

计算机\软件工程

封底文字

“关于测试的书很多,但是大部分书涉及的主题范围都很窄并且讲述不详细。而Ammann和Offutt的这本书中所展示的概念和技术广泛地覆盖了业界和学术界使用的各种语言及平台,是一本全面、实用的测试书。”             
                           --Roger Alexander,华盛顿州立大学
本书通过将测试定义为几个通用的测试准则应用于软件结构或软件模型的过程,讲述了软件测试的创新方法。本书直接根据教学方法来组织结构,并融入了最新的测试技术,包括现代软件方法(如面向对象)、Web应用程序和嵌入式软件。另外,本书包含了大量的实例。

作者简介

(美)Paul Ammann; Jeff Offutt 著:Paul Ammann 在美国维吉尼亚大学获得计算机科学博士学位,现为乔治?梅森大学软件工程副教授。他于2007年获得Volgenau信息技术与工程学院的杰出教学奖。 Jeff Offutt 在乔治亚技术研究所获得计算机博士学位,现为乔治?梅森大学软件工程教授。他是《Journal of Software Testing, Verification and Reliability》的主编,是IEEE关于软件测试、验证和确认方面的国际会议指导委员会主席,还是许多期刊的编辑委员会成员。他于2003年获得Volgenau信息技术与工程学院的优秀教师奖。

译者简介

郁莲 等译:暂无简介

译者序

译者序
  两位给软件工程和计算机科学专业的学生教授了15年软件测试课程的老师,历时7年,融合大量课堂经验,终于磨砺出这本《软件测试基础》。我同样从事了多年软件测试技术教学,看到这本书时,不禁感慨这是一本不可多得的教科书和参考书。
  关于测试的书很多,但是大部分书涉及的主题范围都很窄并且讲述不详细,或围绕一个典型的软件开发周期的各个阶段展开,这样的方法使原本的测试主题变得难懂,而本书正是依靠其独特之处成为教科书或参考书的上佳选择。
  经过大量的课堂检验,本书对于软件测试采用了可谓独具匠心的理解。它将软件测试定义为把许多定义良好的、通用的测试标准应用到软件结构或模型的过程,同时是生产高质量软件的一个不可或缺的实践工程活动。
  本书用一种新颖而简单的结构把测试覆盖标准中复杂、晦涩的观点组织起来。从技术侧面说,软件测试是基于满足覆盖标准的。本书的观点是,真正不同的覆盖标准很少,各种覆盖标准很容易归为以下4类:图形、逻辑表达式、输入空间和语法结构。这不仅简化了测试,而且也易于将每个分类直接地理论化处理。传统的方法将开发过程中各个阶段的测试区别对待,而该方法与之形成鲜明对比。
  本书的写作风格直接,从基础讲解概念,把所需的背景知识保持在最低,通篇包含了大量的实例,它把测试当作了客观的、可测量的和重复的量化活动的集合,同时也在必要的地方提出理论概念以支持测试工程师的后续实践活动。
  本书采用模块化设计,彼此间相互关联,合理搭配,可以用于多种课程。书中的大部分内容仅需要基础的离散数学和编程知识就可以了。
  本书在理论和实践应用之间保持了巧妙的平衡,重点讲解如何管理测试过程和测试者基于基础理论的具体测试技术,并且特别注重设计和创建设计测试用例的基本技术问题,旨在综合软件开发的整个过程,覆盖尽可能多的技术。
  本书同时也可以使不同的角色从中受益。对于学生,本书使其可以学到软件测试背后的基本原理,学到如何应用这些原理来更快、更好地生产软件;对于教师,大量的练习、启发式的问题、课堂上的幻灯片和给出的课外活动使得教师很容易教授这些材料;企业的测试者,将发现本书收集了帮助提高他们测试水平的技术。
致谢
  译者近几年来一直在北京大学软件与微电子学院从事软件测试技术的研究与授课。在翻译本书的过程中,学院对我的工作给予了极大的支持与重视。我的硕士研究生张、李磊、张坚、伍晓东、赵文博、曹宇奇等同学参与了本书的部分翻译与整理工作,付出了很多努力,在此表示感谢。

郁  莲
20010年6月

图书目录

出版者的话
译者序
前言
第一部分  概   览
第1章  概述 1
1.1  测试工程师的工作 2
1.1.1  基于软件活动的测试级别 3
1.1.2  基于测试过程成熟度的Beizer的测试级别 5
1.1.3  测试活动的自动化 6
1.2  软件测试的局限性和术语 7
1.3  测试覆盖标准 12
1.3.1  不可行性与包含 14
1.3.2  好的覆盖标准的特征 15
1.4  以往的软件测试术语 16
1.5  参考文献注释 17
第二部分  覆 盖 标 准
第2章  图覆盖 19
2.1  概述 19
2.2  图覆盖标准 23
2.2.1  结构化覆盖标准 24
2.2.2  数据流标准 33
2.2.3  图覆盖标准中的包含关系 38
2.3  源代码的图覆盖 40
2.3.1  源代码的结构化图覆盖 40
2.3.2  源代码的数据流图覆盖 41
2.4  设计元素的图覆盖 50
2.4.1  设计元素的结构化图覆盖 50
2.4.2  设计元素的数据流覆盖 51
2.5  规格说明的图覆盖 57
2.5.1  顺序约束测试 57
2.5.2  软件状态行为测试 60
2.6  用例的图覆盖 68
2.7  用代数方法表示图 71
2.7.1  把图简化成路径表达式 73
2.7.2  路径表达式的应用 75
2.7.3  得到测试输入 75
2.7.4  在流图中计算路径数并确定最大路径长度 76
2.7.5  到达所有边的路径的最小值 77
2.7.6 互补运算分析 77
2.8  参考文献注释 79
第3章  逻辑覆盖 82
3.1  概览:逻辑谓词和子句 82
3.2  逻辑表达式覆盖标准 83
3.2.1  有效的子句覆盖 84
3.2.2  无效子句覆盖 87
3.2.3  不可行性和包含 88
3.2.4  使子句决定谓词 89
3.2.5  寻找满足的取值 91
3.3  程序的结构化逻辑覆盖 94
3.4  基于规约的逻辑覆盖 104
3.5  有限状态机的逻辑覆盖 106
3.6  析取范式标准 109
3.7  参考文献注释 116
第4章  输入空间划分 119
4.1  输入域建模 120
4.1.1  基于接口的输入域建模 121
4.1.2  基于功能的输入域建模 122
4.1.3  识别特性 122
4.1.4  选择块和值 123
4.1.5  使用一种以上的输入域模型 125
4.1.6  检查输入域模型 125
4.2  组合策略标准 126
4.3  划分中的约束 130
4.4  参考文献注释 131
第5章  基于句法的测试 134
5.1  基于句法的覆盖标准 134
5.1.1  BNF覆盖标准 134
5.1.2  变异测试 136
5.2  基于程序的语法 139
5.2.1  编程语言的BNF语法 139
5.2.2  基于程序的变异 139
5.3  集成与面向对象测试 151
5.3.1  BNF集成测试 151
5.3.2  集成变异 151
5.4  基于规范的语法 155
5.4.1  BNF语法 156
5.4.2  基于规范的变异 156
5.5  输入空间语法 158
5.5.1  BNF语法 158
5.5.2  输入语法的变异 161
5.6  参考文献注释 166
第三部分  在实践中运用的标准
第6章  实际的考虑 169
6.1  回归测试 169
6.2  集成和测试 170
6.2.1  桩和驱动程序 171
6.2.2  类的集成测试顺序 171
6.3  测试过程 172
6.3.1  需求分析和规格说明书 173
6.3.2  系统和软件设计 174
6.3.3  中级设计 174
6.3.4  详细设计 175
6.3.5  实现 175
6.3.6  集成 175
6.3.7  系统部署 176
6.3.8  操作和维护 176
6.3.9  总结 176
6.4  测试计划 177
6.5  识别正确的输出 181
6.5.1  输出的直接验证 181
6.5.2  冗余计算 182
6.5.3  一致性检查 182
6.5.4  数据冗余 183
6.6  参考文献注释 184
第7章  技术的工程标准 185
7.1  测试面向对象软件 185
7.1.1  面向对象软件测试特有的问题 186
7.1.2  面向对象的错误类型 186
7.2  测试Web应用和Web服务 201
7.2.1  测试静态超文本Web站点 202
7.2.2  测试动态Web应用 202
7.2.3  测试Web 服务 204
7.3  测试图形用户界面 205
7.4  实时软件和嵌入式软件 206
7.5  参考文献注释 209
第8章  创建测试工具 211
8.1  图和逻辑表达式标准的插桩 211
8.1.1  节点覆盖和边覆盖 211
8.1.2  数据流覆盖 213
8.1.3  逻辑覆盖 213
8.2  构造变异测试工具 215
8.2.1  解释方法 215
8.2.2  分离编译的方法 216
8.2.3  基于模式的方法 216
8.2.4  使用Java反射机制 217
8.2.5  实现一个现代的变异系统 217
8.3  参考文献注释 217
第9章  软件测试中的挑战 220
9.1  测试紧急性属性:安全性和保密性 220
9.2  软件的可测试性 222
9.3  测试标准和软件测试的未来 225
9.4  参考文献注释 227
参考文献 229

教学资源推荐
作者: 王宏志,刘海龙,张立臣,石胜飞 编著
作者: 郭晓平 朱鸣华 编著
作者: 李改成 编著
参考读物推荐
作者: (美)Carroll Morgan
作者: Ralph Grabowski
作者: 邱郁惠 编著
作者: 李明 著