《颠覆完美软件:软件测试必须知道的几件事》是从事软件行业五十余年的Gerald M. Weinberg 针对软件测试所写的新作。他在软件项目的管理、设计、开发和测试方面都具有极其丰富的经验,尤其对软件开发人员的心理有深入的研究。在《颠覆完美软件:软件测试必须知道的几件事》中,他重点讨论了与软件测试有关的各种心理问题及其表现与应对方法。作者首先阐述软件测试之所以如此困难的原因——人的思维不是完美的,而软件测试的最终目的就是发现对改善软件产品和软件开发过程有益的信息,故软件测试是一个信息获取的过程。接着,作者利用丰富的经历和大量的实例,展现了在软件测试中可能出现的各种与人的心理有关的现象、误区、欺诈,以及容易犯下的常见错误等。《颠覆完美软件:软件测试必须知道的几件事》的重点不是告诉大家要做什么或者如何做,而更多的是让读者明白在与软件测试相关的活动中会出现某些特定现象的原因。理解这些与人的心理有关的现象有助于与软件开发有关的所有人之间更好地就软件测试的目的和实现过程进行沟通,从而实现具有更高品质的软件。
1 进行测试的原因 1
1.1 人类不是完美的思考者 .......................................................................... 2
1.2 我们要做出有关软件的决定 .................................................................. 2
1.2.1 日记条目1 .................................................................................... 2
1.2.2 日记条目2 .................................................................................... 3
1.2.3 日记条目3 .................................................................................... 3
1.2.4 日记条目4 .................................................................................... 3
1.2.5 日记条目5 .................................................................................... 4
1.2.6 日记条目6 .................................................................................... 4
1.3 决定可能是有风险的 .............................................................................. 5
1.4 测试可以提供降低风险的信息 .............................................................. 6
1.5 小结 .......................................................................................................... 8
1.6 常见错误 .................................................................................................. 8
2 测试无法做的事 10
2.1 信息未必有助于降低风险 .................................................................... 11
2.2 也许我们不会使用那些花钱得到的信息 ............................................. 12
2.3 决定是感性的而不是理性的 ................................................................ 13
2.4 不良的测试也许比不测试更糟 ............................................................ 14
2.5 产品可能尚未准备好接受测试 ............................................................ 14
2.6 小结 ........................................................................................................ 15
2.7 常见错误 ................................................................................................ 15
3 不对所有可能性进行测试的原因 18
3.1 可能进行测试的数目是无限的 ............................................................ 19
3.2 测试最多只是采样 ................................................................................ 20
3.3 信息的成本可能超过无知的成本 ........................................................ 21
3.4 也许我们可以用较少的测试获取更多的信息 ..................................... 22
3.5 测试自助餐 ............................................................................................ 22
3.6 小结 ........................................................................................................ 23
3.7 常见错误 ................................................................................................ 23
4 测试和除错的区别 25
4.1 测试会随着机构的成长发生变化 ........................................................ 28
4.2 以时间限制试探法作为管理法则,但根据需要进行调整 .................... 30
4.3 小结 ........................................................................................................ 31
4.4 常见缺陷 ................................................................................................ 31
5 元测试 33
5.1 我们有说明书,但是找不到了 ............................................................ 34
5.2 我们的错误太多了,导致缺陷数据库无法高效运转 .......................... 35
5.3 我们没找到任何缺陷,实际上我们并没有真正地找 ......................... 35
5.4 我们修改记录让缺陷看起来没那么严重 ............................................. 36
5.5 这不是我的组件中的问题,所以我不记录 ......................................... 36
5.6 我不知道在测试错误的应用程序 ........................................................ 37
5.7 我们不测试最差的组件,因为花的时间太长 ..................................... 37
5.8 我们已经发现了这么多缺陷,不会再多了 ......................................... 38
5.9 我们的测试证明程序是正确的 ............................................................ 38
5.10 我们运行了很多测试用例,根本就看不过来 ................................... 38
5.11 如果我们的软件在有三名用户时工作良好,显然它在有一百名用户时也不会有问题 .......................................... 39
5.12 我们不希望测试人员知道我们将忽略他们提供的信息 ...................... 39
5.13 我没有报告缺陷,所以开发人员不会对我发脾气 ........................... 40
5.14 我们不需要测试它,因为开发人员非常有水平 ............................... 40
5.15 接着说元信息 ...................................................................................... 41
5.16 小结 ...................................................................................................... 41
5.17 常见错误 .............................................................................................. 41
6 信息免疫 44
6.1 我们在生存规则受到威胁时会感到害怕 ............................................. 45
6.2 我们压抑无法接受的事物 .................................................................... 46
6.3 我们让不可接受的事物合理化 ............................................................ 47
6.4 我们将自己的负面品质投射给其他人................................................. 48
6.5 我们转移指责从而免除自己的责任 .................................................... 49
6.6 我们对自己的不足进行过度补偿 ........................................................ 51
6.7 我们在觉得失去控制时开始强迫自己................................................. 51
6.8 小结 ........................................................................................................ 52
6.9 常见错误 ................................................................................................ 52
7 如何应对防卫反应 54
7.1 确定恐惧 ................................................................................................ 55
7.2 使用危机思维 ........................................................................................ 55
7.3 实践,实践,再实践 ............................................................................ 56
7.4 对自己进行测试 .................................................................................... 57
7.5 小结 ........................................................................................................ 58
7.6 常见错误 ................................................................................................ 58
8 良好测试的要素 59
8.1 永远无法确切地知道 ............................................................................ 59
8.2 只能根据事实来评估良好性 ................................................................ 61
8.3 你可能希望故意插入一些缺陷 ............................................................ 62
8.4 对良好性的估算总是统计性的 ............................................................ 62
8.5 可以对非差性进行估算 ........................................................................ 63
8.6 小结 ........................................................................................................ 64
8.7 常见错误 ................................................................................................ 64
9 有关测试的主要误区 66
9.1 指责误区 ................................................................................................ 66
9.2 穷举测试误区 ........................................................................................ 67
9.3 “测试产生质量”误区 .......................................................................... 68
9.4 分解误区 ................................................................................................ 69
9.5 合成误区 ................................................................................................ 70
9.6 “所有测试都相同”误区 ...................................................................... 71
9.7 “随便哪个笨蛋都可以测试”误区 ...................................................... 72
9.8 小结 ........................................................................................................ 73
9.9 常见错误 ................................................................................................ 73
10 测试不仅仅是敲键盘 75
10.1 毫无目的地敲击键盘是不是测试 ...................................................... 76
10.2 白手套测试 .......................................................................................... 77
10.3 狗食测试 .............................................................................................. 78
10.4 对测试人员也要进行测试 .................................................................. 80
10.5 可能在没有意识到的情况下进行测试 ............................................... 80
10.6 演示不是测试 ...................................................................................... 81
10.7 小结 ...................................................................................................... 82
10.8 常见错误 .............................................................................................. 82
11 信息摄取 84
11.1 使用萨提亚交互模型来解析沟通 ....................................................... 84
11.1.1 摄取(Intake) .......................................................................... 85
11.1.2 确定含义(Meaning) ............................................................. 85
11.1.3 确定重要性(Significance) .................................................... 86
11.1.4 做出反应(Response) ............................................................ 86
11.2 人们听取信息时是有选择性的 ........................................................... 87
11.3 数据来源会影响到摄取 ....................................................................... 87
11.4 时机也会导致差异 .............................................................................. 88
11.5 人们会出现信息过载........................................................................... 88
11.6 减少测试的数量也许可以传递更多的信息 ....................................... 89
11.7 寻找测试之外的信息摄取 ................................................................... 90
11.8 不要混淆理解和摄取........................................................................... 90
11.9 使用数据质疑来过滤理解 ................................................................... 91
11.10 小结 .................................................................................................... 91
11.11 常见错误 ............................................................................................. 91
12 确定含义 93
12.1 案例1:四个缺陷,五种含义 ........................................................... 94
12.2 案例2:四个缺陷,七种含义 ........................................................... 95
12.3 案例3:四个缺陷,自行确定含义 ................................................... 96
12.4 进行解释之前先弄清期望的是什么 .................................................. 96
12.5 不知道期望时的做法 .......................................................................... 98
12.6 使用已经获得的信息 .......................................................................... 98
12.7 使用间接信息 ...................................................................................... 99
12.8 使用未获得的信息 .............................................................................. 99
12.9 同样的话可能具有不同的含义 ........................................................ 100
12.10 “相同”可能并不一样 .................................................................... 101
12.11 某些时候不精确会更好 ................................................................... 101
12.12 小结 .................................................................................................. 102
12.13 常见错误 .......................................................................................... 102
13 确定重要性 104
13.1 不同人会给同样的信息赋予不同的重要性 ..................................... 105
13.2 公共的重要性也许和个人的不一样 ................................................ 106
13.3 重要性依赖于上下文环境 ................................................................ 107
13.4 不能总是根据金钱来确定重要性 .................................................... 108
13.5 不要采用过细的尺度 ........................................................................ 110
13.6 首先解决重要问题 ............................................................................ 110
13.7 听从自己的情绪反应 ......................................................................... 111
13.8 小结 .................................................................................................... 112
13.9 常见错误 ............................................................................................ 113
14 做出反应 115
14.1 是运气不好还是管理不善 ................................................................ 115
14.2 项目最后会赶进度的原因 ................................................................ 116
14.3 接近项目结束时应如何反应 ............................................................ 117
14.4 对测试所需时间的估算与现实差距很大的原因 ............................. 118
14.4.1 好天气估算 ............................................................................. 119
14.4.2 不切实际的过程模型 ............................................................. 119
14.4.3 低质的过程数据 ..................................................................... 119
14.4.4 没有过程数据 ......................................................................... 121
14.5 确定是否已经错过了可以有所改变的时刻 ..................................... 122
14.6 小结 .................................................................................................... 122
14.7 常见错误 ............................................................................................ 122
15 避免软件测试变得更困难 124
15.1 情况变得更糟的原因 ........................................................................ 124
15.2 让系统尽可能小 ................................................................................ 126
15.3 让“系统”模型是可扩展的 ............................................................ 126
15.4 增量构建有清晰接口的分立组件 .................................................... 127
15.5 减少进入产品的缺陷数目 ................................................................ 127
15.6 小结 .................................................................................................... 128
15.7 常见错误 ............................................................................................ 128
16 不使用机器进行测试 130
16.1 用机器进行测试总是不够的 ............................................................ 130
16.2 首先对最差的部分进行评审可以让人了解缺陷的严重性 ............. 135
16.3 事实并不总是能令人信服的 ............................................................ 136
16.4 测试人员是颇有价值的评审者 ........................................................ 136
16.5 小结 .................................................................................................... 137
16.6 常见错误 ............................................................................................ 137
17 测试欺诈 138
17.1 我们会卖给你一个神奇的工具 ........................................................ 138
17.2 我们的演示是欺诈 ............................................................................ 139
17.3 这么多的证明信表明它一定很好 .................................................... 141
17.4 我们可以通过定价来欺诈 ................................................................ 141
17.5 我们的工具会读心术 ........................................................................ 142
17.6 我们保证你不用做任何事 ................................................................ 144
17.7 我们一起密谋 .................................................................................... 144
17.8 避免欺诈的方法 ................................................................................ 145
17.9 小结 .................................................................................................... 145
17.10 常见错误 .......................................................................................... 145
18 忘却型欺诈 146
18.1 推迟文档化造成的后果 .................................................................... 146
18.2 不明确的测试报告就像流沙一样 .................................................... 147
18.3 伪造的测试报告阻止了改进 ............................................................ 147
18.4 在别的地方进行报复 ........................................................................ 148
18.5 早期的答案可能产生误导 ................................................................ 149
18.6 “量”不是“质”的同义词 .............................................................. 149
18.7 不要将非测试活动当作测试 ............................................................ 150
18.8 太整洁了,不可能是真的 ................................................................ 151
18.9 电子表格中的垃圾还是垃圾 ............................................................ 152
18.10 小结 .................................................................................................. 152
18.11 常见错误 .......................................................................................... 152
尾声 153
尾注 154
其他阅读材料 157
《玩“赚”短视频:抢占流量新阵地》内容简介:本书将从概念解读、发展趋势分析、思维方式、顶层设计、运营策略、运营维护、发展前
《最新《事业单位会计准则》解读与操作示范》内容简介:《最新事业单位会计准则:解读与操作示范》围绕财政部最新修订的《事业单位
模型制作基础手册 内容简介 本书可以作为建筑、景观建筑、室内设计以及其他相关专业的学生所使用的初级读物。其他一些人,例如,戏剧学学生、历史学家和考古学家等,也会...
全国专业技术人员计算机应用能力考试考前冲刺POWERPOINT2003中文演示文稿 本书特色 紧扣考纲,瞄准考点:充分解读考纲,考点归纳精讲,明确重点难点试题详...
掌握需求过程-(第2版) 本书特色 本书论述了软件开发中的重要课题—如何得到正确需求,书中用一个接一个的步骤、一个接一个的模板、一个接一个的例子,向读者展示了经...
《漫画小白速成指南(超萌Q版)》内容简介:这是一本专门讲解Q版角色漫画素描技法的书,书中的人物造型都很可爱。作者运用纯线条的
《简洁的力量》内容简介:我们是否思考过这样一个问题:创新是要让我们的世界变得更加科技化还是人性化?如果说是为了科技化,那我
《呵护女性生殖健康》内容简介:妇科、产科误区和疾病无声无息地困扰着广大女性朋友,严重伤害了女性健康,甚至损害了女性的生殖能
《神经网络设计与实现》内容简介:本书是一本神经网络实践进阶指南,适合对AI和深度学习感兴趣并且想进一步提高技能的读者阅读。本
Ajax是当今Web开发领域最流行的词汇。而JavaScript与CSS、XML和DOM几种老技术,加上XMLHttpRequest就构成了Ajax的四大基石。...
《礼义之邦》内容简介:礼仪是礼的形式,礼义则是礼的本质。所有礼仪活动或者礼仪程序的背后,都蕴含有特定的道德认同、价值导向、
《价值投资者的财报分析》内容简介:本书以通俗易懂、图文并茂的方式,以海天味业为案例,系统地介绍了有效开展价值投资的财报分析
《高等教育评论(2017年第1期 第5卷)》内容简介:本书致力于学术前沿研究,为国内外教育界同仁创造一个宽松活跃的学术空间,为推动
《深度学习实践:计算机视觉》内容简介:本书主要介绍了深度学习在计算机视觉方面的应用及工程实践,以Python 3为开发语言,并结合
《从零开始学指数基金投资》内容简介:2021年,金融已经渗透到经济发展的各个环节,随着全民投资趋势的发展,指数基金和指数ETF一定
空间信息系统的集成与实现 本书特色 李德仁院士为课题主持人,由数十名教授、副教授、博士生和硕士生组成课题组,对空间信息系统的集成与实现进行了深入的理论探讨和一系...
《Ruby元编程(第2版)》在大量剖析实例代码的基础上循序渐进地介绍Ruby特有的实用编程技巧。通过分析案例、讲解例题、回顾Ruby类
地理信息系统软件工程的原理与方法 内容简介 本书系统地阐述了地理信息系统软件工程这一领域内的基本概念、原理与方法。主要内容有:GIS软件工程概述、可行性分析、系...
正在发生的未来——手机人的族群与趋势基于独家真实数据盘点2011年中国手机业发展状况,基于独到研究方法解析手机人族群,基于独
从文化史料建设或者远距离窥视伟人私生活尤其是婚恋生活的角度,莎乐美与弗洛伊德等人的通信无疑具有非常重要的意义,同时也给本