软件测试的目的到底是为了证明程序有错,还是证明程序无错误?
作者: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 还给出了与软件测试相关的重要观点,那就是:测试是为了证明程序有错,而不是证明程序无错误; 一个好的测试用例是在于它能发现至今未发现的错误; 一个成功的测试是发现了至今未发现的错误的测试。 回顾软件测试的起源与发展,就是方法论的一种体现。当人们一开始认识软件测试的时候,认为软件测试是软件开发活动中的最后一个环节,就像是工厂生产的产品需要经过最后的质检一样。
早期的观点认为,检验一个软件产品质量的好坏,是证明它“能正确工作”,在这个前提之下去检查自然就会走偏差;而反过来看如果前提改成“软件是存在错误的,错误或大或 小”,那么就要去证明软件产品里面有错误、有缺陷、有用户不满意的地方。
这种前后期观念的改变,是经历过很长阶段的摸索与总结。人们关注软件生命周期的研发过程,关注开发过程中到底哪些环节上容易出问题,怎么能够在软件产品开发阶段,甚至于在产品需求获取阶段,把软件产品中容易出现的问题尽量使之最小化,最好是完全杜绝。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11