软件测试是一项技术性工作,但同时也涉及经济学和人类心理学的一些重要因素。
1 软件测试的心理学
2 软件测试的经济学
前言
在理想情况下,我们会测试程序的所有可能执行情况。然而,在大多数情况下,这几乎是不可能的,即使一个看起来非常简单的程序,其可能的输入与输出组合可达到数百种甚至数千种,对所有的可能情况都设计测试用例是不切合实际的。对一个复杂的应用程序进行完全的测试,将耗费大最的时间和人力资源,以至于在经济上是不可行的。
另外,要成功地测试一个软件应用程序,测试人员也需要有正确的态度(也许用“愿景(vision)”这个词会更好一些)。在某些情况下,测试人员的态度可能比实际的测试过程本身还要重要。因此,在深入探讨软件测试更加技术化的本质之前,我们先探讨一下软件测试的心理学和经济学问题。
一、软件测试的心理学
测试执行得差,其中一个主要原因在于大多数的程序员一开始就把“测试”这个术语的定义搞错了,他们可能会认为:
• “软件测试就是证明软件不存在错误的过程。”
• “软件测试的目的在于证明软件能够正确完成其预定的功能。”
• “软件测试就是建立一个‘软件做了其应该做的’信心的过程。”
这些定义都是本末倒置的。
每当测试一个程序时,总是想为程序增加一些价值。通过测试来增加程序的价值,是指测试提高了程序的可靠性或质量。提高了程序的可靠性,是指找出并最终修改了程序的错误。因此不要只是为了证明程序能够正确运行而去测试程序;相反,应该一开始就假设程序中隐藏着错误(这种假设对于几乎所有的程序都成立),然后测试程序,发现尽可能多的错误。那么,