软件测试的心理学和经济学.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件测试的心理学和经济学

软件测试的心理学和经济学 软件测试是一项技术性工作,但同时也涉及经济学和人类心理学的一些重要因 素。 在理想情况下,我们会测试程序的所有可能执行情况。然而,在大多数情况下, 这几乎是不可能的,即使一个看起来非常简单的程序,其可能的输入与输出组合可 达到数百种甚至数千种,对所有的可能情况都设计测试用例是不切合实际的。对一 个复杂的应用程序进行完全的测试,将耗费大最的时间和人力资源,以至于在经济 上是不可行的。 另外,要成功地测试一个软件应用程序,测试人员也需要有正确的态度(也许 用“愿景(vision)”这个词会更好一些)。在某些情况下,测试人员的态度可能比实 际的测试过程本身还要重要。因此,在深入探讨软件测试更加技术化的本质之前, 我们先探讨一下软件测试的心理学和经济学问题。 2.1 软件测试的心理学 测试执行得差,其中一个主要原因在于大多数的程序员一开始就把“测试”这 个术语的定义搞错了,他们可能会认为: ? “软件测试就是证明软件不存在错误的过程。” ? “软件测试的目的在于证明软件能够正确完成其预定的功能。” ? “软件测试就是建立一个‘软件做了其应该做的’信心的过程。” 这些定义都是本末倒置的。 每当测试一个程序时,总是想为程序增加一些价值。通过测试来增加程序的价 值,是指测试提高了程序的可靠性或质量。提高了程序的可靠性,是指找出并最终 修改了程序的错误。因此不要只是为了证明程序能够正确运行而去测试程序;相反, 应该一开始就假设程序中隐藏着错误(这种假设对于几乎所有的程序都成立),然 后测试程序,发现尽可能多的错误。 那么,对于测试,更为合适的定义应该是: “测试是为发现错误而执行程序的过程”。 虽然这看起来像是个微妙的文字游戏,但确实有重要的区别。理解软件测试的 真正定义,会对成功地进行软件测试有很大的影响。 人类行为总是倾向于具有高度目标性,确立一个正确的目标有着重要的心理学 影响。如果我们的目的是证明程序中不存在错误,那就会在潜意识中倾向于实现这 个目标,也就是说,我们会倾向于选择可能较少导致程序失效的测试数据。另一方 面,如果我们的目标在于证明程序中存在错误,我们设计的测试数据就有可能更多 地发现间题。与前一种方法相比,后一种方法会更多地增加程序的价值。 这种对软件测试的定义,包含着无穷的内蕴,其中的很多都蕴涵在本书各处。 举例来说,它暗示了软件测试是一个破坏性的过程,甚至是一个“施虐”的过程, 达就说明为什么人多数人都觉得它困难。这种定义可能是违反我们愿望的,所幸的 是,我们大多数人总是对生活充满建设性而不是破坏性的愿景。大多数人都本能地 倾向于创造事物,而不是将事物破坏。这个定义还暗示了对于一个特定的程序:应 该如何设计测试用例(测试数据)、哪些人应该而哪些人又不应该执行测试。 为增进对软件测试正确定义的理解,另一条途径是分析一下对“成功的”和“不 成功的”这两个词的使用,当项目经理在归纳测试用例的结果时,尤其会用到这两 个词。大多数的项日经理将没发现错误的测试用例称为一次“成功的测试”,而将 发现了某个新错误的测试称为“不成功的测试”。 这又是一次本末倒置。“不成功的”表示事情不遂人意或令人失望。我们认为, 如果在测试某段程序时发现了错误,而且这些错误是可以修复的,就将这次合理设 计并得到有效执行的测试称作是“成功的”。如果本次测试可以最终确定再无其他 可查出的错误,同样也被称作是“成功的”。所谓“不成功的”测试,仅指未能适 当地对程序进行检查,在大多数情况下,未能找出错误的测试被认为是“不成功的”, 这是因为认为软件中不包含错误的观点基本上是不切实际的。 能发现新错误的测试用例不太可能被认为是“不成功的”;相反,能发现错误 就证明它是值得设计的。一个“不成功的”测试用例.会使程序输出正确的结果, 但不能发现任何错误. 我们可以类比一下病人看医生的情况,病人因为身体不舒服而去看医生。如果 医生对病人进行了某些实验检测,却没有诊断出任何病因,我们就不会认为这此实 验检测是“成功的”。之所以是“不成功的”检侧,是因为病人支付了昂贵的实验 检测费用,而病状却依然如故。病人会因此而质疑医生的诊断能力。但是,如果实 验检测诊断出病人是胃溃疡,那么这次检测就是“成功的”,医生可以开始进行适 当的治疗。因此.医疗行业会使用“成功的”或“不成功的”来表达适当的意思。 我们当然可以类推到软件测试中来,当我们开始测试某个程序时,它就好似我们的 病人。 “软件测试就是证明软件不存在错误的过程”,这个定义会带来第二个问题。 对于几乎所有的程序而言,甚至是非常小的程序,这个目标实际上也是无法达到的。 另外,心理学研究表明,当人们开始一项工作时,如果已经知道它是不可行的 或无法实现时,人的表现就会相当糟糕。举例来说,如果要求人们在

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档