闵应骅的博客分享 http://blog.sciencenet.cn/u/ymin 一位IEEE终身Fellow对信息科学及其发展的看法

博文

测试的尴尬(111024)

已有 3783 次阅读 2011-10-24 10:33 |个人分类:计算机|系统分类:观点评述| 软件测试, 知识获取, 硬件测试

测试的尴尬(111024)
闵应骅

    在“地沟油和食用油分不开吗?(111014)”这个问题提出来以后,彭宁川先生在“用科学的眼光辩证地看待地沟油问题”中给了很专业的回答。使我联想起在硬件和软件的测试中都碰到了这种尴尬的局面。在硬件测试中,几十年来都是面向故障的。也就是说,先有一个故障模型,定义了一些故障。然后去测试被测电路中有没有这些故障。测试的好坏就用能测试多少这样的故障为标准。可是,现在,集成电路远远地比过去规模大,门数多,技术复杂,原来定义的故障模型根本不够用,不能反映集成电路主要的设计和制造缺陷。定义多少故障模型都是不够的,甚至可以说,人们还有许多人们所不知道的故障。软件的情况完全类似。你根本不知道软件可能有一些什么样的故障,当然你也无法模型化。现在的软件测试还有许多是面向故障的,就是说我只检查被测软件中是否有我所关心的故障。可这跟被测软件的质量,几乎根本挂不起钩来。
    软件测试中测试者发现两种情况:一种是发现故障特别多;一种是没有发现任何故障。第一种情况说明:不知道还有多少故障没有发现呢?也许这根本是一个不能用的软件;第二种情况并不说明被测软件没问题,而是说明测试过程有问题,不全面。这就构成一个测试的悖论:我们倒是希望测试出许多问题,还是希望测不出问题?所以,测试界把测试看作一个知识获取的过程,即所谓五级无知论。Phillip G. Armour说:软件不是一个产品,而是存储知识的一个媒介。生产一个软件很容易,生产一个可以工作的软件就很难。所以,我们是要从软件中获取知识。
    所谓“无知”,原文叫"Ignorance"。就是说,你用一组输入去测试一个软件,如果你能判断这个结果对不对,那就是知识。如果你根本不知道这结果对不对,那也是一种知识。孔子曰:“知之為知之,不知為不知,是知也。”有五级的无知(Order of Ignorance):
0级无知(0OI):你知道你的问题及其答案。譬如说问题1+1=?,答案2。
1级无知(1OI):你知道什么是你不知道的,你有自己的的问题。譬如说,你知道想要解一个方程,但是你不知道它的解;你知道:测试是要找不知道的故障。
2级无知(2OI):你不知道:什么是你不知道的。譬如说,你不知道:你要找一个你所不知道的故障。
3级无知(3OI):你根本没有办法,或者说没有一个过程去解决补充你的相关知识。你没有方法和过程去发现问题。发现问题比找到答案更难。
4级无知(4OI):对这五级无知,全无所知。
     把测试看作一个获取知识的过程,你就会集中精力去探索,去获取,而不是去追求这个过程的终结。

https://blog.sciencenet.cn/blog-290937-500382.html

上一篇:视觉理解---语言理解的初步(111020)
下一篇:可靠性呀可靠性(111029)
收藏 IP: 159.226.43.*| 热度|

10 陈安 张利华 温世正 李孔斋 李学宽 张彦斌 张骥 赵凤光 dulizhi95 appleson166

发表评论 评论 (12 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-23 23:48

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部