掌桥专利:专业的专利平台
掌桥专利
首页

一种面向人工智能组件的测试用例生成方法

文献发布时间:2023-06-19 18:37:28


一种面向人工智能组件的测试用例生成方法

技术领域

本发明属于图像处理的测试用例生成领域,具体为一种面向人工智能组件的测试用例生成方法。

背景技术

人工智能技术是近年来计算机科学研究的焦点,随着计算能力的提升,人工智能在当下已经广泛应用于图像识别、自然语言处理等方面,在具体的场景如自动驾驶、人脸识别、语音识别以及医疗辅助等方面人工智能更是有着无与伦比的优势。在大数据时代下,人工智能能够多快好省地从大量、多样、低价值密度的数据中提取有价值信息,相关成果已经广泛应用于生活的各个角落。

在传统的软件系统开发过程中,测试是一个极为重要的环节,测试的充分与否直接影响软件上线后能否正常运行。随着互联网的发展,软件规模已经发展到一个匪夷所思的地步,一旦软件出现问题,造成的后果也难以想象。在航空、航天、医疗、自动驾驶等安全攸关的领域,测试不仅涉及大量经济利益、更涉及使用者的生命安全,因此,充分的测试是至关重要的。

传统软件是算法驱动的,软件系统的内部逻辑由算法决定,传统测试技术依据测试覆盖准则对程序分支做严格覆盖测试就可以找出算法存在的缺陷。以神经网络系统为代表的人工智能组件是数据驱动的,其内在逻辑由训练数据训练出的带有特定权值的神经元以及神经元的连接方式决定,因此针对传统软件的测试方法和测试指标无法对特定神经网络系统的内部逻辑进行充分测试和评估。对于神经网络而言,同一输入同一模型,在不同的训练情况下输出可能是不同的,因此单独针对算法的测试是无法得出稳定、可靠并且有效的结论的。

当前针对人工智能组件的测试技术主要分为两大类,第一类方法是使用测试传统软件的黑盒方法来测试人工智能组件,该方法不关心人工智能组件的内部构造,将待测组件完全视为黑盒,只关心其输入和输出。

黑盒方法主要有以下几种:1.基于转移模型的攻击方法,其主要思想是基于本地模型的梯度生成对抗样本来攻击有相似功能的未知目标模型,这种方法需要使用训练目标模型的训练集;2.基于分数的攻击方法,该方法使用模型的最终分类概率进行攻击;3.基于决策的攻击方法,该方法只需要模型最终输出结果,就可以对目标模型发起攻击。

当前的黑盒方法可以很好的构造攻击样本,让训练好的模型在一些生成的样例中暴露出问题,但是基于此类的方法更多地着重于攻击本身,对于人工智能组件的测试工作而言用例数量和覆盖均有不足,用此方法进行测试其测试结果的可信度较低,并且对于需要进行大规模测试的人工智能组件难以实现自动化。

第二类方法采用白盒方法对以神经网络为代表的人工智能组件进行测试;白盒方法通过获得深度神经网络的内部神经元状态建立优化函数,以最大化神经元覆盖率为目标来生成测试样例。白盒方法的目标函数是预测值与原始标签之间的差异,对该函数进行梯度下降优化,来获得具有不同神经元覆盖情况以及不同预测值的样例。白盒方法的优点在于其建立了更有解释性的覆盖率指标用以指导测试用例生成,但是对于一些无法了解网络结构的场景,白盒方法就无能为力了。

在具体的测试过程中需要面对的问题主要有两个:

一是测试用例评估,测试用例无穷无尽,需要一个指标来评估测试用例是否能够发现被测系统中潜在的缺陷和故障、是否充分能够覆盖待测试的所有功能点。在传统软件的白盒测试中,可以通过语句覆盖、分支覆盖或条件覆盖等覆盖准则来判断测试用例的充分性,在黑盒测试中,由于能掌握的信息只有输入和输出,因此仅能依照测试需求进行一些功能测试,但这些测试的充分性很难说明。

