现阶段对软件测试方法研究主要有两种观点:第一种是软件测试过程是试图验证系统功能是正 确的、可正确运行的;第二种是软件测试过程是证明系统功能是不正确的、有缺陷的。 心理学研究表明,确立一个正确的目标对人有着重要的心理影响,如果从开始工作时就知道它 是不可行的或无法实现的,人的表现会很糟糕。在进行测试之前测试工程师以何种观点去看待软件 测试的过程,对软件测试的结果有着明显的影响。
第一种观点的代表人物是软件测试领域的先驱 Dr. Bill Hetzel(其代表著作有“The Complete Guide to Software Testing”),他曾于 1972 年 6 月在美国的北卡罗来纳大学组织了历史上第一次正式 的关于软件测试的会议。1973 年他对软件测试进行了定义:“就是建立一种信心,认为程序能够按 预期的设想运行。”直到 1983 年他对软件测试的定义进行了修订:“评价一个程序和系统的特性、 能力,并确定它是否达到预期的结果”,软件测试就是以此为目的的任何行为。定义中的“设想” 和“预期的结果”其实就是现在所说的用户需求或功能设计,他还把软件的质量定义为“符合要求”。 这样在测试工程师的潜意识中会认为程序是正确的,对于测试工程师就可能会设计较少的一些失效 数据来验证程序的正确性。这种观点应用在企业管理过程中,管理者认为下属会主动地、积极地完 成为其分配的工作任务,认为这是下属应该做的工作,很少去监控其执行的过程,最后发现下属并没有按时、按质完成。 第二种观点认为“软件测试工程师的目标是证明系统存在缺陷”,代表人物是 Ron Patton,他 在《软件测试》一书中对软件测试进行了定义。这种观点得到了学术界专家的支持,现在也有一些 企业以发现 Bug 的数量作为考核员工业绩的一项指标。这种观点认为即使一个很小的程序也可能 存在问题,测试过程中应该尽量设计更多的失效数据对系统功能进行测试,通过这些失效数据来验 证系统功能是否存在缺陷。管理者分配任务给下属,分配任务后管理者认为下属不会积极、主动地 去完成任务,会存在惰性,有时候甚至会偷懒,所以他每天会监控任务的执行过程,观察下属有没 有认真完成任务,甚至会关心下属有没有加班。
而第一种观点在回归测试中很容易被体现出来,假如在 Bulid 2 版本中对功能 A 进行了详细的 测试,该功能是正常的,那么在 Bulid 3 版本测试过程中,测试工程师一般会认为该功能是正确的、 没有问题的,于是放松了警惕,相对简单地进行了一遍测试用例。假设修改功能 B 引起功能 A 有 问题时,这个问题将比较难被测试到,这样经常会导致出现这种情况,在软件即将发布的时候发现 该问题,导致不得不提交一个新的测试版本来修改和验证该问题,这还是比较幸运的,最坏的情况 是这个问题一直没有被发现而发布到用户端,直到被用户投诉。 总之对软件测试的认识不一样,对待测试过程的心态也将不一样,它将直接影响软件测试的 过程。