TY - GEN
T1 - Change-aware preemption prioritization
AU - Jagannath, Vilas
AU - Luo, Qingzhou
AU - Marinov, Darko
PY - 2011
Y1 - 2011
N2 - 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.
AB - 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.
KW - multithreaded
KW - prioritization
KW - testing
UR - http://www.scopus.com/inward/record.url?scp=80051946945&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=80051946945&partnerID=8YFLogxK
U2 - 10.1145/2001420.2001437
DO - 10.1145/2001420.2001437
M3 - Conference contribution
AN - SCOPUS:80051946945
SN - 9781450305624
T3 - 2011 International Symposium on Software Testing and Analysis, ISSTA 2011 - Proceedings
SP - 133
EP - 143
BT - 2011 International Symposium on Software Testing and Analysis, ISSTA 2011 - Proceedings
T2 - 20th International Symposium on Software Testing and Analysis, ISSTA 2011
Y2 - 17 July 2011 through 21 July 2011
ER -