描述
开 本: 16开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787111376606
软件管理领域的传奇经典著作!被誉为“对美国软件业影响**的一本书”
软件测试的经典著作**版!
本书从第1版付梓到现在已经30余年,是软件测试领域的经典著作。本书结构清晰、讲解生动活泼,简明扼要地展示了久经考验的软件测试方法和智慧。
本书以一次自评价测试开篇,从软件测试的心理学和经济学入手,探讨了代码检查、走查与评审、测试用例的设计、模块(单元)测试、系统测试、调试等主题,以及极限测试、互联网应用测试等高级主题,全面展现了作者的软件测试思想。第3版在前两版的基础上,结合软件测试的*发展进行了更新,覆盖了可用性测试、移动应用测试以及敏捷开发测试等内容。
本书适合软件开发人员、IT项目经理等相关读者阅读,还可以作为高等院校计算机相关专业软件测试课程的教材或参考书。
第3版阐述了如何将经典软件测试法则应用到解决当今计算机行业所面临的最紧迫的问题之中,这些 问题包括:
移动设备的应用测试
各种设备上的软件代码走查、代码审查(从技术以及如何发现错误的角度讨论)
可用性测试(随着直接面向广大终端用户的应用在数量上呈爆发性增长,可用性变得越来越重要)
互联网应用、电子商务和敏捷编程环境的测试
译者序
序言
前言
第1章 一次自评价测试
第2章 软件测试的心理学和经济学
2.1 软件测试的心理学
2.2 软件测试的经济学
2.2.1 黑盒测试
2.2.2 白盒测试
2.3 软件测试的原则
2.4 小结
第3章 代码检查、走查与评审
3.1 代码检查与走查
3.2 代码检查
3.2.1 代码检查小组
3.2.2 检查议程与注意事项
3.2.3 对事不对人,和人有关的注意事项
3.2.4 代码检查的衍生功效
3.3 用于代码检查的错误列表
3.3.1 数据引用错误
3.3.2 数据声明错误
3.3.3 运算错误
3.3.4 比较错误
3.3.5 控制流程错误
3.3.6 接口错误
3.3.7 输入/输出错误
3.3.8 其他检查
3.4 代码走查
3.5 桌面检查
3.6 同行评审
3.7 小结
第4章 测试用例的设计
4.1 白盒测试
4.2 黑盒测试
4.2.1 等价划分
4.2.2 一个范例
4.2.3 边界值分析
4.2.4 因果图
4.3 错误猜测
4.4 测试策略
4.5 小结
第5章 模块(单元)测试
5.1 测试用例设计
5.2 增量测试
5.3 自顶向下测试与自底向上测试
5.3.1 自顶向下的测试
5.3.2 自底向上的测试
5.3.3 比较
5.4 执行测试
5.5 小结
第6章 更高级别的测试
6.1 功能测试
6.2 系统测试
6.2.1 能力测试
6.2.2 容量测试
6.2.3 强度测试
6.2.4 可用性测试
6.2.5 安全性测试
6.2.6 性能测试
6.2.7 存储测试
6.2.8 配置测试
6.2.9 兼容性/转换测试
6.2.10 安装测试
6.2.11 可靠性测试
6.2.12 可恢复性测试
6.2.13 服务/可维护性测试
6.2.14 文档测试
6.2.15 过程测试
6.2.16 系统测试的执行
6.3 验收测试
6.4 安装测试
6.5 测试的计划与控制
6.6 测试结束准则
6.7 独立的测试机构
6.8 小结
第7章 可用性(或用户体验)测试
7.1 可用性测试基本要素
7.2 可用性测试流程
7.2.1 测试用户的选择
7.2.2 需要多少用户进行测试
7.2.3 数据采集方法
7.2.4 可用性调查问卷
7.2.5 何时收工,还是多多益善
7.3 小结
第8章 调试
8.1 暴力法调试
8.2 归纳法调试
8.3 演绎法调试
8.4 回溯法调试
8.5 测试法调试
8.6 调试的原则
8.6.1 定位错误的原则
8.6.2 修改错误的技术
8.7 错误分析
8.8 小结
第9章 敏捷开发模式下的测试
9.1 敏捷开发的特征
9.2 敏捷测试
9.3 极限编程与测试
9.3.1 极限编程基础
9.3.2 极限测试:概念
9.3.3 极限测试的应用
9.4 小结
第10章 互联网应用测试
10.1 电子商务的基本结构
10.2 测试的挑战
10.3 测试的策略
10.3.1 表示层的测试
10.3.2 业务层的测试
10.3.3 数据层的测试
10.4 小结
第11章 移动应用测试
11.1 移动环境
11.2 测试面临的挑战
11.2.1 移动设备多样性
11.2.2 运营商网络基础设施
11.2.3 脚本编程
11.2.4 可用性测试
11.3 测试方法
11.3.1 真机测试
11.3.2 基于模拟器的测试
11.4 小结
附录A 极限编程示例程序
附录B 小于1000的素数
在本书1979年第1版出版的时侯,有一条著名的经验,即在一个典型的编程项目中,软件测试或系统测试大约占用50%的项目时间和超过50%的总成本。
30多年后的今天,同样的经验仍然成立。现在出现了新的开发系统、具有内置工具的语言以及习惯于快速开发大量软件的程序员。但是,在任何软件开发项目中,测试依然扮演着重要角色。
在这些事实面前,读者可能会以为软件测试发展到现在不断完善,已经成为一门精确的学科。然而实际情况并非如此。事实上,与软件开发的任何其他方面相比,人们对软件测试仍然知之甚少。而且,软件测试并非热门课题,本书首次出版时是这样,遗憾的是,今天仍然如此。现在有很多关于软件测试的书籍和论文,这意味着,至少与本书首次出版时相比,人们对软件测试这个主题有了更多的了解。但是,测试依然是软件开发中的“黑色艺术”。
这就有了更充足的理由来修订这本关于软件测试艺术的书,同时我们还有其他一些动机。在不同的时期,我们都听到一些教授和助教说:“我们的学生毕业后进入了计算机界,却丝毫不了解软件测试的基本知识,而且在课堂上向学生介绍如何测试或调试其程序时,我们也很少有建议可提供。”
因此,本书再版的目的与前两版一样:填充专业程序员和计算机科学学生的知识空缺。正如书名所蕴涵的,本书是对测试主题的实践探讨,而不是理论研究,还包括对新的语言和过程的探讨。尽管可以根据理论的脉络来讨论软件测试,但本书旨在成为实用且“脚踏实地”的手册。因此,很多与软件测试有关的主题,如程序正确性的数学证明都被有意地排除在外了。
第1章介绍了一个供自我评价的测试,每位读者在继续阅读之前都须进行测试。它揭示出我们必须了解的有关软件测试的最为重要的实用信息,即一系列心理和经济学问题,这些问题在第2章中进行了详细讨论。第3章探讨的是不依赖计算机的代码走查或代码检查的重要概念。不同于大多数研究都将注意力集中在概念的过程和管理方面,第3章则是从技术上“如何发现错误”的角度来进行探讨。
读者可能会意识到,在软件测试人员的技巧中最为重要的部分是掌握如何编写有效测试用例的知识,这正是第4章的主题。第5章探讨了如何测试单个模块或子例程,第6章讲述了如何测试更大的对象。第7章围绕用户体验或可用性测试这一重要的软件测试概念进行阐述,在更复杂且拥有更广大用户量的软件不断涌现的今天,可用性测试变得越来越重要。第8章介绍了一些程序调试的实用建议,第9章着重研究了极限编程及其测试(一种在今天称为敏捷开发环境中的编程和测试方法)。第10章介绍如何将本书所涵盖的软件测试知识运用到Web开发中,包括电子商务系统以及社交网络的开发。第11章描述了如何测试移动设备上的应用。
本书主要面向三类读者。第一类是专业的程序员。尽管我们希望本书的内容对于他们来说不是全新的知识,但本书能使专业程序员对测试技术增强了解。如果这些材料能使软件开发人员在某个程序中多发现了一个错误,那么本书创造的价值将远远超过书价本身。
第二类读者是项目经理,他们将会直接受益于本书所介绍的实用的测试管理理论与知识。第三类读者是软件或计算机专业的学生,我们的目的在于向学生展示程序测试的问题,并提供一系列有效的技术。对于最后一类读者群,我们建议本书作为程序设计课程的补充教材,使学生在学习阶段的早期就接触到软件测试的内容。
Glenford J. Myers
Tom Badgett
Todd M. Thomas
Corey Sandler
序言
1979年,Glenford J.Myers出版了一本现在仍被证明为经典的著作,这就是本书第1版。本书经受住了时间的考验,25年来一直列在出版商提供的书目清单中。这个事实本身就是对本书可靠、精粹和珍贵品质的佐证。
在同一时期,本书第3版的几位合著者共出版了200余本著作,大多数都是关于计算机软件的。其中有一些很畅销,再版了多次(例如CoreySandler的《Fix Your Own PC》自付梓以来已出版到第8版,TomBadgett关于微软PowerPoint及其他Office组件的著作已经出版到第4版)。然而,那些作者的著作中没有哪一本书能够像本书一样持续数年之后仍畅销不衰。
区别究竟在哪里呢?那些新书只涵盖了短期性的主题:操作系统、应用软件、安全性、通信技术及硬件配置。20世纪80年代和90年代以来的计算机硬件与软件技术的飞速发展,必然使得这些主题频繁变动和更新。
在此期间出版的有关软件测试的书籍已数以百计,这些书也对软件测试的主题进行了简要的探讨。然而,本书为计算机界一个最为重要的主题提供了长期、基本的指南:如何确保所开发的所有软件做了其应该做的,并且同样重要的是,未做其不应该做的?
本书第3版中保留了同样的基本思想。我们更新了其中的例子以包含更为现代的编程语言。我们还研究了在Myers编著本书第1版时尚无人了解的主题:Web编程、电子商务、极限编程与测试及移动应用测试。
但是,我们永远不会忘记,新的版本必须遵从其原著,因此,新版本依然向读者展示GlenfordMyers全部的软件测试思想,这个思想体系以及过程将适用于当今乃至未来的软件和硬件平台。我们也希望本书能够顺应时代,适用于当今的软件设计人员和开发人员掌握最新的软件测试思想及技术。
第1章
Chapter 1
一次自评价测试
自本书30年前首次出版以来,软件测试变得比以前容易得多,也困难得多。软件测试何以变得更困难?原因在于大量的编程语言、操作系统以及硬件平台的涌现。在20世纪70年代只有相当少的人使用计算机,而在今天几乎人人离不开计算机。而今天计算机不仅仅是指摆在你书桌上的计算机了,几乎所有我们所接触和使用的电子设备都内置了一个“计算机”或者计算芯片,以及运行在其上的软件系统。不妨回想一下在今天的社会中还在使用哪些不需要软件驱动的设备,没错,锤子和手推车是,但是这些工具也大量使用在由软件控制和操作的车间中。软件的普遍应用提升了测试的意义。今天的设备已经千百倍强于它们的“前辈”,今天的“计算机”这个概念也变得越来越广泛和越来越难准确地定义。数字电视、电话、游戏产品、汽车等都有一颗计算机的“心”以及运行其中的软件,以至于在某些情况下它们自己本身也能够被看做是一台特别的计算机。因此,现在的软件会潜在地影响到数以百万计的人,使他们更高效地完成工作,反之也会给他们带来数不清的麻烦,导致工作或事业的损失。这并不是说今天的软件比本书第1版发行时更重要,但可以肯定地说,今天的计算机(以及驱动它的软件)无疑已影响到了更多的人、更多的行业。
就某些方面而言,软件测试变得更容易了,因为大量的软件和操作系统比以往更加复杂,内部提供了很多已充分测试过的例程供应用程序集成,无须程序员从头进行设计。例如,图形用户界面(GUI)可以从开发语言的类库中建立起来,同时,由于它们是经过充分调试和测试的预编程对象,将其作为自定义应用程序的组成部分进行测试的要求就减少了许多。另外,尽管市场上的测试书籍越来越多,甚至有过剩之嫌,似乎依旧有很多开发人员对全面的测试并不那么欢迎。引入更优秀的开发工具、使用已经通过测试的GUI(图形界面控件)控件、紧张的交付日期以及高度集成的便利开发环境会让测试变得仅仅是让那些最基本的测试用例走走过场罢了。影响不大的bug也许只不过会让最终用户觉得使用不方便而已,然而严重的bug则可能造成经济损失甚至是人身伤害。本书所阐述的方法旨在帮助设计人员、开发工程师以及项目经理更好地理解全面综合测试的意义所在,并提供行之有效的指南以帮助达成测试的目标。
所谓软件测试,就是一个过程或一系列过程,用来确认计算机代码完成了其应该完成的功能,不执行其不该有的操作。软件应当是可预测且稳定的,不会给用户带来意外惊奇。在本书中,我们将讨论多种方法来达到这个目标。
……
评论
还没有评论。