知识图谱扩充|蜕变测试|蜕变关系

news2024/11/27 22:40:22

目录

前言:概念定义

什么是蜕变测试?

那么,怎么进行蜕变测试呢?

1. 生成蜕变关系

a 等价关系

b 混排关系

c 交集关系

d 并集关系

2. 生成蜕变用例

3. 执行蜕变用例

4. 校验蜕变关系

学术报告

一、蜕变测试MT

二、蜕变关系的关键部分

三、测试关系鉴别

四、自动驾驶汽车测试

1. 输入变换

2.检查输出之间的关系

3.经验与改进

五、基于LiDAR传感器/摄像头的测试系统

 六、基于规则的蜕变测试

七、连续的蜕变关系测试

八、蜕变关系系统建设

1.类别划分

2.metric——>metric*

九、挑战和机遇

除了测试

十、理解

十一、调试

对应关系

准确性和精确性

十二、容错性 


前言:概念定义

        蜕变测试(Metamorphic Testing,MT),依据被测软件的领域知识和软件的实现方法建立蜕变关系,利用蜕变关系来生成新的测试用例,通过验证蜕变关系是否被保持来决定测试是否通过。蜕变测试(metamorphic testing)是一种新型软件测试技术。要把蜕变测试这个概念讲清楚,不是一件容易的事情。

         蜕变关系(Metamorphic Relation,MR) 是指多次执行目标程序时,输入与输出之间期望遵循的关系。

什么是蜕变测试?

        蜕变测试的科学定义是:识别被测软件所具有的蜕变关系(metamorphic relations),通过检查这些蜕变关系是否成立来判断软件是否存在缺陷的技术。这里的蜕变关系,指的是被测软件多对输入/输出之间的某种关系。

      

蜕变测试工具原理 

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

        传统测试存在一个基本假设,那就是软件的期望输出是已知的。然而,许多情况下,软件的期望输出并不是已知的,或者说非常难知道。

        例如,测试谷歌搜索引擎,输入关键词car,怎么判断搜索结果是对的?测试sin(x)计算函数,输入x=12,怎么判断计算结果(例如−0.5365)是对的?测试年龄-某疾病预测模型,输入年龄40,怎么判断模型返回的概率值(例如70.5%)是对的?

        对于这些近乎“不可测”的场景,传统意义的软件测试技术爱莫能助,需要新的测试技术。于是,蜕变测试诞生了。如下图所示,蜕变测试的核心差异在于:

1. 一次蜕变测试,包含的不是一次软件执行,而是多次软件执行;

2. 我们观测的不再是单对输入/输出之间的关系,而是多对输入/输出之间的关系(蜕变关系);

3. 我们对比的不是软件输出,而是软件的蜕变关系。

         理解蜕变测试的关键,在于理解蜕变关系。然而蜕变关系是一个非常抽象的概念。在不同的应用场景和上下文中,蜕变关系的含义是不同的。

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

        如果子集关系不成立,例如autonomous car的搜索结果数量大于car的搜索结果数量,或者autonomous car的搜索结果包含了一个不在car搜索结果范围内的结果,则说明子集蜕变关系没有成立,搜索程序可能存在缺陷。

那么,怎么进行蜕变测试呢?

一般来说,蜕变测试主要包含四大步骤。

1. 生成蜕变关系

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

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

a 等价关系

        搜索大小为1MB的视频,搜索结果应该与搜索视频大小为1024KB的结果一样。

b 混排关系

        搜索特定关键词,无论采用何种排序方式,搜索结果虽然顺序不同,但是结果的集合应该是相同的。

c 交集关系

搜索长度<5分钟视频与搜索长度>20分钟的视频,返回结果不应该存在任何交集。

d 并集关系

        搜索任意关键字视频的结果,应该与三次搜索(长度<5分钟的视频/长度在5-20分钟的视频/长度>20分钟的视频)结果的并集相同。

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

2. 生成蜕变用例

        蜕变测试包含多对输入/输出,因此蜕变测试用例包含多个测试用例。蜕变测试用例由两部分组成:起始测试用例(source test case)跟随测试用例(follow up test case)。跟随测试用例由对起始测试用例的输入进行变换(根据蜕变关系)而得。

3. 执行蜕变用例

4. 校验蜕变关系

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

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

        软件测试只能证明软件存在缺陷,不能证明软件不存在缺陷。蜕变测试,更是如此。


学术报告

一、蜕变测试MT

1. 鉴别蜕变关系

2. 生成源测试用例

