DocTer:基于文档引导的模糊测试用于深度学习 API 函数测试
软件工程
2024-03-07 v4
摘要
输入约束对许多软件开发任务都很有用。例如,函数的输入约束能够生成有效输入,即遵循这些约束的输入,从而更深入地测试该函数。深度学习(DL)库的 API 函数具有 DL 特定的输入约束,这些约束在非正式的自由格式 API 文档中描述。现有的约束提取技术对于提取 DL 特定的输入约束效果不佳。为填补这一空白,我们设计并实现了一种新技术 DocTer,用于分析 API 文档以提取 DL API 函数的 DL 特定输入约束。DocTer 具有一种新颖算法,可自动构建规则,从 API 描述的依存句法分析树形式的句法模式中提取 API 参数约束。随后将这些规则应用于流行 DL 库中的大量 API 文档以提取其输入参数约束。为展示所提取约束的有效性,DocTer 利用这些约束自动生成有效与无效输入来测试 DL API 函数。我们在三个流行 DL 库(TensorFlow、PyTorch 和 MXNet)上的评估表明,DocTer 提取输入约束的精确率为 85.4%。DocTer 从 174 个 API 函数中检测出 94 个缺陷,包括一个此前未知的安全漏洞(现已被记录于 CVE 数据库中),而无输入约束的基线技术仅检测出 59 个缺陷。94 个缺陷中的大多数(63 个)此前未知,其中 54 个在我们报告后已被开发者修复或确认。此外,DocTer 检测出 43 处文档不一致,其中 39 处已被修复或确认。
引用
@article{arxiv.2109.01002,
title = {DocTer: Documentation Guided Fuzzing for Testing Deep Learning API Functions},
author = {Danning Xie and Yitong Li and Mijung Kim and Hung Viet Pham and Lin Tan and Xiangyu Zhang and Michael W. Godfrey},
journal= {arXiv preprint arXiv:2109.01002},
year = {2024}
}
备注
This paper is accepted by the 31st ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA) in 2022