ABSTRACT

Both theoretical and practical work on the testing of object-oriented software flourished since the second half of the 1990s. The conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA) and vendor-sponsored testing conferences have consistently featured both papers and tutorials on object-oriented testing. One Web site boasts over 18,000 links to object-oriented testing literature (www.cetus-links.org/oo_testing.html). The beginning of the 21st century is marked, among other things, by increased consensus on questions such as, “What is an object-oriented unit?” “How are object-oriented applications best modeled?” One of the original hopes for object-oriented software was that objects could be reused without modification or additional testing. This was based on the assumption that well-conceived objects encapsulate functions and data “that belong together,” and once such objects are developed and tested, they become reusable components. The recent interest in aspect-oriented programming (Kiczales, 1997) is one response to some of the limitations of the object-oriented paradigm. The new consensus is that there is little reason for this optimism — object-oriented software has potentially more severe testing problems than those for traditional software. On the positive side, the universal modeling language (UML) has emerged as a strong unifying (and driving) force for several aspects of object-oriented technology.