《颠覆完美软件:软件测试必须知道的几件事》是从事软件行业五十余年的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
《玄学与魏晋士人心态》内容简介:作者立足于大量史料的搜集和辨析,探讨魏晋时期士人普遍心态的发展变化,及其所蕴含的社会历史背
《破解牛股密码(第2版)》内容简介:本书通过对市场中个股的描述,总结出牛股上涨的内在因素和外在图形特征,通过对牛股内外在特征
《中国领先企业管理思想研究(珍藏版)》内容简介:在改革开放30年多的企业经营实践中,中国涌现了一批知名企业,许多企业保持了长
《审计学(第三版)》内容简介:《审计学(第三版)》教材以最新执行的审计准则为根本,以审计实务为主,突出理论与实务相结合,重
◎内容简介:《计算机:一部历史》,给大众读者写的计算机科普读物,零门槛入门计算机科学。讲述计算机背后鲜为人知的故事,普及
本书介绍日本著名企业(品牌)从产品策划、构思、创意、设计(草图、电脑模型、样机、模型)到产品的全过程,包括对人体工程学、
CSS是层叠样式表的简称,通过它可控制网页样式并允许将样式信息与网页内容分离。《CSS终极参考手册》是CSS的最佳参考书籍,共18章
每一个渴望学习C++语言的初学者都希望能够有一本全面的,实用的,同时又是生动有趣的入门书。这本入门书可以告诉这些初学者,整个
Thebookbringstogetherresearchthatinvestigateshowpeopleexperienceproducts:durable...
《最美中国故事(和谐篇)》内容简介:本书是“社会主义核心价值观系列连环画”中的小学十二种图书之一。小学十二种图书,每种围绕
后人类文化是指以克隆为代表的生物技术和以网络、模块为代表的相关高科技技术联手缔造的、在人类社会非常有可能出现的文化景观。
《物联网安装调试与运维(初级)》内容简介:本书是1+X职业技能等级证书——物联网安装调试与运维(初级)的配套图书。本书在编写思
MATLAB数值计算-(2013修订版.中译本) 本书特色 本书《matlab数值计算(2013修订版)》经matlab、数值分析和科学计算之父clevemol...
《重读哈耶克》内容简介:弗里德里希·奥古斯都·冯·哈耶克是一位曾影响了20世纪全人类经济社会发展进程、现代经济学理论和各国经
数据科学是将数据转化为行动的艺术,是综合了统计学、计算机科学和领域知识的新兴学科。数据科学与很多传统学科的最大区别在于其
《设计人生:罗启妍自传》内容简介:本书是出身香港、名扬世界的珠宝设计师、跨文化学者罗启妍的自传。罗启妍出生于富裕之家,家道
有人说Google让我们变得更笨,有人说Facebook出卖了我们的隐私,有人说Twitter将我们的注意力碎片化。在你担忧这些社会化媒体让我
《汉英科技翻译》是以原汁原味的英语原文作为译文这样的创新思维构思的,采用了从汉语语法和英语语法的结合上阐述翻译方法这样的
《从零开始学Flutter开发》内容简介:本书针对目前高速发展的Flutter跨平台移动开发技术方案,从零开始深入讲解其中涉及的技术点,
遥感数据质量改善之信息重建 本书特色 基于航空航天遥感技术,人们可以感知地球陆表信息,从而认识和理解各种现象和规律。其中,传感器观测影像是遥感信息的载体,其数据...