Skip to main content

Search-based testing of quantum programs

Project description

QuSBT: Search-Based Testing of Quantum Programs

Description

Generating a test suite for a quantum program such that it has the maximum number of failing tests is an optimization problem. For such optimization, search-based testing has shown promising results in the context of classical programs. To this end, we present a test generation tool for quantum programs based on a genetic algorithm, called QuSBT (Search-based Testing of Quantum Programs). QuSBT automates the testing of quantum programs, with the aim of finding a test suite having the maximum number of failing test cases. QuSBT utilizes IBM's Qiskit as the simulation framework for quantum programs. We present the tool architecture in addition to the implemented methodology (i.e., the encoding of the search individual, the definition of the fitness function expressing the search problem, and the test assessment w.r.t. two types of failures). Finally, we report results of the experiments in which we tested a set of faulty quantum programs with QuSBT to assess its effectiveness.

How to use QuSBT?

Quantum Program File

  • The quantum program should be written with Qiskit.
  • The code has to be structured in a function named as 'run' with one parameter that refers to the quantum circuit.
  • Users only need to add gates to the circuit and measure output qubits to get the output. They don't need to set any register, initialize circuits, choose the simulation, or execute the circuits in 'run' function.

Program Specification

For each input, there should be one or more than one outputs. The probability of occurrence of one output can be shown as a decimal with binary numbers of input-output pair, and the input and the output are separated by a comma.

Here is one simple example:

00,1=0.5
00,0=0.5
01,1=0.5
01,0=0.5

Specially, the dash symbol '-' represents both '0' and '1' for inputs and outputs, which means the example above can be expressed as below:

0-,-=0.5

Configuration File

The configuration file should be written in an INI file. The configuration file is described below.

[program]
root=
;(Required)
;Description: The absolute root of your quantum program file.
num_qubit=
;(Required)
;Description: The total number of qubit of your quantum program.
inputID=
;(Required)
;Description: The IDs of input qubits.
;Format: A non-repeating sequence separated by commas.
outputID=
;(Required)
;Description: The IDs of output qubits which are the qubits to be measured.
;Format: A non-repeating sequence separated by commas.


[qusbt_configuration]
beta=
;(Optional)
;Description: The percentage of possible inputs as the number of test cases in a test suite.
M=
;(Optional)
;Description: The number of test cases in a test suite.
;Attention: You should use either 'beta' or 'M'. We use 'beta' as 0.05 by default.


[GA_parameter]
population_size=
;(Optional)
;Description: The population size in GA, population_size=10 by default.
offspring_population_size=
;(Optional)
;Description: The offspring population size in GA, offspring_population_size=10 by default.
max_evaluations=
;(Optional)
;Description: The maximum evaluations in GA, max_evaluations=500 by default.
mutation_probability=
;(Optional)
;Description: mutation probability in GA, mutation_probability=1.0/M, 'M' is the size of a test suite by default.
mutation_distribution_index=
;(Optional)
;Description: mutation distribution in GA, mutation_distribution_index=20 by default.
crossover_probability=
;(Optional)
;Description: crossover probability in GA, crossover_probability=0.9 by default.
crossover_distribution_index=
;(Optional)
;Description: crossover probability in GA, crossover_distribution_index=20 by default.


[program_specification]
;Description: The program specification.
;Format:input string (binary),output string (binary)=probability
;Example:
;00,1=0.5
;00,0=0.5
;01,1=0.5
;01,0=0.5
;or
;0-,-=0.5
;Attention: '-' can refer to both '0' and '1'.

Command Line Operation

You can provide the root of the configuration file and run QuSBT.

from qusbt.qusbt_search import qusbt

qusbt("configuration.ini")

QuSBT will assess the results according to the two test oracles that have been proposed in this paper:

  • uof: Whether an observed output is correct according to program specification. If not, the program is failed;
  • wodf: If all the observed outputs corresponding to an input are valid, then it compares their observed probabilities with the ones specified in the Program Specification file. If the differences are statistically significant (i.e., a p-value lower than the chosen significance level), the program is failed.

After running, you get one Excel file containing solution and iteration information

Video Demonstration

A video demo is available here.

Experimental Data

Experimental data including quantum programs, and program specifications can be downloaded here.

Extension

One can checkout the code from GitHub and provide extensions to QuSBT.

Paper

X. Wang, P. Arcaini, T. Yue, S. Ali. QuSBT: Search-Based Testing of Quantum Programs. In 2022 IEEE/ACM 44th International Conference on Software Engineering: Companion Proceedings (ICSE-Companion) [doi]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qusbt-1.1.0.tar.gz (13.5 kB view details)

Uploaded Source

Built Distribution

qusbt-1.1.0-py3-none-any.whl (14.1 kB view details)

Uploaded Python 3

File details

Details for the file qusbt-1.1.0.tar.gz.

File metadata

  • Download URL: qusbt-1.1.0.tar.gz
  • Upload date:
  • Size: 13.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.4

File hashes

Hashes for qusbt-1.1.0.tar.gz
Algorithm Hash digest
SHA256 6af9323b89074ab41dd8fda1061abebdc0d72763d55c3e02bbf3c78713f42c7e
MD5 31665d12ee20eb4db8a29d9c8574224d
BLAKE2b-256 010eef913e7c235df3cc39b22301bc3e3f06f604c04693f1db3e4437cb3f4254

See more details on using hashes here.

File details

Details for the file qusbt-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: qusbt-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 14.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.4

File hashes

Hashes for qusbt-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 519fc0aa9f68189c4da452c0005d64b5892d1e6b5087f64de57716f972f6b2ef
MD5 2e28386d9e3e74475fef8965476415c4
BLAKE2b-256 fa75c36291ad9559a2a2c0423ded917dfce27b21989d94d04e4d3de4940106f8

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page