RECONTEST

Valerio Terragni vterragni[-AT-]cse.ust.hk
Department of Computer Science and Engineering
The Hong Kong University of Science and Technology

Outline

Description

Download

Usage

Description

The regression testing of concurrent programs often requires running a failing test for weeks before catching a faulty interleaving, due to the myriad of possible interleavings of memory accesses arising from concurrent program executions. We present RECONTEST, a regression testing tool for Java classes, to address the problem by selecting the new interleavings that arise due to code changes. These interleavings must be explored in order to uncover regression bugs. RECONTEST takes in input a multithreaded test code, two versions of a Java program, RECONTEST efficiently selects (explore) new interleavings by first identifying shared memory accesses that are affected by the changes, and then exploring only those problematic interleavings that contain at least one of these accesses. The problematic interleavings validated as feasible are outputted by RECONTEST as warnings of regression concurrency bugs.

For more detailed information please refer to our publication

Valerio Terragni, Shing-Chi Cheung and Charles Zhang.
RECONTEST: Effective Regression Testing of Concurrent Programs. in ICSE 2015: The 37th International Conference on Software Engineering, Florence, Italy, May, 2015.

DOWNLOAD RECONTEST

Requirements

Java runtime environment 1.7 or higher

Archive content

recontest.jar RECONTEST's runnable jar archive

builder.xml,AssetfuzzerPTA.xml,Recontest.xml ant builder files (do not modify)

Configuration.prop configuration file

recontest_lib (folder) third parties libraries
  (Please refer to the corresponding JAR for licence information)
   annotations-7.0.3.jar
   ant-contrib.jar
   ant-nodeps-1.7.1.jar
   AntelopeTasks_3.4.2.jar
   apache-ant-launcher-1.7.1.jar
   asm-3.1.jar
   changedistiller-0.0.1-SNAPSHOT-jar-with-dependencies.jar
   commons-collections-3.2.1.jar
   gnu-crypto.jar
   gson-2.2.2.jar
   junit-dep-4.10.jar
   log4j-1.2.16.jar
   soot.jar

output(folder) output of RECONTEST

regression_test_suite(folder) path references for subjects and tests

Usage

   STEP 1: prepare the inputs

The inputs of RECONTEST are: the source code of the original version of a Java program and its modified version, and a concurrent test that can be executed with both versions. In the folder regression_test_suite create a txt file for each of your tests (all files in the folder will be processed one by one). The content of each file has to be the following:
test_name unique name of the test
original_version_project_path absolute path to the folder containing the source code and all the libraries required to run the ORIGINAL version of the program under test (the path has to contain the "src" folder)
original_version_test_class test class name (including the package)
original_version_test_arguments arguments of the test (it could be empty)
original_version_project_path absolute path to the folder containing the source code and all the libraries required to run the MODIFIED version of the program under test (the path has to contain the "src" folder)
original_version_test_class test class name (including the package)
original_version_test_arguments arguments of the test (it could be empty)
Note that 1) the test class has to be a runnable class (with main function) 2) the Java source file of the test has to be contained in both original_version_project_path and modified_version_project_path. 2) We advise to keep exactly the same name and package of the test, for avoiding inconsistencies during the analysis.
The given example file is the following:
   test_name = Lang
   original_version_project_path = D:/path/orginalVersion
   original_version_test_class = org.package.Test1
   original_version_test_arguments =
   modified_version_project_path = D:/path/modfiedVersion
   modified_version_test_class = org.package.Test1
   modified_version_test_arguments =

You can refer to the configuration file if you wish to modify the default configurations of RECONTEST or if you wish to run an unchanged aware PTA (Assetfuzzer see reference [22] of the paper) for comparison.

STEP 3: run the tool
From command line, navigate inside the directory "recontest", and run "java -jar recontest.jar"
STEP 4: output
See output folder for the bug report