Detecting Assumptions on Deterministic Implementations of Non-deterministic Specifications

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

DOI: 10.1109/ICST.2016.40

关键词:

摘要: Some commonly used methods have nondeterministicspecifications, e.g., iterating through a set canreturn the elements in any order. However, non-deterministicspecifications typically deterministic implementations, e.g.,iterating two sets constructed same way mayreturn their We use termADINS code to refer that Assumes DeterministicImplementation of method with Non-deterministic Specification. Such ADINS can behave unexpectedly whenthe implementation changes, even if specification remainsthe same. Further, lead flaky tests -- teststhat pass or fail seemingly non-deterministically. present simple technique, called NONDEX, for detectingflaky due code. implemented NONDEX forJava: we found 31 non-deterministic specificationsin Java Standard Library, manually built non-deterministicmodels these methods, and modified VirtualMachine explore various choices. evaluatedNONDEX on 195 open-source projects from GitHub 72student submissions programming homework assignment.NONDEX detected 60 21 and110 34 student submissions.

参考文章(24)
Pavel Parizek, Tomas Kalibera, Efficient Detection of Errors in Java Components Using Random Environment and Restarts Tools and Algorithms for the Construction and Analysis of Systems. pp. 451- 465 ,(2010) , 10.1007/978-3-642-12002-2_37
A. Petrenko, N. Yevtushenko, G. Bochmann, Testing deterministic implementations from nondeterministic FSM specifications Selected proceedings of the IFIP TC6 9th international workshop on Testing of communicating systems. pp. 125- 140 ,(1996) , 10.1007/978-0-387-35062-2_10
Richard Helm, John Vlissides, Ralph Johnson, Erich Gamma, Design Patterns: Elements of Reusable Object-Oriented Software ,(1994)
Byron Cook, Eric Koskinen, Reasoning about nondeterminism in programs programming language design and implementation. ,vol. 48, pp. 219- 230 ,(2013) , 10.1145/2491956.2491969
Alex Gyori, August Shi, Farah Hariri, Darko Marinov, Reliable testing: detecting state-polluting tests to prevent test dependency international symposium on software testing and analysis. pp. 223- 233 ,(2015) , 10.1145/2771783.2771793
Nachiappan Nagappan, Kim Herzig, Empirically detecting false test alarms using association rules international conference on software engineering. ,vol. 2, pp. 39- 48 ,(2015) , 10.5555/2819009.2819018
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
Jonathan Bell, Gail Kaiser, Eric Melski, Mohan Dattatreya, Efficient dependency detection for safe Java test acceleration foundations of software engineering. pp. 770- 781 ,(2015) , 10.1145/2786805.2786823
Jonathan Bell, Gail Kaiser, Unit test virtualization with VMVM international conference on software engineering. pp. 550- 561 ,(2014) , 10.1145/2568225.2568248
August Shi, Tifany Yung, Alex Gyori, Darko Marinov, Comparing and combining test-suite reduction and regression test selection foundations of software engineering. pp. 237- 247 ,(2015) , 10.1145/2786805.2786878