|
|
|
|
移动端

1.8 测试与验证

《软件测试基础教程》第1章软件测试的基本知识,本章作为一个导引,其目的在于让读者熟悉与软件测试相关的基本概念,建立起全书的框架。在本书后续章节中将要详细阐述的问题,首先在这里被提了出来。读完这章之后,读者就能够在软件测试和软件质量方面提出一些有意义的问题。本节为大家介绍测试与验证。

作者:王峰/郭长国/陈振华 等译来源:机械工业出版社|2011-09-16 21:18

技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战

1.8 测试与验证

程序验证旨在通过表现程序不含有错误而证明程序的正确性。这与软件测试很不相同——软件测试旨在暴露程序中存在的错误。也就是说,程序验证旨在证明一个程序对所有满足条件的可能输入都运行正常,而软件测试旨在证明一个程序是可靠的,因为再没有严重的错误被发现了。

我们最好将验证与测试看成是两个互补的技术。在实际工作中,人们不太愿意用程序验证,而更青睐于测试。但是,在开发安全攸关的应用系统时,比如信用卡或核反应堆控制程序,通常还是使用程序验证技术来证明系统关键部分的正确性,虽然不必验证整个系统。无论程序验证多么严密,人们还是一如既往地采用软件测试来获取对应用系统的信心。

软件测试并非一个完美的过程,尽管进行了一系列成功的测试,软件当中可能仍然包含错误。但是,测试过程确实直接影响着我们对被测软件正确性的信心。当一个应用系统通过了一系列精心设计、严格执行的测试后,我们对被测软件正确性的信心总会增加的。

程序验证看起来是个完美的过程,因为它保证验证程序是没有错误的。但是,仔细观察验证过程之后发现,验证仍然有其弱点。首先,参与验证的人员可能在验证过程中出错;其次,有可能对输入条件作错误的假设;还有,在考虑与被验程序交互的组件时,有可能作错误的假设,等等。因此,无论是程序验证还是软件测试,都不是证明程序正确性的完美技术。

常常有人说,程序是个数学对象,应该用理论证明的数学技术来进行验证。虽然可以把程序当作是个数学对象,但是我们必须意识到程序当中以及程序所在环境当中存在的巨大复杂性。正是这种复杂性妨碍了对程序的形式证明,如AT&T的5ESS交换机软件、微软不同版本的Windows操作系统以及其他复杂得惊人的软件。当然,我们都知道这些软件是有缺陷的,但这并不妨碍它们是可用的并为用户创造价值的产品。

【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

数据挖掘:概念与技术

本书第1版曾被KDnuggets的读者评选为最受欢迎的数据挖掘专著,是一本可读性极佳的教材。它从数据库角度全面系统地介绍了数据挖掘的基本概念...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