中文

ProbTest:概率程序的单元测试(扩展版)

软件工程 2025-09-03 v1

摘要

由于其随机性质,测试概率程序并不容易。给定输入后,程序可能因程序中的随机选择而产生不同结果。这意味着测试概率程序的预期结果需要多次执行测试,而与此不同,对于确定性程序,单次执行可能就足够每个测试输入。由此提出以下问题:我们应运行概率程序多少次才能有效进行测试?本工作提出一种新颖的黑盒单元测试方法,ProbTest,用于测试概率程序的结果。该方法基于著名组合问题——优惠收集问题的理论。使用该方法,开发人员可以像往常一样编写单元测试,而所需的测试次数将自动确定并具有统计保障。我们将 ProbTest 实现为 PyTest 的一个插件,后者是 Python 程序中著名的单元测试工具。使用该插件,开发人员可以编写类似其他 Python 程序的单元测试,而所需的测试次数则自动处理。我们在 Gymnasium 强化学习库和一个随机数据结构的案例研究中对该方法进行了评估。

关键词

引用

@article{arxiv.2509.02012,
  title  = {ProbTest: Unit Testing for Probabilistic Programs (Extended Version)},
  author = {Katrine Christensen and Mahsa Varshosaz and Raúl Pardo},
  journal= {arXiv preprint arXiv:2509.02012},
  year   = {2025}
}

备注

Pre-print of paper to appear in the proceedings of the 23nd edition of the International Conference on Software Engineering and Formal Methods (SEFM'25)