COLLABORATIVE TESTING ACROSS SHARED SOFTWARE COMPONENTS
Files
Publication or External Link
Date
Authors
Advisor
Citation
DRUM DOI
Abstract
Large component-based systems are often built from many of the same
components. As individual component-based software systems are
developed, tested and maintained, these shared components are
repeatedly manipulated. As a result there are often significant
overlaps and synergies across and among the different test efforts
of different component-based systems. However, in practice, testers of
different systems rarely collaborate, taking a test-all-by-yourself
approach. As a result, redundant effort is spent testing common
components, and important information that could be used to improve
testing quality is lost.
The goal of this research is to demonstrate that, if done properly,
testers of shared software components can save effort by avoiding
redundant work, and can improve the test effectiveness for each
component as well as for each component-based software system by using
information obtained when testing across multiple components. To
achieve this goal I have developed collaborative testing techniques
and tools for developers and testers of component-based systems with
shared components, applied the techniques to subject systems, and evaluated
the cost and effectiveness of applying the techniques.
The dissertation research is organized in three parts. First, I
investigated current testing practices for component-based software
systems to find the testing overlap and synergy we conjectured exists.
Second, I designed and implemented infrastructure and related tools to
facilitate communication and data sharing between testers. Third, I
designed two testing processes to implement different collaborative
testing algorithms and applied them to large actively developed
software systems.
This dissertation has shown the benefits of collaborative testing
across component developers who share their components. With
collaborative testing, researchers can design algorithms and tools to
support collaboration processes, achieve better efficiency in testing
configurations, and discover inter-component compatibility faults
within a minimal time window after they are introduced.