什么是蜕变测试?
创始人
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.校验蜕变关系

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

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

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

参考文献

  • 什么是蜕变测试?

相关内容

热门资讯

三年级作文猴子下山【通用6篇... 三年级作文猴子下山 篇一猴子下山的故事,是我们小时候听过的经典故事之一。今天,我要给大家讲一个不同寻...
小学三年级作文我是妈妈的小助... 小学三年级作文我是妈妈的小助手 篇一我是妈妈的小助手我是一个小学三年级的学生,我有一个非常好的妈妈。...
三年级作文我当小家长400字... 三年级作文我当小家长400字作文大全 篇一作为三年级的小学生,我有着当小家长的责任和义务。今天,我要...
谁是我的老师作文三年级49篇... 谁是我的老师作文三年级49篇 篇一我亲爱的老师在我三年级的时候,我遇到了很多不同的老师。有的是我的班...
春节小学三年级作文300字(... 春节小学三年级作文300字 篇一快乐的春节春节是我最喜欢的节日。春节是中国最重要的传统节日,也是全家...
书的字述600字作文(优秀3... 书的字述600字作文 篇一:阅读的魅力阅读是一种独特的体验,它能够带我们进入一个全新的世界,让我们与...
三年级上册写一次游戏活动的作... 三年级上册写一次游戏活动的作文 篇一我最喜欢的游戏——躲猫猫今天,我们班组织了一次非常有趣的游戏活动...
三年级作文400字写大海(最... 三年级作文400字写大海 篇一大海大海,是一个神奇的地方。我喜欢大海,因为它给我带来了无穷的快乐和惊...
快乐的小女孩(推荐4篇) 快乐的小女孩 篇一快乐的小女孩,是一个充满活力和阳光的孩子。她总是带着灿烂的笑容,无论面对什么困难和...
我的好朋友作文三年级300字... 我的好朋友作文三年级300字 篇一我的好朋友我有一个好朋友,他叫小明。我们从小学一年级就是同班同学了...
三年级等我长胡子的时候作文(... 三年级等我长胡子的时候作文 篇一当我还是一个年幼的三年级学生时,我对长大充满了幻想和向往。我时常幻想...
三年级作文250字(精彩6篇... 三年级作文250字 篇一我的暑假生活暑假终于来了!我迫不及待地开始了我美妙的暑假生活。首先,我去了海...
三年级暑假作文300字【优选... 三年级暑假作文300字 篇一我的暑假生活暑假终于来了,我盼望了很久的假期终于到来了。这个暑假,我过得...
三年级难忘的作文不少于250... 篇一:三年级难忘的作文记得那是我三年级的一个阳光明媚的早晨,我正坐在教室里,等待着老师给我们布置作文...
猜猜他是谁三年级作文600字... 猜猜他是谁三年级作文600字9篇 篇一猜猜他是谁我有一个好朋友,他总是戴着一顶红色的帽子,穿着一件蓝...
三年级下册作文文明的一件事(... 三年级下册作文文明的一件事 篇一文明的一件事在我们的日常生活中,有许多小事都可以展现出我们的文明素养...
我是一只丑小鸭作文400字【... 我是一只丑小鸭作文400字 篇一我是一只丑小鸭我是一只丑小鸭,从出生的那一刻起,我就和其他小鸭子不一...
三年级寒假里难忘的事作文20... 三年级寒假里难忘的事作文200字 篇一冬日里的雪人今年寒假,我最难忘的事情就是和爸爸一起堆雪人了。寒...
贪吃的小猫三年级作文300字... 贪吃的小猫三年级作文300字 篇一贪吃的小猫我家养了一只非常贪吃的小猫,它的名字叫小奇。小奇是一只黄...
小学三年级作文:我的英语老师... 小学三年级作文:我的英语老师 篇一我的英语老师是一位非常亲切和蔼的老师,她叫李老师。她总是穿着漂亮的...