在评估针对人工智能的测试套件质量的方法中,DeepMutation方法借鉴了变异测试的思路,即通过对深度神经网络进行变异,生成与原有网络结构相异的新网络来对测试套件进行测试,并基于该思路提出了相应的测试用例评估指标。实验结果表明,DeepMutation可以对测试用例集的质量进行有效定量评估,并依照评估指标帮助开发人员提高测试数据价值。

二是测试用例生成。现有技术中采用从传统软件测试技术迁移而来的基于覆盖率生成测试用例的方法,覆盖性指标一般从深度神经网络的结构入手,从不同角度规定测试用例集激活的神经元个数以及激活神经元的结构来确定覆盖率,再以覆盖率最大化为目标生成测试用例,该方法需要深入神经网络结构中观测每一个神经元的输出值。还有另一种方法是对抗测试,通过向原本数据添加微小扰动,让数据产生人类难以分辨的变化,却让人工智能组件得到截然不同的输出,此类方法即为对抗方法。对抗方法可通过白盒方法利用神经网络内部信息构建优化函数,如L-BFGS,FGSM算法等都可以快速生成对抗样本,C&W可以绕开防御蒸馏技术对深度神经网络进行攻击;对抗方法也可以通过黑盒方式进行,Brendel等人提出的基于决策的黑盒对抗算法,可以通过边界攻击的方法找到决策边界附近的对抗样本。这些对抗方法都取得了不错的效果。

但是现有技术中没有针对测试用例的功能,功能测试需要通过验证软件行为是否符合预期来判断软件是否达到功能说明书中的要求。因此,测试软件的用例集应尽可能充分,尽可能多地发现组件缺陷。目前,不论是传统测试技术的迁移所做的覆盖率测试,还是对抗测试生成技术,这类技术生成的样本集均无法充分覆盖规格说明书中的功能约束,且存在大量在实际应用场景中不会出现的无效用例。

此外,当样本应用场景局限于模型对抗训练、对抗攻击场景,测试样例就可能无法满足功能测试所必须的充分性和可靠性要求。

发明内容

针对当前人工智能组件的测试用例可能无法充分覆盖功能约束的问题,本发明提出了一种面向人工智能组件的测试用例生成方法,实现了在不清楚被测人工智能组件内部结构的情况下,通过模糊框架指导生成充分覆盖功能约束并且均匀、正确的测试用例,不仅能够检测被测组件是否实现了应有的功能,更能检测出其是否实现了“不应实现的功能”;此外,本发明还提出了针对测试用例集的缩减方法,在保证样例集功能的情况下能够减小样例集规模,降低了测试工作所需的时间成本。

所述的面向人工智能组件的测试用例生成方法,具体步骤如下:

步骤一、针对原始图片,基于条件生成对抗网络cGAN,使用one-hot编码拼接到原始图片生成测试样例;

cGAN的目标函数如下所示:

G(z|y)为生成器函数,D(x|y)为判别器函数;E

步骤二、通过cGAN的损失函数,采取模糊测试方法加入扰动项对生成的测试样例进行扩充。

cGAN的损失函数为:L

L

其中,ε为扰动项,c

L

判别器会给正确条件和真实用例较高分,给正确条件-生成用例和错误条件-真实用例一个低分,让生成器生成的样例逐渐接近真实样本。

扰动项的损失函数为:L

ε

步骤三、通过收益函数来估计扩充后测试样例集的质量,保证样例集满足测试要求。

收益函数F

其中,i=1,2,3,…,m为对应约束功能的用例集;TestCase

评估扩充后测试样例集的质量,采用替代模型上的softmax输出评估结果。

步骤四、构建蜕变关系对满足要求的样例集进行缩减,生成最终面向人工智能组件的测试用例;

蜕变关系包括:

MR1:当一个用例被判定为某一个分类并且置信度极高时,说明该用例处于决策空间中心位置,此时对其施加微小扰动,其分类结果不应该改变;

MR2:当一个用例被判定为某一个分类并且置信度足够高并且与其他被判定为该分类的样例有一定差异时,说明该用例未处于决策空间中心也位处于决策空间边缘,此时对其施加微小扰动,其分类结果不应该改变;

