• 0
  • 0
分享
  • AI测试技能卷起来!蜕变测试在模型算法测试中的实践——软件测试圈
  • 橙子 2024-11-05 14:52:24 字数 2311 阅读 185 收藏 0

  一、引言

  这一篇,主要介绍模型算法测试之模型蜕变测试。

  说到模型蜕变测试,我相信会有很多一部分测试人没有接触过,也有很多一部分测试人没有听说过。

  设么是模型蜕变测试呢? 这一篇,我们就来解开它的面纱。

  二、概述

  模型蜕变测试(Metamorphic Testing, MT)是一种特殊的测试方法,最早用于解决传统测试方法难以应对的复杂软件系统,特别是那些没有明确预期输出的系统。

  在模型算法方面,主要利用模型算法内含属性的测试方法,

  蜕变测试的核心思想是利用已知的、可验证的输入输出关系(蜕变关系)来推断未知的输出结果,从而验证程序的正确性,

  换句话说:修改了与属性相关的输入,再给定原始输入和输出的情况下预测新的输出。

  说到蜕变测试,不得不提的一个词“蜕变关系”, 什么是蜕变关系呢?

  蜕变关系(Metamorphic Relations, MR)是一组预期的输入输出间的关系,即:一组与模型算法中多对输入和输出相关的属性,在多次执行目标程序时,输入与输出之间期望遵循的关系,常用来验证模型的稳定性和一致性。

  三、蜕变关系

  我们了解了蜕变测试的流程,接下来就了解蜕变的关系。这也是蜕变测试的难点和核心的关键点。

  这里我就以我的工作(目标检测,计算机视觉)为例,常见的蜕变关系,如下: 

  1.旋转不变性

  输入:原始图像、旋转(90度、180度、270度)后的图像

  预期输出关系:旋转前后的分类结果应保持一致。

  2.缩放不变性

  输入:不同尺度缩放后的图像(放大或缩小)

  预期输出关系:缩放前后的分类结果应保持一致。

  3.翻转不变性

  输入:水平翻转或垂直翻转后的图像

  预期输出关系:翻转前后的分类结果应保持一致。

  4.亮度不变性

  输入:变化亮度后的图像(增加或减少亮度)

  预期输出关系:亮度变化前后的分类结果应保持一致。

  5.对比度不变性

  输入:调整对比度后的图像(增加或减少对比度)

  预期输出关系:对比度变化前后的分类结果应保持一致。

  6.噪声鲁棒性

  输入:添加随机噪声后的图像

  预期输出关系:噪声前后的分类结果应保持一致。

  7.颜色空间转换不变性

  输入:转换为不同颜色空间(如灰度、HSV)的图像

  预期输出关系:转换前后的分类结果应保持一致。

  当然,除了目标检测/计算机视觉领域之外, NLP领域常见的蜕变关系如下:

  1.同义词替换不变性

  输入:用同义词替换部分词语后的文本

  预期输出关系:同义词替换前后的分类结果应保持一致。

  2.拼写错误鲁棒性

  输入:文本中包含少量拼写错误

  预期输出关系:拼写错误前后的分类结果应保持一致或相近。

  3.句子重组不变性

  输入:重组句子内词语顺序但不改变句子语义后的文本

  预期输出关系:重组前后的分类结果应保持一致。

  4.文本形式变换不变性

  输入:文本大小写变换或加标点符号后的文本

  预期输出关系:变换前后的分类结果应保持一致。

  5.负载增强不变性

  输入:添加或去除文本中的冗余信息(如插入无实质意义的词语)

  预期输出关系:冗余信息前后的分类结果应保持一致。

  关于蜕变关系,我就说到这里了,关于其他(数据增强和改进生成、抽象层次等)蜕变关系,大家可以在留言区进行补充。

  四、测试流程

  模型蜕变测试可应用于机器学习模型的黑盒测试。蜕变测试流程涉及到:

  1.定义蜕变关系:选择一组输入以及这些输入的变体,确定这些输入变体与原始输入之间的关系,以及改变前后模型输出结果应该满足的关系

  2.构建测试案例:利用某些变换(如添加噪声、改变特征值等)生成多个输入变体,

  3.执行测试案例:将原始输入和变体输入分别输入模型,获得输出结果,并检查这些输出结果是否满足定义的蜕变关系。

  4.分析结果:分析模型输出,判断是否存在不符合蜕变关系的情况,如果有不符合的情况,进一步分析可能的原因,如数据分布、模型训练不足、特征工程问题等。

  同样,为了便于更好的对蜕变测试的理解, 我这里以流程图与实例结合。

  例子:假设年龄与薪资收入关系模型,输入的年龄与模型算法系统的输出相关。

  模型算法输出Y 是薪资收入可行性估计。随着年龄的增长,薪资收入可能性也会增加。

  所以,这里的就建立了蜕变关系,即:X与Y之间的蜕变关系,如下图:

