Property-based testing has been previously proposed for quantum programs in Q# with QSharpCheck; however, this implementation was limited in functionality, lacked extensibility, and was evaluated on a narrow range of programs using a single property. To address these limitations, we propose QuCheck, an enhanced property-based testing framework in Qiskit. By leveraging Qiskit and the broader Python ecosystem, QuCheck facilitates property construction, introduces flexible input generators and assertions, and supports expressive preconditions. We assessed its effectiveness through mutation analysis on five quantum programs (2-10 qubits), varying the number of properties, inputs, and measurement shots to assess their impact on fault detection and demonstrate the effectiveness of property-based testing across a range of conditions. Results show a strong positive correlation between the mutation score (a measure of fault detection) and number of properties evaluated, with a moderate negative correlation between the false positive rate and number of measurement shots. Among the most thorough test configurations, those evaluating three properties achieved a mean mutation score ranging from 0.90 to 0.92 across all five algorithms, with the false positive rate between 0 and 0.04. QuCheck identified 36.0% more faults than QSharpCheck, with execution time reduced by 81.1%, despite one false positive. These findings underscore the viability of property-based testing for verifying quantum systems.
翻译:先前已有研究提出在Q#中通过QSharpCheck对量子程序进行基于属性的测试,但该实现功能有限、缺乏可扩展性,且仅使用单一属性在有限范围的程序上进行了评估。为突破这些局限,我们提出了QuCheck——一个在Qiskit中增强的基于属性测试框架。通过利用Qiskit及更广泛的Python生态系统,QuCheck简化了属性构建流程,引入了灵活的输入生成器与断言机制,并支持表达力更强的前置条件。我们通过对五个量子程序(2-10个量子比特)进行变异分析来评估其有效性,通过调整属性数量、输入参数和测量次数来考察这些因素对故障检测的影响,并验证基于属性的测试方法在不同条件下的有效性。结果显示:变异分数(衡量故障检测能力的指标)与评估的属性数量呈显著正相关,而误报率与测量次数呈中等程度负相关。在最全面的测试配置中,评估三个属性的测试方案在所有五种算法上获得的平均变异分数介于0.90至0.92之间,误报率介于0到0.04之间。尽管出现一次误报,QuCheck比QSharpCheck多检测出36.0%的故障,且执行时间减少了81.1%。这些发现印证了基于属性的测试在验证量子系统方面的可行性。