软件测试基础(融入最新测试技术、包含大量实例)
基本信息
- 作者: (美)Paul Ammann Jeff Offutt [作译者介绍]
- 译者: 郁莲
- 丛书名: 计算机科学丛书
- 出版社:机械工业出版社
- ISBN:9787111293989
- 上架时间:2010-10-26
- 出版日期:2010 年10月
- 开本:16开
- 页码:250
- 版次:1-1
- 所属分类:
计算机 > 软件工程及软件方法学 > 软件质量、软件测试及维护
编辑推荐
本书采用创新方法来讲述软件测试,定义测试为将几个通用的测试准则应用于软件结构或软件模型的过程。书中融入了最新的测试技术,包括现代软件方法(如面向对象)、Web应用程序和嵌入式软件。另外,本书包含了大量的实例。可供各大专院校作为教材使用,也可供从事相关工作的人员作为参考用书使用。
推荐阅读
内容简介回到顶部↑
作译者回到顶部↑
本书提供作译者介绍
Paul Ammann 在美国维吉尼亚大学获得计算机科学博士学位,现为乔治·梅森大学软件工程副教授。他于2007年获得Volgenau信息技术与工程学院的杰出教学奖。
Jeff Offutt 在乔治亚技术研究所获得计算机博士学位,现为乔治·梅森大学软件工程教授。他是《Journal of Software Testing, Verification and Reliability》的主编,是IEEE关于软件测试、验证和确认方面的国际会议指导委员会主席,还是许多期刊的编辑委员会成员。他于2003年获得Volgenau信息技术与工程学院的优秀教师奖。
.. << 查看详细
Jeff Offutt 在乔治亚技术研究所获得计算机博士学位,现为乔治·梅森大学软件工程教授。他是《Journal of Software Testing, Verification and Reliability》的主编,是IEEE关于软件测试、验证和确认方面的国际会议指导委员会主席,还是许多期刊的编辑委员会成员。他于2003年获得Volgenau信息技术与工程学院的优秀教师奖。
.. << 查看详细
目录回到顶部↑
出版者的话
译者序
前言
第一部分 概览
第1章 概述
1.1 测试工程师的工作
1.1.1 基于软件活动的测试级别
1.1.2 基于测试过程成熟度的beizer的测试级别
1.1.3 测试活动的自动化
1.2 软件测试的局限性和术语
1.3 测试覆盖标准
1.3.1 不可行性与包含
1.3.2 好的覆盖标准的特征
1.4 以往的软件测试术语
1.5 参考文献注释
第二部分 覆盖标准
第2章 图覆盖
2.1 概述
2.2 图覆盖标准
2.2.1 结构化覆盖标准
译者序
前言
第一部分 概览
第1章 概述
1.1 测试工程师的工作
1.1.1 基于软件活动的测试级别
1.1.2 基于测试过程成熟度的beizer的测试级别
1.1.3 测试活动的自动化
1.2 软件测试的局限性和术语
1.3 测试覆盖标准
1.3.1 不可行性与包含
1.3.2 好的覆盖标准的特征
1.4 以往的软件测试术语
1.5 参考文献注释
第二部分 覆盖标准
第2章 图覆盖
2.1 概述
2.2 图覆盖标准
2.2.1 结构化覆盖标准
译者序回到顶部↑
两位给软件工程和计算机科学专业的学生教授了15年软件测试课程的老师,历时7年,融合大量课堂经验,终于磨砺出这本《软件测试基础》。我同样从事了多年软件测试技术教学,看到这本书时,不禁感慨这是一本不可多得的教科书和参考书。
关于测试的书很多,但是大部分书涉及的主题范围都很窄并且讲述不详细,或围绕一个典型的软件开发周期的各个阶段展开,这样的方法使原本的测试主题变得难懂,而本书正是依靠其独特之处成为教科书或参考书的上佳选择。
经过大量的课堂检验,本书对于软件测试采用了可谓独具匠心的理解。它将软件测试定义为把许多定义良好的、通用的测试标准应用到软件结构或模型的过程,同时是生产高质量软件的一个不可或缺的实践工程活动。
本书用一种新颖而简单的结构把测试覆盖标准中复杂、晦涩的观点组织起来。从技术侧面说,软件测试是基于满足覆盖标准的。本书的观点是,真正不同的覆盖标准很少,各种覆盖标准很容易归为以下4类:图形、逻辑表达式、输入空间和语法结构。这不仅简化了测试,而且也易于将每个分类直接地理论化处理。传统的方法将开发过程中各个阶段的测试区别对待,而该方法与之形成鲜明对比。
本书的写作风格直接,从基础讲解概念,把所需的背景知识保持在最低,通篇包含了大量的实例,它把测试当作了客观的、可测量的和重复的量化活动的集合,同时也在必要的地方提出理论概念以支持测试工程师的后续实践活动。
本书采用模块化设计,彼此间相互关联,合理搭配,可以用于多种课程。书中的大部分内容仅需要基础的离散数学和编程知识就可以了。 本书在理论和实践应用之间保持了巧妙的平衡,重点讲解如何管理测试过程和测试者基于基础理论的具体测试技术,并且特别注重设计和创建设计测试用例的基本技术问题,旨在综合软件开发的整个过程,覆盖尽可能多的技术。
本书同时也可以使不同的角色从中受益。对于学生,本书使其可以学到软件测试背后的基本原理,学到如何应用这些原理来更快、更好地生产软件;对于教师,大量的练习、启发式的问题、课堂上的幻灯片和给出的课外活动使得教师很容易教授这些材料;企业的测试者,将发现本书收集了帮助提高他们测试水平的技术。
致谢
译者近几年来一直在北京大学软件与微电子学院从事软件测试技术的研究与授课。在翻译本书的过程中,学院对我的工作给予了极大的支持与重视。我的硕士研究生张、李磊、张坚、伍晓东、赵文博、曹宇奇等同学参与了本书的部分翻译与整理工作,付出了很多努力,在此表示感谢。
郁莲
20010年6月
关于测试的书很多,但是大部分书涉及的主题范围都很窄并且讲述不详细,或围绕一个典型的软件开发周期的各个阶段展开,这样的方法使原本的测试主题变得难懂,而本书正是依靠其独特之处成为教科书或参考书的上佳选择。
经过大量的课堂检验,本书对于软件测试采用了可谓独具匠心的理解。它将软件测试定义为把许多定义良好的、通用的测试标准应用到软件结构或模型的过程,同时是生产高质量软件的一个不可或缺的实践工程活动。
本书用一种新颖而简单的结构把测试覆盖标准中复杂、晦涩的观点组织起来。从技术侧面说,软件测试是基于满足覆盖标准的。本书的观点是,真正不同的覆盖标准很少,各种覆盖标准很容易归为以下4类:图形、逻辑表达式、输入空间和语法结构。这不仅简化了测试,而且也易于将每个分类直接地理论化处理。传统的方法将开发过程中各个阶段的测试区别对待,而该方法与之形成鲜明对比。
本书的写作风格直接,从基础讲解概念,把所需的背景知识保持在最低,通篇包含了大量的实例,它把测试当作了客观的、可测量的和重复的量化活动的集合,同时也在必要的地方提出理论概念以支持测试工程师的后续实践活动。
本书采用模块化设计,彼此间相互关联,合理搭配,可以用于多种课程。书中的大部分内容仅需要基础的离散数学和编程知识就可以了。 本书在理论和实践应用之间保持了巧妙的平衡,重点讲解如何管理测试过程和测试者基于基础理论的具体测试技术,并且特别注重设计和创建设计测试用例的基本技术问题,旨在综合软件开发的整个过程,覆盖尽可能多的技术。
本书同时也可以使不同的角色从中受益。对于学生,本书使其可以学到软件测试背后的基本原理,学到如何应用这些原理来更快、更好地生产软件;对于教师,大量的练习、启发式的问题、课堂上的幻灯片和给出的课外活动使得教师很容易教授这些材料;企业的测试者,将发现本书收集了帮助提高他们测试水平的技术。
致谢
译者近几年来一直在北京大学软件与微电子学院从事软件测试技术的研究与授课。在翻译本书的过程中,学院对我的工作给予了极大的支持与重视。我的硕士研究生张、李磊、张坚、伍晓东、赵文博、曹宇奇等同学参与了本书的部分翻译与整理工作,付出了很多努力,在此表示感谢。
郁莲
20010年6月
前言回到顶部↑
本书把软件测试当作生产高质量软件必不可少的一个工程实践活动。可以作为本科生或研究生软件测试课程的主要教材,也可以作为软件工程或数据结构等一般课程的补充材料,或者作为软件测试工程师和开发人员的资源。这本书有许多独特之处:
? 本书用一种新颖而简单的结构把测试覆盖标准中复杂的、晦涩难懂的观点组织起来。从技术层面上来说,软件测试是以满足覆盖标准为基础的。本书的中心观点是,真正不同的覆盖标准很少,各种覆盖标准很易于归为以下四类:图形、逻辑表达式、输入空间和语法结构。这不仅简化了测试,而且也易于将每个分类直接地加以理论化处理。传统的方法将开发过程中各个阶段的测试区别对待,而该方法与之形成鲜明对比。
? 本书是作为一本教科书来构思和撰写的,写作风格直截了当,从基础讲解概念,把所需的背景知识降到最低。本书包括了大量的例子、家庭作业和教辅材料。它在理论和实际应用之间保持了很好的平衡,把测试当作客观的、可测量和重复的量化活动的集合。本书会在必要的地方提出理论概念以支持测试工程师的后续实践活动。
? 本书认为,测试是帮助IT专业人士开发更高质量软件的一种智力训练。测试不是一个反工程化的活动,也不是一个具有内在破坏性的过程。本书不仅仅是针对测试专家的,也面向对编程或数学知之甚少的领域专家。
? 本书采用模块化结构,彼此间相互关联,所以可以用于多种课程。书中的大部分内容仅需要基础的离散数学和编程知识,需要更多背景知识的地方会清晰地标明。正如在前言的稍后部分描述的那样,对讲述内容进行合理搭配,本书可以用于多种课堂。
? 本书假定,读者学习的目标是成为用最低的成本做出最好的软件的工程师。书中的概念在理论上是非常基础的,但也是非常实用的,大多是当前正在使用的。
为什么要用这本书
不久前,软件开发公司可能会雇用不会测试的程序员和不会编程的测试者。对于大多数企业来说,双方没有必要知道对方背后的技术原理。在行业历史上,软件测试一直被当成一个非技术性的活动。软件企业主要从管理和过程的角度来看测试,对测试者的技能培训没抱多大期望。
随着软件工程行业日趋成熟,软件已渗透到人们日常生活的各个方面,对软件可靠性、可维护性和安全性的要求越来越高。软件企业必须用多种方法来应对这些变化,其中就包括改善软件测试方法。这需要提高测试工程师的专业技能,还需要不断强调软件开发者做测试的重要性。值得庆幸的是,经过30多年的研究和实践,已涌现出许多知识和技术。本书把这些知识整理起来,使学生、测试工程师、测试管理者和开发者都能使用。
同时,我们也发现在大学中教授测试的课程相对较少。只对少数本科生安排了测试课,对计算机科学或软件工程专业的硕士生几乎没有安排软件测试课程,少数十几个教学课程中安排一个测试选修课。测试不仅没有成为本科生计算机科学教育的必要部分,而且大部分计算机科学的学生根本就没有任何测试知识,或者只是作为一般课程的一部分,在软件工程课上讲几节课。
本书的作者给软件工程和计算机科学专业的学生讲授软件测试已经超过15年了。在此期间,我们得出了一个很不期望看到的结论:没有人写出一本我们想要的书。所以,如果我们想要,就必须自己写。
以前的测试类书籍把软件测试当作一个相对简单的学科,认为这个学科依赖于过程,而不是从技术的角度去理解软件是如何构成的;有的书把测试作为一个需要详细理解大量软件开发技术的复杂的、割裂的学科;还有的书把测试当作一个只有数学家和计算机理论科学家才能掌握的纯理论学科。大多数关于测试的书籍围绕着一个典型的软件开发周期的各个阶段展开,这种方法会使原本普通的测试主题变得难懂。最后,大多数测试类书籍是作为参考书而写的,而不是教科书。所以,只有先前有过专门软件测试知识的教师才能轻松使用。而本书对于那些不是测试专家的教师也是易于使用的。
本书在许多重要方面不同于其他的软件测试类书籍。许多书讲解如何管理测试过程,当然这很重要,但告诉测试者基于基础理论的具体测试技术同样重要。本书在理论和实践应用之间保持了很好的平衡。这是软件公司必须有的重要信息,但是本书特别注重设计和创建测试用例的基本技术问题。目前市面上其他的测试类书籍主要关注技术或活动,比如系统测试或单元测试,而本书旨在综合软件开发的整个过程,涵盖尽可能多的技术。
如前所述,本书的目的是支持多种软件测试课程。我们在乔治·梅森大学软件工程硕士研究生的软件测试课上做了第一个尝试,每学期有30多个计算机科学和软件工程专业的学生选修这门课程。我们还组织了软件测试的博士研讨会,举办了特定方向的短期企业培训,还为许多本科课程进行了讲座。虽然有关软件测试的本科课程不多,但我们相信不久的将来会有很多。许多关于测试的书并不是用在课堂上的,我们特地写了这本书来支持课堂教学,因此在本书网站(www.cs.gmu.edu/offutt/softwaretest)上本书目录的后面看到我们的测试课程的提纲就不足为奇了。
本书采用了许多精心打造的实例来帮助学生和老师学习略显复杂的概念。教辅资源包括高质量的PPT、演讲提示、习题解答和相关软件。我们的思想是:我们不仅仅是在写一本书,同时也在为社区提供课程。我们的目标之一是,所写的内容作为研究文献有学术性,对于非研究人员也是易于使用的。虽然本书的论述与出自研究论文的资料有些不同,但其本质思想是忠实于文献的。为了使文章更为通顺,我们删除了论述中的引用。对于那些喜欢追根溯源的研究者,每章最后都有一个参考文献注释,它对概念的来源进行了总结。
本书的读者对象
学生通过本书可以学到软件测试背后的基本原理,学到如何应用这些原理来更快、更好地生产软件。他们不仅会成为优秀的程序员,而且他们还可以为未来的雇主实施高质量的软件测试活动。教师即使没有软件测试的实际经验,也可以在课堂上使用本书。即使教师不是软件测试方面的专家,本书附带的大量的练习、启发式的问题、课堂上的幻灯片和给出的课外练习也会使他们很容易教授这些课程。研究生(如一年级的博士生)会发现这本书是介入这一领域的无价之宝。清晰合理地讲述理论,用实际应用说明哪些有用,哪些没用;用高级阅读和参考文献把对这些内容感兴趣的读者引向相关资料。虽然软件测试的研究生相对较少,但是我们认为他们是关键读者群,因为通俗、低门槛会使研究生较容易加入测试研究者社区。
已经熟悉这一领域的研究者会发现“标准-方法”新颖而有趣。可能有人不同意这种教学方法,但是我们发现,把测试当作将有限的几个标准应用到极少数的软件结构中的观点对我们的研究很有帮助。我们希望将来的测试研究能够从寻找更多的标准转向对现有标准的创新使用和评测上。
企业中的测试者将发现本书收集了帮助他们提高测试水平的宝贵技术,无论他们当前的水平如何。这里所提出的标准更倾向于成为发现缺陷的技巧“工具箱”。阅读这本书的开发者将发现大量改善软件的方法。他们的自测活动将变得更快速、更有效,关于测试工程师找出软件缺陷的讨论将帮助开发者避开它们。正如一个很有名的寓言所讲的,如果你想教一个人成为好的渔夫,就要讲解鱼如何以及在哪里游泳。最后,管理者将发现本书很好地解释了聪明的测试工程师如何做好他们的工作,以及测试工具如何运行。这样,他们在雇人、晋升和购买工具时,就可以做出更有效的决定。
如何使用本书
? 本书用一种新颖而简单的结构把测试覆盖标准中复杂的、晦涩难懂的观点组织起来。从技术层面上来说,软件测试是以满足覆盖标准为基础的。本书的中心观点是,真正不同的覆盖标准很少,各种覆盖标准很易于归为以下四类:图形、逻辑表达式、输入空间和语法结构。这不仅简化了测试,而且也易于将每个分类直接地加以理论化处理。传统的方法将开发过程中各个阶段的测试区别对待,而该方法与之形成鲜明对比。
? 本书是作为一本教科书来构思和撰写的,写作风格直截了当,从基础讲解概念,把所需的背景知识降到最低。本书包括了大量的例子、家庭作业和教辅材料。它在理论和实际应用之间保持了很好的平衡,把测试当作客观的、可测量和重复的量化活动的集合。本书会在必要的地方提出理论概念以支持测试工程师的后续实践活动。
? 本书认为,测试是帮助IT专业人士开发更高质量软件的一种智力训练。测试不是一个反工程化的活动,也不是一个具有内在破坏性的过程。本书不仅仅是针对测试专家的,也面向对编程或数学知之甚少的领域专家。
? 本书采用模块化结构,彼此间相互关联,所以可以用于多种课程。书中的大部分内容仅需要基础的离散数学和编程知识,需要更多背景知识的地方会清晰地标明。正如在前言的稍后部分描述的那样,对讲述内容进行合理搭配,本书可以用于多种课堂。
? 本书假定,读者学习的目标是成为用最低的成本做出最好的软件的工程师。书中的概念在理论上是非常基础的,但也是非常实用的,大多是当前正在使用的。
为什么要用这本书
不久前,软件开发公司可能会雇用不会测试的程序员和不会编程的测试者。对于大多数企业来说,双方没有必要知道对方背后的技术原理。在行业历史上,软件测试一直被当成一个非技术性的活动。软件企业主要从管理和过程的角度来看测试,对测试者的技能培训没抱多大期望。
随着软件工程行业日趋成熟,软件已渗透到人们日常生活的各个方面,对软件可靠性、可维护性和安全性的要求越来越高。软件企业必须用多种方法来应对这些变化,其中就包括改善软件测试方法。这需要提高测试工程师的专业技能,还需要不断强调软件开发者做测试的重要性。值得庆幸的是,经过30多年的研究和实践,已涌现出许多知识和技术。本书把这些知识整理起来,使学生、测试工程师、测试管理者和开发者都能使用。
同时,我们也发现在大学中教授测试的课程相对较少。只对少数本科生安排了测试课,对计算机科学或软件工程专业的硕士生几乎没有安排软件测试课程,少数十几个教学课程中安排一个测试选修课。测试不仅没有成为本科生计算机科学教育的必要部分,而且大部分计算机科学的学生根本就没有任何测试知识,或者只是作为一般课程的一部分,在软件工程课上讲几节课。
本书的作者给软件工程和计算机科学专业的学生讲授软件测试已经超过15年了。在此期间,我们得出了一个很不期望看到的结论:没有人写出一本我们想要的书。所以,如果我们想要,就必须自己写。
以前的测试类书籍把软件测试当作一个相对简单的学科,认为这个学科依赖于过程,而不是从技术的角度去理解软件是如何构成的;有的书把测试作为一个需要详细理解大量软件开发技术的复杂的、割裂的学科;还有的书把测试当作一个只有数学家和计算机理论科学家才能掌握的纯理论学科。大多数关于测试的书籍围绕着一个典型的软件开发周期的各个阶段展开,这种方法会使原本普通的测试主题变得难懂。最后,大多数测试类书籍是作为参考书而写的,而不是教科书。所以,只有先前有过专门软件测试知识的教师才能轻松使用。而本书对于那些不是测试专家的教师也是易于使用的。
本书在许多重要方面不同于其他的软件测试类书籍。许多书讲解如何管理测试过程,当然这很重要,但告诉测试者基于基础理论的具体测试技术同样重要。本书在理论和实践应用之间保持了很好的平衡。这是软件公司必须有的重要信息,但是本书特别注重设计和创建测试用例的基本技术问题。目前市面上其他的测试类书籍主要关注技术或活动,比如系统测试或单元测试,而本书旨在综合软件开发的整个过程,涵盖尽可能多的技术。
如前所述,本书的目的是支持多种软件测试课程。我们在乔治·梅森大学软件工程硕士研究生的软件测试课上做了第一个尝试,每学期有30多个计算机科学和软件工程专业的学生选修这门课程。我们还组织了软件测试的博士研讨会,举办了特定方向的短期企业培训,还为许多本科课程进行了讲座。虽然有关软件测试的本科课程不多,但我们相信不久的将来会有很多。许多关于测试的书并不是用在课堂上的,我们特地写了这本书来支持课堂教学,因此在本书网站(www.cs.gmu.edu/offutt/softwaretest)上本书目录的后面看到我们的测试课程的提纲就不足为奇了。
本书采用了许多精心打造的实例来帮助学生和老师学习略显复杂的概念。教辅资源包括高质量的PPT、演讲提示、习题解答和相关软件。我们的思想是:我们不仅仅是在写一本书,同时也在为社区提供课程。我们的目标之一是,所写的内容作为研究文献有学术性,对于非研究人员也是易于使用的。虽然本书的论述与出自研究论文的资料有些不同,但其本质思想是忠实于文献的。为了使文章更为通顺,我们删除了论述中的引用。对于那些喜欢追根溯源的研究者,每章最后都有一个参考文献注释,它对概念的来源进行了总结。
本书的读者对象
学生通过本书可以学到软件测试背后的基本原理,学到如何应用这些原理来更快、更好地生产软件。他们不仅会成为优秀的程序员,而且他们还可以为未来的雇主实施高质量的软件测试活动。教师即使没有软件测试的实际经验,也可以在课堂上使用本书。即使教师不是软件测试方面的专家,本书附带的大量的练习、启发式的问题、课堂上的幻灯片和给出的课外练习也会使他们很容易教授这些课程。研究生(如一年级的博士生)会发现这本书是介入这一领域的无价之宝。清晰合理地讲述理论,用实际应用说明哪些有用,哪些没用;用高级阅读和参考文献把对这些内容感兴趣的读者引向相关资料。虽然软件测试的研究生相对较少,但是我们认为他们是关键读者群,因为通俗、低门槛会使研究生较容易加入测试研究者社区。
已经熟悉这一领域的研究者会发现“标准-方法”新颖而有趣。可能有人不同意这种教学方法,但是我们发现,把测试当作将有限的几个标准应用到极少数的软件结构中的观点对我们的研究很有帮助。我们希望将来的测试研究能够从寻找更多的标准转向对现有标准的创新使用和评测上。
企业中的测试者将发现本书收集了帮助他们提高测试水平的宝贵技术,无论他们当前的水平如何。这里所提出的标准更倾向于成为发现缺陷的技巧“工具箱”。阅读这本书的开发者将发现大量改善软件的方法。他们的自测活动将变得更快速、更有效,关于测试工程师找出软件缺陷的讨论将帮助开发者避开它们。正如一个很有名的寓言所讲的,如果你想教一个人成为好的渔夫,就要讲解鱼如何以及在哪里游泳。最后,管理者将发现本书很好地解释了聪明的测试工程师如何做好他们的工作,以及测试工具如何运行。这样,他们在雇人、晋升和购买工具时,就可以做出更有效的决定。
如何使用本书
媒体评论回到顶部↑
“关于测试的书很多,但是大部分书涉及的主题范围都很窄并且讲述不详细。而Ammann和Offutt的这本书中所展示的概念和技术广泛地覆盖了业界和学术界使用的各种语言及平台,是一本全面、实用的测试书。”
——Roger Alexander,华盛顿州立大学
——Roger Alexander,华盛顿州立大学







点击看大图




加载中...

