Open Systems Laboratory at Illinois

Change-aware preemption prioritization

By Vilas Jagannath, Qingzhou Luo, and Darko Marinov. In ISSTA, 133–143. ACM, 2011.

Publisher Link:


Successful software evolves as developers add more features, respond to requirements changes, and fix faults. Regression testing is widely used for ensuring the validity of evolving software. As regression test suites grow over time, it becomes expensive to execute them. The problem is exacerbated when test suites contain multithreaded tests. These tests are generally long running as they explore many different thread schedules searching for concurrency faults such as dataraces, atomicity violations, and deadlocks. While many techniques have been proposed for regression test prioritization, selection, and minimization for sequential tests, there is not much work for multithreaded code.

We present a novel technique, called Change-Aware Preemption Prioritization (CAPP), that uses information about the changes in software evolution to prioritize the exploration of schedules in a multithreaded regression test. We have implemented CAPP in two frameworks for systematic exploration of multithreaded Java code. We evaluated CAPP on the detection of 15 faults in multithreaded Java programs, including large open-source programs. The results show that CAPP can substantially reduce the exploration required to detect multithreaded regression faults.


    author = "Jagannath, Vilas and Luo, Qingzhou and Marinov, Darko",
    editor = "Dwyer, Matthew B. and Tip, Frank",
    title = "Change-aware preemption prioritization",
    booktitle = "ISSTA",
    crossref = "conf/issta/2011",
    ee = "",
    keywords = "software engineering",
    pages = "133-143",
    year = "2011",

    editor = "Dwyer, Matthew B. and Tip, Frank",
    title = "Proceedings of the 20th International Symposium on
             Software Testing and Analysis, ISSTA 2011, Toronto, ON, Canada,
             July 17-21, 2011",
    isbn = "978-1-4503-0562-4",
    publisher = "ACM",
    year = "2011",