Test-Based Specifications of Components and Systems

Several program-analysis schemes now make unusual use of information derived from execution sampling. From finite test sets these techniques derive measures with wider meaning, which can then be exploited in novel ways. We call test information used beyond its actual limitations a test-based specification. The idea is quite different from the usual software specification, which is an a priori statement of what a program should do. Rather, a test-based specification is an empirical approximation to what a program actually does do. The great virtue in analysis using test-based specifications is that (in contrast to the usual software specifications) test-based analysis is decidable and automatic. A test-based specification system for component-based software development (CBSD) has been implemented over the past five years, along with an extension of fundamental testing theory to precisely describe its properties. The CBSD tools provide an ideal context for experiments to study test-based specification, providing insights into sub- domain testing, composition of test results, and especially the role that program persistent state plays in testing and analysis. This paper describes the CBSD theory and tools, lists insights gained, and suggests new ways to think about and practice testing using test-based specifications.

[1]  Corrado Böhm,et al.  Flow diagrams, turing machines and languages with only two formation rules , 1966, CACM.

[2]  Dick Hamlet Subdomain testing of units and systems with state , 2006, ISSTA '06.

[3]  John B. Goodenough,et al.  Toward a theory of test data selection , 1975 .

[4]  Daniel Jackson,et al.  Alloy: a lightweight object modelling notation , 2002, TSEM.

[5]  Kern W. Dickman Principles of computer programming , 1964 .

[6]  Karl Meinke,et al.  Automated black-box testing of functional correctness using function approximation , 2004, ISSTA '04.

[7]  Sarfraz Khurshid,et al.  Korat: automated testing based on Java predicates , 2002, ISSTA '02.

[8]  Ryszard Janicki,et al.  Foundations of the Trace Assertion Method of Module Interface Specification , 2001, IEEE Trans. Software Eng..

[9]  Amer Diwan,et al.  Discovering Algebraic Specifications from Java Classes , 2003, ECOOP.

[10]  Harlan D. Mills,et al.  Principles of computer programming : a mathematical approach , 1987 .

[11]  William E. Howden,et al.  Reliability of the Path Analysis Testing Strategy , 1976, IEEE Transactions on Software Engineering.

[12]  William G. Griswold,et al.  Dynamically discovering likely program invariants to support program evolution , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[13]  Dick Hamlet Software component composition: a subdomain-based testing-theory foundation , 2007 .

[14]  Clemens Szyperski,et al.  Component software , 1997 .

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

[16]  Sarfraz Khurshid,et al.  TestEra: a novel framework for automated testing of Java programs , 2001, Proceedings 16th Annual International Conference on Automated Software Engineering (ASE 2001).

[17]  J. Michael Spivey,et al.  The Z notation - a reference manual , 1992, Prentice Hall International Series in Computer Science.

[18]  E. Tufte Beautiful Evidence , 2006 .