什么是蜕变测试?
创始人
2024-05-30 04:33:43
0

文章目录

  • 1.传统测试
  • 2.蜕变测试
    • 2.1.蜕变测试的理解
    • 2.2.蜕变测试的步骤
      • 2.2.1.生成蜕变关系
      • 2.2.2.生成蜕变用例
      • 2.2.3.执行蜕变用例
      • 2.2.4.校验蜕变关系
  • 参考文献

1.传统测试

在没有蜕变测试的时代,传统软件测试的原理是:给定输入,观察被测软件的输出,并与期望输出进行对比,基于对比结果判断软件是否存在缺陷,如下图所示:

在这里插入图片描述
传统测试存在一个基本假设,那就是:软件的期望输出是已知的。然而,许多情况下,软件的期望输出并不是已知的,或者说非常难知道。例如:

  • 测试谷歌搜索引擎,输入关键词car,怎么判断搜索结果是对的?
  • 目前在线商城使用的推荐系统,如果判断推荐的商品是符合要求的?
  • 在基于年龄的疾病预测模型中,输入年龄40,怎么判断模型返回的概率是对的?
  • 生成式对抗网络(GANs)或者扩散模型(Diffusion Model)生成的图片,如何判断生成的好不好?
  • ……

对于这些近乎“不可测”的场景,传统意义的软件测试技术爱莫能助了,于是乎蜕变测试诞生了。

2.蜕变测试

2.1.蜕变测试的理解

在这里插入图片描述

蜕变测试(metamorphic testing)是一种新型软件测试技术。蜕变测试的科学定义是:识别被测软件所具有的蜕变关系(metamorphic relations),通过检查这些蜕变关系 是否成立 来判断软件是否存在缺陷的技术。

理解: 在蜕变测试中,我们并不需要知道测试的正确输出是什么(或者说我们很难知道测试的正确输出是什么),但是我们可以确定输出1与输出2是存在某种关系的。例如我们知道输出1和输出2存在“包含关系”,那么我们不需要去验证输出1与输出2的正确性,而只需要验证输出1和输出2是否存在“包含关系”即可。

举例说明,如下图所示,在测试谷歌搜索引擎时,有两个用例,分别搜索 关键词“car”关键词“autonomous car”。这里隐含着一种蜕变关系:由于后者限定了输入关键词car的属性,因此后者的搜索结果应该是前者的一个子集。

在这里插入图片描述
如果从最终搜索结果发现子集关系不成立,例如:autonomous car的搜索结果数量大于car的搜索结果数量,或者autonomous car的搜索结果包含了一个不在car搜索结果范围内的结果,则说明:子集蜕变关系没有成立,搜索程序可能存在缺陷

2.2.蜕变测试的步骤

那么,怎么进行蜕变测试呢?一般来说,蜕变测试主要包含四大步骤。

2.2.1.生成蜕变关系

如果说软件测试最难的是期望输出的生成,那么 蜕变测试最难的就是蜕变关系的生成 。生成蜕变关系没有一个标准套路,需要结合应用场景和上下文。

上面我们介绍的例子中,两次搜索结果是包含的关系。在搜索查询类应用中,蜕变关系还可以有以下类型:

  • 等价关系:搜索大小为1MB的视频,搜索结果应该与搜索视频大小为1024KB的结果一样。
  • 混排关系:搜索特定关键词,无论采用何种排序方式,搜索结果虽然顺序不同,但是结果的集合应该是相同的。
  • 交集关系:搜索长度<5分钟视频与搜索长度>20分钟的视频,返回结果不应该存在任何交集。
  • 并集关系:搜索任意关键字视频的结果,应该与三次搜索(长度<5分钟的视频/长度在5-20分钟的视频/长度>20分钟的视频)结果的并集相同。

注:蜕变关系的挖掘和生成,是蜕变测试研究的热点,也是蜕变测试应用的难点。

2.2.2.生成蜕变用例

蜕变测试包含多对输入/输出,因此蜕变测试用例包含多个测试用例。

蜕变测试用例由两部分组成: 起始测试用例(source test case)跟随测试用例(follow up test case) 。通过对其实测试用例的输入进行变换(根据蜕变关系进行变换),得到跟随测试用例。

2.2.3.执行蜕变用例

