基于API知识的深度学习框架自动单元测试生成
软件工程
2023-07-04 v1
摘要
许多能够生成对程序具有高覆盖率的单元测试用例的自动单元测试生成工具已被提出。然而,由于许多深度学习API期望遵循特定API知识的输入,这些工具大多在深度学习(DL)框架上无效。为弥补这一差距,我们提出MUTester,通过利用从相应API文档中挖掘的API约束以及从Stack Overflow(SO)中的代码片段挖掘的API使用模式,为深度学习框架的API生成单元测试用例。特别地,我们首先提出一组18条规则用于从API文档中挖掘API约束。然后我们使用频繁项集挖掘技术从SO收集的机器学习API相关代码片段的大规模语料库中挖掘API使用模式。最后,我们利用上述两类API知识来指导现有测试生成器对深度学习框架的测试生成。为评估MUTester的性能,我们首先从四个广泛使用的深度学习框架(即Scikit-learn、PyTorch、TensorFlow和CNTK)收集了1,971个API,并对每个API进一步提取其API知识,即API约束与API用法。给定一个API,MUTester将其API知识与现有测试生成器(例如基于搜索的测试生成器PyEvosuite和随机测试生成器PyRandoop)结合以生成测试该API的测试用例。我们的实验结果表明,MUTester能显著改进相应的测试生成方法,代码覆盖率的提升平均为15.7%至27.0%。此外,它可帮助减少现有测试生成器生成的约19.0%的无效测试。我们与16名开发者的用户研究进一步证明了MUTester在深度学习框架测试用例生成中的实用性。
引用
@article{arxiv.2307.00404,
title = {Automatic Unit Test Generation for Deep Learning Frameworks based on API Knowledge},
author = {Arunkaleeshwaran Narayanan and Nima Shiri harzevili and Junjie Wang and Lin Shi and Moshi Wei and Song Wang},
journal= {arXiv preprint arXiv:2307.00404},
year = {2023}
}