Newtank

个人站

欢迎来到我的个人站~


智能软件测试

目录

传统软件和智能软件的差别

传统软件的决策逻辑:人工编写的代码

智能软件的决策逻辑:数据训练的,人难以确认逻辑是如何产出的,通过无法直接理解的DNN和权重的形式表现。

智能软件特征

神经元的路径有无穷多条,其中包含大量无意义路径,有意义的路径由训练数据产生

模糊与变异测试

关键要素

测试输入、测试预言、测试度量

生成测试数据

数据扩增

测试数据存在领域数据稀缺、标注困难、分布不均、隐藏信息干扰等问题,需要额外的数据。

数据扩增通过轻微变换现有数据或创建新的合成图像来得到新数据。

数据变异

语义搜索:通过原测试输入和训练集产生正常的语句,保证测试输入的语义自然

句子变异:通过选出的语句生成测试数据,摆脱预标注、减少误报

一致性判断:减少错误

数据蜕变

旋转等数据变化。包含等价蜕变和非等价蜕变,等价蜕变不改变数据的标签

包括移动、旋转、伸缩、倾斜等矩阵变化与噪点、反色、高光等颜色变化

测试预言

差分测试:对于相同功能的不同模型,其在相同测试集的结果应当是一致的。

测试衡量

对于功能属性上,有神经元覆盖率、神经元边界覆盖、Top-K神经元覆盖等

对于质量属性上,有效率、鲁棒性、倾向性等。

在无领域知识的情况下找到边界:通过少量多次的轻微扰动,直至找到决策变化的临界点

在有领域知识的情况下找到边界:构造临界条件,寻找决策临界点

后门攻击:

  • 污染测试集(对特定特征的数据改变标注)
  • 像正常一样训练模型,将恶意后门注入模型