ACM SIGSOFT Software Engineering Notes | 2021

Finding Polluter Tests Using Java PathFinder

 
 
 
 
 

Abstract


Tests that modify (i.e., pollute ) the state shared among tests in a test suite are called \\polluter tests . Finding these tests is im- portant because they could result in di erent test outcomes based on the order of the tests in the test suite. Prior work has proposed the PolDet technique for nding polluter tests in runs of JUnit tests on a regular Java Virtual Machine (JVM). Given that Java PathFinder (JPF) provides desirable infrastructure support, such as systematically exploring thread schedules, it is a worthwhile attempt to re-implement techniques such as PolDet in JPF. We present a new implementation of PolDet for nding polluter tests in runs of JUnit tests in JPF. We customize the existing state comparison in JPF to support the so-called \\common-root iso- morphism required by PolDet. We find that our implementation is simple, requiring only -200 lines of code, demonstrating that JPF is a sophisticated infrastructure for rapid exploration of re-search ideas on software testing. We evaluate our implementation on 187 test classes from 13 Java projects and nd 26 polluter tests. Our results show that the runtime overhead of PolDet@JPF com- pared to base JPF is relatively low, on average 1.43x. However, our experiments also show some potential challenges with JPF.

Volume 46
Pages 37 - 41
DOI 10.1145/3468744.3468756
Language English
Journal ACM SIGSOFT Software Engineering Notes

Full Text