Deriving Tests From Software Architectures Zhenyi Jin ITT Industries Advanced Engineering and Sciences 1761 Business Center Drive Reston, VA 22090 USA jenny.jin@itt.com Jeff Offutt ISE Department Software Engineering Research Lab George Mason University Fairfax, VA 22030-4444 USA www.ise.gmu.edu/faculty/ofut/ ofut@ise.gmu.edu The Twelfth IEEE International Symposium on Software Re- liability Engineering (ISSRE ’01), pages 308–313, Hong Kong, PRC, November 2001. Abstract Software architectures are intended to describe essential high level structural and behavioral characteristics of the system. Architecture Description Languages (ADLs) de- scribe these characteristics in ways that can be analyzed and manipulated algorithmically. This provides a unique opportunity for deriving tests at the system level. This pa- per defines formal testing criteria based on architecture re- lations, which are paths that architectural components use to communicate. The criteria have been applied to a spe- cific ADL. Results from a comparative empirical study on industrial software are presented. 1. Introduction Software architecture is described by Shaw and Garlan [16] as a necessary step in raising the level of abstraction at which software is conceived and developed. Software ar- chitectures are viewed as a set of components together with a description of the interactions (called connectors) between these components. Architectural styles are a family of sys- tems that share repeating patterns of computation and inter- action, together with rules for how these are used in spe- cific configurations. Software architectures let developers to abstract away the details of the individual components of an application, allowing them to be viewed as sets of com- ponents with associated connectors that describe the inter- actions between these components. Architecture Descrip- This work is supported in part by the U.S. National Science Founda- tion under grant CCR-98-04111. tion Languages (ADLs) have been proposed as modeling and design notations to support analysis and development of architecture-based software. Most of them use formal approaches to architecture representations. ADLs provide a significant opportunity for dealing with the issue of scale with respect to testing and analysis of software systems. Medvidovic and Rosenblum [10] presented an ADL survey. This survey classifies and compares properties in components, connections, and configurations, and how they are represented in these ADLs. Allen [1] introduced Wright, an ADL based on the formal description of the abstract behavior of architectural components and connec- tors, and showed how Wright provides a practical way to describe and analyze software architectures and archi- tectural styles. Richardson, Wolf and Stafford introduced architecture-based dependency analysis and testing in the context of the CHAM (Chemical Abstract Machine) [12]. The behavioral dependencies allow one to relate states or interactions to other states or interactions. These relations are recorded in a table for dependency analysis. Rosenblum initiated the development of a component-based software testing theory [14, 13]. This technique is at the integration level rather than at the architectural level and it is also based on the completeness of the implementation. Ghosh [5] in- vestigated issues in testing distributed component-based ap- plications and proposed interface mutation testing. This paper presents our work in developing a new tech- nique for testing software, which is based on software archi- tecture descriptions. As software architecture focuses more directly on the intended interactions between the high-level computational components of a system [2], we distinguish architecture testing from traditional system testing. System testing addresses issues pertaining to whether the overall system satisfies system requirements, whereas architecture testing attempts to test interactions at the architecture de- scription level and then these tests may be reused at the