关闭

《软件测试艺术》读书笔记(7)_心理学视角解析(下)

发表于:2007-4-12 10:56

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:soliya    来源:51testing博客

接着,来谈谈程序员方面会产生的错误认识吧!这个方面可能在具体实践中显的更重要。
 
由于作者在开篇就先把三个错误认识给摆到读者的眼前;然后就立马表明了其正确的定义,并给予了分析和对错误认识的驳斥。洋洒洒的写了许多,条理上未免会有些混乱。因此,我就按照自己理解的来小结一下吧!
 
首先,测试的正确定义是:测试是为发现错误而执行程序的过程。该定义暗示了两层含义:
  • 软件测试是一个破坏性的过程,甚至是一个“施虐”的过程。(就自己的亲身经历而言,大部分的开发人员在测试期间,对测试人员或多或少都会暂时产生一点厌烦或恐惧的心态。主要是会让开发人员的代码改的面目全非的,且这个过程是反反复复的。)
  • 对于一个特定的程序,应该如何设计测试用例(测试数据)、哪些人应该而哪些人又不应该执行测试。(这是有关测试人员构成的问题。就自己的亲身经历而言,这一点很重要,因为测试人员的态度要比测试的过程更为重要。)
然后,明确测试的正确含义后,探究了一下现今面临的三个错误认识并逐一给予了充分的驳斥。
  • 软件测试就是证明软件不存在错误的过程”。
    1. 若目的仅是为了证明程序中不存在错误,就会在潜意识中倾向于实现这个目标;即,会倾向于选择可能较少导致程序失效的测试数据;若目标在于证明程序中存在错误,设计的测试数据就有可能更多地发现问题。后者肯定比前者会更多地增加程序的价值。
    2. 心理上,对于证明不存在是一个不可能完成的任务,无论该工程多么小;但若是一个寻找错误的任务,是可以完成的。就心理承受而言,也是更容易接受的。
       
  • 软件测试的目的在于证明软件能够正确完成其预订的功能。”
    1. 心态上,不要本着只是为了证明程序能够正确运行而去测试程序,而应该一开始就假设程序中隐藏着错误(这种假设对于几乎所有的程序都成立)。这样测试程序时,才能够发现尽可能多的错误。
    2. 要清楚这样一个道理:每当测试一个程序,实质上是想为其增加一些价值。通过测试来增加程序的价值,及是指测试提高了程序的可靠性或质量。而提高了程序的可靠性,就是指找出并最终修改了程序的错误。
       
  • 软件测试就是建立一个‘软件做了其应该做的’信心的过程。”
    1. 错误认识的关键在于:程序即使能够完成预定的功能,也仍然可能隐藏错误。即,当程序没有实现预期功能时,错误是清晰地显现出来的。但如果程序做了其不应该做的,这同样也是一个错误。
    2. 而后一方面一般都会人为的想当然,认为系统不会做那些事情的。但不通过实践去证明,一切都是不可预计到的。
总体而言,软件测试更适宜用来作为一个试图发现程序中错误(假设其存在)的破坏性的过程。一个成功的测试用例,通过诱发程序发生错误,可以在这个方向上促进软件质量的改进。当然,最终还要通过软件测试来建立某种程度的信心;软件做了其应该作的,未做其不应该作的。通过对错误的不断研究是实现这个目的的最佳途径。
 
需要明确的一点是,针对有人可能会声称“本人的程序完美无缺(不存在错误)”的这种情况而言,建立起信心的最好办法就是尽量去反驳他,即努力发现不完美指出,而不只是确认程序在某些输入情况下能够正确地工作
 
文尾,我想到了高尔基先生在《海燕》里边的一句话:让暴风雨来的更猛烈些吧!不妨,让测试变的更加疯狂一些吧!


原始连接:http://soliya9902.spaces.live.com/Blog/cns!4CBD7F2284BC0EA!419.entry
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • 545168150
    2013-8-18 09:41:55

    测试是为发现错误而执行程序的过程。

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号