返回
Tuning Random Generators Property-Based Testing as Probabilistic Programming
DOI:10.1145/3763082.png)
摘要
En 中文
基于属性的测试通过在随机生成的输入上评估软件,将其与可执行规范进行验证。PBT用户生成测试输入的标准方式是通过生成器,这些生成器描述了如何通过随机选择来采样测试输入。为了在测试输入上实现良好的分布,用户必须调整其生成器,即决定这些个别随机选择的权重。不幸的是,要理解如何选择个别生成器权重以实现所需分布非常困难,因此目前这一过程既繁琐又限制了实际可实现的分布范围。在本文中,我们开发了用于生成器自动和离线调整的技术。给定一个具有未确定符号权重的生成器和一个目标函数,我们的方法会自动学习这些权重值以优化目标。我们描述了有用的目标函数,允许用户(1)针对所需分布和(2)提高其测试用例的多样性和有效性。我们已在一种新颖的离散概率编程系统LOADED DICE中实现了我们的方法,该系统支持微分和参数学习,并将其用作生成器的语言。我们通过实证证明,我们的方法在根据指定的目标函数优化生成器分布方面是有效的。我们还对PBT基准进行了全面评估,证明当生成器针对多样性和有效性自动调整时,其在缺陷查找方面表现出3.1-7.4倍的速度提升。
Keyword:
Random Generation
Property-Based Testing
Probabilistic Programming
Automatic Differentiation

