热门关键字:  听力密码  听力密码  新概念美语  单词密码  巧用听写练听力

HI,BUGS——全面软件测试

中国水利水电出版社
    【作 者】黄文高 编著 【I S B N 】978-7-5170-4411-6 【责任编辑】张玉玲 【适用读者群】科技 【出版时间】2016-06-20 【开 本】16开 【装帧信息】平装(光膜) 【版 次】第1版第1次印刷 【页 数】440 【千字数】640 【印 张】27.5 【定 价】68 【丛 书】暂无分类 【备注信息】
图书详情

    本书主要介绍企业软件测试的流程、方法和技术。本书分四大部分:理论篇、设计篇、技术篇和扩展篇。理论篇主要介绍软件测试的基础知识;设计篇主要介绍企业中真实的软件测试的流程,包括测试计划、设计、执行、结果报告等,尤其是如何对缺陷进行度量,是本部分内容的一大亮点。技术篇主要介绍系统测试过程中其他的相关测试技术,包括Web测试技术、本地化与国际化测试、兼容性测试和易用性测试。扩展篇主要介绍了当前流行的性能测试和自动化测试,通过实例讲述了性能测试和自动化测试的全过程。

    本书内容由浅入深、由理论到实践。希望能帮助初学者迅速了解软件测试的全过程及相关技术,同时也可以帮助中高级工程师进一步提高软件测试技能。

    脱离测试设计的用例编写,是无源之水

    没有度量及分析的缺陷管理,是舍本逐末

    超过10年的软件测试经验,干货遍地

    全面深入需求分析、测试策略、测试流程、缺陷管理、度量及分析

    企业真实软件测试流程,超级实用

    Bugs,不见不如相见

    从去年5月份开始对这本书升级,直到今年3月份才将本书升级完成,花费的时间实在是比较长。由于最近软件测试课程讲得太多,还有一些烦琐的事情需要课后处理,所以每天留给写书的时间比较少,导致书稿延期。

    这几年做的企业内训比较多,因此经常有机会与一些企业的软件测试工程师进行深入的交流。关于软件测试,不少测试工程师都存在以下较为典型的认识误区:

    (1)唯工具论。

    很多软件测试工程师重视各种测试工具的学习和使用,而不重视对软件测试方法、流程等方面的学习与研究。

    (2)总觉得黑盒测试很简单,没什么技术含量。

    做自动化和性能测试的工资明显比做手工测试的工资高,这是客观存在的现象,但并不能说做自动化或性能测试就可以不用来研究测试设计及测试流程。站在公司的层面,测试设计与测试流程是产品质量的保障,自动化测试也好,性能测试也好,只是一种测试手段,他们更多的是使用工具代替了手工测试,但并不能保证测试的全面性。而测试的全面性与科学性还是由测试设计、测试流程来决定的。

    黑盒测试很简单没有技术含量,这是很多做了多年测试的人常犯的错误。如果黑盒测试没有技术含量,为什么很多公司做的黑盒测试都不理想呢?通常来说,认为一件事或一门技术很简单有两个方面的原因:一是由于这个人确实很强,对他来说这个内容确实很简单;二是自己掌握的知识很浅,即我们通常说的“半桶水”,由于对知识体系了解得不全面而觉得简单。很多做了几年测试的工程师,可能始终没搞明白一个问题:产品究竟什么时候可以发布?笔者几年前做测试的时候也有过一样的困惑。

    由于白盒测试主要由开发人员完成,所以我们一般说的测试主要是指黑盒测试,严格说来性能测试和自动化测试也都属于黑盒测试的范畴。很多年前当笔者刚接触测试时,笔者也曾经迷茫过,也像很多朋友一样,认为黑盒测试没有技术含量,只有用例设计和测试执行,但真正走进测试领域后,发现事实远非如此简单:

    (1)为什么用例设计总是不全面?

    (2)为什么测试用例发现的问题总是很少,很多的问题不是按测试用例执行来发现的,而是一些其他方面的操作发现的?

    (3)为什么测试报告几乎没什么有用的数据,只是简单地描述用例执行情况,对缺陷几乎没有任何分析,也不知道为什么产品或系统就可以发布了?

    (4)为什么几乎从没认真分析过测试需求,甚至不清楚需求到底是怎么来的?

    而解决诸多类似的问题,正是笔者编写本书的目的。必须明确指出,黑盒测试的核心并非测试工具的掌握和使用;黑盒测试并不简单,需要有完整的理论指导及严格的方法训练。

    概括说来,测试的核心工作可归结为测试流程、测试设计及缺陷管理和分析。

    (1)测试流程:不能只对测试流程有一个了解,而是必须要对测试流程中每个步骤都很熟悉,并且知道每个步骤可能存在的问题,评估需要注意的事项,在流程优化方面有自己的见解最好。

    (2)测试设计:其实很多人不知道测试设计是什么意思,很多测试工程师只知道测试用例设计,但其实用例设计不能等同于测试设计,测试设计包含三个步骤:需求分析、测试分析、用例设计。

    (3)缺陷管理和分析:缺陷管理是大家目前都在做的,但缺陷分析很少有公司在做,这就导致在写测试报告时,测试报告的内容几乎没什么有价值的数据,都是一些无关紧要的内容。其实测试报告中应该对缺陷进行一定程度的分析和对缺陷进行度量,这样才能更好地分析产品或系统是否达到发布标准。

    我把本书定位为一本系统、详细、实用的学习软件测试用书,所以,本书的内容分为四大部分:理论篇、设计篇、技术篇和扩展篇。

    理论篇主要内容有:软件测试的发展、缺陷的引入、修改缺陷的成本、测试成本以及测试工程师的职责,系统生命周期中的测试策略、测试模型,软件测试组织的发展。

    设计篇包括七个章节的内容。首先讲了测试的整个流程,然后是软件质量模型、测试设计和用例设计方法。测试设计和测试用例设计是测试过程中的核心内容,直接影响着软件测试的质量,所以一般说来,我们的用例设计需要建立在测试设计分析的基础上。但在实际的测试过程中,很多人经常忽略测试分析而直接进行用例设计。所以测试设计和测试用例设计也是本篇的核心内容。测试用例不仅需要设计,还需要进行有效的管理和维护,以便我们通过分析缺陷来改善测试流程。所以,本部分还详细讲解了如何对缺陷进行有效的管理和分析。

    技术篇的内容更加丰富多彩,包括了Web测试、本地化与国际化测试、兼容性测试和易用性测试,当然,还有Web测试中不可或缺的Web 安全性测试。

    扩展篇内容包含:功能测试及其他测试技术,主要介绍了性能测试和自动化测试,并且通案例详细介绍性能测试和自动化测试的过程;接着介绍了验收测试和文档测试;最后介绍如何制定自己的职业规划。

    经过近一年的努力,书稿终于完成。在这里我感谢所有曾经帮助、支持和鼓励过我的朋友。由于笔者水平有限,很多内容是自己的经验总结,出现错误在所难免,欢迎广大读者批评指正。读者在阅读本书的过程中如有任何不清楚的问题和批评建议,可以发邮件到arivnhuang@163.com,作者将尽力给您答疑解惑。

    Bugs,不见不如相见,相见不要再见!

    前言
    第一部分 理论篇

    第1章 软件测试概述 2
    1.1 软件测试发展历史 2
    1.2 历史教训 5
    1.2.1 1962年,“水手1号”火箭爆炸 5
    1.2.2 1978年,哈特福德体育场倒塌 5
    1.2.3 “5•19”南方六省断网事件 6
    1.2.4 2003年,美加停电事故 6
    1.3 软件测试定义 7
    1.4 软件测试分类 8
    1.4.1 黑盒、白盒、灰盒测试的区别 9
    1.4.2 动态与静态测试的区别 10
    1.4.3 手工与自动化测试的区别 11
    1.5 软件测试阶段 11
    1.5.1 软件测试阶段划分 12
    1.5.2 回归测试 12
    1.6 小结 14
    第2章 系统生命周期中的测试策略 15
    2.1 测试级别 15
    2.1.1 组件测试 15
    2.1.2 集成测试 16
    2.1.3 系统测试 17
    2.1.4 验收测试 18
    2.2 测试在质量体系中的位置 18
    2.2.1 能力成熟度模型集成 18
    2.2.2 基于过程中的质量 20
    2.3 软件测试模型 23
    2.3.1 瀑布模型 23
    2.3.2 V模型 25
    2.3.3 W模型 26
    2.3.4 H模型 27
    2.3.5 X模型 28
    2.4 系统生命周期中的测试策略 30
    2.4.1 开发阶段的测试策略 31
    2.4.2 产品阶段的测试策略 31
    2.5 小结 33
    第3章 软件测试组织 34
    3.1 测试部在企业的位置 34
    3.2 项目团队模型 35
    3.3 测试组织的演变 37
    3.4 测试工程师晋升通道 38
    3.5 测试工程师职业发展 39
    3.6 小结 40

    第二部分 设计篇

    第4章 软件测试过程 42
    4.1 测试过程模型 42
    4.2 计划与控制 43
    4.2.1 关键过程域 43
    4.2.2 阶段度量指标 58
    4.2.3 能力评价 59
    4.3 分析与设计 59
    4.3.1 关键过程域 60
    4.3.2 阶段度量指标 63
    4.3.3 能力评价 64
    4.4 实现与执行 64
    4.4.1 关键过程域 64
    4.4.2 阶段度量指标 66
    4.4.3 能力评价 66
    4.5 评估与报告 66
    4.5.1 关键过程域 66
    4.5.2 阶段度量指标 70
    4.5.3 能力评价 70
    4.6 结束活动 70
    4.6.1 关键过程域 70
    4.6.2 阶段度量目标 71
    4.6.3 能力评价 71
    4.7 小结 71
    第5章 软件质量模型 72
    5.1 软件质量框架 72
    5.1.1 质量途径 72
    5.1.2 产品质量和生存周期 73
    5.2 外部和内部质量模型 74
    5.2.1 功能性(Functionality) 75
    5.2.2 可靠性(Reliability) 76
    5.2.3 易用性(Usability) 78
    5.2.4 效率(Efficiency) 79
    5.2.5 可维护性(Maintainability) 80
    5.2.6 可移植性(Portability) 81
    5.3 使用质量的质量模型 83
    5.4 小结 84
    第6章 测试需求分析过程 85
    6.1 测试需求分析相关概念 85
    6.2 需求的特性 88
    6.3 原始需求收集及整理 90
    6.4 需求继承性分析 92
    6.5 确定测试原始需求 100
    6.6 测试需求分析 101
    6.6.1 测试规格分析准备 101
    6.6.2 测试类型分析 103
    6.6.3 功能交互分析 104
    6.7 生成最终产品规格 104
    6.8 需求跟踪矩阵 105
    6.9 小结 109
    第7章 测试设计 110
    7.1 MFQ测试设计模型概述 110
    7.2 建模 111
    7.2.1 建模的维度 111
    7.2.2 PRDCS建模方法 114
    7.3 设计用例覆盖模型 118
    7.3.1 M(Mode) 118
    7.3.2 F(Function) 119
    7.3.3 Q(Quality) 119
    7.4 确定测试数据 120
    7.4.1 M(Mode) 120
    7.4.2 F(Function) 120
    7.4.3 Q(Quality) 120
    7.5 非正式测试 121
    7.6 小结 121
    第8章 测试用例设计及管理 122
    8.1 测试用例概述 122
    8.1.1 写测试用例的优势 122
    8.1.2 测试用例项 123
    8.2 黑盒测试用例设计方法 126
    8.2.1 等价类测试用例设计方法 126
    8.2.2 边界值测试用例设计方法 132
    8.2.3 场景法测试用例设计方法 134
    8.2.4 因果图测试用例设计方法 141
    8.2.5 判定表测试用例设计方法 144
    8.2.6 正交试验测试用例设计方法 148
    8.2.7 状态迁移图测试用例设计方法 152
    8.2.8 输入域测试用例设计方法 155
    8.2.9 输出域测试用例设计方法 155
    8.2.10 异常分析测试用例设计方法 155
    8.2.11 错误猜测测试用例设计方法 155
    8.3 测试用例评审 156
    8.4 测试用例变更 158
    8.5 小结 159
    第9章 缺陷管理与分析 160
    9.1 缺陷报告的发展 160
    9.1.1 Bug的由来 161
    9.1.2 一份简单的缺陷报告 161
    9.1.3 一份好的缺陷报告 161
    9.2 相关术语 163
    9.3 缺陷管理 163
    9.3.1 缺陷的严重等级 163
    9.3.2 缺陷的管理流程 164
    9.3.3 缺陷的生命周期 166
    9.3.4 缺陷的状态转变 167
    9.4 缺陷特性 169
    9.4.1 缺陷雪崩效应 169
    9.4.2 缺陷成本放大效应 170
    9.4.3 缺陷集群效应 170
    9.4.4 缺陷的收敛性 170
    9.5 缺陷修复成本 171
    9.5.1 缺陷修复成本与研发阶段的关系 172
    9.5.2 缺陷修复成本 173
    9.6 缺陷分析方法 174
    9.6.1 根本原因缺陷分析法 174
    9.6.2 四象限缺陷分析法 177
    9.6.3 ODC缺陷分析法 180
    9.6.4 Rayleigh缺陷分析法 184
    9.6.5 Gompertz缺陷分析法 187
    9.7 缺陷遏制能力 189
    9.7.1 缺陷引入与移除矩阵 189
    9.7.2 缺陷预防的特性 190
    9.7.3 缺陷预防的过程 191
    9.8 缺陷监控 197
    9.8.1 缺陷收敛趋势 197
    9.8.2 缺陷分布 197
    9.8.3 无效缺陷 198
    9.8.4 缺陷修复 199
    9.9 缺陷度量 199
    9.9.1 缺陷密度度量 199
    9.9.2 客户角度 201
    9.9.3 功能点 202
    9.10 常用的缺陷管理系统 203
    9.10.1 开源缺陷管理系统 204
    9.10.2 商业化缺陷管理系统 206
    9.11 小结 206
    第10章 单元测试 208
    10.1 单元测试介绍 208
    10.1.1 单元测试定义 208
    10.1.2 单元测试的重点 209
    10.1.3 单元测试环境 212
    10.1.4 单元测试策略 215
    10.2 静态测试技术 217
    10.2.1 代码走查 217
    10.2.2 控制流分析 218
    10.2.3 数据流分析 219
    10.2.4 信息流分析 220
    10.3 动态测试技术 222
    10.3.1 语句覆盖 222
    10.3.2 判定覆盖 223
    10.3.3 条件覆盖 224
    10.3.4 判定/条件覆盖 224
    10.3.5 路径覆盖 225
    10.3.6 基本路径覆盖 226
    10.4 CppUnit自动化单元测试框架 231
    10.5 小结 238

    第三部分 技术篇

    第11章 系统测试 240
    11.1 系统测试概述 241
    11.2 功能测试 241
    11.3 易用性测试 243
    11.4 可安装性测试 244
    11.4.1 安装过程测试 244
    11.4.2 不同环境下的安装 244
    11.4.3 系统升级测试 245
    11.4.4 安装的文件存放 245
    11.4.5 卸载测试 246
    11.5 异常测试 246
    11.6 压力测试 248
    11.7 GUI测试 249
    11.8 兼容性测试 252
    11.9 性能测试 252
    11.10 安全性测试 252
    11.11 配置测试 254
    11.12 可靠性测试 254
    11.13 健壮性测试 254
    11.14 系统测试过程 255
    11.15 小结 258
    第12章 Web系统测试 259
    12.1 功能测试 259
    12.1.1 链接测试 259
    12.1.2 表单测试 262
    12.1.3 Cookies测试 263
    12.1.4 设计语言测试 265
    12.1.5 数据库测试 266
    12.1.6 文件上传测试 267
    12.2 性能测试 267
    12.2.1 链接速度测试 267
    12.2.2 负载测试 267
    12.2.3 压力测试 268
    12.3 GUI测试 268
    12.3.1 格式验证 268
    12.3.2 导航条测试 268
    12.3.3 页面排版测试 269
    12.3.4 拼写和语法测试 270
    12.3.5 标签属性测试 271
    12.3.6 页面源文件测试 271
    12.3.7 Tab键测试 272
    12.4 兼容性测试 272
    12.5 安全性测试 272
    12.5.1 Web漏洞扫描 273
    12.5.2 服务器端信息测试 273
    12.5.3 文件和目录测试 281
    12.5.4 认证测试 286
    12.5.5 会话管理测试 290
    12.5.6 权限管理测试 292
    12.5.7 文件上传下载测试 296
    12.5.8 消息泄漏测试 298
    12.5.9 输入数据测试 300
    12.5.10 跨站脚本攻击测试 301
    12.5.11 Web Service测试 303
    12.6 小结 307
    第13章 本地化与国际化测试 308
    13.1 本地化与国际化测试概述 308
    13.2 国际化测试 310
    13.2.1 国际化测试常用术语 310
    13.2.2 软件国际化要求 311
    13.2.3 软件国际化测试方法 314
    13.3 本地化测试 315
    13.3.1 同步本地化工程模型 315
    13.3.2 多语言测试 316
    13.3.3 区域文化 317
    13.3.4 数据格式 318
    13.3.5 热键 320
    13.4 小结 321
    第14章 兼容性测试 322
    14.1 兼容性测试概述 322
    14.1.1 向上兼容 323
    14.1.2 向下兼容 323
    14.1.3 交叉兼容 323
    14.2 硬件兼容 324
    14.3 软件兼容 324
    14.3.1 浏览器兼容 324
    14.3.2 分辨率兼容 325
    14.3.3 打印机兼容 325
    14.4 数据库兼容 326
    14.5 操作系统兼容 326
    14.6 数据共享兼容 327
    14.7 小结 327
    第15章 易用性测试 328
    15.1 易用性测试概述 328
    15.1.1 易用性的定义 328
    15.1.2 UI的七大特征 330
    15.2 安装易用性测试 334
    15.3 GUI易用性测试 338
    15.3.1 GUI的组成部分 338
    15.3.2 GUI测试内容 340
    15.4 UI易用性测试 349
    15.5 易用性测试的自动化实现 349
    15.6 小结 352

    第四部分 扩展篇

    第16章 性能测试 354
    16.1 性能测试概述 354
    16.1.1 性能测试的概念 354
    16.1.2 性能测试自动化 355
    16.2 主流性能测试工具 356
    16.3 性能测试常见术语 358
    16.3.1 响应时间 358
    16.3.2 并发用户数 358
    16.3.3 吞吐量 359
    16.3.4 吞吐率 360
    16.3.5 点击率 360
    16.3.6 资源使用率 361
    16.3.7 性能计数器 361
    16.3.8 思考时间 361
    16.4 性能测试过程 362
    16.5 性能测试实例 365
    16.5.1 系统介绍 365
    16.5.2 设计 365
    16.5.3 构建 368
    16.5.4 执行 375
    16.5.5 分析、诊断和调节 375
    16.5.6 测试结论 378
    16.6 小结 378
    第17章 自动化测试 379
    17.1 自动化测试的概念 379
    17.1.1 自动化测试目的和范围 380
    17.1.2 自动化测试需要达到的程度 380
    17.1.3 适合自动化测试的对象 381
    17.2 自动化测试优点 382
    17.3 自动化测试缺点 382
    17.4 自动化测试普遍存在的问题 383
    17.5 主流自动化测试工具 384
    17.6 自动化测试框架 385
    17.6.1 自动化测试框架的发展 385
    17.6.2 自动化测试框架的开发 387
    17.7 自动化测试过程 388
    17.8 自动化测试实例 389
    17.8.1 系统介绍 390
    17.8.2 测试方案及计划 390
    17.8.3 测试用例 392
    17.8.4 脚本开发 394
    17.8.5 执行测试 406
    17.8.6 提交测试报告 406
    17.9 小结 406
    第18章 验收测试 407
    18.1 验收测试的内容 407
    18.1.1 制定验收测试的标准 407
    18.1.2 复审配置项 408
    18.1.3 执行验收测试 409
    18.2 验收测试的策略 409
    18.2.1 正式验收测试 409
    18.2.2 非正式验收测试 410
    18.2.3 Beta测试 410
    18.3 验收测试的过程 411
    18.4 实施验收测试 412
    18.5 提交验收测试报告 413
    18.6 小结 414
    第19章 文档测试 415
    19.1 文档的类型 415
    19.2 文档测试的现状 418
    19.3 文档测试的要点 418
    19.4 文档测试的策略 420
    19.5 小结 420
    第20章 软件测试工程师的职业规划 421
    20.1 如何进入软件测试行业 421
    20.2 软件测试工程师的职责 422
    20.3 软件测试工程师的心态 423
    20.4 当前你的工作情况 424
    20.5 未来你如何选择 425
    20.5.1 性能测试 425
    20.5.2 自动化测试 425
    20.5.3 单元测试 426
    20.5.4 云测试 426
    20.6 如何提高自身技能 427
    20.6.1 给自己制定一个目标 427
    20.6.2 正规培训 428
    20.6.3 自学 428
    20.7 小结 429
    参考文献 430

最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册