Automated harvesting of test oracles for reliability testing

Reliability testing is of even greater importance in component-based development than it is in traditional development methods, since it is the only practical way of measuring how well assembled components match each others' expectations. However, support for reliability testing has improved little over the last few years and it remains one of the most costly elements of software engineering. In this paper we present an approach that tackles the most fundamental obstacle to more efficient reliability testing - namely, the problem of automating the generation of "correct" reference results against which to evaluate component outputs. The approach employs the same basic technologies that can be used to discover components for reuse, but instead of building them into the final system it uses them, in combination with others, as an automated pseudo-oracle for measuring the reliability of self-built components. This significantly enhances the utility of component discovery technology, since it allows value to be derived from components which do not pass the threshold needed for full reuse but are sufficiently reliable to form a functioning component of a test oracle.

[1]  Jeannette M. Wing,et al.  Signature matching: a key to reuse , 1993, SIGSOFT '93.

[2]  Anneke Kleppe,et al.  The Object Constraint Language: Getting Your Models Ready for MDA , 2003 .

[3]  Douglas C. Schmidt,et al.  Overview of the CORBA component model , 2001 .

[4]  Jos Warmer,et al.  The object constraint language , 1998 .

[5]  K. Beck,et al.  Extreme Programming Explained , 2002 .

[6]  Algirdas A. Avi The Methodology of N-Version Programming , 1995 .

[7]  David F. McAllister,et al.  Reliability of voting in fault-tolerant software systems for small output-spaces , 1990 .

[8]  Charles Ashbacher,et al.  The Object Constraint Language Second Edition, Getting Your Models Ready for MDA, by Jos Warmer and Anneke Kleppe. , 2003 .

[9]  Clemens A. Szyperski,et al.  Component software - beyond object-oriented programming , 2002 .

[10]  John J. Marciniak,et al.  Encyclopedia of Software Engineering , 1994, Encyclopedia of Software Engineering.

[11]  David F. McAllister,et al.  Fault-Tolerant SoFtware Reliability Modeling , 1987, IEEE Transactions on Software Engineering.

[12]  Ali Mili,et al.  Reuse-based software engineering: techniques, organization, and controls , 2001 .

[13]  Yunwen Ye,et al.  An Empirical User Study of an Active Reuse Repository System , 2002, ICSR.

[14]  Andy Podgurski,et al.  Behavior sampling: a technique for automated retrieval of reusable components , 1992, International Conference on Software Engineering.

[15]  J. Wang,et al.  Proceedings of the 29th Annual International Computer Software and Applications Conference—Workshops and Fast Abstracts COMPSAC 2005 , 2005 .

[16]  Paul Ammann,et al.  The Effect of Imperfect Error Detection on Reliability Assessment via Life Testing , 1992, IEEE Trans. Software Eng..

[17]  Ye Wu,et al.  Testing and Quality Assurance for Component-Based Software , 2003 .

[18]  Dick Hamlet When only random testing will do , 2006, RT '06.

[19]  Ralf H. Reussner,et al.  Reliability prediction for component-based software architectures , 2003, J. Syst. Softw..

[20]  Colin Atkinson,et al.  Extreme Harvesting: test driven discovery and reuse of software components , 2004, Proceedings of the 2004 IEEE International Conference on Information Reuse and Integration, 2004. IRI 2004..

[21]  Kent L. Beck,et al.  Extreme programming explained - embrace change , 1990 .

[22]  Nancy G. Leveson,et al.  A reply to the criticisms of the Knight & Leveson experiment , 1990, SOEN.