NonDex: a tool for detecting and debugging wrong assumptions on Java API specifications

作者: Alex Gyori , Ben Lambeth , August Shi , Owolabi Legunsen , Darko Marinov

DOI: 10.1145/2950290.2983932

关键词: JavaLine (text file)DebuggingCode (cryptography)Feature (machine learning)Underdetermined systemPlug-inImplementationComputer scienceOperating systemProgramming language

摘要: We present NonDex, a tool for detecting and debugging wrong assumptions on Java APIs. Some APIs have underdetermined specifications to allow implementations achieve different goals, e.g., optimize performance. When clients of such assume stronger-than-specified guarantees, the resulting client code can fail. For example, HashSet’s iteration order is underdetermined, assuming some implementation-specific NonDex helps proactively detect debug assumptions. performs detection by randomly exploring behaviors during test execution. fails exploration, searches invocation instance API that caused failure. open source, well-integrated with Maven, also runs from command line. During our experiments Maven plugin, we detected 21 new bugs in eight projects GitHub, and, using feature identified underlying these 54 previously bugs. opened 13 pull requests; developers already accepted 12, one project changed continuous-integration configuration run every push. The demo video at: https://youtu.be/h3a9ONkC59c

参考文章(3)
Qingzhou Luo, Farah Hariri, Lamyaa Eloussi, Darko Marinov, An empirical analysis of flaky tests foundations of software engineering. pp. 643- 653 ,(2014) , 10.1145/2635868.2635920
A. Zeller, R. Hildebrandt, Simplifying and isolating failure-inducing input IEEE Transactions on Software Engineering. ,vol. 28, pp. 183- 200 ,(2002) , 10.1109/32.988498
August Shi, Alex Gyori, Owolabi Legunsen, Darko Marinov, Detecting Assumptions on Deterministic Implementations of Non-deterministic Specifications 2016 IEEE International Conference on Software Testing, Verification and Validation (ICST). pp. 80- 90 ,(2016) , 10.1109/ICST.2016.40