软件测试的正确理解

测试正确认识

首先,测试的目的开始

测试的目的是为了尽可能多的发现缺陷。

这里缺陷是一种泛称,它可以指功能的错误,也可以指性能低下,体验性差等等。测试总是先假设程序中存在缺陷,再通过执行程序来发现并最终改正缺陷。理解测试的目的是个很重要的意识问题。如果说测试的目的是为了说明程序中没有缺陷,那么测试人员就会向这个目标靠拢,因而下意识地选用一些不易暴露错误的测试示例。这样的测试是虚假的。

一个成功的测试示例在于发现了至今尚未发现的缺陷。

测试并不仅是个技术问题,更是个职业道德问题。

其次,测试的心理要求

测试主要是由人而不是由机器执行,这就不免与心理因素相关。为了测试的真实性,对测试的心理要求是“无情”(客观),这似乎太残酷了。开发人员不能很好地测试自己的程序是因为做不到无情。而测试人员如果做到了无情却会引起开发人员的愤怒,遭人白眼。

尽管已经明白了测试的目的是为了发现尽可能多的缺陷,但当测试人员真的发现了一堆缺陷时,却不可乐颠颠地跑去恭喜那个倒霉的开发者,否则会打架的。

再次,测试的真理

测试只能证明缺陷存在,而不能证明缺陷不存在。

这个真理告诉我们,对于一个复杂的系统而言,无论采取什么样的测试手段都不能证明缺陷已经不复存在。“彻底地测试”只是一种理想。在实践中,测试要考虑时间、费用等限制,不允许无休止地测试。

最后,测试与质量的关系

测试有助于提高软件的质量,但是提高软件的质量不能依赖于测试。测试与质量的关系很象在考试中“检查”与“成绩”的关系。

学习好的学生,在考试时通过认真检查能减少因疏忽而造成的答题错误,从而“提高”了考试成绩(取得他本来就该得的好成绩)。

而学习差的学生,他原本就不会做题目,无论检查多么细心,也不能提高成绩。

所以说,软件的高质量是设计出来的,而不是靠测试修补出来的。所以,让测试来确保软件的高质量是不现实的。



留言