Skip to content

Repository files navigation

Here is the updated, streamlined version of your README with the ablation dataset references removed and the citation simplified to a clean, textual format.


IterTestQ: Cross-Platform Quantum Platform Testing

IterTestQ is the first testing framework designed specifically for cross-platform interoperability testing of quantum software stacks. Instead of analyzing a compiler or optimizer in isolation, IterTestQ repeatedly transfers programs across multiple platforms using OpenQASM—exposing subtle interoperability, compiler, and transformation bugs that remain completely invisible to traditional, single-platform testing.

Its core engine is the Import–Transform–Export (ITE) loop, which iteratively imports a quantum program into a platform, applies platform-native transformations (such as optimizations or gate-set translations), and exports it back to QASM. IterTestQ groups these variants into equivalence classes and validates them using symbolic equivalence checking (via QCEC), while simultaneously monitoring all platform operations for crashes.


Key Highlights

  • 23 Real-World Bugs Uncovered across Qiskit, PennyLane, Pytket, BQSKit, and Cirq—with 17 already confirmed or fixed by platform maintainers.

  • Novel ITE Process that iteratively mutates and transfers programs across platforms to generate highly diverse test suites.

  • Dual-Oracle Design combining runtime crash detection with symbolic equivalence checking (QCEC) without requiring probabilistic state execution.

  • High Efficiency capable of processing and transforming quantum programs in just 0.00089 seconds per program.

  • Complementary Code Coverage exercising tens of thousands of lines of deep translation code that traditional single-platform fuzzers miss.


Repository Structure

├── qite/             # Core implementation of the IterTestQ framework
├── notebooks/        # Jupyter notebooks reproducing paper evaluation and figures
├── tests/            # Unit and integration tests
├── program_bank/     # Generated test programs, experimental outputs, and reduced bugs
├── config/           # Configuration files for IterTestQ execution runs
└── docker/           # Docker environment for reproducible runs and coverage collection


Requirements

You must have the following software installed on your machine to run IterTestQ:

  • Conda — Recommended for managing Python environments and dependencies.

  • Docker — For reproducible, containerized test execution and coverage profiling.

  • screen (Optional) — Recommended for running long-duration fuzzing campaigns in the background.

Supported OS: We recommend Ubuntu 22.04.5 LTS or newer. The codebase is thoroughly evaluated on Ubuntu and we cannot guarantee out-of-the-box compatibility with other operating systems.


Reproducing the Results

IterTestQ supports two distinct levels of replication depending on your objective.

Level 1 — Reproduce Published Evaluation (Direct)

This option recreates all figures and tables from our pre-compiled experimental data.

  1. Download and Extract Artifacts: Download the unified data artifact from DOI 10.6084/m9.figshare.33016415. Extract its contents into program_bank/artifact/. (Note: If you unpack the files elsewhere, update ARTIFACT_BASE at the top of notebooks/031_RQ_Results.ipynb).

  2. Set Up the Environment:

conda env create -f environment.yml
conda activate crosspl
  1. Run the Notebook: Open and execute notebooks/031_RQ_Results.ipynb from top to bottom to regenerate the paper's results and figures:
jupyter notebook notebooks/031_RQ_Results.ipynb

Level 2 — Re-Run IterTestQ Experiments (From Scratch)

Choose one of the execution methods below to generate new tests and collect execution data.

Option A: Docker Container (Recommended)

This is the most reliable method for reproducing the full pipeline with isolated dependencies and coverage collection.

  1. Configure your run by inspecting or modifying the template at config/demo_itertestq.yaml.

  2. Build the image and launch the test suite inside a background terminal session:

# (Optional) Use screen to protect the session
screen -S itertestq

# Build and execute
docker build -t itertestq -f docker/Dockerfile .
docker run -v $(pwd)/program_bank:/app/program_bank itertestq --config config/demo_itertestq.yaml
  1. Outputs and logs will be written to program_bank/demo_itertestq/<run_id>/.

Option B: Local Source Installation

To execute IterTestQ directly on your host machine:

# Ensure your Conda environment is active
conda activate crosspl

# Run the entry script with your chosen configuration
python entry.py --config config/demo_itertestq.yaml

All outputs, including any detected program inequivalences or runtime failures, will populate under program_bank/demo_itertestq/<run_id>/.


Data Availability

We make all experimental datasets used to evaluate IterTestQ and its comparative baselines openly accessible via a single, archive repository:


Citation

If you use IterTestQ or our dataset in your academic research, please cite our paper:

Paper: IterTestQ: Assembly-Level, Cross-Platform Testing of Quantum Computing Platforms

Authors: Matteo Paltenghi and Michael Pradel

Venue: Proceedings of the ACM on Software Engineering (ISSTA 2026)

DOI: 10.1145/3832211

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages