According to Brooks’ often-cited article [1], “The most radical possible solution for constructing software is not to construct it at all.” Component-based software development is popular, using open-source software or commercial off-the-shelf (COTS) software developed by a vendor, a subcontractor, or a third party. Only the documented functions and contractual interfaces of such components are available, but not the fine details. Traditional software verification techniques are, therefore, not applicable.
This paper is one from a series about the exploitation of component metadata for software testing and analysis. The metadata may be static, such as data and control flow information, or dynamic, such as execution traces or assertions. In particular, this paper addresses the issue of regression testing. A code-based approach and a specification-based approach are described. Empirical studies are conducted, showing savings and better effectiveness over disuse of the metadata. Results on component-level method-level, and statement-level metadata are also compared.
While empirical studies are currently popular in software engineering research, it would be useful to follow up the excellent work with a formal framework of regression testing based on component metadata, possibly similar to the authors’ previous outstanding work [2], and with a view toward achieving better understanding of regression testing for component-based software.