T++: a test case generator using a debugging information based technique for source code manipulation

T++ is a C++ language extension that aids in systematic testing of C++ code. For each type t used in the code, T++ maintains the set of "typical" values of t, denoted by T(t) (typicals of t). The authors propose an object-oriented testing scheme in which each class t has a test method implemented as a static member function that runs a test script on each of the values in T(t). T++ supports this scheme by automatically generating a default T(t) based on the declaration of t and on the typicals of each of the types used in this declaration. This default can be easily tuned by the class implementor and users to reflect the particularities of the class. T++ also provides an easily tuned by the class implementor and users to reflect the particularities of the class. T++ also provides an easy-to-use mechanism for iterating over the typicals of a type. Thus, T++ gives a supporting environment for the design and implementation of test scripts with the familiar techniques of equivalence testing, boundary value analysis, or functional testing approaches. Most language extensions are realized by either a dedicated pre-processor or by a modification to the compiler. Both techniques suffer from serious drawbacks related to the complexity of C++ and the accessibility of the compiler code. In contrast, the implementation of T++ sidesteps these difficulties by relaying on a novel technique that creates a knowledge base of the source code from the debugging information.

[1]  Debra J. Richardson,et al.  TAOS: Testing with Analysis and Oracle Support , 1994, ISSTA '94.

[2]  David S. Rosenblum,et al.  Representing Semantically Analyzed C++ Code with Reprise , 1991, C++ Conference.

[3]  Philip Newcomb,et al.  Formal specification tools for test coverage analysis , 1994, Proceedings KBSE '94. Ninth Knowledge-Based Software Engineering Conference.

[4]  Gerald Baumgartner,et al.  Implementing signatures for C++ , 1994, TOPL.

[5]  Ivar Jacobson,et al.  Object-oriented software engineering - a use case driven approach , 1993, TOOLS.

[6]  Monika Müllerburg,et al.  Test data selection criteria for (software) integration testing , 1990, Systems Integration '90. Proceedings of the First International Conference on Systems Integration.

[7]  Boris Beizer,et al.  Software testing techniques (2. ed.) , 1990 .

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

[9]  Doug Lea,et al.  The Behavior of C++ Classes , 1990 .

[10]  Robert B. Murray,et al.  A Statically Typed Abstract Representation for C++ Programs , 1992, C++ Conference.

[11]  Murray Hill,et al.  Yacc: Yet Another Compiler-Compiler , 1978 .

[12]  John D. McGregor,et al.  Incremental testing of object-oriented class structures , 1992, ICSE '92.

[13]  Daniel Hoffman,et al.  A case study in class testing , 1993, CASCON.

[14]  Steven P. Reiss,et al.  Support for Maintaining Object-Oriented Programs , 1992, IEEE Trans. Software Eng..

[15]  Ivar Jacobson,et al.  Object-Oriented Software Engineering , 1991, TOOLS.

[16]  Stephen R. Schach Software engineering (2. ed.) , 1993 .

[17]  Norman Wilde,et al.  Maintenance Support for Object-Oriented Programs , 1992, IEEE Trans. Software Eng..

[18]  Martin R. Woodward,et al.  Experience with Path Analysis and Testing of Programs , 1980, IEEE Transactions on Software Engineering.

[19]  A. Jefferson Offutt,et al.  Experimental results from an automatic test case generator , 1993, TSEM.

[20]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[21]  Shigeru Chiba,et al.  A metaobject protocol for C++ , 1995, OOPSLA.

[22]  William E. Howden,et al.  Functional program testing and analysis , 1986 .

[23]  Mary Lou Soffa,et al.  Selecting and using data for integration testing , 1991, IEEE Software.

[24]  Robert V. Binder,et al.  Object-oriented software testing , 1994, CACM.

[25]  Bjarne Stroustrup,et al.  The C++ programming language (2nd ed.) , 1991 .

[26]  Murugappan Palaniappan,et al.  MetaFlex: A Flexible Metaclass Generator , 1993, ECOOP.

[27]  Larry J Morell,et al.  Unit Testing and Analysis , 1989 .

[28]  Daniel Hoffman,et al.  Graph-based Class Testing , 1994, Aust. Comput. J..

[29]  Glenford J. Myers,et al.  Art of Software Testing , 1979 .

[30]  Richard J. Lipton,et al.  Hints on Test Data Selection: Help for the Practicing Programmer , 1978, Computer.

[31]  John D. McGregor,et al.  Incremental Testing Of Object-Oriented Class Structures/spl dagger/ , 1992, International Conference on Software Engineering.

[32]  Elaine J. Weyuker,et al.  Selecting Software Test Data Using Data Flow Information , 1985, IEEE Transactions on Software Engineering.

[33]  Phyllis G. Frankl,et al.  The ASTOOT approach to testing object-oriented programs , 1994, TSEM.

[34]  Tony Hoare,et al.  Notes on Data Structuring , 1972 .

[35]  E. J. Weyuker An empirical study of the complexity of data flow testing , 1988, [1988] Proceedings. Second Workshop on Software Testing, Verification, and Analysis.

[36]  John McCarthy,et al.  A basis for a mathematical theory of computation, preliminary report , 1899, IRE-AIEE-ACM '61 (Western).

[37]  David Chenho Kung,et al.  Developing an object-oriented software testing and maintenance environment , 1995, CACM.