1.png

  假设X1 = 28,输出Y1 = 0.4 ,基于这已知模型预测结果,我们设计测试案例:

  1、X2 = 20 , Y2 的值应该小于Y1;

  2、X3 = 45 ,Y3的值应该大于Y1 ;

  3、X4 = 33,Y4 的值应该大于Y1  小于Y3 ;

  4、X5 = 120 ,Y5 的值,理论上应该是异常值;

  通过上述这例子,我们就能更好的理解蜕变测试,也能更好的理解蜕变关系了。 

  (当然,这个例子,是相对值,咱也不用特意的转牛角尖,说这例子没有考虑一些特殊情况,特殊情况不在这个例子中。)

  五、总结

  在这篇,我详细的介绍了蜕变关系的概念、蜕变测试流程及实例展示。目的就是为了让我们更容易理解蜕变关系。

  在模型算法测试中,蜕变测试是一种有效验证模型稳定性和鲁棒性的测试方法。

  基于各类常见的蜕变关系保证了在真实场景中,模型能适应数据的变化和噪声,是提升模型质量的有效方法。

  当然,构建与定义蜕变关系构成了测试过程中的最大挑战与核心环节,这一过程不仅需要专业知识做支撑,更依赖于项目实践中不断积累的经验总结与持续优化。


作者:Carl_奕然    

来源:http://www.51testing.com/html/05/n-7803205.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 摘要当前大型top企业都有非常成熟的开放平台业务,比如微信开放平台、新浪微博开放平台、支付宝开放平台等。开放平台的发展为第三方个人或企业提供了巨大的机遇。开发者想要接入各大开放平台,必须要遵从开放平台的安全机制,实现业务逻辑的前提,首先就是要实现签名验签、加密解密以及授权认证机制。本文介绍基于python的开放平台签名、认证测试体系,可以用于第三方应用的沙盒测试,同时可以应用于服务提供方相关系统的全面测试。一、引言开放平台是指大型企业将自身的数据能力、计算能力、用户体系、产品能力等资源以业务+场景+解决方案+技术的优势包装出来,通过openAPI、openSDK、openH5等形式开放给第三方...
            0 0 1801
            分享
          • 一、为什么要梳理业务?因为在业务测试中,作为测试人员,熟悉负责的业务是非常重要的,而通过阶段性的梳理总结,可以让你的业务知识系统化的沉淀下来。当你被别人问起这个业务系统的测试重点在哪里?难点如何克服?为什么要这样设计等等问题,可以有条不紊的进行输出。又或者,当你任务需要交接,或者需要别人支援你的业务,此时你可以自信的把文档丢过去,拍拍胸脯说:看一遍你就知道了。另外,当你有了多种业务的沉淀之后,你甚至可以提炼出很多通用性的东西,我称为“方法论”。二、梳理业务框架如何进行梳理呢?这里我参照常规的服务系统,写一些思路,仅供参考。1、测试场景这部分可以整理出业务系统的测试场景。可以重点贴出核心的测试场...
            1 1 3462
            分享
          •   什么是软件质量保证?  软件质量保证(Software Quality Assurance,SQA)活动是通过对软件产品有计划的进行评审和审计来验证软件是否合乎标准的系统工程,通过协调、审查和跟踪以获取有用信息,形成分析结果以指导软件过程。  软件质量活动  软件组织主要软件质量活动  ● 软件质量保证(SQA):是一项管理工作,侧重于对流程的评审和监控  ● 测试:是一项技术性的工作,侧重对产品进行评估和验证  SQA和测试的关系  软件质量由组织、流程和技术三方面决定  ● SQA从流程方面保证软件的质量  ● 测试从技术方面保证软件的质量  ● 只进行SQA活动或只进行测试...
            0 0 438
            分享
          • 软件测试人员应该居安思危每当经济不好,公司业绩不好的时候,公司都可能进行裁员。首先裁的就是测试人员。因为测试人员的技术水平相对来说比较低,容易被替代,招起来也比较容易。公司往往先拿测试人员开刀。身为测试人员,虽然我们平常的工作大部分都比较安逸。但是千万不能温水煮青蛙。应该自强不息,要像开发人员一样,不断学习,提高自己的编程水平。这样就算被裁也能很快找到新的工作。测试人员应该比开发人员更熟悉业务需求测试人员的水平主要体现在测试用例的设计上。要设计出全面,覆盖广的测试用例,需要测试人员对自己所测试的项目的业务需求非常熟悉,甚至要比开发人员还要熟悉。如果是测试银行系统,通信行业,或者ERP软件。这些...
            0 0 830
            分享
          • 一、什么是杀虫剂理论?杀虫剂悖论是Boris Beizer在他1990年出版的《Software Testing Techniques》一书中最先提出来的。当农民发现农作物有病虫害的时候,就需要喷洒杀虫剂,以消除病虫害。通常可以杀死绝大部分的害虫,但是非常不幸的是,总会有少量的虫子活下来。存活下来的虫子对该杀虫剂就产生了抗药性,如果来年农民还是用同样的杀虫剂的话,那么对害虫的杀伤力将会大大降低。农民伯伯需要不断地使用新的杀虫剂来对付具有抗药性的害虫,否则农作物就会被害虫吃掉。在软件测试中用来描述这样一种现象,对软件进行越多的测试,那么该软件对软件测试人员的测试就越具有免疫力。以上专业解释引用自...
            1 0 4295
            分享
      • 51testing软件测试圈微信