量子突变发生器框架
项目描述
Muskit:用于量子软件测试的突变分析工具
描述
量子软件测试是一个新的研究领域。因此,缺乏基准程序和错误存储库来评估测试技术的有效性。为此,量子突变分析侧重于使用突变算子系统地生成一组错误版本的量子程序,称为突变体。这种错误版本的量子程序可以用作评估测试套件中测试用例质量的基准。在这里,我们托管了一个名为 Muskit 的工具——一种用于以 IBM 的 Qiskit 语言编码的量子程序的量子突变分析工具。Muskit 在量子程序的门上实现了一组突变算子和一组选择标准,以减少要生成的突变体的数量。此外,Muskit 允许在突变体上执行测试用例并生成测试结果。Muskit 作为命令行应用程序、GUI 应用程序以及 Web 应用程序提供。描述 Muskit 及其特性的论文的预印本可以从在这里。
麝香猫的建筑
扩大
Muskit 可以通过两种方式扩展:
- 轻量级扩展机制:直接在配置文件(QuantumGates.py)中指定新的门,由Muskit读取生成突变体;
- 也可以从 GitHub 上查看 Muskit 的代码并对其进行扩展。
如何使用麝香猫?
假设:
- 代码必须以顺序方式构造,没有任何函数定义、主函数或子函数。
- 量子比特应该声明一次。
- 为了正确测量所有量子比特,必须定义相等数量的经典比特。
此处提供了量子随机存取存储器 (QRAM) 的示例电路。
配置文件
主要配置文件如下所述。请注意,在每个文件中,我们列出了所需的变量及其可能的有效值。
量子门.py
QuantumGate.py 有两个目的:1)在 MutantsGenerator 中配置 Muskit 使用量子门;2)指定Muskit使用的新实现的门。此处提供了示例文件。
可以在以下五类中指定门:
- AllGates =(“x”、“h”、“p”、“t”、“s”、“z”、“y”、“id”、“rx”、“ry”、“rz”、“sx” , "swap", "rzz", "rxx", "cx", "cz", "ccx", "cswap") # 目前支持的所有门
- OneQubit =(“x”、“h”、“p”、“t”、“s”、“z”、“y”、“id”、“rx”、“ry”、“rz”、“sx” ) # 影响一个量子位的所有支持的门
- TwoQubits = ("swap", "rzz", "rxx", "cx", "cz") # 影响两个量子位的所有支持门
- MoreThanTwoQubit = ("ccx", "cswap") # 影响两个以上量子位的所有支持门
- PhaseGates = ("p", "rx", "ry", "rz", "rzz", "rxx") # 所有支持的影响量子位相位的门。它需要用户指定要使用的准确相位值,即 0.0 到 360.0 之间的值
用户可以在此处查阅 Qiskit 文档以阅读每个门的描述。
生成器配置文件
此配置文件为 MutantsGenerator 组件提供说明。此处提供了示例文件。
特别是,它允许用户指定在生成突变体时将考虑的各种选择标准。可能的选项是:1)选择所有突变体;2) 设定产生突变体数量的上限;3)根据算子类型(即添加、删除或删除)选择要生成的突变体;4)根据门类型(一个量子位或多个量子位)选择要生成的突变体;5) 选择电路上的精确门进行替换和删除;6) 选择特定位置以添加新门。
执行器配置文件
- 此配置向 MutantsExecutor 组件提供指令,这些指令将被考虑用于执行突变体。此处提供了示例文件。
特别是,可以指定测试用例必须执行的次数,以说明量子程序的概率性质。此外,如果用户没有要执行的测试用例,用户可以设置一个变量,即 allInputs 为真。在这种情况下,将使用所有可能的输入(即所有输入覆盖标准)执行突变体。如果此变量设置为 false,则用户必须在 testcase.py 文件中指定测试用例。
分析器配置文件
这是测试分析器的配置文件。此处提供了 QRAM 程序的示例文件。
特别是,需要为统计检验指定选择的显着性水平,例如 p 值 = 0.05。此外,用户还必须指定应该用作输入的量子比特以及应该测量的量子比特。
程序规范和测试用例
测试用例.py
在这个文件中,可以指定 Muskit 对突变体执行的测试用例。测试用例只是电路的初始化。此处提供示例
格式为:inputs = ("001","101","110"),其中我们有三个测试用例 001、101 和 110 将用于测试。
程序规格
测试分析器需要此文件来确定使用测试用例杀死突变体。对应于 QRAM 的示例文件可在此处获得。简单地说,我们为每个输入指定其对应的输出及其相关的预期概率。
为了确定一个突变体是否被杀死,Muskit 实施了两种来自Quito的测试预言:1) 根据程序规范,观察到的输出是否正确。如果不是,突变体被杀死;2)如果与输入对应的所有观察到的输出都是有效的,那么我们将它们观察到的概率与程序规范文件中指定的概率进行比较。如果差异具有统计学意义(即,p 值低于所选显着性水平),则杀死突变体。
麝香猫实现
Muskit 在下面描述的以下三种实现中可用:
命令行
命令行版本具有支持的所有功能,并且用于实验更加灵活。特别是,使用了以下两个命令。
- 突变体生成:python3 ComandMain.py 创建 generatorConfig.py circuit.py
- 突变体执行:python3 ComandMain.py 执行 executorConfig.py testCases.py *
第一个命令为提供的电路“circuit.py”生成突变体。请注意,根据“circuit.py”的位置,可能需要提供文件的完整路径。第二个命令对当前目录中的所有突变体执行“testcases.py”中指定的所有测试用例。用户可以指定生成的突变体所在目录的完整路径。
通过上述配置文件,用户可以根据自己的特定需求配置突变生成器和突变执行器。
图形用户界面
- GUI 的屏幕截图如下所示:
GUI 有两个主要面板,一个用于突变体生成,第二个用于突变体执行。
- 突变体生成:用户可以: 1)指定将产生突变体的量子程序;2) 生成的突变体将输出的目的地;3) Muskit 可以用来产生突变体的各种选择标准。通过 GUI,可以选择 a) 所有突变体;b) 对要生成的突变体的最大数量进行限制;c) 基于运算符类型的选择(即添加、删除或删除);d) 基于门类型(一个量子位或多个量子位)的选择;e) 选择电路上的精确门以进行替换和删除, f) 选择添加新门的位置。
- 突变体执行:用户可以'1)选择要执行的突变体;2) 指定保存结果的位置;3) 每个测试用例的重复次数;4) 指定测试用例。
此外,用户还可以在 QuantumGate.py 文件中指定门(例如,hadmard、CNOT 等)以指示 Muskit 使用哪些门来生成突变体。
在线的
Muskit 的在线版本可在此处获得:Web 应用程序 在线仅允许用户生成突变体并且不支持执行。对于生成,用户可以: 1) 指定将生成其突变体的量子程序;3) Muskit 可以用来产生突变体的各种选择标准。可以选择 a) 所有突变体;b) 对要生成的突变体的最大数量进行限制;c) 基于运算符类型的选择(即添加、删除或删除);d) 基于门类型(一个量子位或多个量子位)的选择。此处提供了屏幕截图:
视频演示
视频演示可在此处获得。
实验数据
可以在此处下载包括量子程序和程序规范在内的实验数据。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。