出版时间:2010年10月 出版社:机械工业出版社 作者:(美)Paul Ammann,Jeff Offutt 页数:250 译者:郁莲 等
Tag标签:无
前言
两位给软件工程和计算机科学专业的学生教授了15年软件测试课程的老师,历时7年,融合大量课堂经验,终于磨砺出这本《软件测试基础》。我同样从事了多年软件测试技术教学,看到这本书时,不禁感慨这是一本不可多得的教科书和参考书。关于测试的书很多,但是大部分书涉及的主题范围都很窄并且讲述不详细,或围绕一个典型的软件开发周期的各个阶段展开,这样的方法使原本的测试主题变得难懂,而本书正是依靠其独特之处成为教科书或参考书的上佳选择。经过大量的课堂检验,本书对于软件测试采用了可谓独具匠心的理解。它将软件测试定义为把许多定义良好的、通用的测试标准应用到软件结构或模型的过程,同时是生产高质量软件的一个不可或缺的实践工程活动。本书用一种新颖而简单的结构把测试覆盖标准中复杂、晦涩的观点组织起来。从技术侧面说,软件测试是基于满足覆盖标准的。本书的观点是,真正不同的覆盖标准很少,各种覆盖标准很容易归为以下4类:图形、逻辑表达式、输入空间和语法结构。这不仅简化了测试,而且也易于将每个分类直接地理论化处理。传统的方法将开发过程中各个阶段的测试区别对待,而该方法与之形成鲜明对比。本书的写作风格直接,从基础讲解概念,把所需的背景知识保持在最低,通篇包含了大量的实例,它把测试当作了客观的、可测量的和重复的量化活动的集合,同时也在必要的地方提出理论概念以支持测试工程师的后续实践活动。本书采用模块化设计,彼此间相互关联,合理搭配,可以用于多种课程。书中的大部分内容仅需要基础的离散数学和编程知识就可以了。 本书在理论和实践应用之间保持了巧妙的平衡,重点讲解如何管理测试过程和测试者基于基础理论的具体测试技术,并且特别注重设计和创建设计测试用例的基本技术问题,旨在综合软件开发的整个过程,覆盖尽可能多的技术。本书同时也可以使不同的角色从中受益。对于学生,本书使其可以学到软件测试背后的基本原理,学到如何应用这些原理来更快、更好地生产软件;对于教师,大量的练习、启发式的问题、课堂上的幻灯片和给出的课外活动使得教师很容易教授这些材料;企业的测试者,将发现本书收集了帮助提高他们测试水平的技术。致谢译者近几年来一直在北京大学软件与微电子学院从事软件测试技术的研究与授课。在翻译本书的过程中,学院对我的工作给予了极大的支持与重视。我的硕士研究生张、李磊、张坚、伍晓东、赵文博、曹宇奇等同学参与了本书的部分翻译与整理工作,付出了很多努力,在此表示感谢。
内容概要
本书经过了大量的课堂检验,是深受学生和行业专业人员欢迎的软件工程指南。本书所展示的软件测试程概念和技术广泛地覆盖了各种语言及其平台。与其他软件工程书籍相比,本书内容更加全面,并具有很大的实践价值。 本书适合作为国内高等院校计算机及相关专业本科生的软件工程课程教材,也可供软件工程领域的技术人员参考。
作者简介
作者:(美国)阿曼(Paul Ammann) (美国)奥法特(Jeff Offutt) 译者:郁莲 等Paul Ammann 在美国维吉尼亚大学获得计算机科学博士学位,现为乔治·梅森大学软件工程副教授。他于2007年获得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 结构化覆盖标准 2.2.2 数据流标准 2.2.3 图覆盖标准中的包含关系 2.3 源代码的图覆盖 2.3.1 源代码的结构化图覆盖 2.3.2 源代码的数据流图覆盖 2.4 设计元素的图覆盖 2.4.1 设计元素的结构化图覆盖 2.4.2 设计元素的数据流覆盖 2.5 规格说明的图覆盖 2.5.1 顺序约束测试 2.5.2 软件状态行为测试 2.6 用例的图覆盖 2.7 用代数方法表示图 2.7.1 把图简化成路径表达式 2.7.2 路径表达式的应用 2.7.3 得到测试输入 2.7.4 在流图中计算路径数并确定最大路径长度 2.7.5 到达所有边的路径的最小值 2.7.6 互补运算分析 2.8 参考文献注释 第3章 逻辑覆盖 3.1 概览:逻辑谓词和子句 3.2 逻辑表达式覆盖标准 3.2.1 有效的子句覆盖 3.2.2 无效子句覆盖 3.2.3 不可行性和包含 3.2.4 使子句决定谓词 3.2.5 寻找满足的取值 3.3 程序的结构化逻辑覆盖 3.4 基于规约的逻辑覆盖 3.5 有限状态机的逻辑覆盖 3.6 析取范式标准 3.7 参考文献注释 第4章 输入空间划分 4.1 输入域建模 4.1.1 基于接口的输入域建模 4.1.2 基于功能的输入域建模 4.1.3 识别特性 4.1.4 选择块和值 4.1.5 使用一种以上的输入域模型 4.1.6 检查输入域模型 4.2 组合策略标准 4.3 划分中的约束 4.4 参考文献注释 第5章 基于句法的测试 5.1 基于句法的覆盖标准 5.1.1 BNF覆盖标准 5.1.2 变异测试 5.2 基于程序的语法 5.2.1 编程语言的BNF语法 5.2.2 基于程序的变异 5.3 集成与面向对象测试 5.3.1 BNF集成测试 5.3.2 集成变异 5.4 基于规范的语法 5.4.1 BNF语法 5.4.2 基于规范的变异 5.5 输入空间语法 5.5.1 BNF语法 5.5.2 输入语法的变异 5.6 参考文献注释第三部分 在实践中运用的标准 第6章 实际的考虑 6.1 回归测试 6.2 集成和测试 6.2.1 桩和驱动程序 6.2.2 类的集成测试顺序 6.3 测试过程 6.3.1 需求分析和规格说明书 6.3.2 系统和软件设计 6.3.3 中级设计 6.3.4 详细设计 6.3.5 实现 6.3.6 集成 6.3.7 系统部署 6.3.8 操作和维护 6.3.9 总结 6.4 测试计划 6.5 识别正确的输出 6.5.1 输出的直接验证 6.5.2 冗余计算 6.5.3 一致性检查 6.5.4 数据冗余 6.6 参考文献注释 第7章 技术的工程标准 7.1 测试面向对象软件 7.1.1 面向对象软件测试特有的问题 7.1.2 面向对象的错误类型 7.2 测试Web应用和Web服务 7.2.1 测试静态超文本Web站点 7.2.2 测试动态Web应用 7.2.3 测试Web服务 7.3 测试图形用户界面 7.4 实时软件和嵌入式软件 7.5 参考文献注释 第8章 创建测试工具 8.1 图和逻辑表达式标准的插桩 8.1.1 节点覆盖和边覆盖 8.1.2 数据流覆盖 8.1.3 逻辑覆盖 8.2 构造变异测试工具 8.2.1 解释方法 8.2.2 分离编译的方法 8.2.3 基于模式的方法 8.2.4 使用Java反射机制 8.2.5 实现一个现代的变异系统 8.3 参考文献注释 第9章 软件测试中的挑战 9.1 测试紧急性属性:安全性和保密性 9.2 软件的可测试性 9.3 测试标准和软件测试的未来 9.4 参考文献注释参考文献
章节摘录
插图:本书的作者给软件工程和计算机科学专业的学生讲授软件测试已经超过15年r。征此别间,我们得出了一个很不期望看到的结论:没有人写出一本我们想要的书。所以,如果我们想要,就必须自己写。以前的测试类书籍把软件测试当作一个相对简单的学科,认为这个学科依赖于过程,而不是从技术的角度去理解软件是如何构成的;有的书把测试作为一个需要详细理解大量软件开发技术的复杂的、割裂的学科;还有的书把测试当作一个只有数学家和计算机理论科学家才能掌握的纯理论学科。大多数关于测试的书籍围绕着一个典型的软件开发周期的各个阶段展开,这种方法会使原本普通的测试主题变得难懂。最后,大多数测试类书籍是作为参考书而写的,而不是教科书。所以,只有先前有过专门软件测试知识的教师才能轻松使用。而本书对于那些不是测试专家的教师也是易于使用的。本书在许多重要方面不同于其他的软件测试类书籍。许多书讲解如何管理测试过程,当然这很重要,但告诉测试者基于基础理论的具体测试技术同样重要。本书在理论和实践应用之间保持了很好的平衡。这是软件公司必须有的重要信息,但是本书特别注重设计和创建测试用例的基本技术问题。目前市面上其他的测试类书籍主要关注技术或活动,比如系统测试或单元测试,而本书旨在综合软件开发的整个过程,涵盖尽可能多的技术。如前所述,本书的目的是支持多种软件测试课程。我们在乔治·梅森大学软件工程硕士研究生的软件测试课上做了第一个尝试,每学期有30多个计算机科学和软件工程专业的学生选修这门课程。我们还组织了软件测试的博士研讨会,举办了特定方向的短期企业培训,还为许多本科课程进行了讲座。虽然有关软件测试的本科课程不多,但我们相信不久的将来会有很多。许多关于测试的书并不是用在课堂上的,我们特地写了这本书来支持课堂教学,因此征本书网站上本书目录的后面看到我们的测试课程的提纲就不足为奇了。本书采用了许多精心打造的实例来帮助学生和老师学习略显复杂的概念。教辅资源包括高质量的PPT、演讲提示、习题解答和相关软件。我们的思想是:我们不仅仅是在写一本书,同时也在为社区提供课程。我们的目标之一是,所写的内容作为研究文献有学术性,对于非研究人员也是易于使用的。虽然本书的论述与出自研究论文的资料有些不同,但其本质思想是忠实于文献的。为了使文章更为通顺,我们删除了论述中的引用。对于那些喜欢追根溯源的研究者,每章最后都有一个参考文献注释,它对概念的来源进行了总结。
媒体关注与评论
“关于测试的书很多,但是大部分书涉及的主题范围都很窄并且讲述不详细。而Ammann和Offutt的这本书中所展示的概念和技术广泛地覆盖了业界和学术界使用的各种语言及平台,是一本全面、实用的测试书。” ——Roger Alexander,华盛顿州立大学
编辑推荐
《软件测试基础》采用创新方法来讲述软件测试,定义测试为将几个通用的测试准则应用于软件结构或软件模型的过程。书中融入了最新的测试技术,包括现代软件方法(如面向对象)、Web应用程序和嵌入式软件。另外,《软件测试基础》包含了大量的实例。
图书封面
图书标签Tags
无
评论、评分、阅读与下载