MR3:当一个用例被判定为两个分类的概率接近,说明其处于决策边界,对其进行小幅扰动,会让其结果出现错误;

MR4:当一个用例对于各类的概率接近,说明无法将其分类,其处于决策空间外部,此时对该样本进行扰动,分类结果仍然错误,这些用例为无效用例。

通过MR1筛出的用例是能够测试出被测模型是否实现了预期功能,能够准确分类出较为明确的用例;通过MR2筛出的用例能够测试出被测模型是否具有抵御噪声的能力;MR3则是测试被测模型是否能够抗混淆。通过MR4能够选取出用例集中最具有代表性,高价值的用例。

步骤五、利用可靠性、充分性以及覆盖率三个指标对最终生成的测试用例进行验证;

可靠性描述的是用例集是否准确有效,用例执行结果的正确性是否是可判定的;

充分性则用来描述用例集是否能够发现尽可能多的问题;

覆盖率则是衡量测试用例是否覆盖了所有功能约束。

可靠性指标:g(X

其中,g

充分性指标:通过设计数据级别、模型级别以及程序级别的变异体进行变异测试,由变异测试的结果给出,由被杀除的变异体总数比变异体集合规模得到:

mutant

覆盖性指标:由已覆盖的功能约束数量比功能约束集合总量得出:

R

本发明的优点在于:

1)、一种面向人工智能组件的测试用例生成方法,可以充分覆盖待测组件的功能约束,能够测试到待测组件应有的功能约束,也能测试到待测组件不应有的功能约束。

2)、一种面向人工智能组件的测试用例生成方法,可以实现对图像处理领域神经网络自动化生成测试样例,减少人工生成所需的时间成本。

3)、一种面向人工智能组件的测试用例生成方法,可以实现对于用例集的充分缩减,能够在保证测试用例集功能完善的情况下,减少测试工作所需的时间消耗。

附图说明

图1为本发明一种面向人工智能组件的测试用例生成方法流程图;

图2为现有技术中GANs的基本结构示意图;

图3为本发明cGAN生成的带有标签的MNIST手写数字样例;

图4为本发明使用的加入扰动量的cGAN结构图。

具体实施方式

下面将结合附图和实例对本发明作进一步的详细说明,

当前的人工智能测试手段是将训练集切分一部分作为测试集,在训练结束后进行测试,这样形成的测试集具有和训练集基本相同的数据分布,但是,无法代表更广泛以及真实环境下的数据情况,即便通过增强技术生成一些带有混淆性的新数据,从测试角度而言,这样生成的数据仍然无法充分覆盖说明书中的功能约束,测试后的人工智能也可能达不到充分性和可靠性要求。

基于此,本发明提出了以cGAN为主要样例的生成方法,以模糊框架来指导生成的整体流程,扩充生成用例集,提供隐空间采样约束和训练约束,并设计收益函数来评估用例集丰富度,确保测试用例集的充分性和可靠性。同时,为了解决大测试集下测试预言问题,本发明提出了基于蜕变测试原理的四通用蜕变关系来确保测试预期结果的准确。此外,为了衡量新生成测试样例的充分性和可靠性,提出了一套对于生成样例的评估方法和评估指标,用以保证最后生成测试样例集的质量。

综上,本发明一种面向人工智能组件的测试用例生成方法,包含了测试用例生成、用例集缩减以及用例集评价三部分,实现了针对图像处理领域中神经网络的测试样例自动生成,如图1所示,具体步骤如下:

步骤一、针对原始图片,基于条件生成对抗网络cGAN,使用one-hot编码拼接到原始图片,生成基于功能约束的测试样例;

如图2所示,GANs生成对抗网络通过学习训练集的特征分布,来生成与原有训练集分布相近的新数据,但是GANs仅仅通过随机噪声采样进行生成,没有任何约束限制,因此不携带标签信息。