3. 构建后续测试用例

        基于源测试用例

        根据蜕变关系MRs

4. 执行测试用例

5. 根据蜕变关系验证测试结果       

二、蜕变关系的关键部分

测试用例生成

测试结果检验

三、测试关系鉴别

规范

人类智慧

四、自动驾驶汽车测试

1. 输入变换

DNN-UMW:简单的图像变换:线性,仿真,卷积;

2.检查输出之间的关系

变换后转向角度应该相似;

3.经验与改进

超过1000种错误行为;

重新训练DNNs,准确率提高高达46%。

1.1原始 1.2加入雨滴(噪声)

五、基于LiDAR传感器/摄像头的测试系统

 六、基于规则的蜕变测试

(a)原始驾驶场景

(b)增加一个行人

(c)增加一个近距离的行人

七、连续的蜕变关系测试

一点一点改变,比如颜色 

八、蜕变关系系统建设

1.类别划分

类别

选择

测试框架 

2.metric——>metric*

测试框架间的关系——>MR

输入&输出

九、挑战和机遇

除了测试

测试——>理解&解释

故障本地化

程序维修

容错性

十、理解

可靠性

安全性

多样性

公平性

可竞争性

十一、调试

对应关系

单个测试用例和一组蜕变测试用例之间

输出结果的通过/失败与测试组蜕变关系的满足/违背之间

准确性和精确性

识别故障揭示测试用例

十二、容错性 

简单方法解决复杂问题 !

蜕变关系有哪些?_小红帽的日常的博客-CSDN博客

(于 2023-04-14 10:52:48 发布)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/423464.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【id:32】【20分】B. Date(类与构造)

题目描述 下面是一个日期类的定义&#xff0c;请在类外实现其所有的方法&#xff0c;并在主函数中生成对象测试之。 注意&#xff0c;在判断明天日期时&#xff0c;要加入跨月、跨年、闰年的判断 例如9.月30日的明天是10月1日&#xff0c;12月31日的明天是第二年的1月1日 2月…

vue2路由(下)

编程式路由导航 通过点击按钮实现push和replace俩种模式的跳转 实现&#xff1a;就是通过$router原型里面的方法 也能实现路由的跳转和后退&#xff0c;分别采用的是$router里面的black和forward方法 感觉就是BOM对象中的history对象里面的方法 正是前进&#xff0c;后是后…

快鲸scrm | 三个步骤,快速打造企业长效私域营销阵地

快鲸scrm对企业微信私域流量玩法进行系统梳理&#xff0c;把企业微信用户运营拆解为“获客”、“转化”和“服务”这三个关键步骤&#xff0c;从点到面&#xff0c;为企业私域运营提供可行性的解决方案。 一、构建私域流量管理机制 用户是企业发展的基础&#xff0c;用户增长对…

三电技术之电控技术

三电技术之电控技术 1 基本功能 整车控制系统能够实现对汽车动力、舒适度、安全性以及能耗等多方面进行调整优化&#xff0c;配合大数据让电动汽车拥有更好的操作性和可靠性&#xff0c;具体来讲整车控制器对电动汽车主要有以下功能&#xff1a; 数据交互管理&#xff1a;整…

mybatis-plus-join MPJ连表查询 这样写太香了!

mybatis-plus作为mybatis的增强工具&#xff0c;它的出现极大的简化了开发中的数据库操作&#xff0c;但是长久以来&#xff0c;它的联表查询能力一直被大家所诟病。一旦遇到left join或right join的左右连接&#xff0c;你还是得老老实实的打开xml文件&#xff0c;手写上一大段…

【unity实战】用对象池设计制作Dash冲锋残影的效果

什么是对象池? 在Unity中,对象池是一种重复使用游戏对象的技术。使用对象池的好处是可以减少游戏对象的创建和销毁,从而提高游戏的性能。如果不使用对象池,每次需要创建游戏对象时,都需要调用Unity的Instantiate函数,这会导致内存分配和垃圾回收的开销。而使用对象池,可…

李宏毅 深度学习【持续更新】

目录pytorch快速入门csdn快速入门OS包PIL包Opencv包Dataset类Tensorboard的使用torchvision.transforms 的使用torchvision中数据集的使用DataLoader的使用(torch.utils.data)神经网络的搭建nn.Module深度学习 李宏毅Chatgpt1 研究方向2 Chatgpt学习的步骤3 Fine tune vs. Prom…

【Linux内网穿透】使用SFTP工具快速实现内网穿透

