Font Size: a A A

Testing and maintaining evolving software systems

Posted on:2001-03-08Degree:Ph.DType:Thesis
University:State University of New York at AlbanyCandidate:Wu, YeFull Text:PDF
GTID:2468390014452628Subject:Computer Science
Abstract/Summary:
Software testing, which is the process we use to detect undiscovered faults, is a critical element of software quality assurance. However, software testing can only show that software defects are present and cannot show the absence of defects. Therefore, after the software testing process, faults may still exist in the program. Moreover, when new functionalities are needed or the new processing environment may be ported, proper software maintenance will be necessary.; Software testing and maintenance for systems of traditional programming languages have been investigated for a long time. Since the development of Object-Oriented techniques, testing Object-Oriented programs has gained much attention, while the maintenance of Object-Oriented programs has not been fully understood. Among maintenance activities, one of the important and necessary activities is regression testing, which is aimed at ensuring that the modified software still meets the specifications validated prior to the modification activities. In the first part of the thesis, we present a regression testing technique that selects test cases by utilizing static information from the analysis of the program structure and dynamic information by tracing the function-calling sequences. To compare the effectiveness of this technique with other existing approaches, we conducted an empirical study on three industrial real-time systems. The results show that not only does this technique preserve all the necessary information for regression testing, but it is also much more efficient and more precise than the existing techniques.; Although Object-Oriented techniques may greatly facilitate the software development, but to increase the reusability and buildability of software, and thus further increase the productivity and the quality of the software systems, the techniques of component-based software development have emerged. Much work has been devoted to developing technology for the construction of component-based software, but techniques for testing and maintaining component-based systems haven't kept the pace. In the second part of the thesis, we first present a fault model that depicts four types of faults likely to be encountered in component-based software. From an analysis of these faults, we suggest a new approach for testing component-based software at the integration and system levels. Our approach utilizes both static and dynamic analysis to steer test case generation. The static analysis captures the interaction relationships among the components, while the dynamic analysis keeps track of the interface invocations as well as event triggering. Information obtained from both analyses is capable of exposing faults caused by the interactions among heterogeneous components. The methodology proposed is efficient and effective, as demonstrated by the promising results obtained from an empirical study.; When a component in a component-based software is modified or upgraded, the issue of maintenance arises. Based on the fault model we proposed, in the third part of the thesis, we present an effective regression testing technique to maintain evolving component-based systems. Our technique first statically identifies affected interfaces, events and dependence information; then based on the dynamic interaction information for each test case, a selection algorithm is proposed to verify all affected entities. Moreover, if all the affected interfaces are implemented under the same environment, a more rigorous selection technique is proposed. The methodology proposed is efficient and effective, which is demonstrated by the promising results obtained from an empirical study.
Keywords/Search Tags:Software, Testing, Systems, Empirical study, Faults, Proposed
Related items