测试覆盖说明#
本页介绍 UnifiedQuantum 的测试体系:测试框架、文件组织、各模块的测试方式与覆盖范围,以及如何运行测试和 CI 集成。
什么时候进入本页#
你想知道项目有哪些测试、覆盖了哪些模块
你在开发新功能,需要了解如何编写或运行测试
你在排查问题,想确认某个模块是否有对应的测试
测试框架#
框架:pytest
测试目录:
uniqc/test/配置文件:
pytest.ini(项目根目录)
测试函数命名规则(由 pytest.ini 中的 python_functions 配置):
test_*:被 pytest 自动收集的标准测试run_test_*:被 pytest 自动收集的测试入口(兼容历史命名)
运行测试#
# 运行全部测试
pytest uniqc/test/ -v
# 运行指定模块测试
pytest uniqc/test/test_simulator.py -v
# 运行测试并生成覆盖率报告
pytest uniqc/test/ --cov=uniqc --cov-report=term-missing -v
注意:部分随机回归测试(
test_random_*)依赖qiskit、qiskit-aer、qutip等外部包,需额外安装。
逐模块测试覆盖#
模块 |
测试文件 |
测试方式 |
覆盖范围 |
|---|---|---|---|
simulator |
|
单元测试 |
噪声模拟器( |
originir |
|
单元测试 + 随机回归 |
解析器:随机生成 OriginIR → 解析 → 重建 → 模拟结果一致性验证;密度矩阵后端与 QuTip 对比 |
qasm |
|
单元测试 + 随机回归 + Benchmark |
QASM 解析与重建一致性;statevector/density_matrix 后端与 Qiskit 对比;shots 采样与 Qiskit 对比;QASMBench 兼容性验证 |
transpiler |
|
单元测试 |
|
analyzer |
|
单元测试 |
结果适配器工具函数基本验证 |
circuit_builder |
|
集成测试 |
电路构建基本功能(iswap 等特殊门操作) |
demos |
|
集成测试 |
示例代码( |
各测试文件详细说明#
test_simulator.py#
测试模拟器的计算正确性,主要覆盖:
噪声模拟器测试:构建含噪声量子线路,验证
OriginIR_NoisySimulator在 statevector 和 density_matrix 两种后端下的结果自定义错误模型:测试
BitFlip、PhaseFlip、Depolarizing、TwoQubitDepolarizing、AmplitudeDamping等预设错误模型
test_originir_parser.py#
验证 OriginIR 解析器的正确性:
随机生成 OriginIR 代码 → 解析为
Circuit对象 → 重新导出 OriginIR → 比较两次模拟结果确保解析-重建往返(round-trip)不丢失语义信息
test_random_OriginIR.py#
随机回归测试,与 QuTip 交叉验证:
随机生成多门组合线路,分别用 UnifiedQuantum 和 QuTip 模拟
比较 density matrix 结果的一致性
支持含噪声线路的对比测试
test_qasm_parser.py#
验证 QASM 解析器的正确性:
随机生成 QASM 代码 → 解析 → 重建 → 模拟结果一致性验证
与 OriginIR 解析器类似的 round-trip 测试策略
test_random_QASM.py#
随机回归测试,与 Qiskit 交叉验证:
statevector 对比:UnifiedQuantum 与 Qiskit statevector 模拟结果对比
density matrix 对比:UnifiedQuantum density matrix 后端与 Qiskit 对比
QuTip 对比:density matrix 与 QuTip 结果一致性验证
test_random_QASM_measure.py#
Shots 采样测试:
UnifiedQuantum 与 Qiskit 的 shots 采样结果对比
验证测量概率分布的统计一致性
test_QASMBench.py#
QASMBench 基准测试兼容性:
加载 QASMBench 数据集(
.pkl)解析、转译 QASM 电路并验证模拟结果
test_transpile.py#
转译工具测试:
plot_time_line:验证脉冲序列 JSON 的解析和可视化
test_result_adapter.py#
结果适配器工具函数的基本验证。
test_general.py#
电路构建集成测试:
验证
sx、xy等特殊门操作基本的模拟器初始化和状态验证
test_demos.py#
示例端到端测试:
Dummy 模式(
submit_task(..., dummy=True))的完整工作流:创建配置 → 构建线路 → 提交任务 → 获取结果验证示例代码可正确运行
CI 集成#
项目有两套 CI workflow 涉及测试:
1. Build-and-test(build_and_test.yml)#
触发:push/PR 到 main
环境:Ubuntu(gcc/clang)+ Windows(MSVC)
内容:C++ 后端编译 + 构建验证
2. Pytest Coverage(pytest_coverage.yml)#
触发:push/PR 到 main
环境:Ubuntu + Python 3.11
内容:
pytest uniqc/test/ --cov=uniqc -v产出:
coverage.xmlartifact
已知限制#
外部依赖:随机回归测试需要
qiskit、qiskit-aer、qutip、scipy,不在默认安装范围内test_result_adapter / test_general:当前测试内容较简单,主要验证导入和基本功能,未覆盖全部 API
transpiler 测试:仅覆盖
plot_time_line,未覆盖qiskit_transpile等转译功能task 模块:
test_task_adapters.py在uniqc/test/中,但需要 mock HTTP,CI 环境可能不完整覆盖
未来改进方向#
补充
analyzer模块的测试覆盖(expectation 计算、结果适配器完整 API)补充
transpiler模块测试(qiskit 转译、电路绘制)增加
circuit_builder的边界用例测试密度矩阵 bug 修复后取消 CI deselect
引入 property-based testing(如 hypothesis)增强随机测试覆盖率