/ParallelDebugging

Providing some algorithms, including BDM, Jones II, W-K, and MSP algorithms, in parallel debugging.

ParallelDebugging

Travis

This project provides some representative algorithms in parallel debugging,including Block Diagonal Matrix (BDM), Jones II, Weil-Kettler (hor. W-K, vert. W-K), and Maximum Set Packing(MSP). The first 5 algorithms are implemented by Hogerle et al.. We just release them on github, so it's a good choice to cite their paper as follows,

Hogerle, Wolfgang, F. Steimann, and M. Frenkel. "More Debugging in Parallel." IEEE, International Symposium on Software Reliability Engineering IEEE Computer Society, 2014:133-143.

In addition, we fix some bugs in BDM algorithm and also develop our own partitionning algorithms in parallel debugging, namely XXX, which is provided as the 6-th partition algorithms in the last. To compare the performances among those algorithms we design the contrast experiments which are also contained in our projects.

BDM

BDM is the basic partitioning algorithms among the above 5 algorithms, whose idea is quite simple. It divide the FCM into multiple block diagnoal matrixs whose rows and coloums can not be overlapped. Using BDM in our project is quite simple, you just need to call the static method getBlocks() in class BDM,

Result input = MatrixDataReader.getTestsAndUUTsFromFile("path/to/your/file");
Set<Set<Test>> setTests = BDM.getBlocks(input);

Jones II

Jones II is the second algorithom proposed by Jones et al. Jones II is a cluster-based partitioning algorithm, it has two main steps in test cases clustering:

  • Constructing multiple test suites consisting of each single failed test cases and all passed test cases,
  • clustering these test suites according to the similarity of susipicious ranking list obtainted by fault localization technique (i.e., Tanrantula) in each suites.

Using Jones II is also quite easy you only need to call the function getBlocks() in class Jones,

Result input = MatrixDataReader.getTestsAndUUTsFromFile("path/to/your/file");
Jones jones = new Jones();
Set<Set<Test>> setTests1 = jones.getBlocks(input); // use default parameters
Set<Set<Test>> setTests2 = jones.getBlocks(input, 0.2, 0.5); // specify your own parameters if you want

Hor.W-K

Vert. W-K

MSP

XXX