System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于符号执行的DNN测试用例生成方法技术_技高网
当前位置: 首页 > 专利查询>四川大学专利>正文

一种基于符号执行的DNN测试用例生成方法技术

技术编号:40398805 阅读:4 留言:0更新日期:2024-02-20 22:25
本发明专利技术公开了一种基于符号执行的DNN测试用例生成方法。该方法首先将神经元覆盖准则转化为线性约束,然后在符号执行过程中使用线性规划求解器求解,生成具有高覆盖率的测试用例,通过有效性检查后,再判断是否使DNN做出错误分类,若未能分类出错则进入第二阶段;在第二阶段中,首先将DNN模型转化为命令式程序,识别出测试用例的重要像素,然后基于符号执行构建约束,求解生成新的测试用例,确保新测试用例不仅能够诱导模型产生错误分类,还能保持原有的激活模式。该方法生成的测试用例具有高覆盖率,能够全面探索DNN内部状态,同时能使DNN做出错误判断,进而揭示模型在实际应用中可能出现的错误。该方法在实际应用中具有良好的效果。

【技术实现步骤摘要】

本专利技术属于软件工程中的软件测试领域,尤其涉及一种基于符号执行的深度神经网络测试用例生成方法。


技术介绍

1、近年来,深度学习作为机器学习领域备受瞩目的一个分支,受到了学术界和工业界的广泛关注,它在自动驾驶、语音合成、医学影像诊断等领域取得了显著的应用成果,因此对深度神经网络(deep neuron network,dnn)的可靠性和鲁棒性提出了更高的要求。从软件工程的角度来看,dnn仍然符合软件的定义,同样需要经过严格的测试,以确保其在各种输入条件下的稳定性和可靠性,然而dnn模型的复杂性和黑盒性给软件测试带来了新的挑战。与传统软件测试类似,测试dnn也需要保证足够多的测试用例探索到网络内部各个状态,触发边界行为,以保证测试的充分性。目前的dnn测试用例生成方法要么难以达到高的神经元覆盖率,进而无法全面探索dnn内部状态;要么难以使dnn模型做出错误分类。因此如何有效生成既能检测dnn潜在错误又能高效覆盖网络内部状态的测试用例,已经成为一项具有挑战性的任务。


技术实现思路

1、本方法运用符号执行技术,提出了一种dnn测试用例生成方法,首先以覆盖率为导向生成测试用例,然后修改像素使模型分类出错,生成的测试用例不仅具有高覆盖率,同时能够导致dnn模型错误分类。具体包括以下步骤:

2、步骤1以覆盖率为导向生成测试用例;

3、若测试用例达到高神经元覆盖率,可以更容易地发现潜在的神经网络中的错误。因为未覆盖的神经元可能隐藏着未被发现的问题,而覆盖更多的神经元可以提高错误检测的机会。所述步骤1包含以下步骤:

4、步骤1.1输入原始用例以及待测dnn;

5、步骤1.2覆盖准则转化为线性约束;

6、将覆盖准则形式化表达为覆盖要求,然后转化为线性约束形式。提供的覆盖准则有神经元覆盖,符号-符号覆盖,神经元边界覆盖,强神经元覆盖。这些不同的覆盖要求对应生成不同的测试用例。

7、步骤1.3基于符号执行生成测试用例;

8、在使用符号执行技术生成测试用例的过程中,使用线性规划求解器求解,如果存在可行解,则生成满足要求的新测试用例。为确保生成的测试用例在输入空间上与原始用例的差异尽可能小,添加了一个距离约束目标,因求解器为线性规划求解器,距离度量必须满足线性性质,因此本方法选取了切比雪夫距离(即l∞-范数)。

9、步骤1.4检查测试用例有效性;

10、计算新生成的测试用例与原始测试用例之间的距离,检查测试用例有效性。

11、步骤1.5判断是否使dnn错误分类;

12、判断生成的测试用例,是否使模型错误分类,若使dnn错误分类,则将测试用例加入到最终测试用例集合,否则执行步骤2。

13、步骤2以dnn错误分类为导向生成测试用例;

14、通过生成能够让dnn产生错误分类的测试用例,进而揭示在实际应用中可能出现的错误。所述步骤2包含以下步骤:

15、步骤2.1dnn转化成命令式程序;

16、将dnn转化成c语言程序,以便进行进一步的分析和测试。神经网络中的路径可以被视为转化后程序中的路径,每个执行的分支对应于相应的神经元节点是否被激活。

17、步骤2.2识别重要像素;

18、输入步骤1生成的测试用例,计算每个输入像素对于输出变量的系数,为每个输入像素分配重要性分数,然后根据重要分数从高到低对像素进行排序。排序前10%的像素即为重要像素,修改这些重要像素更容易使dnn出错。

19、步骤2.3基于符号执行构建约束;

20、使用符号执行技术探索程序路径,构建约束(1):与原始用例具有不同的标签;约束(2):与原始用例具有相同的激活模式,最终约束为约束1和2的并集。

21、步骤2.4修改像素生成测试用例;

22、求解步骤2.3中的约束,得到满足要求的像素,然后修改对应像素值,生成新测试用例,将测试用例加入到最终测试用例集合。由于其修改的像素点较少,生成的新测试用例与原始测试用例之间的差异较小。

23、本方法基于符号执行技术生成深度神经网络测试用例,首先将神经元覆盖准则转化为线性约束,然后在符号执行过程中使用线性规划求解器求解,生成具有高覆盖率的测试用例,通过有效性检查后,再判断是否使dnn做出错误分类,若未能分类出错则进入第二阶段;在第二阶段中,首先将dnn模型转化为命令式程序,识别出测试用例的重要像素,然后基于符号执行构建约束,求解生成新的测试用例,确保新测试用例不仅能够诱导模型产生错误分类,还能保持原有的激活模式。该方法生成的测试用例具有高覆盖率,能够全面探索dnn内部状态,同时能使dnn做出错误判断,进而揭示模型在实际应用中可能出现的错误。该方法在实际应用中具有良好的效果。

本文档来自技高网...

【技术保护点】

1.一种基于符号执行的DNN测试用例生成方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的方法,其特征在于,所述步骤1.2覆盖准则转化为线性约束,进一步包括:

3.根据权利要求1所述的方法,其特征在于,所述步骤1.3基于符号执行生成测试用例,进一步包括:

【技术特征摘要】

1.一种基于符号执行的dnn测试用例生成方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的方法,其特征在于,所述步骤1.2覆...

【专利技术属性】
技术研发人员:杨秋辉赵明敏
申请(专利权)人:四川大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1