RECONTEST
Valerio Terragni vterragni[-AT-]cse.ust.hk
Department
of Computer
Science and Engineering
The
Hong Kong
University of
Science and Technology
Outline
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.
Java runtime environment 1.7 or higher
Archive contentrecontest.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
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.
From command line, navigate inside the directory "recontest", and run "java -jar recontest.jar"
See output folder for the bug report