中文

Mock Deep Testing:面向深度学习数据与模型的分离式开发

软件工程 2025-02-12 v1

摘要

尽管深度学习(DL)已渗透并成为许多关键软件系统不可或缺的组成部分,但当今软件工程研究尚未探索如何分别测试对DL方法有效运行至关重要的数据与模型。独立测试这些组件的主要挑战在于数据与模型之间紧密的依赖关系。本研究探索了这一空白,引入了用于DL应用单元测试的 mock deep testing 方法。为实现单元测试,我们引入了一种设计范式,将工作流分解为独立、可管理的组件,最小化顺序依赖,并将DL的关键阶段模块化。为了对这些组件进行单元测试,我们提出使用 mock 对其依赖关系进行建模。这种模块化方法促进了组件的独立开发与测试,确保在整个开发过程中实现全面的质量保证。我们开发了 KUnit,一个为 Keras 库实现 mock deep testing 的框架。我们通过实证评估了 KUnit 以确定 mock 的有效性。我们对从 Stack Overflow 和 GitHub 获取的 50 个DL程序的评估表明,mock 有效地识别了数据准备阶段的 10 个问题和模型设计阶段的 53 个问题。我们还开展了一项有 36 名参与者使用 KUnit 的用户研究,以感知我们方法的有效性。使用 KUnit 的参与者成功解决了数据准备阶段的 25 个问题和模型设计阶段的 38 个问题。我们的研究结果强调,mock 对象为单元测试的依赖关系提供了轻量级的模拟,有助于早期缺陷检测。最后,为了评估 KUnit 的可用性,我们进行了一项研究后调查。结果表明,KUnit 对DL应用开发者很有帮助,使他们能够在不同阶段有效地独立测试每个组件。

关键词

引用

@article{arxiv.2502.07712,
  title  = {Mock Deep Testing: Toward Separate Development of Data and Models for Deep Learning},
  author = {Ruchira Manke and Mohammad Wardat and Foutse Khomh and Hridesh Rajan},
  journal= {arXiv preprint arXiv:2502.07712},
  year   = {2025}
}

备注

Accepted for publication in the proceedings of the 47th International Conference on Software Engineering (ICSE 2025)