五、软件测试的心理学问题
1、程序测试的过程具有破坏性
人类的活动具有高度的目的性,建立适当的目标具有重要的心理作用。如果我们的目的是要证明程序中没有错误,那我们就会不自觉地朝这个方向去做;也就是说,我们会倾向于挑选那些使程序出错的可能性较小的测试数据。另一方面,如果我们的目标是要证明程序中有错,那就会选择一些易于发现程序所含错误的测试数据。而后一种态度会比前者给程序增添更多的价值。
测试的定义意味着程序测试的过程是具有破坏性的,其程度甚至达到了不可容忍的地步。社会上大多数人的人生观是建设性的,而不是破坏性的。人们倾向于创造一个物品,而不是轻易毁坏?个物品。因此,程序坏?个物品。因此,程序测试的破坏性的定义使人们对程序测试工作望而生畏。程序测试定义还隐含着如何设计测试情况(测过数据),以及应该由谁和不应由谁来测试一个给定程序等等观点。
心理学研究还告诉我们,当人在干一件已经知道是不合适的或不可能做到的事时,往往做得不好。例如:如果让一个人在15分钟解出一个刊登在星期曰《纽约时报》上的交叉填字字谜,10分钟后我们会看到这人几乎没一点进展,因为他会感到实际上不可能做到而放弃自已的努力。然而,如果我们要求花4小时解出这题,那也许就会看到他在开头的10分钟内有较大的进展了。把程序测试定义为在程序中找出错误的过程,就使测试成了可以做到的任务,从而克服了心理上存在的问题。
另一个令人烦躁的问题是即使程序完成了预期要求,仍可能含有错误。也就是说,如果程序不按要求工作,它显然有错,但是如果程序做了不要它做的事,它也有错。