完美软件--对软件测试的各种幻想(经典重读,与温伯格大师的思想共舞)
基本信息
- 作者: (美)Gerald M. Weinberg(杰拉尔德 M.温伯格)
- 译者: 宋锐
- 出版社:电子工业出版社
- ISBN:9787121099311
- 上架时间:2009-1-6
- 出版日期:2009 年12月
- 开本:16开
- 页码:344
- 版次:1-1
- 所属分类:
计算机 > 软件工程及软件方法学 > 综合
编辑推荐
“程序设计心理学”一书作者Weinberg的另一力作...
推荐阅读
内容简介回到顶部↑
本书是从事软件行业五十余年的Gernald M. Weinberg针对软件测试所写的新作。他在软件项目的管理、设计、开发和测试方面都具有极其丰富的经验,对于与软件开发有关人员的心理尤其有深入的研究。在本书中,他重点讨论了与软件测试有关的各种心理问题及其表现与应对方法。作者首先阐述软件测试之所以如此困难的原因——人的思维不是完美的,而软件测试的最终目的就是发现对改善软件产品和软件开发过程有益的信息,故软件测试是一个信息获取的过程。接着,作者利用丰富的经历和大量的实例,展现了在软件测试中可能会出现的各种与人的心理有关的现象、误区、欺诈,以及容易犯下的常见错误等等。本书的重点不是告诉大家要做什么或者说如何做,而更多的是让读者明白在与软件测试相关的活动中会出现某些特定现象的原因。理解这些与人的心理有关的现象有助于与软件开发有关的所有人之间更好地就软件测试的目的和实现过程进行沟通,从而实现具有更高品质的软件。
作译者回到顶部↑
目录回到顶部↑
前 言. xxi
第1章 进行测试的原因 1
1.1 人类不是完美的思考者 3
1.2 我们要做出有关软件的决定 3
1.2.1 日记条目1 3
1.2.2 日记条目2 5
1.2.3 日记条目3 5
1.2.4 日记条目4 7
1.2.5 日记条目5 7
1.2.6 日记条目6 7
1.3 决定可能是有风险的 9
1.4 测试可以提供降低风险的信息 13
1.5 小结 17
1.6 常见错误 17
第2章 测试无法做的事 21
2.1 信息不一定有助于降低风险 23
2.2 也许我们不会使用那些花钱得到的信息 25
2.3 决定是感性的而不是理性的 27
2.4 不良的测试也许比不测试更糟 29
2.5 产品可能尚未准备好接受测试 31
第1章 进行测试的原因 1
1.1 人类不是完美的思考者 3
1.2 我们要做出有关软件的决定 3
1.2.1 日记条目1 3
1.2.2 日记条目2 5
1.2.3 日记条目3 5
1.2.4 日记条目4 7
1.2.5 日记条目5 7
1.2.6 日记条目6 7
1.3 决定可能是有风险的 9
1.4 测试可以提供降低风险的信息 13
1.5 小结 17
1.6 常见错误 17
第2章 测试无法做的事 21
2.1 信息不一定有助于降低风险 23
2.2 也许我们不会使用那些花钱得到的信息 25
2.3 决定是感性的而不是理性的 27
2.4 不良的测试也许比不测试更糟 29
2.5 产品可能尚未准备好接受测试 31
译者序回到顶部↑
软件测试的目的是什么?
我想大多数人对于这个问题的回答会是“保证交付高质量的软件”。也许从最终目的上来说是这样的,但是单纯只是软件测试本身是无法为软件的质量提供保证的。软件的质量是从需求分析甚至是刚刚产生软件相关概念的时候就开始产生,受到整个开发过程影响的一个性质,而测试只是用来将这一性质数值化、表面化的过程。是不是拥有良好的测试过程就能够保证交付高质量的软件呢?显然是不够的。要保证软件具有较高的品质,需要管理、开发、测试等多个部门的共同努力,尤其是管理部门如何看待测试,如何利用测试获得的信息是至关重要的。
当我们按照一个预定的过程对软件进行测试,却未能获得预期的结果时,往往会说:“这次测试失败了。”或者是“这个测试没有通过。”而实际上正确的说法应该是:“软件在这个测试中失败了。”或者是“软件没能通过这个测试。”
在许多人看来,这种说法上的差异也许是微不足道的,或者只是文字游戏。但是事实上,它反映了大家对于软件测试的心理误区。人们往往并不能很清楚地区分测试与除错、开发过程甚至是软件本身的关系。而这一误区正是导致对测试产生不切实际的期望,夸大或者忽视测试的作用的根源。
如果你从事测试已经有很长时间了,就很可能听到过这样一些问题:
“你为什么没有发现那个问题?”
“我们为什么要在可以自动化测试的情况下雇佣人来进行测试?”
“一定要让它在下周可用。”
而产生这些问题的原因,往往就在于人们对软件测试的误解。本书的主要目的,就是要破除这样的一些误解,还软件测试以本来面目。这本书的预期读者非常广泛,涉及与软件开发有关的所有人,包括但不限于软件开发人员、测试人员、客户、项目经理以及高层管理人员,等等。
本书的作者Gerald M. Weinberg在软件行业浸淫了五十余年,几乎开发过所有类型的软件,出版了四十余本技术书籍,发表过数百篇技术文章。他对软件项目的管理、设计、开发和测试具有极其丰富的经验,对于与软件开发有关人员的心理尤其有深入的研究。他的《The Psychology of Computer Programming》(中译本名为《程序开发心理学》)开创了“以人为本”的研究方法,它以其对程序员们的智力、技巧,团队和问题求解能力等方面独特的视角和敏锐的观察经受住了时间的考验,具有深远影响。
而在《完美软件——对软件测试的各种幻想》这本书中,Weinberg采用的是纯散文和故事化的风格,而没有使用花哨的指标和图表。他深入浅出地讲述了与软件测试有关的各种误解与错觉,可以为行政人员、经理或者开发人员提供有关测试的足够信息,以便他们理解测试所要面对的挑战,进而对测试设置恰当的期望并就这些期望进行清晰的交流。
本书回答的问题包括:
为什么在看起来测试只会耽搁时间的时候还要进行测试?
为什么无法一开始就构建正确的软件,从而不需要测试?
需要对所有可能性都进行测试吗?
为什么不对所有可能性都进行测试?
是什么原因导致测试如此困难?
为什么测试需要这么长的时间?
是否有可能构建完美的软件?
为什么我们不能接受一些缺陷?
我想大多数人对于这个问题的回答会是“保证交付高质量的软件”。也许从最终目的上来说是这样的,但是单纯只是软件测试本身是无法为软件的质量提供保证的。软件的质量是从需求分析甚至是刚刚产生软件相关概念的时候就开始产生,受到整个开发过程影响的一个性质,而测试只是用来将这一性质数值化、表面化的过程。是不是拥有良好的测试过程就能够保证交付高质量的软件呢?显然是不够的。要保证软件具有较高的品质,需要管理、开发、测试等多个部门的共同努力,尤其是管理部门如何看待测试,如何利用测试获得的信息是至关重要的。
当我们按照一个预定的过程对软件进行测试,却未能获得预期的结果时,往往会说:“这次测试失败了。”或者是“这个测试没有通过。”而实际上正确的说法应该是:“软件在这个测试中失败了。”或者是“软件没能通过这个测试。”
在许多人看来,这种说法上的差异也许是微不足道的,或者只是文字游戏。但是事实上,它反映了大家对于软件测试的心理误区。人们往往并不能很清楚地区分测试与除错、开发过程甚至是软件本身的关系。而这一误区正是导致对测试产生不切实际的期望,夸大或者忽视测试的作用的根源。
如果你从事测试已经有很长时间了,就很可能听到过这样一些问题:
“你为什么没有发现那个问题?”
“我们为什么要在可以自动化测试的情况下雇佣人来进行测试?”
“一定要让它在下周可用。”
而产生这些问题的原因,往往就在于人们对软件测试的误解。本书的主要目的,就是要破除这样的一些误解,还软件测试以本来面目。这本书的预期读者非常广泛,涉及与软件开发有关的所有人,包括但不限于软件开发人员、测试人员、客户、项目经理以及高层管理人员,等等。
本书的作者Gerald M. Weinberg在软件行业浸淫了五十余年,几乎开发过所有类型的软件,出版了四十余本技术书籍,发表过数百篇技术文章。他对软件项目的管理、设计、开发和测试具有极其丰富的经验,对于与软件开发有关人员的心理尤其有深入的研究。他的《The Psychology of Computer Programming》(中译本名为《程序开发心理学》)开创了“以人为本”的研究方法,它以其对程序员们的智力、技巧,团队和问题求解能力等方面独特的视角和敏锐的观察经受住了时间的考验,具有深远影响。
而在《完美软件——对软件测试的各种幻想》这本书中,Weinberg采用的是纯散文和故事化的风格,而没有使用花哨的指标和图表。他深入浅出地讲述了与软件测试有关的各种误解与错觉,可以为行政人员、经理或者开发人员提供有关测试的足够信息,以便他们理解测试所要面对的挑战,进而对测试设置恰当的期望并就这些期望进行清晰的交流。
本书回答的问题包括:
为什么在看起来测试只会耽搁时间的时候还要进行测试?
为什么无法一开始就构建正确的软件,从而不需要测试?
需要对所有可能性都进行测试吗?
为什么不对所有可能性都进行测试?
是什么原因导致测试如此困难?
为什么测试需要这么长的时间?
是否有可能构建完美的软件?
为什么我们不能接受一些缺陷?
前言回到顶部↑
五十多年以前,当我刚开始从事计算机行业的时候,计算机是极其稀少而珍贵的。当我发现自己坐在一间巨大的房间前的控制台面前时,还只是一个十几岁的少年。那个房间里塞满了硬件,大约拥有当时世界上整个计算能力的百分之十。我只要伸出手指按一下,就可以关掉这样的计算能力——有时候这确实就是我的工作。.
只要愿意排队,你就可以用大约两倍于我月薪的钱来租用这样的计算能力一个小时。今天,计算机已经非常便宜,实际上我已经在捐赠一些计算速度比那些早期型号快五万倍,内存也要大五万倍的计算机。捐赠的这些机器非常紧凑而轻便,我可以很轻松地把它放进公文包中。而它的计算能力却连当今世界计算能力的十亿分之一都不到。
显然,我目睹了计算机技术的长足发展,不过这一发展对我的影响是潜移默化的。我实际上并未注意到这些变化,直到几年前听到一则有关卡纳维拉尔角取消一次火箭发射的新闻报道。在播音员结束新闻报道时,其中一人说:“太空总署(NASA)说这是一个计算机软件错误。”
另一名播音员回应道:“像计算机这么简单而常见的东西也会出这样的错,难道不奇怪吗?”
第一个人回答道:“是很奇怪,难道你认为他们不会对软件进行测试?”
不错,我认为他们会对软件进行测试。事实上,我确信他们进行了测试。不过,播音员显然认为测试必然应该产生完美的、没有任何缺陷的产品。
我无法停止思考这段对话以及播音员不切实际的期望。一开始,我只是耸耸肩膀,对自己说:“这就是普通大众对软件测试的无知。”不过现在要忽视这一问题已经太晚了。我的警觉已经被提高了。我开始发现甚至我那些生产软件的客户公司的经理们也表现出了同样的无知。尤其是那些经理们,软件测试简直要让他们抓狂。
我是一个容易认同别人感情的人。当我周围的人痛苦时,我会同样感到痛苦。我理解软件经理们正在感受痛苦,他们的员工和客户同样如此。我还知道他们感到痛苦的原因,几乎所有人都并不完全是因为软件测试非常复杂或者耗时耗力,而更多的是由于他们对软件测试的不合理期望和那些靠不住的测试模型。
“最后,我决定还是按照我发现无知导致了问题时喜欢采用的应对方法来做:写下这个问题以及可能的解决方案。我写下的内容最终形成了本书。”..
在我多年以前写作《The Psychology of Computer Programming》一书时,我希望它能够帮助那些想了解编程的人[1]。有不少人告诉我它确实为他们提供了帮助,所以,在一定程度上也许是那本书的成功促使我着手写作这本书:为了帮助那些想了解测试的人。
这本书的预期读者非常广泛:我预想这本书会拿在专业测试人员、开发人员、客户、分析师、设计师、程序员,以及他们的所有经理和同事手中。
大部分专业测试人员都知道这本书中的大部分内容,但我还是希望他们可以通过阅读本书发现与他们的经理、开发人员、同事和客户交流他们知道的那些信息的新途径。
我希望能够帮助开发人员和测试人员了解他们的经理在遇到软件测试事宜时会面对哪些情况。
我希望能够帮助客户,也就是那些买软件的人,了解更多的信息。
最后,既然现在每个人都会受到软件的影响,并且受到未经良好测试的软件的伤害,我希望能够帮助所有人更为注意测试。
由于我希望能够获得广泛的受众,所以我选择尽可能使用平直的文字,避免那些高度技术化的术语和过于详细的分析。(对于那些有兴趣学习有关软件测试的更多技术细节的人,我在本书结尾的其他阅读材料部分指出了一些非常可靠的参考书籍。)为了集中精力帮助那些希望了解软件测试的人,我根据下面这些会让大多数人感到困惑的问题来组织本书:
为什么在看起来测试只会耽搁时间的时候我们还要进行测试?
为什么大家不能一开始就构建正确的软件,从而不需要测试?
我们需要对所有的可能都进行测试吗?
为什么不对所有的可能都进行测试?
只要愿意排队,你就可以用大约两倍于我月薪的钱来租用这样的计算能力一个小时。今天,计算机已经非常便宜,实际上我已经在捐赠一些计算速度比那些早期型号快五万倍,内存也要大五万倍的计算机。捐赠的这些机器非常紧凑而轻便,我可以很轻松地把它放进公文包中。而它的计算能力却连当今世界计算能力的十亿分之一都不到。
显然,我目睹了计算机技术的长足发展,不过这一发展对我的影响是潜移默化的。我实际上并未注意到这些变化,直到几年前听到一则有关卡纳维拉尔角取消一次火箭发射的新闻报道。在播音员结束新闻报道时,其中一人说:“太空总署(NASA)说这是一个计算机软件错误。”
另一名播音员回应道:“像计算机这么简单而常见的东西也会出这样的错,难道不奇怪吗?”
第一个人回答道:“是很奇怪,难道你认为他们不会对软件进行测试?”
不错,我认为他们会对软件进行测试。事实上,我确信他们进行了测试。不过,播音员显然认为测试必然应该产生完美的、没有任何缺陷的产品。
我无法停止思考这段对话以及播音员不切实际的期望。一开始,我只是耸耸肩膀,对自己说:“这就是普通大众对软件测试的无知。”不过现在要忽视这一问题已经太晚了。我的警觉已经被提高了。我开始发现甚至我那些生产软件的客户公司的经理们也表现出了同样的无知。尤其是那些经理们,软件测试简直要让他们抓狂。
我是一个容易认同别人感情的人。当我周围的人痛苦时,我会同样感到痛苦。我理解软件经理们正在感受痛苦,他们的员工和客户同样如此。我还知道他们感到痛苦的原因,几乎所有人都并不完全是因为软件测试非常复杂或者耗时耗力,而更多的是由于他们对软件测试的不合理期望和那些靠不住的测试模型。
“最后,我决定还是按照我发现无知导致了问题时喜欢采用的应对方法来做:写下这个问题以及可能的解决方案。我写下的内容最终形成了本书。”..
在我多年以前写作《The Psychology of Computer Programming》一书时,我希望它能够帮助那些想了解编程的人[1]。有不少人告诉我它确实为他们提供了帮助,所以,在一定程度上也许是那本书的成功促使我着手写作这本书:为了帮助那些想了解测试的人。
这本书的预期读者非常广泛:我预想这本书会拿在专业测试人员、开发人员、客户、分析师、设计师、程序员,以及他们的所有经理和同事手中。
大部分专业测试人员都知道这本书中的大部分内容,但我还是希望他们可以通过阅读本书发现与他们的经理、开发人员、同事和客户交流他们知道的那些信息的新途径。
我希望能够帮助开发人员和测试人员了解他们的经理在遇到软件测试事宜时会面对哪些情况。
我希望能够帮助客户,也就是那些买软件的人,了解更多的信息。
最后,既然现在每个人都会受到软件的影响,并且受到未经良好测试的软件的伤害,我希望能够帮助所有人更为注意测试。
由于我希望能够获得广泛的受众,所以我选择尽可能使用平直的文字,避免那些高度技术化的术语和过于详细的分析。(对于那些有兴趣学习有关软件测试的更多技术细节的人,我在本书结尾的其他阅读材料部分指出了一些非常可靠的参考书籍。)为了集中精力帮助那些希望了解软件测试的人,我根据下面这些会让大多数人感到困惑的问题来组织本书:
为什么在看起来测试只会耽搁时间的时候我们还要进行测试?
为什么大家不能一开始就构建正确的软件,从而不需要测试?
我们需要对所有的可能都进行测试吗?
为什么不对所有的可能都进行测试?
评论交流
共有6人开贴评论 7人参与评论 5人参与打分 查看
评价等级:





发表于:2010-1-10 10:35:00
该书没有介绍具体的软件测试技术,它讨论的是软件开发中的人、他们对测试的认知、软件测试的目的、实现目的的社会学和心理学上的探索。它试图建立正确的软件测试观念、协调的心理情绪和有效的思考方式。这些要素最终会决定在具体的项目中采用何种具体测试技术的组合。
这本书对测试的定义是:信息获取。这与语境驱动学派(context driven school)的名著“软件测试的经验与教训”(http://www.china-pub.com/14718)的内核是一致的。实际上,“经验与教训”的作者之一James Bach也是本书的审阅者之一,并贡献颇多。Tim Lister说,“经验与教训”是一瓶上等法国红酒(波尔多),需要慢慢品味的。那么,本书就是一瓶白兰地,需要加冰(个人经验)后,小呷慢品。
这本书也夹带了温伯格的最爱:Satir交互模型。一开始以为是贩卖旧货来凑字数,现在觉得很自然。既然测试时信息获取,那么就要讨论信息接收和采取行动。作者利用Satir交互模型处理此类问题得心应手,将其利用在测试领域也是合情合理。而且,当具体的技术快速演变时,关于人的技术却相对稳定。作为一个久经作者考验的理论,Satir交互模型是值得介绍的。
这本书对测试的定义是:信息获取。这与语境驱动学派(context driven school)的名著“软件测试的经验与教训”(http://www.china-pub.com/14718)的内核是一致的。实际上,“经验与教训”的作者之一James Bach也是本书的审阅者之一,并贡献颇多。Tim Lister说,“经验与教训”是一瓶上等法国红酒(波尔多),需要慢慢品味的。那么,本书就是一瓶白兰地,需要加冰(个人经验)后,小呷慢品。
这本书也夹带了温伯格的最爱:Satir交互模型。一开始以为是贩卖旧货来凑字数,现在觉得很自然。既然测试时信息获取,那么就要讨论信息接收和采取行动。作者利用Satir交互模型处理此类问题得心应手,将其利用在测试领域也是合情合理。而且,当具体的技术快速演变时,关于人的技术却相对稳定。作为一个久经作者考验的理论,Satir交互模型是值得介绍的。
| 我要写评论 |
| 查看所有评论交流(共6条) |


点击看大图






加载中...