文章目录内网穿透简介1. 查看地址2.局域网测试连接3.创建tcp隧道3.1. 安装cpolar4.远程访问5.固定TCP地址内网穿透简介 是一种通过公网将内网服务暴露出来的技术&#xff0c;可以使得内网服务可以被外网访问。以下是内网穿透的一些应用&#xff1a; 远程控制&#xff1a;通过内…

九【springboot】

Springboot一 Spring Boot是什么二 SpringBoot的特点1.独立运行的spring项目三 配置开发环境四 配置开发环境五 创建 Spring Boot 项目1.在 IntelliJ IDEA 欢迎页面左侧选择 Project &#xff0c;然后在右侧选择 New Project&#xff0c;如下图2.在新建工程界面左侧&#xff0c…

深入理解PyTorch中的train()、eval()和no_grad()

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️&#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

【数据结构】栈的实现

&#x1f61b;作者&#xff1a;日出等日落 &#x1f4d8; 专栏&#xff1a;数据结构 &#x1f339; 如果说&#xff0c;读书是在奠定人生的基石&#xff0c;在梳理人生的羽毛&#xff0c;那么&#xff0c;实践&#xff0c;就是在构建人生的厅堂&#xff0c;历练人生的翅膀。是不…

阿里P7晒工资条,看完好扎心了……

前几天&#xff0c;有位老粉私信我&#xff0c;说看到某95后学弟晒出阿里P7的工资单&#xff0c;他是真酸了…想狠补下技术&#xff0c;努力冲一把大厂。 为了帮到他&#xff0c;也为了大家能在最短的时间内做面试复习&#xff0c;我把软件测试面试系列都汇总在这一篇文章了。 …

自然语言处理: 知识图谱的十年

动动发财的小手&#xff0c;点个赞吧&#xff01; NLP 中结合结构化和非结构化知识的研究概况 自 2012 年谷歌推出知识图谱 (KG) 以来&#xff0c;知识图谱 (KGs) 在学术界和工业界都引起了广泛关注 (Singhal, 2012)。作为实体之间语义关系的表示&#xff0c;知识图谱已被证明与…

ECharts 横向柱状图自动滚动

核心代码 const seriesList [120, 200, 150, 80, 70, 110, 130, 120, 200, 150, 120, 200]; const xAxisList [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; const dataZoomEndValue 6; // 数据窗口范围的结束数值(一次性展示几个) dataZoom: [{show: false, // 是否显示滑动…

Java面向对象高级【类加载器】

目录 Java程序是怎样被运行的 类加载器的作用 加载类文件 链接类 定位类 类加载器间的委派 实现类的隔离 类加载器的类型 启动类加载器&#xff08;Bootstrap Class Loader&#xff09; 扩展类加载器&#xff08;Extension Class Loader&#xff09; 应用程序类加载器…

数据结构和算法学习记录——二叉树的非递归遍历(中序遍历、先序遍历、后序遍历)

目录 中序遍历 代码实现 思路图解 先序遍历 代码实现 后序遍历 思路图解 二叉树的非递归遍历运用到堆栈 中序遍历 循环的思路是 遇到一个节点&#xff0c;就把它压栈&#xff0c;并去遍历它的左子树。当左子树遍历结束之后&#xff0c;从栈顶弹出这个节点并访问…

MybatisPlus主键策略

Mybatis默认主键策略是TableId(type IdType.ASSIGN_ID) 这是默认策略雪花算法 此时主键类型可以是String 数据表字段类型可以是bigint int varchar 无需数据表主键自增 TableId(type IdType.ASSIGN_AUTO) 是主键自增策略:该策略为跟随数据库表的主键递增策略&…

大数据挖掘建模平台产品功能特点

大数据挖掘建模平台是面向大数据挖掘教学实训的工具。在“泰迪杯”数据挖掘挑战赛中大多学生都有使用到该工具&#xff0c;平台采用可视化操作方式&#xff0c;通过丰富内置算法&#xff0c;帮助用户快速、一站式的进行数据分析及挖掘建模。可应用于处理海量数据、高复杂性的数…

C语言判断素数的实现及数学原理

本篇博客会讲解如何使用C语言来判断一个整数是不是素数。 实现方法 如何判断一个数是不是素数呢&#xff1f;如果这个数只能被1或者它自己整除&#xff0c;那么它就是一个素数。 如何写代码来判断呢&#xff1f;假设要判断一个数num是不是素数&#xff0c;就让2~(num-1)的数…

LeetCode037之解数独(相关话题:回溯法)

题目描述 编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)数独部分空格内已填入了数字,空白格用 . 表示…