Test Sequence Generation For Integration Testing Of Component Software 1 LEONARD GALLAGHER 2 AND JEFF OFFUTT 3,* 2 Information Technology Laboratory, National Institute of Standards and Technology, Gaithersburg, MD 20899, USA 3 Information and Software Engineering, George Mason University, Fairfax, VA 22030, USA *Corresponding author: offutt@gmu.edu Ensuring high object interoperability is a goal of integration testing for object-oriented (OO) software. When messages are sent, objects that receive them should respond as intended. Ensuring this is especially difficult when software uses components that are developed by different vendors, in different languages, and the implementation sources are not all available. A finite state machines model of inter-operating OO classes was presented in a previous paper. The previous paper presented details of the method and empirical results from an automatic tool. This paper presents additional details about the tool itself, including how test sequences are generated, how several difficult problems were solved and the introduction of new capabilities to help automate the transformation of test specifications into executable test cases. Although the test method is not 100% automated, it represents a fresh approach to automated testing. It follows accepted theoretical procedures while operating directly on OO software specifications. This yields a data flow graph and executable test cases that adequately cover the graph according to classical graph coverage criteria. The tool supports specification-based testing and helps to bridge the gap between theory and practice. Keywords: software testing; object-oriented; component integration; test generation Received 18 August 2006; revised 30 August 2007 1. INTRODUCTION Many object-oriented (OO) applications are constructed from a combination of previously written, externally obtained com- ponents with some new components added for specialization. Source is often not available for the previously written components, yet new objects must interoperate via messages with objects in the existing components. This research is concerned with ensuring that objects inter-operate correctly, particularly when new objects are added to existing components. In this paper, a class is the basic unit of semantic abstrac- tion and each class is assumed to have state and behavior [1, 2]. A component is a collection of one or more classes that collectively implement a coherent function. Components inter-operate to implement the system and each component is assumed to execute independently, thereby allowing asyn- chronous behavior. For simplicity, we assume that the inter- face to a component is just the union of the interfaces to its classes. An object is an instance of a class. Each object has state and behavior, where state is determined by the values of variables defined in the class, and behavior is determined by methods defined in the class that operate on one or more objects to read and modify their state variables. The beha- vior of an object is modeled as the effect the methods have on the variables of that object (the state), together with the messages it sends to other objects. Variables declared by the class that have one instance for each object are called instance variables, and variables that are shared among all objects of the class (static in Java) are class variables. This research is independent of program- ming language and the paper uses a mix of Java and Cþþ terminology. Our test scenario is that a new or modified component is being integrated into an existing collection of components. 1 This paper is an extended version of Automatically Testing Interacting Software Components, published in the Workshop on Automation of Software Test (AST 2006), May 2006, Shanghai, China, pp. 57–63. THE COMPUTER JOURNAL, 2007 # The Author 2007. Published by Oxford University Press on behalf of The British Computer Society. All rights reserved. For Permissions, please email: journals.permissions@oxfordjournals.org doi:10.1093/comjnl/bxm093 The Computer Journal Advance Access published November 22, 2007