如图3和图4所示,本发明使用cGAN来接受指定约束,并在现有约束的基础上生成新样例,对于原样例的标签信息,一般将其使用one-hot编码拼接到原始图片中进行新样例生成。

cGAN的目标函数如下所示:

G(z|y)为生成器函数,D(x|y)为判别器函数;E

步骤二、通过cGAN的损失函数,采取模糊测试方法加入扰动项对生成的测试样例进行扩充。

cGAN的损失函数L

判别器会给正确条件和真实用例较高分,给正确条件-生成用例和错误条件-真实用例一个低分,让生成器生成的样例逐渐接近真实样本:

L

生成器损失函数为:

其中,ε为扰动项,c

判别器损失函数为:

在cGAN上,加入扰动项来使生成的样例产生变异,但该变异应保持在一定范围内,不应产生过大的误差,也即不能产生非自然用例;扰动项的损失函数为:L

ε

最终的损失函数表达为:L=L

cGAN生成的样例以非常高的准确率通过待测模型,且基本处于原模型决策范围中心,以cGAN生成的样例为核心,展开对测试样例集的扩充。

步骤三、通过收益函数来估计扩充后测试样例集的质量,保证样例集满足测试要求。

本申请采取模糊测试方法对样例集进行扩充,原有的模糊测试通过对输入样例增加一个随机扰动,然后将扰动后的样例作为扩充加入样例集合,但是随机的扰动无法满足测试工作在决策空间的足够覆盖需求,因此本申请提出收益函数来估计测试样例集的质量,以此保证最终样例集能够满足测试工作的要求。

收益函数F

其中,i=1,2,3,…,m为对应约束功能的用例集;TestCase

收益函数需要保证每个约束的样本决策空间被尽可能的探索,因此对于每个类别的测试用例集合,其方差要尽可能地大。当生成一批用例集时,评估新用例集和原用例集在替代模型上的softmax输出值差异。

替代模型为黑盒测试中的重要概念,其简单表述为:具有相同功能的模型具有相似的决策空间,因此本发明采用替代模型来计算测试用例的输出,以此来代替测试用例在被测模型的决策空间中所处的位置。替代模型需要采用与被测模型相同的训练集,并达到与被测模型相同的预期指标后才能在测试工作中使用。

步骤四、构建蜕变关系对满足要求的样例集进行缩减,生成最终面向人工智能组件的测试用例;

在人工智能的训练过程中,大量的样本能够使模型得到充分地训练,并能在实际工作中获得较好的效果,但是在测试工作中,需要测试集能够反映出人工智能组件存在的问题,大量重复的样本会使测试工作变得冗长而且低效;此外,人工智能的测试预言——即对于给定测试集是否能够给出应有的测试结果也是一个困扰测试工程师的问题。

本发明通过构建蜕变关系对样例集进行缩减,并且由于蜕变关系本质上是等价变换,同时也解决了测试预言的问题;蜕变关系如表1所示,主要有以下四种:

表1

MR1:当一个用例被判定为某一个分类并且置信度极高时,说明该用例处于决策空间中心位置,此时对其施加微小扰动,其分类结果不应该改变;

MR2:当一个用例被判定为某一个分类并且置信度足够高并且与其他被判定为该分类的样例有一定差异时,说明该用例未处于决策空间中心也位处于决策空间边缘,此时对其施加微小扰动,其分类结果不应该改变;

MR3:当一个用例被判定为两个分类的概率接近,说明其处于决策边界,对其进行小幅扰动,会让其结果出现错误;

MR4:当一个用例对于各类的概率接近,说明无法将其分类,其处于决策空间外部,此时对该样本进行扰动,分类结果仍然错误,这些用例为无效用例。

通过MR1筛出的用例是能够测试出被测模型是否实现了预期功能,能够准确分类出较为明确的用例;通过MR2筛出的用例能够测试出被测模型是否具有抵御噪声的能力;MR3则是测试被测模型是否能够抗混淆。通过MR4能够选取出用例集中最具有代表性,高价值的用例。

步骤五、利用可靠性、充分性以及覆盖率三个指标对最终生成的测试用例进行验证;

