深度学习系统测试技术
现有的深度学习系统的测试方法主要采用大量手动标记的测试样本来度量深度学习系统的准确率、损失率和性能等。这种类似于传统软件中的随机测试方法并不能有效地发现可能出错的极端行为。与传统的软件不同,深度学习的决策逻辑是从训练样本中学习而成,这种黑箱模式使得极端场景的错误行为比传统软件更难以预测和解释。因此,传统安全攸关软件的测试方法很难直接用于深度学习这种数据驱动构建的决策系统。如何在现有软件测试的基础上,针对深度学习系统特征进行创新性改造、进一步融合前沿的机器学习测试样本生成技术,构建系统的深度学习测试方法,具有重要的理论意义和应用价值。
在传统软件测试领域,学术界对如何通过测试保证软件的质量进行了大量的研究并取得了诸多成果。但在深度学习领域,神经元网络的计算和运行方式完全不同于传统的软件,传统测试技术,如变异测试,不能直接用于解决深度学习软件系统中的测试充分性问题。蜕变测试关注软件输出的关系而不是软件的具体实现,可以直接应用于深度学习测试中。深度学习中的对抗样本生成技术如何与传统软件测试结合没有得到充分的研究。这些方法的融合,并且基于深度学习的特征研究系统的软件测试方法,才能确保其高可靠性,使得深度学习应用于安全攸关系统成为可能。
为了确保深度学习在安全攸关系统高可靠性,我们需要一套系统的方案生成测试样本和评估其测试充分性。由于深度学习软件和传统软件的差异性,因而需要在原有测试方法的基础上进行创新性的改进和融合,如下图所示。
基于蜕变关系(Metamorphic
Relation)的测试样本生成技术,我们的研究主要集中在自动驾驶领域,因为自动驾驶是目前非常热门,深度学习技术应用非常密集,同时也是高度生命安全攸关的领域。同时我们的技术又具有一定的通用性:即只要合理地运用蜕变测试的技术,那么研究人员就可以很方便地把自动驾驶的应用经验迁移到其他领域。通过对自动驾驶领域知识的学习(交通规则和道路状况知识),分析在同一场景中不同的状态变化,从两个方面构建蜕变关系:非等价蜕变关系、等价蜕变关系。
基于等价蜕变关系构建测试样本,我们从自动驾驶的领域知识中获取等价蜕变关系后,以天气背景为例,我们获取原始的测试输入图像后,可以用训练好的CycleGAN模型为原始图片添加可替换的天气背景效果,然后看自动驾驶系统对该输入做出的反应是否正确(此时应该和原输入一致)。以转向角度为例,天气的变化比不会影响汽车行进路线,所以蜕变后,转向角度不应发生改变。
基于非等价蜕变关系构建测试样本,我们从自动驾驶的领域知识中获取非等价蜕变关系后,同样以天气背景为例,利用模型以天气背景为例,观察自动驾驶系统的反应。以速度为例,天气变化后,速度发生改变(晴天和雪天汽车行驶速度应有不同)。
通过了解神经元连接与运算的基本原理,如果想对神经元进行变异,可以从神经元自身的增减、神经元的权重值、神经元的偏移值、神经元的激活函数、输入层的维数等方面对神经元进行变异。
神经元变异技术可以用来作为深度学习软件测试充分性的度量。当备用的测试样本集没有杀死变异技术生成的所有的神经元变异体时,测试管理人员可以要求测试人员想尽一切办法尽可能地寻找或生成更多更有效的测试样本,我们计划研究的基于蜕变关系生成测试输入技术和基于神经元激活多样化生成对抗样本技术,都可以很好地补充测试样本。
上述方法是针对通用深度神经网络的变异,构造的是通用变异算子。由于深度神经网络在不同的领域都有很好的应用,所以我们认为还存在一类领域变异算子,即对特定领域的深度神经网络进行变异的算子。这种变异算子和具体模型有关,我们在研究中发现不同的测试样本会激活不同的神经元,假如一个通用变异算子A和B,能杀死B的测试集是完全或部分包含能杀死A的测试集,此时我们认为B算子的效率是不佳的,一定程度上来说是冗余的。
我们通过冗余差分法来生成新的变异算子,这是一种通过两个已有变异体的测试集来得到新的变异算子的方法。我们通过比对两个变异体对应的测试集中不同测试样本对模型中神经元激活的不同,从而找出不同测试集对模型中神经元影响不一样的神经元集合,这样的神经元集合是和领域相关连的,深度网络应用在不同领域会产生不同的受影响神经元集合,此时我们对此特别的神经元集合进行变异,就可以有效地模拟出特定领域的深度神经网络的可能潜在缺陷。用上述生成的领域神经网络变异算子来生成模型变异体,并且用来监督测试的充分性可以很好地弥补通用变异算子的缺陷和局限。
移动应用智能化测试技术
在传统的移动应用测试方法中,人类编写测试用例和机器自动化生成测试数据通常是分离的。本技术基于可理解信息融合的人机协同移动应用测试框架,通过人机可理解信息建立起人类和机器之间的联系,并通过协同-反馈机制使得人类的领域知识能够被机器使用,同时将机器产生的测试信息以一种人类可直接理解的方式进行呈现,进而实现人类和机器协同工作,充分发挥各自的优势,提高移动应用的测试效率。
移动应用测试方法结合了流行的自动化测试手段、远程真机调试、脚本录制——回放以及众包测试等多项移动测试专项技术。其中多项技术是对于流行的开源测试框架或工具的深度二次开发,赋予流行的移动测试技术更高的可用性和优秀的兼容性,该技术所依赖的慕测企业版平台构建了一个先进、全面、完善的移动测试生态系统。
该技术所基于的慕测企业版平台现在已经具备众包测试、移动应用自动化测试以及远程真机调试的功能。目前该技术依托的慕测企业版平台已在广东拓思软件科学园、国家软件产品质量监督检验中心(江苏)、南京南瑞集团等多家软件企业园区实施并投入使用。
移动测试的自动化测试部分是对于优秀的主流自动化测试框架Appium进行的深度二次开发,进而提出的一种基于人工辅助的Android半自动化测试方法。该方法主要依靠Appium测试框架对Android移动应用进行自动化测试,主体是一个深度优先遍历策略的算法,在测试过程中到达特定场景时,会将已有的人工测试脚本作为先验知识用于测试中的输入,以实现一个深层次,高覆盖的自动化测试。此外,测试期间会监测测试设备的各项性能指标,并在慕测企业平台上对特定应用在不同设备机型上产生的测试数据进行全面的统计分析。
Appium是一个开源的自动化测试框架,采用了典型的C/S架构,由服务器(PC端)以请求的方式向客户机(移动端)发送测试指令。此外,该技术中运用了ADB(Android Debug Bridge,调试桥)指令获取Android移动应用的安装、卸载情况以及测试过程中CPU占用、流量消耗、内存占用等性能信息。使用Graphviz工具绘制了测试遍历生成树,输出易于理解的应用页面结构和自动化遍历的遍历过程。
成果合作单位情况
|
序号
|
单位名称
|
通讯地址
|
邮政编码
|
联系人
|
联系人电话
|
1
|
南京慕测信息科技有限公司
|
南京市广州路37号江苏科技大厦1901
|
210000
|
陈振宇
|
13851687250
|
|