Overview: This research project focuses on new ways to address
conformance testing of object-oriented software whose specification is
dependent upon the use and integration of various software components. The
software components themselves may be specified at different times by different
specification groups, yet the integration of all of the pieces must work
together under the rules of a new or revised system specification. The goal of
this project is to discover new methods for efficient and effective conformance
testing of such systems.
Industry Need Addressed: Business software is often constructed from a combination of
off-the-shelf components, with new components integrated to satisfy new
requirements. The original components are often sealed so that the source code
is not available, yet objects in the new components will interoperate via
messages with objects in existing components according to expected interface
rules derived from formal or informal specification of each component. Newer
and more efficient means of specifying and testing such business software will
result in lower development costs and higher quality.
NIST/ITL Approach: We assume that each component is object-oriented, that is,
it consists of objects with state and behavior. State is determined by state
variables for each object and behavior is determined by methods that operate on
one or more objects to read or modify state variables. We represent state and
behavior as a finite state machine where predicates on state variables
determine a state and where transitions result from state transition
specifications for each method. The feasible processes of object-oriented
software can then be represented as data flows on a directed graph, where nodes
are determined from states, guards, and transitions of the finite state machine,
and where edges are determined from data and control flow resulting from method
invocation. An appropriate set of conformance tests to cover all potential data
flow can then be effectively derived from the directed graph.
Initial priorities are on effectively representing the
overall behavior of a software system by data and control flows through the
directed graph and on automatically generating test cases that cover all
possibilities. Subsequent efforts will result in test generation efficiencies
and in automatic application of the test cases to the system under development.
An overall goal is to automate the entire process so that test cases can be
derived directly from an arbitrary object-oriented specification, such as those
using UML modeling facilities.
Impact: This project contributes to the advancement of software
specification and testing methodologies, and to practical application of the
results to object-oriented software systems, thereby contributing directly
toward the ITL mission of promoting and improving the quality of software. More
efficient and automated methods of specification and testing will have a
positive impact on the software industry as a whole.