Muskit Description & How to use it?

Description of Muskit

Quantum software testing is a new area of research. Thus, there is a lack of benchmark programs and bugs repositories to assess the effectiveness of testing techniques. To this end, quantum mutation analysis focuses on systematically generating a set of faulty versions of quantum programs, called mutants, using mutation operators. Such faulty versions of quantum programs can be used as benchmarks to assess the quality of test cases in a test suite. Here, we host a tool called Muskit -- a quantum mutation analysis tool for quantum programs coded in IBM's Qiskit language. Muskit implements a set of mutation operators on gates of quantum programs and a set of selection criteria to reduce the number of mutants to generate. Moreover, it allows for the execution of test cases on mutants and generation of results for test analyses. Muskit is provided as a command line application, a GUI application, and also as a web application. A preprint of the paper describing Muskit and its features can be download from here.

How to use Muskit?

Assumptions:

  • The code has to be structured in a sequential way without any function definition, main, or sub-functions.
  • The qubits should be declared once.
  • In order to measure all the qubits correctly, an equal number of classical bits must be defined.
An example program can be downloaded from here: Example link.

In this version, we can only generate mutants and execution is not supported. For generation, a user can: 1) Specify the quantum program, whose mutants will be generated; 3) Various selection criteria that can be used by Muskit to generate mutants. One can select a) all mutants; b) set a limit on maximum number of mutants to be generated; c) selection based on operator types (i.e., add, remove, or delete); d) selection based on gate types (one qubit or multiple qubit).

For execution, please check the Github repository here


Select a quantum program and criteria to generate mutants

Check this box if you would like to create all the possible mutants.
Select the mutation operator type(s)
Select gate type(s)