软件测试(一)

术语:

“软件测试就是证明软件不存在错误的过程。”

“软件测试的目的在于证明软件能够正确完成其预定的功能。”

“软件测试就是建立一个‘软件做了其应该做的’信心的过程。”

这些定义都是本末倒置的。

每当测试一个程序时,应当想到要为程序增加一些价值。通过测试来增加程
序的价值,是指测试提高了程序的可靠性或质量。提高了程序的可靠性,是指找 出并最终修改了程序的错误。

应该一开始就假设程序中隐藏着错误(这种假设对于几乎所有的程序都成立),然后测试程 序,发现尽可能多的错误。



定义:测试就是发现错误而执行程序的过程。

给自己一个心理设定:就是要找出程序中的错误。

人类行为总是倾向于具有高度目标性,确立一个正确的目标有着重要的心理 学影响。如果我们的目的是证明程序中不存在错误,那就会在潜意识中倾向于实 现这个目标;也就是说,我们会倾向于选择可能较少导致程序失效的测试数据。 另一方面,如果我们的目标在于证明程序中存在错误,我们设计的测试数据就有 可能更多地发现问题。

什么是“成功的测试”和“不成功的测试”

在大多数情况下,未能找出错误的测试被认为是“不成 功的”,这是因为认为软件中不包含错误的观点基本上是不切实际的(例子:患者看病)

总结:
软件测试更适宜被视为试图发现程序中错误(假设其存在)的破 坏性的过程。一个成功的测试用例,通过诱发程序发生错误,可以在这个方向上 促进软件质量的改进。

测试投入的目标在 于通过有限的测试用例,最大限度地提高发现的问题的数量,以取得最好的测试 效果。