进行测试的原因
真正(有自知之明)的人知道无论他们如何尽力地想完成好一项工作,都有可能出错。真正(有自知之明)的人还知道
并不只是他一个存在这样的不可靠,其他人同样如此。
在日常的开发软件或使用软件产品中,需要做出一些决定,往往这些决定是带有风险的。我们可能过“测试”这种方式来获取一些信息,这些信息能够帮助我们降低风险。
在最表面的层面上,人们一直在进行测试。
1、应用程序有没有满足约束条件,例如应用程序对操作系统的兼容性问题。
2、应用程序有没有完成我的需求,例如我想要一个制作网页的工具,你给我一个处理图片的软件是没有用的。
3、应用程序有没有向用户提出“用户无法接受的要求”,例如是手机上,在安装一款软件时,它要求你先下载另外一款
软件,才能使用它。
4、应用程序会不会因为用户使用它而失去信心,例如用户在使用软件的过程中,软件不断的崩溃,最终会让用户不再
使用它。
5、应用程序是否会浪费用户较长的时间,例如应用程序一切都好,只是在进行“保存”的时候,这个软件需要花费1分钟
多的时间才能完成。
6、应用程序会不会因为价格太贵而被用户拒绝。
不要欺骗自己,我们都知道软件用户总会找到方法不使用他们不想用的软件。
如果对产品的风险不存在任何疑问,就没有理由进行测试。如果你至少存在一个疑问,那么紧接着你会想:进行这些测试的成本是否超过了答案本身的价值?风险存在主观性,因为不同人对同一种风险的感受是不同的。
=====================
决定是感性的,而不是理性的
由于测试提供了有助于减少决定中风险的信息,所以你也许会认为所有人都会喜欢并重视测试。但是人们往往会受很多心理因素的影响,从而做出与理性没有任何关系的决定。我们都听到过这样的话:“我的想法已经定型了,不要用这些事实来干扰我。”甚至我们也曾经这样说过。
人们都存在一种感情倾向,不希望发现自己犯了错误。有些经理不想知道他们的项目正在走向失败。有些开发人员不希望别人知道他们的代码中有很多缺陷。当你试图影响这些与情绪有关的因素时,很可能事与愿违。
=====================
Edsger Dijkstra:“测试可以揭示缺陷的存在,而不能表明它们不存在。”
由于我们无法测试所有的可能性,所以任何实际的测试集都是某种程度的样本:以某种形式代表整个可能测试集合的一个部分或者片段。我们理所当然地希望它是一个良好的代表,但这就会带来一个问题:“对谁而言是良好的?”本质上,采样也是一个心理过程,而且也是一个感性过程。令某人满意的样本也许会让另一个人觉得一点儿也不满意。
首先,要认识到任何测试集都是一种采样方法。然后,无论你有多少资源,都要尽快可能选择那些具有最强代表性的测试集。
原文地址:http://lsieun.blog.51cto.com/9210464/1719885