可靠性描述的是用例集是否准确有效,用例执行结果的正确性是否是可判定的;

充分性用来描述用例集是否能够发现尽可能多的问题;

覆盖率是衡量测试用例是否覆盖了所有功能约束。

可靠性指标包括:正确性:选取所有用例集中具有正确标签的用例比有效用例总数;有效性:有效用例比用例集总数,将二者乘以对应权重得到可靠性指标

g(X

其中,g

x

该指标是用正确用例数目比有效用例集规模,用以评估用例集中具有正确预期结果的比例;

g

该指标使用满足MR4的用例数量比用例集整体规模,用以评估用例集中有效用例的比例;

a为正确性指标在整体可靠性指标计算中的权重,当a越大时,说明正确性指标在整体评价指标中占据较高的权重;

充分性指标:通过设计数据级别、模型级别以及程序级别的变异体进行变异测试,由变异测试的结果给出,由被杀除的变异体总数比变异体集合规模得到:

mutant

覆盖性指标:由已覆盖的功能约束数量比功能约束集合总量得出:

R

实施例:

首先,进行被测人工智能组件的测试样例生成,再对样例集进行缩减以去除无效、重复样例,最终对生成样例集进行评价。

步骤1:替代模型训练。

由于黑盒测试无法感知被测模型的内部情况,因此本实施例采用目标相同、性能相近的替代模型来描述被测模型的决策空间。

该过程需要将被测模型的训练集输入到替代模型中进行训练,直到替代模型的准确率达到目标组件的预期准确率为止。该过程如下所示:

输入为:训练集X

输出为:替代模型f

基于功能约束集R

步骤2:测试样例生成。

测试样例生成遵循模糊测试框架,每一次迭代都在原有测试集的基础上对测试样例进行扰动以生成新样例;具体为:

选定原始样例集X

在原始样例集X

然后,将生成的测试样例加入原有测试样例集TestCase

k次后,如果收益函数F

在每次获得收益函数F

采样过程如下:

输入为:用例集的收益函数F

输出为:隐空间变量z,生成器训练中间模型p;

首先,计算当前用例的收益函数值f,判断收益是否满足f>ε,如果是,则随机采样;否则,根据新生成的采样结果,随机采样t次,并选择其中与原始采样结果差距最大的隐空间变量z;

同时,根据新生成用例的softmax正确性,在比当前中间模型p优秀的集合中随机选取模型参数;

步骤3:用例集缩减。

针对用例集过大导致测试成本过高以及测试预言问题,本实施例提出了基于蜕变关系的用例集缩减技术,以去除大规模用例集中的重复用例以及无效用例,并保证在缩减过程中保持测试集的质量,使其具备与缩减前的用例集等价的测试能力。

本实施例将使用四种蜕变关系,根据每一个功能约束,在该约束下对每一个用例集进行筛选。

对MR1而言,将用例集输入到替代模型中,选取出其中更加接近类中心的用例,即对于当前类别的预测概率高于预期准确率,并且远离边界的用例。

对MR2而言,将用例集输入到替代模型中,选取出其中偏离类中心,但远离决策边界的用例。具体来说,对于一个用例集的softmax输出的最大分类概率超过满足MR3的最大概率,也即50%,并且低于预期准确率之间的用例。

对MR3而言,将用例集输入到替代模型中,选取出其中输出靠近决策边界的所有用例,也即最高的n个分类概率十分接近,无法较为确定的将该用例归为该类别。

对MR4而言,其中的用例无法有效区分,属于无效用例,筛去全部用例。

以上四步依次进行,通过第一步筛出的用例是能够测试出被测模型是否实现了预期功能,能够准确分类出较为明确的用例;通过第二步筛出的用例能够测试出被测模型是否具有抵御噪声的能力;第三步则是测试被测模型是否能够抗混淆。通过四步能够选取出用例集中最具有代表性,高价值的用例。

步骤4,用例集评价;用例集评价从三个角度出发,即充分性,可靠性和覆盖性。

技术分类

06120115631908