Thumbnail Image


Publication or External Link





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.