《软件测试的艺术》笔记总结

软件测试的艺术 

 第一章       一次自评价测试 所谓软件测试,就是一个过程或一系列过程,用来确认计算机代码完成了其应该完成的功能,不执行其不该有的操作。 

 第二章       软件测试的心理学和经济学 2.1 软件测试的心理学 测试的定义:测试是为了发现错误而执行程序的过程。 2.2软件测试的经济学 2.2.1 黑盒测试 黑盒测试是一种重要的测试策略,又称为数据驱动的测试或输入/输出驱动的测试。使用这种测试方法时,将程序视为一个黑盒子。测试目标与程序的内部机制和结构完全无关。而是将重点集中放在发现程序不按其规范正确运行的环境条件。 穷举输入测试  2.2.2 白盒测试 或称逻辑驱动的测试,允许我们检查程序的内部结构。这种测试策略对程序的逻辑结构进行检查,从中获取测试数据。 穷举路径测试 2.3 软件测试的原则 原则1:测试用例中一个必需部分是对预期输出或结果的定义 原则2:程序员应当避免测试自己编写的程序 原则3:编写软件的组织不应当测试自己编写的软件 更经济的方法是由客观,独立的第三方进行测试。 原则4:应当彻底检查每个测试的执行结果 原则5:测试用例的编写不仅应当根据有效和预期的输入情况,而且也应当根据无效和未预料到的输入情况。 原则6:检查程序是否“未做其应该做的”仅是测试的一半,测试的另一半是检查程序是否“做了其不应该做的”。 原则7:应避免测试用例用后即弃,除非软件本身就是一个一次性的软件 原则8:计划测试工作时不应默许假定不会发现错误 原则9:程序某部分存在更多错误的可能性,与该部分已发现错误的数量成正比 原则10:软件测试是一项极富创造性、极具智力挑战性的工作 2.4 小结 在阅读本书接下来的内容时,请牢记以下三个重要的测试原则: 软件测试是为发现错误而执行程序的过程 一个好的测试用例具有较高的发现某个尚未发现的错误的可能性 一个成功的测试用例能够发现某个尚未发现的错误

 第三章       代码检查、走查与评审 3.1 代码检查和走查 代码检查和走查都要求人们组成一个小组来阅读或直观检查特定的程序。无论采用哪种方法,参加者都需要完成一些准备工作。准备工作的高潮就是在参加者会议上进行的所谓“头脑风暴会”。目标是找出错误,但不必找出改正错误的方法。 3.2 代码检查 所谓代码检查,是以组为单位阅读代码,它是一系列规程和错误检查技术的集合。对代码的检查的大多数讨论都集中在规程、所要填写的表格等。 代码检查小组 3.3 用于代码检查的错误列表 3.3.1 数据引用错误 3.3.2 数据声明错误 3.3.3 运算错误 3.3.4 比较错误 3.3.5 控制流程错误 3.3.6 接口错误 3.3.7 输入/输出错误 3.4 代码走查 代码走查会议的规程与代码检查不相同,代码走查的参与者“使用了计算机” 3.5 桌面检查 单人进行代码检查 3.6 同行评分

 第四章  测试用例的设计         4.1 白盒测试         4.1.1 逻辑覆盖测试         判定覆盖和条件覆盖         4.1.2 等价划分         4.1.4 边界值分析         4.1.5 因果图         4.2 错误猜测         依赖于直觉的非正规的过程 

 第五章       模块(单元)测试 模块测试(单元测试)是对程序中的单个子程序或子程序或过程进行测试的过程,也就是说,一开始并不是对整个程序进行测试,而是首先将注意力集中在对构成程序的较小模块的测试方面。 5.1 测试用例设计 模块测试的测试用例的设计过程如下:使用一种或多种白盒测试方法分析模块的逻辑结构,然后使用黑盒测试方法对照模块的规格说明以补充测试用例。 5.2 增量测试 非增量测试或者崩溃测试:先独立地测试每个模块,然后再将这些模块组装成完整的程序。 增量测试或集成:将下一步要测试的模块组装成测试完成的模块集合中,然后再进行测试。 增量测试更能发现问题,非增量测试更便于独立执行 5.3 自顶向下测试与自底向上测试 5.3.1  自顶向下的测试 自顶向下的测试是从程序的顶部或初始模块开始。测试开始之后,挑选哪一个后续模块进行增量测试没有惟一正确的方法;唯一的原则是:要成为合乎条件的下一个模块,至少一个该模块的从属模块(调用它的模块)事先经过了测试。 5.3.2 自底向上的测试 自底向上的策略开始于程序中的终端模块(此类模块不再调用其他任何模块)。测试完这些模块后,同样没有最佳的方法来挑选要进行增量测试的下一个模块;惟一正确的原则是,要成为合乎条件的下一个模块,该模块所有的从属模块(它调用的模块)都已经事先经过了测试。 5.4 执行测试 使用自动化测试工具可以使测试过程中的枯燥劳动减至最小。举例来说,现在已有测试工具可以降低我们对驱动模块的需求。流程分析工具可以列举出程序中的路径,找出从未被执行的语句(“不可达”代码),以及找出变量在赋值前被使用的实例。

 第六章       更高级别的测试 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 测试的计划与控制 一个良好的测试计划应包括: 1.目标  2.结束准则 3.进度 4.责任 5.测试用例库及标准 6.工具7.计算机时间 8. 硬件配置9.集成 10.跟踪步骤 11.调试步骤 12.回归测试          6.6 测试结束准则          对于功能测试和系统测试而言,结束准则可能是发现了既定数量的错误,或用完了计划的时间,再出现什么都不管,但条件是错误分析与时间图的对比表明测试的效率已很低了。 

 第七章  调试        调试是执行一次成功的测试之后所要进行的工作。调试是一个包含两个步骤的过程,从执行了一个成功的测试用例,发现了一个问题之后开始。第一步,确定程序中可疑错误的准确性质和位置;第二步,修改错误。        7.1 暴力法调试        7.2 归纳法调试        7.3 演绎法调试        7.4 回溯法调试        7.5 测试法调试        7.6 调试的原则        7.6.1 定位错误的原则        7.6.2 修改错误的技术        7.7 错误分析

 第八章  极限测试 在测试之前设计好所有的测试用例

你可能感兴趣的:(《软件测试的艺术》笔记总结)