Towards a Reference Architecture for Software Testing Tools

Abstract:

Producing high quality software systems has been one of the most important software development concerns. Software testing is recognized as a fundamental activity for assuring software quality; however, it is an expensive, errorprone, and time consuming activity. For this reason, a diversity of testing tools has been developed, however, they have been almost always designed without an adequate attention to their evolution, maintenance, and reuse. In this paper, we propose an aspect-based software architecture, named RefTEST (Reference Architecture for Software Testing Tools), that comprises the knowledge to develop testing tools. This architecture is strongly based on separation of concerns and aspects, aiming at evolving, maintaining and reusing efforts to develop these tools. Our experimental results have pointed out that RefTEST can contribute to the development and reengineering of testing tools.

Introduction:

Software engineering activities have been fundamental to achieve high quality systems development. In special, software testing is one of the most important activities to guaranteeing the quality and the reliability of the software under development [15]. In this context, the availability of tools makes the testing a more systematic activity and minimizes the cost, the time consumed, as well as the errors caused by human intervention. Testing automation is an important issue related to the quality and productivity of the software process. A diversity of testing tools — commercial, academic, and open source — automating software testing tasks can be found. However, these tools have almost always been implemented individually and independently, presenting its own architectures and internal structures.

As a consequence, difficulty of integration, evolution, maintenance, and reuse of these tools are very common. These tools often focus on automating specific testing techniques and criteria; without considering the whole testing process. Besides, while software architecture has become an increasingly important research topic in recent years, contributing to software quality [19], the investigation and establishment of software architectures for testing tools have been largely ignored. As known, the establishment of architectures, specially reference architectures, for a given domain consolidates the knowledge about how to develop tools to that domain, contributing to the reuse of design expertise.

Recently, Aspect-Oriented Programming (AOP) has arisen as a new technology to support a better separation of concerns and to more adequately reflect the way developers reason about the system [11], to contribute to maintainability, reusability, and easiness to write software. Besides programming, aspects have also been explored in the early life cycle phases including the requirements analysis, domain analysis and architecture design phases.

In this paper, we investigate the use of aspect in architecture design phase and present an aspect-based reference architecture, named RefTEST (Reference Architecture for Software Testing Tools), that supports the development of software testing tools. Aspect-based architecture refers to architectures that use aspects — from AOP — as mechanism to establish the communication among the modules that compose this architecture. RefTEST is also strongly based on separation of concerns, aiming at providing reusability, maintainability, and capability of evolution to the testing tools built based on this architecture. For the purpose of communicating adequately the knowledge into RefTEST, architectural views were developed and are presented here.

The remainder of this paper is organized as follows. At first, the background about software architecture and related work are presented. Next, we present the proposed archi-tecture for testing domain, discussing its establishment and use. Finally, our conclusions and future directions are presented.

Reference Architecture of Software Engineering Environments:

Conclusions:

The systematization of the testing tools development is a real need of the testing research community. Considering the lack of recent works that establish reference architecture for testing domain, in this paper we proposed RefTEST, a reference architecture strongly based on separation of concerns, pursuing evolvability and reusability of the tools built based on this architecture. In special, this work contributed with the establishment of the testing tools core and also with a new point of view about how to address modules that implement crosscutting concerns. It is important to highlight that the use of aspects to develop and integrate these modules is another important contribution of this work. Our experience has pointed out that the development of testing tools using a well-established reference architecture is relevant. RefTEST have been an important guideline to minimize the efforts to the testing tools development.