福田做棋牌网站建设找哪家效益快,东莞最好的网络公司找火速,网站宣传的手段有哪些,新媒体营销策略分析文章目录1.传统测试2.蜕变测试2.1.蜕变测试的理解2.2.蜕变测试的步骤2.2.1.生成蜕变关系2.2.2.生成蜕变用例2.2.3.执行蜕变用例2.2.4.校验蜕变关系参考文献1.传统测试
在没有蜕变测试的时代#xff0c;传统软件测试的原理是#xff1a;给定输入#xff0c;观察被测软件的输…
文章目录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.校验蜕变关系
从应用角度来说蜕变测试主要用在可测性不好的场景例如机器学习系统、数据查询系统、科学计算系统、仿真与建模系统等。
需要注意的是蜕变测试只是在一定程度上缓解软件的不可测性或者可测性不好的问题而不能根本上解决这些问题。毕竟蜕变关系只是被测软件众多属性中的一种。蜕变关系成立不代表测试就进行得充分。
就像大师所言软件测试只能证明软件存在缺陷不能证明软件不存在缺陷。蜕变测试更是如此。
参考文献
什么是蜕变测试