返回
Property-based testing in Python: empirical insights
DOI:10.1007/s10664-026-10953-w.png)
摘要
En 中文
基于属性的测试(PBT)自动生成测试输入以验证程序属性,将开发者的精力从编写示例转向指定不变量。尽管该技术在Python中通过Hypothesis框架获得了普及,但人们对开发者如何在实践中采用和使用它知之甚少。本文报告了三项实证研究。首先,我们分析了244个Python项目中的367个PBT,将它们分为九个属性类别,并量化了它们对Hypothesis构造的使用情况。我们发现测试基准属性占主导地位(29.97%),且PBT通常简洁(中位数14行代码),严重依赖内置策略(75.20%),但也依赖外部(22.62%)和内部(17.17%)策略。其次,我们研究了标记为PBT的213个Stack Overflow帖子,发现开发者面临的主要挑战涉及数据生成策略(36.62%),特别是对于复合和表格数据(24.36%)。最后,我们评估了Hypothesis的自动化测试生成器Ghostwriter,针对我们数据集中的203个测试;只有18.23%可以完全自动化,而大多数需要部分调整(30.05%)或不相容(51.72%)。综合来看,我们的发现为Python中的PBT提供了迄今为止最大的实证表征,突显了开发者采用该技术的困难,并揭示了当前工具支持的局限性。
Keyword:
Property-based testing
Python
Hypothesis
Ghostwriter
Stack overflow
Developer adoption or practices
Automated test generation

