描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111617990
编辑推荐
提供软件测试、质量保证领域的实用见解及如何在程序中发现问题、规划有效的测试方法和预测发布。
内容简介
本书涵盖了软件测试的方方面面:软件测试如何适应软件开发过程,基本的和高级的软件测试技术,在常见的测试任务中运用测试技能,使用自动化提高测试的效率,测
试工作的计划和文档化,有效地报告发现的问题,衡量测试工作的成效和产品的改进,
测试和质量保证的区别,寻求软件测试员的工作。
本书适合软件测试人员及希望未来从事软件测试的其他专业人员阅读,也适合高等
院校相关专业的学生及教师参考。
试工作的计划和文档化,有效地报告发现的问题,衡量测试工作的成效和产品的改进,
测试和质量保证的区别,寻求软件测试员的工作。
本书适合软件测试人员及希望未来从事软件测试的其他专业人员阅读,也适合高等
院校相关专业的学生及教师参考。
目 录
出版者的话
译者序
前言
第一部分 软件测试综述
第1章 软件测试的背景 ┊2
1.1 臭名昭著的软件错误用例研究 ┊2
1.1.1 迪士尼的狮子王(1994~1995年) ┊2
1.1.2 英特尔奔腾浮点除法缺陷(1994年) ┊3
1.1.3 美国航天局火星极地登陆者号探测器(1999年) ┊4
1.1.4 爱国者导弹防御系统(1991年) ┊4
1.1.5 千年虫问题(大约1974年) ┊4
1.1.6 危险的预见(2004年) ┊5
1.2 软件缺陷是什么 ┊5
1.2.1 软件失败的术语 ┊5
1.2.2 软件缺陷的官方定义 ┊6
1.3 为什么会出现软件缺陷 ┊8
1.4 软件缺陷的修复费用 ┊8
1.5 软件测试员究竟做些什么 ┊9
1.6 优秀的软件测试员应具备的素质 ┊10
第2章 软件开发的过程 ┊12
2.1 产品的组成部分 ┊12
2.1.1 软件产品需要多少投入 ┊12
2.1.2 软件产品由哪些部分组成 ┊15
2.2 软件项目成员 ┊16
2.3 软件开发生命周期模式 ┊17
2.3.1 大爆炸模式 ┊17
2.3.2 边写边改模式 ┊18
2.3.3 瀑布模式 ┊19
2.3.4 螺旋模式 ┊20
第3章 软件测试的实质 ┊23
3.1 测试的原则 ┊23
3.1.1 完全测试程序是不可能的 ┊23
3.1.2 软件测试是有风险的行为 ┊24
3.1.3 测试无法显示潜伏的软件缺陷 ┊25
3.1.4 找到的软件缺陷越多,就说明软件缺陷越多 ┊25
3.1.5 杀虫剂怪事 ┊26
3.1.6 并非所有软件缺陷都要修复 ┊26
3.1.7 什么时候才叫缺陷难以说清 ┊27
3.1.8 产品说明书从没有最终版本 ┊28
3.1.9 软件测试员在产品小组中不受欢迎 ┊28
3.1.10 软件测试是一个讲究条理的技术职业 ┊29
3.2 软件测试的术语和定义 ┊29
3.2.1 精确和准确 ┊29
3.2.2 确认和验证 ┊30
3.2.3 质量和可靠性 ┊31
3.2.4 测试和质量保证 ┊31
第二部分 测试基础
第4章 检查产品说明书 ┊34
4.1 开始测试 ┊34
4.1.1 黑盒测试和白盒测试 ┊35
4.1.2 静态测试和动态测试 ┊36
4.1.3 静态黑盒测试—测试产品说明书 ┊36
4.2 对产品说明书进行高级审查 ┊37
4.2.1 假设自己是客户 ┊37
4.2.2 研究现有的标准和规范 ┊37
4.2.3 审查和测试类似软件 ┊38
4.3 产品说明书的低层次测试技术 ┊39
4.3.1 产品说明书属性检查清单 ┊39
4.3.2 产品说明书用语检查清单 ┊39
第5章 带上眼罩测试软件 ┊41
5.1 动态黑盒测试:带上眼罩测试软件 ┊42
5.2 通过性测试和失效性测试 ┊43
5.3 等价类划分 ┊44
5.4 数据测试 ┊45
5.4.1 边界条件 ┊46
5.4.2 次边界条件 ┊49
5.4.3 默认、空白、空值、零值和无 ┊51
5.4.4 非法、错误、不正确和垃圾数据 ┊52
5.5 状态测试 ┊52
5.5.1 测试软件的逻辑流程 ┊53
5.5.2 失败状态测试 ┊56
5.6 其他黑盒测试技术 ┊58
5.6.1 像笨拙的用户那样做 ┊58
5.6.2 在已经找到软件缺陷的地方再找找 ┊58
5.6.3 像黑客一样考虑问题 ┊59
5.6.4 凭借经验、直觉和预感 ┊59
第6章 检查代码 ┊61
6.1 静态白盒测试:检查设计和代码 ┊61
6.2 正式审查 ┊62
6.2.1 同事审查 ┊63
6.2.2 走查 ┊63
6.2.3 检验 ┊64
6.3 编码标准和规范 ┊64
6.3.1 编程标准和规范示例 ┊65
6.3.2 获取标准 ┊66
6.4 通用代码审查清单 ┊67
6.4.1 数据引用错误 ┊67
6.4.2 数据声明错误 ┊67
6.4.3 计算错误 ┊68
6.4.4 比较错误 ┊68
6.4.5 控制流程错误 ┊68
6.4.6 子程序参数错误 ┊69
6.4.7 输入/输出错误 ┊69
6.4.8 其他检查 ┊69
第7章 带上X光眼镜测试软件 ┊71
7.1 动态白盒测试 ┊71
7.2 动态白盒测试和调试 ┊72
7.3 分段测试 ┊73
7.3.1 单元测试和集成测试 ┊74
7.3.2 单元测试示例 ┊75
7.4 数据覆盖 ┊77
7.4.1 数据流 ┊77
7.4.2 次边界 ┊78
7.4.3 公式和等式 ┊78
7.4.4 错误强制 ┊78
7.5 代码覆盖 ┊79
7.5.1 程序语句和代码行覆盖 ┊80
7.5.2 分支覆盖 ┊81
7.5.3 条件覆盖 ┊81
第三部分 运用测试技术
第8章 配置测试 ┊86
8.1 配置测试综述 ┊86
8.1.1 分离配置缺陷 ┊89
8.1.2 计算工作量 ┊90
8.2 执行任务 ┊91
8.2.1 确定所需的硬件类型 ┊91
8.2.2 确定有哪些厂商的硬件、型号和驱动程序可用 ┊92
8.2.3 确定可能的硬件特性、模式和选项 ┊92
8.2.4 将确定后的硬件配置缩减为可控制的范围 ┊92
8.2.5 明确与硬件配置有关的软件唯一特性 ┊93
8.2.6 设计在每种配置中执行的测试用例 ┊94
8.2.7 在每种配置中执行测试 ┊94
8.2.8 反复测试直到小组对结果满意为止 ┊94
8.3 获得硬件 ┊94
8.4 明确硬件标准 ┊96
8.5 对其他硬件进行配置测试 ┊96
第9章 兼容性测试 ┊98
9.1 兼容性测试综述 ┊98
9.2 平台和应用程序版本 ┊99
9.2.1 向后和向前兼容 ┊100
9.2.2 测试多个版本的影响 ┊100
9.3 标准和规范 ┊102
9.3.1 高级标准和规范 ┊102
9.3.2 低级标准
译者序
前言
第一部分 软件测试综述
第1章 软件测试的背景 ┊2
1.1 臭名昭著的软件错误用例研究 ┊2
1.1.1 迪士尼的狮子王(1994~1995年) ┊2
1.1.2 英特尔奔腾浮点除法缺陷(1994年) ┊3
1.1.3 美国航天局火星极地登陆者号探测器(1999年) ┊4
1.1.4 爱国者导弹防御系统(1991年) ┊4
1.1.5 千年虫问题(大约1974年) ┊4
1.1.6 危险的预见(2004年) ┊5
1.2 软件缺陷是什么 ┊5
1.2.1 软件失败的术语 ┊5
1.2.2 软件缺陷的官方定义 ┊6
1.3 为什么会出现软件缺陷 ┊8
1.4 软件缺陷的修复费用 ┊8
1.5 软件测试员究竟做些什么 ┊9
1.6 优秀的软件测试员应具备的素质 ┊10
第2章 软件开发的过程 ┊12
2.1 产品的组成部分 ┊12
2.1.1 软件产品需要多少投入 ┊12
2.1.2 软件产品由哪些部分组成 ┊15
2.2 软件项目成员 ┊16
2.3 软件开发生命周期模式 ┊17
2.3.1 大爆炸模式 ┊17
2.3.2 边写边改模式 ┊18
2.3.3 瀑布模式 ┊19
2.3.4 螺旋模式 ┊20
第3章 软件测试的实质 ┊23
3.1 测试的原则 ┊23
3.1.1 完全测试程序是不可能的 ┊23
3.1.2 软件测试是有风险的行为 ┊24
3.1.3 测试无法显示潜伏的软件缺陷 ┊25
3.1.4 找到的软件缺陷越多,就说明软件缺陷越多 ┊25
3.1.5 杀虫剂怪事 ┊26
3.1.6 并非所有软件缺陷都要修复 ┊26
3.1.7 什么时候才叫缺陷难以说清 ┊27
3.1.8 产品说明书从没有最终版本 ┊28
3.1.9 软件测试员在产品小组中不受欢迎 ┊28
3.1.10 软件测试是一个讲究条理的技术职业 ┊29
3.2 软件测试的术语和定义 ┊29
3.2.1 精确和准确 ┊29
3.2.2 确认和验证 ┊30
3.2.3 质量和可靠性 ┊31
3.2.4 测试和质量保证 ┊31
第二部分 测试基础
第4章 检查产品说明书 ┊34
4.1 开始测试 ┊34
4.1.1 黑盒测试和白盒测试 ┊35
4.1.2 静态测试和动态测试 ┊36
4.1.3 静态黑盒测试—测试产品说明书 ┊36
4.2 对产品说明书进行高级审查 ┊37
4.2.1 假设自己是客户 ┊37
4.2.2 研究现有的标准和规范 ┊37
4.2.3 审查和测试类似软件 ┊38
4.3 产品说明书的低层次测试技术 ┊39
4.3.1 产品说明书属性检查清单 ┊39
4.3.2 产品说明书用语检查清单 ┊39
第5章 带上眼罩测试软件 ┊41
5.1 动态黑盒测试:带上眼罩测试软件 ┊42
5.2 通过性测试和失效性测试 ┊43
5.3 等价类划分 ┊44
5.4 数据测试 ┊45
5.4.1 边界条件 ┊46
5.4.2 次边界条件 ┊49
5.4.3 默认、空白、空值、零值和无 ┊51
5.4.4 非法、错误、不正确和垃圾数据 ┊52
5.5 状态测试 ┊52
5.5.1 测试软件的逻辑流程 ┊53
5.5.2 失败状态测试 ┊56
5.6 其他黑盒测试技术 ┊58
5.6.1 像笨拙的用户那样做 ┊58
5.6.2 在已经找到软件缺陷的地方再找找 ┊58
5.6.3 像黑客一样考虑问题 ┊59
5.6.4 凭借经验、直觉和预感 ┊59
第6章 检查代码 ┊61
6.1 静态白盒测试:检查设计和代码 ┊61
6.2 正式审查 ┊62
6.2.1 同事审查 ┊63
6.2.2 走查 ┊63
6.2.3 检验 ┊64
6.3 编码标准和规范 ┊64
6.3.1 编程标准和规范示例 ┊65
6.3.2 获取标准 ┊66
6.4 通用代码审查清单 ┊67
6.4.1 数据引用错误 ┊67
6.4.2 数据声明错误 ┊67
6.4.3 计算错误 ┊68
6.4.4 比较错误 ┊68
6.4.5 控制流程错误 ┊68
6.4.6 子程序参数错误 ┊69
6.4.7 输入/输出错误 ┊69
6.4.8 其他检查 ┊69
第7章 带上X光眼镜测试软件 ┊71
7.1 动态白盒测试 ┊71
7.2 动态白盒测试和调试 ┊72
7.3 分段测试 ┊73
7.3.1 单元测试和集成测试 ┊74
7.3.2 单元测试示例 ┊75
7.4 数据覆盖 ┊77
7.4.1 数据流 ┊77
7.4.2 次边界 ┊78
7.4.3 公式和等式 ┊78
7.4.4 错误强制 ┊78
7.5 代码覆盖 ┊79
7.5.1 程序语句和代码行覆盖 ┊80
7.5.2 分支覆盖 ┊81
7.5.3 条件覆盖 ┊81
第三部分 运用测试技术
第8章 配置测试 ┊86
8.1 配置测试综述 ┊86
8.1.1 分离配置缺陷 ┊89
8.1.2 计算工作量 ┊90
8.2 执行任务 ┊91
8.2.1 确定所需的硬件类型 ┊91
8.2.2 确定有哪些厂商的硬件、型号和驱动程序可用 ┊92
8.2.3 确定可能的硬件特性、模式和选项 ┊92
8.2.4 将确定后的硬件配置缩减为可控制的范围 ┊92
8.2.5 明确与硬件配置有关的软件唯一特性 ┊93
8.2.6 设计在每种配置中执行的测试用例 ┊94
8.2.7 在每种配置中执行测试 ┊94
8.2.8 反复测试直到小组对结果满意为止 ┊94
8.3 获得硬件 ┊94
8.4 明确硬件标准 ┊96
8.5 对其他硬件进行配置测试 ┊96
第9章 兼容性测试 ┊98
9.1 兼容性测试综述 ┊98
9.2 平台和应用程序版本 ┊99
9.2.1 向后和向前兼容 ┊100
9.2.2 测试多个版本的影响 ┊100
9.3 标准和规范 ┊102
9.3.1 高级标准和规范 ┊102
9.3.2 低级标准
前 言
当今社会似乎每天都有关于计算机软件问题或安全缺陷暴露的新闻报道:银行给出不正确的账目收支报表、火星探测器在太空失踪、食品店收银机扫描器多算了香蕉的钱,或者某位黑客获得了数百万张信用卡号的访问权。
为什么会出现这些问题呢?难道程序员不能想出办法让软件仅仅做简单的工作吗?答案是否定的。随着软件变得越来越复杂,软件的功能越来越多,软件的互联性越来越强,使得编写一个无故障的程序越来越难,事实上已经不可能。不论程序员多有能力,也不论他有多细心,他的程序中都难免会出现问题。
这就是引入软件测试的原因。我们都看到在新衣服的口袋里有“检验员12号”的小标记,软件也一样有检验标记。许多大的软件公司里一个程序员配一个或多个测试员,以保证软件质量。从游戏软件,到工厂自动化生产软件,再到商业应用软件,都是如此。
本书将向你介绍软件测试的基础知识,不仅讲述基本的技能,还讲述成为一个成功的软件测试员必需的技能。你将会学到,如何迅速在任一计算机程序中发现问题,如何计划一个有效的测试步骤,如何清楚地报告发现的问题,以及如何告知软件在何时发布。
关于本书第2版
在我写《软件测试》第1版的时候,软件安全性问题还只是刚开始在新闻标题中出现。虽然黑客和安全问题一直都是一个难题,但是随着互联网的爆炸性发展,业界几乎无人能预计安全漏洞对软件开发者和使用者的影响有多大。
在第2版中,我又重新审阅了各章,着重强调了软件安全问题,并指出了如何使用贯穿全书的基本测试技术来预防、查找、修正安全问题。我还增加了一章,专门讲述如何测试软件安全漏洞。
如果你是第1版的读者,你会知道一个道理:不管你做多大的努力,你的软件都会带着缺陷发布。在第2版中,这也是一个真理—甚至带着安全问题发布。然而,通过对本书所讲述内容的长期应用,能达到确保测试中绝大多数重要的缺陷都不会漏掉的目标,并且使你的团队开发出高质量、高安全性的软件成为可能。
本书的读者对象
本书适用于三类不同的读者:
有兴趣将软件测试作为全职工作、实习或合作工作的学生或电脑爱好者。在面试前或第一天工作前阅读这本书以求在新上司眼里留下好印象。
改变职业,希望从原来的专业领域转入软件产业领域的人。本书给非软件专业的人员很多将其原专业知识应用到软件测试中的机会。例如,飞行教导员可以测试飞行模拟游戏,会计可以测试税务申报软件,教师可以测试新的儿童教育程序。
想对软件测试方面的知识增强了解的程序员、软件项目经理、软件开发团队的其他人员。
本书可以为你带来什么
从本书中可以学到关于软件测试的几乎所有方面的内容:
软件测试如何适应软件开发过程
基本的和高级的软件测试技术
在常见的测试任务中运用测试技能
引入自动化提高测试的效率
测试工作的计划和文档化
有效地报告发现的问题
衡量测试工作的成效和产品的改进
测试和质量保证的区别
寻求软件测试员的工作
本书必须用到的软件
本书讲述的方法是通用的,可以用于测试任何类型的计算机软件。但是,为了使大多数读者熟悉并使用例子,这些例子都是基于一些简单的程序,例如Windows XP和Windows NT/2000所带的计算器、记事本、写字板。
即使使用的是运行Linux或其他操作系统的PC或Mac电脑,也可以轻易地在系统中找到和本书中类似的程序。发挥创造力吧!创造性是优秀软件测试员应具备的素质。
本书中针对不同的应用程序、软件缺陷、软件测试工具所举的例子绝不是有意在对这些软件进行肯定或否定,这些例子仅仅用来演示软件测试的概念。
本书的组织方式
编写本书的目的是引导读者通过基础知识和必要技能的学习而成为一个优秀的软件测试员。软件测试并不是不停地敲击键盘,希望能最终使计算机崩溃这样一回事,在它后面包含了大量的科学和工程、规则和计划,也有很多的乐趣—你很快就会看到。
第一部分 软件测试综述
第一部分是本书的基础,该部分讲述了软件产品是如何开发出来的,软件测试如何应用到整个开发过程中。你将会懂得软件测试的重要性,并对软件测试工作量的巨大产生正确的认识。
第1章,“软件测试的背景”,帮助你理解什么是软件缺陷,软件缺陷到底有多严重,为什么软件缺陷会发生。你会了解到作为一个软件测试员最终的目标是什么,以及成为一个优秀的软件测试员应该具有哪些特点。
第2章,“软件开发的过程”,介绍团体进行软件产品生产的总体过程。你会了解到软件生产中有哪些典型的过程,哪些人员对此做出了贡献,以及可以应用的不同的过程模型。
第3章,“软件测试的实质”,对软件开发的事实进行分析。你会了解到为什么无论你做多大的努力,软件永远都不会完美,还会了解到本书中用到的一些基本的术语和概念。
第二部分 测试基础
第二部分讲述软件测试的基本方法,软件测试工作分为四个方面,每个方面的技术都用一章来描述。
第4章,“检查产品说明书”,讲述如何通过详细检查软件文档来发现缺陷。
第5章,“带上眼罩测试软件”,讲述在没有代码甚至不懂得编程的情况下的软件测试技术,这是最常用的测试类型。
第6章,“检查代码”,讲述如何通过详细的程序代码分析来发现缺陷。你会了解到并非高级程序员才能运用此方法。
第7章,“带上X光眼镜测试软件”,讲述如何通过代码评审或观察动态运行测试获得的信息来改进测试。
第三部分 运用测试技术
第三部分把第二部分学到的技术应用到软件测试员今后会遇到的实战环境中。
第8章,“配置测试”,讲述如何针对不同的硬件配置和平台来组织和执行软件测试。
第9章,“兼容性测试”,讲述如何针对不同的软件应用程序和操作系统交互的问题进行测试。
第10章,“外国语言测试”,有很多软件,当其被翻译成其他语言时会引起一些特殊问题,这时测试显得很重要。
第11章,“易用性测试”,讲述在检查软件程序的用户界面时,如何应用测试技术,如何确保软件对于残障人士也能适用。
第12章,“文档测试”,讲述如何检查软件的文档的缺陷,例如帮助文档、用户手册,甚至是市场宣传资料。
第13章,“软件安全性测试”,讲述如何针对想象中安全的计算机系统和数据,发现被黑客突破的安全缺陷。
第14章,“网站测试”,将目前学到的所有技术应用到实际测试中,你会发现即使简单到一个网站的测试,也涉及了软件测试的各个方面。
第四部分 测试的补充
第四部分讲述如何通过技术和人员的合理调配,提高测试的覆盖率和深入程度,使测试更有效。
第15章,“自动测试和测试工具”,讲述如何使用计算机软件来测试其他软件。你会了解到使用工具测试和自动化测试的不同方法,还会了解到使用工具测试并不十分简单。
第16章,“缺陷轰炸和beta测试”,讲述如何利用其他人员从不同角度使用软件,发现那些你完全忽略的缺陷。
第五部分 使用测试文档
第五部分涉及如何使软件测试文档化,使软件测试的计划、测试缺陷、测试结果对项目团队中每个成员都可见,且能理解。
第17章,“计划测试工作”,讲述创建项目测试计划涉及的工作。作为一个软件测试的新手,你可能不会马上就能写测试计划,一切都得从零开始,但是了解测试计划的内容以及写测试计划的原因是很重要的。
第18章,“编写和跟踪测试用例”,讲述如何正确规范地编写测试用例,使其他测试员也能使用。
第19章,“报告发现的问题”,讲述如何报告缺陷,如何整理出重现缺陷的必要步骤,如何描述缺陷使其他人可以理解并愿意修改。
第20章,“成效评价”,描述不同类型的数据、图表,用来标记测试的过程和进展,以及达到软件发布的步骤。
第六部分 软件测试的未来
第六部分讲述软件测试的未来以及软件测试的职业。
第21章,“软件质量保证”,讲述软件测试和软件质量保证之间的巨大区别,你会了解到不同的软件产业标准,诸如ISO 9000和软件能力成熟度模型,以及达到这些标准的要求。
第22章,“软件测试员的职业”,讲述成为软件测试员遇到的障碍。你可以了解到有哪些类型的工作以及到哪里去找这些工作,其中还有许多的提示和信息。
附录
本书每一章结尾都有一个小测验,用于测试所学到的测试概念。附录A给出了答案。
本书所采用的规范
注意是每一章材料的附属材料,用来澄清概念和程序。
技巧提供常见问题的快捷路径和解决方案。
提示提到在前面章节讨论的内容,有助于对已讲知识的回忆以及增强对重要概念的认识。
致谢
非常感谢Sams出版社、编辑和其他工作人员,他们为我此书第2版的出版做了大量的工作。感谢资深评论人Danny Faught,他为此书提出了宝贵的意见。
感谢我的父母Walter和Eleanore,在1977年时,他们同意我停修手风琴课并给我买了一台TRS-80 I型计算机。感谢我的姐姐Saundra,父母都忙于指挥她的比赛,这才使得我能躲在房间里学习编写程序。感谢我在Mohawk中学的计算机老师Ruth Voland,他带我参加各种计算机展览会并给我额外的时间使用学校的ASR 33型打字机。感谢TI的Alan Backus和Galen Freemon,他们让我能按照自己的思路开发软件测试工具。感谢我过去的同事,他们在软件测试方面教给了我许多自学无法学到的东西。同时,感谢我优秀的妻子Valerie,1991年,当我问她是否把简历投给远在西雅图的名叫微软的小公司时,她坚定地说:“投过去,看看会发生什么。”你们当中的每一个人都为这本书做出了贡献,谢谢你们!
为什么会出现这些问题呢?难道程序员不能想出办法让软件仅仅做简单的工作吗?答案是否定的。随着软件变得越来越复杂,软件的功能越来越多,软件的互联性越来越强,使得编写一个无故障的程序越来越难,事实上已经不可能。不论程序员多有能力,也不论他有多细心,他的程序中都难免会出现问题。
这就是引入软件测试的原因。我们都看到在新衣服的口袋里有“检验员12号”的小标记,软件也一样有检验标记。许多大的软件公司里一个程序员配一个或多个测试员,以保证软件质量。从游戏软件,到工厂自动化生产软件,再到商业应用软件,都是如此。
本书将向你介绍软件测试的基础知识,不仅讲述基本的技能,还讲述成为一个成功的软件测试员必需的技能。你将会学到,如何迅速在任一计算机程序中发现问题,如何计划一个有效的测试步骤,如何清楚地报告发现的问题,以及如何告知软件在何时发布。
关于本书第2版
在我写《软件测试》第1版的时候,软件安全性问题还只是刚开始在新闻标题中出现。虽然黑客和安全问题一直都是一个难题,但是随着互联网的爆炸性发展,业界几乎无人能预计安全漏洞对软件开发者和使用者的影响有多大。
在第2版中,我又重新审阅了各章,着重强调了软件安全问题,并指出了如何使用贯穿全书的基本测试技术来预防、查找、修正安全问题。我还增加了一章,专门讲述如何测试软件安全漏洞。
如果你是第1版的读者,你会知道一个道理:不管你做多大的努力,你的软件都会带着缺陷发布。在第2版中,这也是一个真理—甚至带着安全问题发布。然而,通过对本书所讲述内容的长期应用,能达到确保测试中绝大多数重要的缺陷都不会漏掉的目标,并且使你的团队开发出高质量、高安全性的软件成为可能。
本书的读者对象
本书适用于三类不同的读者:
有兴趣将软件测试作为全职工作、实习或合作工作的学生或电脑爱好者。在面试前或第一天工作前阅读这本书以求在新上司眼里留下好印象。
改变职业,希望从原来的专业领域转入软件产业领域的人。本书给非软件专业的人员很多将其原专业知识应用到软件测试中的机会。例如,飞行教导员可以测试飞行模拟游戏,会计可以测试税务申报软件,教师可以测试新的儿童教育程序。
想对软件测试方面的知识增强了解的程序员、软件项目经理、软件开发团队的其他人员。
本书可以为你带来什么
从本书中可以学到关于软件测试的几乎所有方面的内容:
软件测试如何适应软件开发过程
基本的和高级的软件测试技术
在常见的测试任务中运用测试技能
引入自动化提高测试的效率
测试工作的计划和文档化
有效地报告发现的问题
衡量测试工作的成效和产品的改进
测试和质量保证的区别
寻求软件测试员的工作
本书必须用到的软件
本书讲述的方法是通用的,可以用于测试任何类型的计算机软件。但是,为了使大多数读者熟悉并使用例子,这些例子都是基于一些简单的程序,例如Windows XP和Windows NT/2000所带的计算器、记事本、写字板。
即使使用的是运行Linux或其他操作系统的PC或Mac电脑,也可以轻易地在系统中找到和本书中类似的程序。发挥创造力吧!创造性是优秀软件测试员应具备的素质。
本书中针对不同的应用程序、软件缺陷、软件测试工具所举的例子绝不是有意在对这些软件进行肯定或否定,这些例子仅仅用来演示软件测试的概念。
本书的组织方式
编写本书的目的是引导读者通过基础知识和必要技能的学习而成为一个优秀的软件测试员。软件测试并不是不停地敲击键盘,希望能最终使计算机崩溃这样一回事,在它后面包含了大量的科学和工程、规则和计划,也有很多的乐趣—你很快就会看到。
第一部分 软件测试综述
第一部分是本书的基础,该部分讲述了软件产品是如何开发出来的,软件测试如何应用到整个开发过程中。你将会懂得软件测试的重要性,并对软件测试工作量的巨大产生正确的认识。
第1章,“软件测试的背景”,帮助你理解什么是软件缺陷,软件缺陷到底有多严重,为什么软件缺陷会发生。你会了解到作为一个软件测试员最终的目标是什么,以及成为一个优秀的软件测试员应该具有哪些特点。
第2章,“软件开发的过程”,介绍团体进行软件产品生产的总体过程。你会了解到软件生产中有哪些典型的过程,哪些人员对此做出了贡献,以及可以应用的不同的过程模型。
第3章,“软件测试的实质”,对软件开发的事实进行分析。你会了解到为什么无论你做多大的努力,软件永远都不会完美,还会了解到本书中用到的一些基本的术语和概念。
第二部分 测试基础
第二部分讲述软件测试的基本方法,软件测试工作分为四个方面,每个方面的技术都用一章来描述。
第4章,“检查产品说明书”,讲述如何通过详细检查软件文档来发现缺陷。
第5章,“带上眼罩测试软件”,讲述在没有代码甚至不懂得编程的情况下的软件测试技术,这是最常用的测试类型。
第6章,“检查代码”,讲述如何通过详细的程序代码分析来发现缺陷。你会了解到并非高级程序员才能运用此方法。
第7章,“带上X光眼镜测试软件”,讲述如何通过代码评审或观察动态运行测试获得的信息来改进测试。
第三部分 运用测试技术
第三部分把第二部分学到的技术应用到软件测试员今后会遇到的实战环境中。
第8章,“配置测试”,讲述如何针对不同的硬件配置和平台来组织和执行软件测试。
第9章,“兼容性测试”,讲述如何针对不同的软件应用程序和操作系统交互的问题进行测试。
第10章,“外国语言测试”,有很多软件,当其被翻译成其他语言时会引起一些特殊问题,这时测试显得很重要。
第11章,“易用性测试”,讲述在检查软件程序的用户界面时,如何应用测试技术,如何确保软件对于残障人士也能适用。
第12章,“文档测试”,讲述如何检查软件的文档的缺陷,例如帮助文档、用户手册,甚至是市场宣传资料。
第13章,“软件安全性测试”,讲述如何针对想象中安全的计算机系统和数据,发现被黑客突破的安全缺陷。
第14章,“网站测试”,将目前学到的所有技术应用到实际测试中,你会发现即使简单到一个网站的测试,也涉及了软件测试的各个方面。
第四部分 测试的补充
第四部分讲述如何通过技术和人员的合理调配,提高测试的覆盖率和深入程度,使测试更有效。
第15章,“自动测试和测试工具”,讲述如何使用计算机软件来测试其他软件。你会了解到使用工具测试和自动化测试的不同方法,还会了解到使用工具测试并不十分简单。
第16章,“缺陷轰炸和beta测试”,讲述如何利用其他人员从不同角度使用软件,发现那些你完全忽略的缺陷。
第五部分 使用测试文档
第五部分涉及如何使软件测试文档化,使软件测试的计划、测试缺陷、测试结果对项目团队中每个成员都可见,且能理解。
第17章,“计划测试工作”,讲述创建项目测试计划涉及的工作。作为一个软件测试的新手,你可能不会马上就能写测试计划,一切都得从零开始,但是了解测试计划的内容以及写测试计划的原因是很重要的。
第18章,“编写和跟踪测试用例”,讲述如何正确规范地编写测试用例,使其他测试员也能使用。
第19章,“报告发现的问题”,讲述如何报告缺陷,如何整理出重现缺陷的必要步骤,如何描述缺陷使其他人可以理解并愿意修改。
第20章,“成效评价”,描述不同类型的数据、图表,用来标记测试的过程和进展,以及达到软件发布的步骤。
第六部分 软件测试的未来
第六部分讲述软件测试的未来以及软件测试的职业。
第21章,“软件质量保证”,讲述软件测试和软件质量保证之间的巨大区别,你会了解到不同的软件产业标准,诸如ISO 9000和软件能力成熟度模型,以及达到这些标准的要求。
第22章,“软件测试员的职业”,讲述成为软件测试员遇到的障碍。你可以了解到有哪些类型的工作以及到哪里去找这些工作,其中还有许多的提示和信息。
附录
本书每一章结尾都有一个小测验,用于测试所学到的测试概念。附录A给出了答案。
本书所采用的规范
注意是每一章材料的附属材料,用来澄清概念和程序。
技巧提供常见问题的快捷路径和解决方案。
提示提到在前面章节讨论的内容,有助于对已讲知识的回忆以及增强对重要概念的认识。
致谢
非常感谢Sams出版社、编辑和其他工作人员,他们为我此书第2版的出版做了大量的工作。感谢资深评论人Danny Faught,他为此书提出了宝贵的意见。
感谢我的父母Walter和Eleanore,在1977年时,他们同意我停修手风琴课并给我买了一台TRS-80 I型计算机。感谢我的姐姐Saundra,父母都忙于指挥她的比赛,这才使得我能躲在房间里学习编写程序。感谢我在Mohawk中学的计算机老师Ruth Voland,他带我参加各种计算机展览会并给我额外的时间使用学校的ASR 33型打字机。感谢TI的Alan Backus和Galen Freemon,他们让我能按照自己的思路开发软件测试工具。感谢我过去的同事,他们在软件测试方面教给了我许多自学无法学到的东西。同时,感谢我优秀的妻子Valerie,1991年,当我问她是否把简历投给远在西雅图的名叫微软的小公司时,她坚定地说:“投过去,看看会发生什么。”你们当中的每一个人都为这本书做出了贡献,谢谢你们!
评论
还没有评论。