No description, website, or topics provided.
Switch branches/tags
Nothing to show
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
benchmarks add benchmarks used in the paper Nov 15, 2018 Update Aug 22, 2018 add comment Nov 5, 2018

Mutation Testing Framework for SWI and SICStus Prolog

How to use (for SICStus replace swipl with sicstus -l)

$ swipl // load the mutation tester

?- [your_file]. // load your file(s) or mudule(s)

?- mutation_test. // launch the mutation testing process


:- use_module(mutation_testing). // type it at the very top (directly after :- module(yourmodule, [args]).) of your module under test

$ swipl

?- mutation_testing:mutation_test.


Provided predicates within the framework are mutation_test/0, mutation_test/1 and mutation_test/2.

mutation_test(+Modules, +Depth).

Modules is a list of modules under test. By using the empty list [] all loaded modules, except for internal Prolog
libraries, will be mutated and tested.
Depth is either an atom (basic, deep, experimental) which dictates the amount and kind of mutations or a list with
explicit mutations.


If input is one atom of basic, deep or experimental, mutation_test([], Input) is being called. Otherwise, mutation_test(Input, basic) is being called where Input contains the modules to be tested.


Calls mutation_test([], basic) using mutations which we evaluated to be sensible in most cases (i.e., the mutations change the program's semantics/output).