软件测试的目的到底是为了证明程序有错,还是证明程序无错误?
作者:ALM 发布时间:[ 2020/7/13 9:19:45 ] 推荐标签:
软件测试定义中的“设想”和“预期的结果”其实就是我们现在所说的用户需求或功能设计。软件的质量标准就是“符合要求”。目前比较主流的测试思想,核心观点测试方法是试图验证软件是“工作的”,所谓“工作的”就是指软件的功能是按照预先的设计执行的,以正向思维,针对软件系统的所有功能点,逐个验证其正确性。软件测试业界把这种方法看作是的软件测试类方法。
尽管如此,这一方法还是受到很多业界权威的质疑和挑战。代表人物是 Glenford J.Myers(代表论著《The Art of Software Testing》)。他认为测试不应该着眼于验证软件是工作的,相反应该首先认定软件是有错误的,然后用逆向思维去发现尽可能多的错误。他还从人的心理学 的角度论证,如果将 “验证软件是工作的”作为软件测试的目的,非常不利于测试人员发现软件的错误。于是他于 1979 年提出了他对软件测试的定义:“测试是为发现错误而执行的一个程序或者系统的过程。(” The process of executing a program or system with the intent of finding errors.)这个定义,也被业界所认可,经常被引用。
除此之外, Myers 还给出了与软件测试相关的重要观点,那就是:测试是为了证明程序有错,而不是证明程序无错误; 一个好的测试用例是在于它能发现至今未发现的错误; 一个成功的测试是发现了至今未发现的错误的测试。 回顾软件测试的起源与发展,就是方法论的一种体现。当人们一开始认识软件测试的时候,认为软件测试是软件开发活动中的最后一个环节,就像是工厂生产的产品需要经过最后的质检一样。
早期的观点认为,检验一个软件产品质量的好坏,是证明它“能正确工作”,在这个前提之下去检查自然就会走偏差;而反过来看如果前提改成“软件是存在错误的,错误或大或 小”,那么就要去证明软件产品里面有错误、有缺陷、有用户不满意的地方。
这种前后期观念的改变,是经历过很长阶段的摸索与总结。人们关注软件生命周期的研发过程,关注开发过程中到底哪些环节上容易出问题,怎么能够在软件产品开发阶段,甚至于在产品需求获取阶段,把软件产品中容易出现的问题尽量使之最小化,最好是完全杜绝。
相关推荐

最新发布
性能测试的一般流程
2020/10/15 16:57:51在软件测试中应该注意哪些原则?
2020/10/12 16:17:24直播平台如何做性能测试和涉及的关键点
2020/9/27 16:27:13如何提高软件测试团队工作效率
2020/9/8 17:04:34软件测试理论之缺陷管理
2020/8/26 16:12:27关于性能测试需要重视的两个要点
2020/8/26 15:29:06软件测试的棘手问题:如何避免重复提交缺陷
2020/8/26 15:12:13手动测试和自动化测试的区别
2020/8/12 13:50:42