中文

开发者如何构建单元测试用例?从“AAA”视角的实证研究

软件工程 2025-02-04 v2

摘要

AAA 模式,即安排 (arrange)、执行 (act) 和断言 (assert),为单元测试用例提供统一结构,有助于理解和维护。然而,关于常见实际开发中是否及如何遵循 AAA 结构构建单元测试用例,缺乏深入了解。特别是是否存在偏离 AAA 结构且值得重构的反模式?如果测试用例遵循 AAA 结构,A 块中是否包含设计缺陷?若提出重构 AAA 测试用例设计的建议,开发者会如何反应?他们是否倾向于重构?若不倾向,他们的考虑因素是什么?本研究针对从四个开源项目中随机抽取的 435 个真实单元测试用例进行实证研究。总体而言,71.5% 的测试用例遵循 AAA 结构。我们观察到三种偏离 AAA 结构的反模式,以及 A 块中可能存在的四种设计缺陷。每种问题类型都存在其缺点,并对应相应的重构解决方案。我们提交了 18 个用于修复这些问题的重构建议。收到 78% 的积极反馈支持重构。从拒绝者中我们学习到,投资回报是开发者的关键考虑因素。这些发现为实践者提供了关于如何以 AAA 为导向构建单元测试用例的洞察,也为研究者开发相关技术以强制执行 AAA 结构提供了参考。

关键词

引用

@article{arxiv.2407.08138,
  title  = {How Do Developers Structure Unit Test Cases? An Empirical Study from the "AAA" Perspective},
  author = {Chenhao Wei and Lu Xiao and Tingting Yu and Sunny Wong and Abigail Clune},
  journal= {arXiv preprint arXiv:2407.08138},
  year   = {2025}
}