传统软件和智能软件的差别
传统软件的决策逻辑:人工编写的代码
智能软件的决策逻辑:数据训练的,人难以确认逻辑是如何产出的,通过无法直接理解的DNN和权重的形式表现。
智能软件特征
神经元的路径有无穷多条,其中包含大量无意义路径,有意义的路径由训练数据产生
模糊与变异测试
关键要素
测试输入、测试预言、测试度量
生成测试数据
数据扩增
测试数据存在领域数据稀缺、标注困难、分布不均、隐藏信息干扰等问题,需要额外的数据。
数据扩增通过轻微变换现有数据或创建新的合成图像来得到新数据。
数据变异
语义搜索:通过原测试输入和训练集产生正常的语句,保证测试输入的语义自然
句子变异:通过选出的语句生成测试数据,摆脱预标注、减少误报
一致性判断:减少错误
数据蜕变
旋转等数据变化。包含等价蜕变和非等价蜕变,等价蜕变不改变数据的标签
包括移动、旋转、伸缩、倾斜等矩阵变化与噪点、反色、高光等颜色变化
测试预言
差分测试:对于相同功能的不同模型,其在相同测试集的结果应当是一致的。
测试衡量
对于功能属性上,有神经元覆盖率、神经元边界覆盖、Top-K神经元覆盖等
对于质量属性上,有效率、鲁棒性、倾向性等。
在无领域知识的情况下找到边界:通过少量多次的轻微扰动,直至找到决策变化的临界点
在有领域知识的情况下找到边界:构造临界条件,寻找决策临界点
后门攻击:
- 污染测试集(对特定特征的数据改变标注)
- 像正常一样训练模型,将恶意后门注入模型