人们常常对软件测试有下列错误认识:
1)软件测试就是证明软件不存在错误的过程。
2)软件测试的目的在于证明软件能够正确完成其预定的功能。
3)软件测试就是建立一个“软件做了其应该做的”信心的过程。
测试一个程序,应当想到为程序增加一些价值。通过测试来增加程序的价值,是指测试提高了程序的可靠性或质量。而提高程序的可靠性,是指找出并最终修改了程序的错误。
不要为了证明程序能够正确运行而去测试程序,相反,应该一开始就假设程序中隐藏着错误,然后测试程序,发现尽可能多的错误。
所以对于测试,更合适的定义是:
测试是为发现错误而执行程序的过程。
确立一个正确的目标有着重要的心理学影响。如果我们的目标是证明程序中不存在错误.那就会在潜意识中倾向于实现这个目标,导致倾向于选择可能较少导致程序失效的测试数据。另一方面,如果我们的目标是证明程序中存在错误,我们设计的测试数据就有可能更多地发现问题。
这个定义还暗示了:对于一个特定的程序,应该如何设计测试用例(测试数据),哪些人应该而哪些人又不应该执行测试。
而对于软件测试成功也有以下的错误认识:
没发现错误的测试用例称为“成功的测试”,发现了某个新错误的测试称为“不成功的测试”。
对软件测试成功正确的理解应该是:如果在测试某段程序时发现了错误,而且这些错误是可以修复的,就将这次合理设计并得到有效执行的测试称作“成功的”。如果本次测试可以最终确定再无其他可查出的错误,同样也称作“成功的”。所谓“不成功的”测试,仅指未能适当地对程序进行检查,在大多数情况下,未能找出错误的测试被认为是“不成功的”。这是因为软件中不包含错误的观点基本上是不切实际的。
“软件测试就是证明软件不存在错误的过程”会带来第二个问题:对于几乎所有程序而言,这个目标实际上是无法达到的。
在心理学上,当人们开始一项项工作时,如果已经知道它是不可行的或无法实现时,人的表现就会相当糟糕。而将软件测试定义为发现程序错误的过程,使得测试是个可以完成的任务,从而克服了这个心理障碍'
“软件测试就是证明软件做了其应该做的”这个定义会带来第三个问题:程序即使能够完成预定的功能,也仍然可能隐藏错误。
总结一下,软件测试更适宜被视为试图发现程序中的错误的破坏性。一个成功的测试用例,通过诱发程序发生错误,可以在这个方向上促进软件质量的改进。当然,最终我们还是要通过软件测试来建立某种程度信心:软件做了其应该做的,未做其不应该做的。但是通过对错误的不断研究是实现这个目的的最佳途径。
源自:《软件测试的艺术》
北京治愈白癜风的医院哪里最好北京好的治疗白癜风的医院