
最 低 价:¥16.77
定 价:¥39.00
作 者:(美)Cem Kaner,Jack Falk,Hung QuocNguyen 著
出 版 社:机械工业出版社
出版时间:2004 年5月
I S B N:7111142462
| Cem Kaner 技术及软件开发管理顾问,并在当地大学及几家软件公司中讲授软件测试课程。他还是律师,通常为个人开发者、小型开发服务公司及客户工作。他创建并主持着洛斯阿尔托斯软件测试研讨会(Los Altos Workshops on Software Testing)。Kaner在1976年开始使用计算机,当时他是一名人类实验心理学的研究生。1983年,他前往硅谷,作过程序员、人为因素分析师、用户界面设计人员、软件销售人员、团队开发咨询公司合伙人、技术撰稿人、软件测试技术小组负责人、软件测试经理、技术发布经理、软件开发经.. << 查看详细 |
| 译者序 前言 关于本书结构和布局的说明 作者简介 第一部分 基础知识 第1章 一个样例测试系列3 1.1 第一个测试周期3 1.1.1 第1步:从一个显而易见的简单 测试开始3 1.1.2 第一次测试产生的问题报告4 1.1.3 第2步:对还需要测试什么做一 些记录4 1.1.4 寻找边界条件6 1.1.5 第3步:检查有效用例并观察发 生了什么7 1.1.6 第4步:做一些“快速的”测试7 1.1.7 第5步:总结对程序及其问题的 认识9 1.1.8 第一个测试周期的总结12 1.2 第二个测试周期12 .1.2.1 第1步:在进行任何测试之前应 仔细评审对问题报告的反馈,以 确定哪些需求必须满足,哪些 无须满足13 1.2.2 第2步:评审对不进行改正的问 题的意见,它们可能暗示着进 行进一步的测试13 1.2.3 第3步:找出上次的记录,补充 新记录,然后开始测试14 1.3 后续测试周期中可能会发生的事情15 第2章 测试的目标和局限17 2.1 不可能完全测试一个程序18 2.1.1 不可能测试到程序对任何可能 输入的响应18 2.1.2 不可能测试到程序每一条可能 的执行路径20 2.1.3 无法找出所有的设计错误22 2.1.4 不能采用逻辑来证明程序的正 确性22 2.2 测试人员的目标是验证程序吗22 2.2.1 无法验证程序运行正确22 2.2.2 程序不能正确地运行23 2.2.3 既然程序不能正确地工作,那 么测试是不是个失败呢23 2.2.4 测试人员不应该试图验证一个 程序运行正确23 2.3 那么,为什么要进行测试呢24 2.3.1 测试一个程序的目的是为了发 现它的问题24 2.3.2 发现问题的目的是为了改正问题25 第3章 测试的类型及其在软件开发过程 中的地位26 3.1 软件开发阶段综述29 3.2 规划阶段30 3.2.1 目标阐述30 3.2.2 需求分析31 3.2.3 功能定义31 3.3 规划阶段进行的测试31 3.3.1 产品对照评价32 3.3.2 重点问题小组32 3.3.3 任务分析33 3.4 设计阶段33 3.4.1 外部设计33 3.4.2 内部设计34 3.4.3 原型开发35 3.5 设计阶段的测试36 3.5.1 评审会议37 3.5.2 伪代码分析37 3.6 白盒代码测试是编码阶段的 组成部分38 3.6.1 结构测试与功能测试39 3.6.2 路径测试:覆盖准则39 3.6.3 增长测试与崩溃测试41 3.6.4 自顶向下测试与自底向上测试42 3.6.5 静态测试与动态测试42 3.6.6 标准符合性43 3.6.7 软件度量43 3.6.8 刻意的错误:调试与变异44 3.6.9 性能测试45 3.7 回归测试45 3.8 黑盒测试46 3.8.1 常用的黑盒测试事件序列46 3.8.2 功能测试和系统测试中需要进行 的测试49 3.9 维护51 第4章 软件错误54 4.1 质量54 4.2 什么是软件错误55 4.3 软件错误的分类55 4.3.1 用户界面错误55 4.3.2 错误处理56 4.3.3 与边界相关的错误56 4.3.4 计算错误57 4.3.5 最初阶段与后续阶段57 4.3.6 控制流错误57 4.3.7 数据处理或解释中的错误57 4.3.8 竞争条件57 4.3.9 负载条件58 4.3.10 硬件58 4.3.11 源程序和版本控制58 4.3.12 文档58 4.3.13 测试中的错误58 第5章 缺陷的报告与分析59 5.1 即时填写问题报告60 5.2 问题报告的内容60 5.2.1 问题报告编号60 5.2.2 程序名60 5.2.3 版本标识:发布号和版本号60 5.2.4 报告类型62 5.2.5 严重性62 5.2.6 附件63 5.2.7 问题概要63 5.2.8 问题能否重现63 5.2.9 问题描述及如何重现64 5.2.10 建议的改正措施64 5.2.11 报告人64 5.2.12 日期64 5.2.13 功能域64 5.2.14 承办人65 5.2.15 注释65 5.2.16 状态65 5.2.17 优先级65 5.2.18 处理状态与处理版本66 5.2.19 签名66 5.2.20 暂缓处理66 5.3 问题报告的特点67 5.3.1 书面的67 5.3.2 已编号的68 5.3.3 简单的68 5.3.4 易于理解的68 5.3.5 可重现的68 5.3.6 易读的68 5.3.7 不做判断的69 5.4 重现缺陷的分析69 5.4.1 找出最严重的后果70 5.4.2 找出最简单和最常见的条件70 5.4.3 找出产生相同问题的其他路径71 5.4.4 找出相关的问题71 5.5 可重现缺陷的分析技术71 5.5.1 寻找最关键的步骤71 5.5.2 最大程度地提高程序运行的 可见性72 5.5.3 一旦找出了关键步骤,就改变你 的做法73 5.5.4 查找后续错误73 5.5.5 渐进地省略或改变步骤73 5.5.6 在程序以前的版本中查找错误74 5.5.7 查找配置依赖74 5.6 让缺陷可重现74 5.6.1 竞争条件75 5.6.2 被遗忘的细节75 5.6.3 用户的错误:所做的并非是以 为做到的75 5.6.4 缺陷造成的影响会导致其 无法重现75 5.6.5 缺陷是依赖于内存的76 5.6.6 仅会在初次运行时出现的缺陷76 5.6.7 因数据错误导致的缺陷76 5.6.8 由于一些其他问题附带引起 的缺陷76 5.6.9 间断性硬件故障77 5.6.10 缺陷依赖于时间77 5.6.11 缺陷依赖于资源77 5.6.12 缺陷由长期积累形成77 5.6.13 代码中的特殊分支78 5.6.14 有人动了你的计算机78 第二部分 特殊的测试技巧 第6章 问题跟踪系统81 6.1 问题跟踪系统的主要目标84 6.2 问题跟踪系统的任务84 6.3 问题跟踪概述84 6.3.1 问题被上报84 6.3.2 报告提交给项目经理85 6.3.3 报告由项目经理转交给程序员86 6.3.4 当问题已经改正87 6.3.5 无法重现的问题87 6.3.6 问题暂缓与申诉过程88 6.3.7 未被处理的问题89 6.3.8 项目状态报告89 6.4 跟踪系统的使用者90 6.4.1 主任测试员90 6.4.2 其他测试人员90 6.4.3 项目经理90 6.4.4 程序员92 6.4.5 产品经理92 6.4.6 技术支持92 6.4.7 文档编写人员93 6.4.8 测试经理93 6.4.9 高级经理94 6.4.10 律师97 6.5 数据库的技术细节98 6.5.1 报告新的问题98 6.5.2 每周状态报告98 6.5.3 测试周期的结束99 6.5.4 已处理的问题和未处理的问题100 6.5.5 暂缓处理的问题101 6.5.6 进展总结101 6.5.7 开发结束时102 6.5.8 为下一个发布版本重新打开暂缓 处理的缺陷103 6.5.9 跟踪补丁104 6.6 关于问题报告的进一步思考104 6.6.1 进行判断104 6.6.2 相似的报告106 6.6.3 允许不同的观点存在107 6.6.4 内部细节108 6.6.5 问题报告单的一些注意事项109 6.7 术语表109 第7章 测试用例设计111 7.1 良好测试具备的特点112 7.1.1 它有相当的可能找出软件错误112 7.1.2 它不是冗余的113 7.1.3 它是本类用例中最佳的选择113 7.1.4 它既不过于复杂,又不过于简单113 7.1.5 它使程序失效显而易见113 7.2 等价类与边界值113 7.2.1 等价类113 7.2.2 找出等价类114 7.2.3 等价类的边界118 7.3 可见的状态转换119 7.4 竞争条件与其他时间依赖关系119 7.5 负载测试120 7.6 错误猜测121 7.7 函数等价测试:自动执行、敏感度 分析与随机输入121 7.7.1 函数等价测试的自动执行121 7.7.2 敏感度分析122 7.7.3 随机输入123 7.7.4 通用等价测试124 7.8 回归测试:检查缺陷是否有效改正124 7.9 回归测试:标准测试库125 7.10 执行测试126 第8章 打印机及其他设备的测试127 8.1 配置测试的一般性问题128 8.2 打印机测试130 8.2.1 打印机综述130 8.2.2 打印机驱动策略132 8.2.3 打印机测试的总体策略133 8.2.4 打印机测试矩阵137 8.2.5 保存、分享及重用你的打印 机知识140 8.2.6 自动测试的一些技巧140 8.2.7 建立一个打印机测试实验室145 第9章 本地化测试148 9.1 基本的代码改变了吗149 9.2 与熟悉当地语言的人一起工作149 9.3 文本与代码相互独立吗149 9.4 翻译文本的空间膨胀150 9.5 字符集150 9.6 键盘151 9.7 文本过滤151 9.8 载入、保存、导入和导出高ascii 字符和低ascii字符151 9.9 操作系统的语言152 9.10 热键152 9.11 翻译中的断章取义152 9.12 错误信息辨识器152 9.13 连词规则152 9.14 拼写规则152 9.15 排序规则153 9.16 大小写转换153 9.17 下划线规则153 9.18 打印机153 9.19 纸张尺寸153 9.20 cpu与视频卡153 9.21 鼠标154 9.22 数据格式及设置选项154 9.23 测量标准154 9.24 与当地文化相抵触的图形154 9.25 与当地文化相抵触的输出154 9.26 欧洲产品的兼容性154 9.27 内存可用性155 9.28 图形用户界面能解决问题吗155 9.29 自动测试155 第10章 用户手册的测试156 10.1 有效的文档156 10.2 文档测试人员的目标157 10.3 文档测试如何有助于提高软件 可靠性158 10.4 成为技术编辑159 10.5 用户手册编制阶段一览159 10.5.1 第一稿160 10.5.2 第二稿160 10.5.3 经修订的第二稿161 10.5.4 b测试稿162 10.5.5 制作阶段162 10.5.6 后期制作阶段163 10.6 在线帮助164 第11章 测试工具165 11.1 基本工具165 11.2 自动验收测试与自动回归测试167 11.2.1 回归测试用例的出处168 11.2.2 为程序提供输入168 11.2.3 捕获程序的输出170 11.2.4 对输出的评价170 11.2.5 自动验收测试172 11.3 标准172 11.4 半透明盒测试174 11.4.1 插装代码以监视代码覆盖率174 11.4.2 断言检查175 11.4.3 内存有效性及占用检查176 第12章 测试计划与测试文档177 12.1 测试计划的总体目标:作为产品 还是作为工具178 12.1.1 作为产品的测试计划178 12.1.2 作为工具的测试计划178 12.2 测试计划和测试文档的具体目标179 12.2.1 测试文档有助于测试技术任务 的完成179 12.2.2 测试文档增进了测试任务和测 试过程之间的交流181 12.2.3 测试文档提供了组织、安排以 及管理测试项目的结构182 12.3 测试计划文档中需要覆盖的测试 类型184 12.3.1 遗漏了什么样的白盒测试184 12.3.2 重要的黑盒测试类型185 12.4 开发测试计划文档的组成部分的策略186 12.4.1 测试材料的演化开发186 12.4.2 测试材料的初始开发187 12.4.3 下一步集中于何处,在何处 增加深度188 12.4.4 增加测试计划深度的技巧189 12.5 测试计划文档的组成部分190 12.5.1 清单191 12.5.2 表195 12.5.3 大纲—功能清单201 12.5.4 矩阵205 12.6 测试材料的归档209 12.6.1 谁会使用这种文档209 12.6.2 测试文档的类型213 12.7 结束时的思考218 第三部分 测试项目和测试 小组的管理 第13章 连接起来221 13.1 软件开发权衡223 13.2 软件开发模型224 13.2.1 传统的瀑布方法224 13.2.2 演化方法225 13.2.3 开发模型对测试的建议227 13.3 与质量相关的成本229 13.4 开发时间基线230 13.5 产品设计233 13.5.1 产品设计期间的编程活动233 13.5.2 产品设计期间的营销活动233 13.5.3 产品设计期间的文档活动233 13.5.4 产品设计期间的测试活动234 13.6 分段编码:首要功能237 13.6.1 首要功能之后的编程活动237 13.6.2 首要功能之后的测试活动237 13.7 准a测试阶段238 13.7.1 准a测试阶段的编程活动238 13.7.2 准a测试阶段的文档活动238 13.7.3 准a测试阶段的测试活动238 13.8 a测试阶段239 13.8.1 a测试阶段后的编程活动240 13.8.2 a测试阶段后的营销活动240 13.8.3 a测试阶段后的文档活动240 13.8.4 a测试阶段后的测试活动240 13.8.5 测试的深度与广度的比较244 13.8.6 关于测试周期的记录246 13.9 预b测试阶段247 13.10 b测试阶段247 13.10.1 b测试阶段后的编程活动248 13.10.2 b测试阶段后的营销活动249 13.10.3 b测试阶段后的文档活动249 13.10.4 b测试阶段后的测试活动249 13.10.5 外部b测试251 13.11 用户界面确定253 13.11.1 用户界面确定后的编程活动254 13.11.2 用户界面确定后的营销活动254 13.11.3 用户界面确定后的文档活动254 13.11.4 用户界面确定后的测试活动254 13.12 预最终测试阶段255 13.12.1 预最终测试期间的编程活动255 13.12.2 预最终测试期间的文档活动256 13.12.3 预最终测试期间的测试活动256 13.12.4 估计产品的可靠性257 13.13 最终的完整性测试259 13.13.1 最终测试阶段的编程活动259 13.13.2 最终测试阶段的测试活动259 13.14 发布260 13.15 项目总结260 第14章 有缺陷软件的法律后果262 14.1 违约264 14.1.1 u.c.c与软件合同264 14.1.2 违反保证265 14.1.3 明确保证266 14.1.4 适销性的暗示保证267 14.1.5 特殊目的适当性的暗示保证267 14.1.6 合同与瀑布模型的暗示保证268 14.1.7 赔偿金269 14.1.8 收缩性薄膜包装保证的不承担 责任声明270 14.2 侵权行为:涉及过错的诉讼274 14.2.1 非法占有274 14.2.2 过失277 14.2.3 严格产品责任288 14.2.4 渎职289 14.2.5 欺诈290 14.3 揭发291 第15章 管理一个测试小组293 15.1 测试小组的职责295 15.1.1 质量控制组295 15.1.2 质量保证组296 15.1.3 测试服务组297 15.1.4 开发服务组298 15.1.5 建议298 15.2 测试小组并不纯粹是件好事298 15.3 另一种选择?独立测试机构299 15.4 进度制定技巧301 15.4.1 度量业绩和生产率302 15.4.2 确定并估计每个任务303 15.4.3 把项目分等级304 15.4.4 把任务确定为与循环相对的 固定任务305 15.5 你的职员306 15.5.1 雇用谁307 15.5.2 士气308 15.5.3 事业发展309 附录 常见的软件错误311 参考文献385 |
商品评论(0条)