探索测试模拟的挑战:来自 StackOverflow 的开发者问题与见解
软件工程
2025-07-01 v2
摘要
模拟是一种常见的单元测试技术,用于通过替换真实依赖为简化实现来简化测试、减少不稳定性并提高覆盖率。尽管在开源软件项目中广泛使用,但对开发者如何使用模拟以及面临的挑战有 limited 了解。在本 collaborative 研究中,我们分析了 STACKOVERFLOW 上与模拟相关的 25,302 个问题,以识别开发者所面临的挑战。我们使用潜在 Dirichlet 分配 (LDA) 进行主题建模,识别出 30 个关键主题,并将主题归类为五个关键类别。因此,我们分析了每个类别的年度概率和相对概率,以理解模拟相关讨论的演变。趋势分析显示,诸如高级编程等类别在 2009 年至 2012 年间达到峰值,但随后持续下降,而模拟技术和外部服务等类别则持续占主导地位,凸显了开发者优先事项的演变以及持续的技术挑战。我们的发现还显示,主题流行度与其难度成反比。诸如框架选择等热门主题具有较低难度且解决速度较快,而复杂的 HTTP 请求和响应则更可能 remain 未解答且需要更长时间解决。我们将问题分类为 How、Why、What 和 Other,发现超过 70% 为 How 问题,尤其在文件访问和 API 等实际领域,表明强烈需要实现指导。Why 问题在错误处理情境中更为常见,反映了调试中的概念性挑战,而 What 问题则罕见且主要涉及理论讨论。这些见解为改进开发者支持、工具和教育内容提供了有价值的指导,尤其是在模拟和单元测试方面。
关键词
引用
@article{arxiv.2505.08300,
title = {Exploring Challenges in Test Mocking: Developer Questions and Insights from StackOverflow},
author = {Mumtahina Ahmed and Md Nahidul Islam Opu and Chanchal Roy and Sujana Islam Suhi and Shaiful Chowdhury},
journal= {arXiv preprint arXiv:2505.08300},
year = {2025}
}