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