Errors in quantum programs are challenging to track down due to the uncertainty of quantum programs. Testing is, therefore, an indispensable method for assuring the quality of quantum software. Existing testing methods focus only on testing quantum programs with quantum circuits or single subroutines and, therefore, cannot effectively test quantum programs with multi-subroutines. In this paper, we first discuss several critical issues that must be considered when testing multi-subroutine quantum programs and point out the limitations and problems with existing testing methods. We then present a novel framework for testing multi-subroutine quantum programs that allow for both unit and integration testing. Our framework includes two novel test coverage criteria for the equivalent class partition of quantum variables to guide our testing tasks and techniques to test quantum programs with several common patterns. We also discuss how to generate test cases based on our framework. To evaluate the effectiveness of our testing framework, we implemented a tool called QSharpTester for testing Q\# programs with multiple subroutines. We used it to conduct experiments on hundreds of mutation programs deriving from seven original Q\# programs. The experimental results show that our testing methods can deal with broader types of quantum programs than existing ones and perform well on almost all faulty mutation programs.
翻译:量子程序错误难以追踪, 原因是量子程序的不确定性。 因此, 测试是保证量子软件质量的一个不可或缺的方法。 现有的测试方法仅侧重于用量子电路或单一子例程测试量子程序, 因此无法有效地测试多子例程的量子程序。 在本文中, 我们首先讨论在测试多子子量子程序时必须考虑的几个关键问题, 并指出现有测试方法的局限性和问题 。 然后我们提出了一个用于测试允许单位和集成测试的多子例量子程序的新框架。 我们的框架包括两个新型的量子变量等级分布测试覆盖标准, 以指导我们用几种共同模式测试量子程序的任务和技术。 我们还讨论如何根据我们的框架生成测试案例。 为了评估我们的测试框架的有效性, 我们应用了一个名为 QSharp Tester 的工具, 来测试 ⁇ 程序。 我们用它来对来自七个原始程序 的数百个突变方案进行实验。 我们的实验结果显示, 我们的测试方法可以处理比现有程序更广大的量子程序, 并运行更宽的程序。