Integration Testing of Object-Oriented Components Using Finite State Machines
Leonard J. Gallagher, A. J. Offutt, Anthony V. Cincotta
In object-oriented terms, one of the goals of integration testing is to ensure that messages from objects in one class or component are sent and received in the proper order and have the intended effect on the state of external objects that receive the messages. This research extends an existing single-class testing technique to integration testing of multiple classes. The previous method models the behavior of a single class as a finite state machine, transforms that representation into a data flow graph that explicitly identifies the definitions and uses of each state variable of the class, and then applies conventional data flow testing to produce test case specifications that can be used to test the class. This paper extends those ideas to inter-class testing by developing flow graphs and tests for an arbitrary number of classes and components. It introduces flexible representations for message sending and receiving among objects and allows concurrency among any or all classes and components. Data flow graphs are stored in a relational database, and database queries are used to gather def-use information. This approach is conceptually simple, mathematically precise, quite powerful, and general enough to be used for traditional data flow analysis. This testing approach relies on finite state machines, database modeling and processing techniques, and algorithms for analysis and traversal of directed graphs. The paper presents empirical results of the approach applied to an automotive system.
, Offutt, A.
and Cincotta, A.
Integration Testing of Object-Oriented Components Using Finite State Machines, Software Testing Verification & Reliability, [online], https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=50306
(Accessed February 21, 2024)