版权归原作者所有,如有侵权,请联系我们

[科普中国]-蜕变测试

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

**蜕变测试(Metamorphic testing)**是一种用来缓解“测试准则问题”的软件测试技术。 测试准则是一种让测试人员判定程序是否能通过测试的机制。当测试人员对于所选择的测试用例难以确定预期的正确结果,或无法判定程序输出是否满足预期的结果时,便认为存在“测试准则问题”。

简介蜕变测试中指出,给出一个或多个测试用例(称为“源测试用例”或“原始测试用例”)及其预期输出(如果有的话),一个或多个用来验证系统或待实现函数的必要属性(称为蜕变关系)的后续测试用例可以被构造出来。例如,一个程序正确实现了sin x的100位有效数字。正弦函数的一个蜕变关系是“sin (π − x) = sin x”,因此即使对于源测试用例x= 1.234 来说,sinx的预期输出并不知道,但依然可以以此构造一个后续测试用例y=π− 1.234。然后判断源测试用例和后续测试用例产生的输出是否在蜕变关系下一致。任何不一致的输出表示了程序的实现中存在缺陷。

在一般情况下,蜕变关系并不需要一定是一个等式或方程,也可以是一个关系。 蜕变试验可以应用于包含了目标函数多次执行过程的,其必要属性可以被定制的任何问题中。一些成功应用蜕变测试的例子包括:偏微分方程、普适计算、服务计算、绘图软件、生物信息学、软件产品线以及网络搜索引擎等。

蜕变测试也被应用于机器学习、人工智能算法、以及基于神经网络的深度学习模型中,并被认为是用来验证机器学习软件的一种很有前景的方法。1

软件测试软件测试(英语:software testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和品质的过程。据此,您可能会想,软件测试永远不可能完整的确立任意电脑软件的正确性。然而,在可计算理论(计算机科学的一个支派)一个简单的数学证明推断出下列结果:不可能完全解决所谓“死机”,指任意计算机程序是否会进入死循环,或者罢工并产生输出问题。换句话说,软件测试是一种实际输出与预期输出间的审核或者比较过程。

软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件品质,并对其是否能满足设计要求进行评估的过程。

软件测试有许多方法,但对复杂的产品运行有效测试不仅仅是研究过程,更是创造并严格遵守某些呆板步骤的大事。测试的其中一个定义:为了评估而质疑产品的过程;这里的“质疑”是测试员试着对产品做的事,而产品以测试者脚本行为反应作为回答。虽然大部分测试的智力过程不外乎回顾、检查,然而“测试”这个词意味着产品动态分析──让产品流畅运行。程序品质可能,而且通常会,随系统不同而有差异;不过某些公认特性是共通的:可靠性、稳定性、轻便性、易于维护、以及实用性。1

普适计算普适计算(Ubiquitous computing(ubicomp)、pervasive computing),又称普存计算普及计算遍布式计算泛在计算,是一个强调和环境融为一体的计算概念,而计算机本身则从人们的视线里消失。在普适计算的模式下,人们能够在任何时间、任何地点、以任何方式进行信息的获取与处理。

普适计算是一个涉及研究范围很广的课题,包括分布式计算、移动计算、人机交互、人工智能、嵌入式系统、感知网络以及信息融合等多方面技术的融合。2

网络搜索引擎网络搜索引擎(英语:web search engine)指自动从万维网搜集信息,经过一定整理以后,提供给用户进行查询的系统。

搜索引擎的工作原理大致可以分为:

搜集信息:搜索引擎的信息搜集基本都是自动的。搜索引擎利用称为网络蜘蛛的自动搜索机器人程序来连上每一个网页上的超链接。机器人程序根据网页链到其中的超链接,就像日常生活中所说的“一传十,十传百……”一样,从少数几个网页开始,连到数据库上所有到其他网页的链接。理论上,若网页上有适当的超链接,机器人便可以遍历绝大部分网页。

整理信息:搜索引擎整理信息的过程称为“创建索引”。搜索引擎不仅要保存搜集起来的信息,还要将它们按照一定的规则进行编排。这样,搜索引擎根本不用重新翻查它所有保存的信息而迅速找到所要的资料。想象一下,如果信息是不按任何规则地随意堆放在搜索引擎的数据库中,那么它每次找资料都得把整个资料库完全翻查一遍,如此一来再快的计算机系统也没有用。

接受查询:用户向搜索引擎发出查询,搜索引擎接受查询并向用户返回资料。搜索引擎每时每刻都要接到来自大量用户的几乎是同时发出的查询,它按照每个用户的要求检查自己的索引,在极短时间内找到用户需要的资料,并返回给用户。目前,搜索引擎返回主要是以网页链接的形式提供的,这样通过这些链接,用户便能到达含有自己所需资料的网页。通常搜索引擎会在这些链接下提供一小段来自这些网页的摘要信息以帮助用户判断此网页是否含有自己需要的内容。

整理信息及接受查询的过程,大量应用了文本信息检索技术,并根据网络超文本的特点,引入了更多的信息。2

本词条内容贡献者为:

王沛 - 副教授、副研究员 - 中国科学院工程热物理研究所