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)