2.2.4.校验蜕变关系

从应用角度来说,蜕变测试主要用在可测性不好的场景,例如机器学习系统、数据查询系统、科学计算系统、仿真与建模系统等。

需要注意的是,蜕变测试只是在一定程度上缓解软件的不可测性或者可测性不好的问题,而不能根本上解决这些问题。毕竟,蜕变关系只是被测软件众多属性中的一种。蜕变关系成立,不代表测试就进行得充分。

就像大师所言,软件测试只能证明软件存在缺陷,不能证明软件不存在缺陷。蜕变测试,更是如此。

参考文献

  • 什么是蜕变测试?

相关内容

热门资讯

庐山的导游词 关于庐山的导游词5篇  “不识庐山真面目,只缘身在此山中”,相信很多人都读过这首古诗,庐山亦是我国非...
峨眉山和乐山大佛英文导游词 峨眉山和乐山大佛英文导游词  乐山大佛,又名凌云大佛,位于四川省乐山市南岷江东岸凌云寺侧,濒大渡河、...
澄江抚仙湖导游词 澄江抚仙湖导游词  各位游客:我们知道,云南著名的三大湖泊分别是滇池、洱海和抚仙湖。下面我们将去追踪...
导游词的写法 导游词的写法  导游词是导游人员引导游客观光游览时的讲解词,是导游员同游客交流思想,向游客传播文化知...
满洲里俄罗斯套娃广场导游词 满洲里俄罗斯套娃广场导游词  俄罗斯套娃广场是满洲里标志性旅游景区,广场集中体现了满洲里中、俄、蒙三...
连云港大伊山导游词 连云港大伊山导游词  作为一名优秀的导游,有必要进行细致的导游词准备工作,导游词是导游员同游客交流思...
介绍丽江古城的导游词 介绍丽江古城的导游词  丽江古城是联合国教科文组织确认的“世界文化遗产”和国务院公布的“中国历史文化...
汾河公园导游词 汾河公园导游词7篇  作为一位兢兢业业的旅游从业人员,时常需要用到导游词,导游词由引言、主体和结语三...
陕西大雁塔导游词 陕西大雁塔导游词7篇  作为一名尽职尽责的导游,时常要开展导游词准备工作,导游词是导游员同游客交流思...
北京八达岭长城旅游导游介绍词 北京八达岭长城旅游导游介绍词  各位游客,你们好,欢迎来到八达岭长城。今天由我为大家做导游,在这里祝...
灵山大佛完整导游词 灵山大佛完整导游词  灵山大佛坐落于无锡马山秦履峰南侧的小灵山地区,该处原为唐宋名刹祥符寺之旧址。下...
敦煌市鸣沙山和月牙泉风景名胜... 敦煌市鸣沙山和月牙泉风景名胜区导游词  鸣沙山和月牙泉风景名胜区位于甘肃省河西走廊西端的敦煌市。敦煌...
虎山长城导游词 虎山长城导游词  各位游客,大家好!  欢迎大家来到虎山长城观光旅游。很高兴能陪大家一起参观,希望大...
张家界天子山索道的导游词 张家界天子山索道的导游词  尊敬的各位来宾,各位朋友:  大家好!  今天,我们游览的是张家界武陵源...
雅鲁藏布大峡谷的导游词 雅鲁藏布大峡谷的导游词范文(通用12篇)  导游词是导游人员引导游客观光游览时的讲解词,是导游员同游...
广西著名德天瀑布导游词 广西著名德天瀑布导游词  作为一名专门为游客提供帮助的导游,可能需要进行导游词编写工作,导游词是导游...
华山导游词 华山导游词范文  导游词范文一  朋友们:大家好!  欢迎大家来华山观光旅游!今天由我给大家做导游服...
广东顺德清晖园概况讲解词 广东顺德清晖园概况讲解词  作为一位出色的导游人员,就难以避免地要准备导游词,导游词是导游员在游览时...
贵州兴义万峰湖导游词 贵州兴义万峰湖导游词  万峰湖位于贵州省黔西南自治州首府兴义市东南部,是中华人民共和国兴义国家地质公...
扬州个园简介导游词 扬州个园简介导游词  导语:扬州的个园,是一座独具风格的名园。它是清嘉庆、道光年间兴建起来的。当时园...