TestEra: a novel framework for automated testing of Java programs

We present TestEra, a novel framework for automated testing of Java programs. TestEra automatically generates all non-isomorphic test cases within a given input size and evaluates correctness criteria. As an enabling technology, TestEra uses Alloy, a first-order relational language, and the Alloy Analyzer. Checking a program with TestEra involves modeling the correctness criteria for the program in Alloy and specifying abstraction and concretization translations between instances of Alloy models and Java data structures. TestEra produces concrete Java inputs as counterexamples to violated correctness criteria. The paper discusses TestEra's analyses of several case studies: methods that manipulate singly linked lists and red-black trees, a naming architecture, and a part of the Alloy Analyzer.

[1]  S. L. Gerhart,et al.  Toward a theory of test data selection , 1975, IEEE Transactions on Software Engineering.

[2]  Boris Beizer,et al.  Software Testing Techniques , 1983 .

[3]  J. Michael Spivey,et al.  The Z notation - a reference manual , 1992, Prentice Hall International Series in Computer Science.

[4]  Kenneth L. McMillan,et al.  Symbolic model checking , 1992 .

[5]  Sriram Sankar,et al.  Specifying and Testing Software Components using ADL , 1994 .

[6]  Hans-Martin Hörcher,et al.  Improving Software Tests Using Z Specifications , 1995, ZUM.

[7]  Sérgio Vale Aguiar Campos,et al.  Symbolic Model Checking , 1993, CAV.

[8]  Sriram Sankar,et al.  Structural specification-based testing with ADL , 1996, ISSTA '96.

[9]  Gerard J. Holzmann,et al.  The Model Checker SPIN , 1997, IEEE Trans. Software Eng..

[10]  Michael Benedikt,et al.  A Decidable Logic for Describing Linked Data Structures , 1999, ESOP.

[11]  Ivar Jacobson,et al.  The unified modeling language reference manual , 2010 .

[12]  Radu Iosif,et al.  A deadlock detection tool for concurrent Java programs , 1999, Softw. Pract. Exp..

[13]  Elliot Schwartz,et al.  Design and implementation of intentional names , 1999 .

[14]  Claudio Demartini,et al.  A deadlock detection tool for concurrent Java programs , 1999, Softw. Pract. Exp..

[15]  A. Jefferson Offutt,et al.  Generating Tests from UML Specifications , 1999, UML.

[16]  Hari Balakrishnan,et al.  The design and implementation of an intentional naming system , 1999, SOSP.

[17]  James C. Corbett,et al.  Bandera: extracting finite-state models from Java source code , 2000, ICSE.

[18]  Thomas W. Reps,et al.  Putting static analysis to work for verification: A case study , 2000, ISSTA '00.

[19]  Daniel Jackson,et al.  Alcoa: the Alloy constraint analyzer , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[20]  Klaus Havelund,et al.  Model checking JAVA programs using JAVA PathFinder , 2000, International Journal on Software Tools for Technology Transfer.

[21]  Shmuel Sagiv,et al.  TVLA: A System for Implementing Static Analyses , 2000, SAS.

[22]  Daniel Jackson,et al.  Finding bugs with a constraint solver , 2000, ISSTA '00.

[23]  Daniel Jackson Automating first-order relational logic , 2000, SIGSOFT '00/FSE-8.

[24]  Sarfraz Khurshid,et al.  Exploring the design of an intentional naming scheme with an automatic constraint analyzer , 2000, Proceedings ASE 2000. Fifteenth IEEE International Conference on Automated Software Engineering.

[25]  Michael I. Schwartzbach,et al.  The pointer assertion logic engine , 2000, PLDI '01.

[26]  Ilya Shlyakhter,et al.  Generating effective symmetry-breaking predicates for search problems , 2001, Discrete Applied Mathematics.

[27]  Manu Sridharan,et al.  A micromodularity mechanism , 2001, ESEC/FSE-9.

[28]  Sarfraz Khurshid,et al.  Checking Java implementation of a naming architecture using Testera , 2001, Workshop on Software Model Checking @ CAV.

[29]  Daniel Jackson,et al.  Alloy: a lightweight object modelling notation , 2002, TSEM.