Patterns for In-code Algebraic Testing

This paper describes an in-code approach to automatic algebraic-based software testing and a number of useful design patterns for doing it. The approach uses algebras as testable views on a system. These views form test interfaces which are highly automatable. Specifications are expressed in terms of axioms of the algebras. We use the testing tool T2 to provide automation. T2 works with in-code specifications; these are specifications written directly in a programming language. Because in-code specifications do not need any additional skill to master, they are more likely to be adopted by engineers on the field. Because they need no additional tools to parse and to keep them insync with the implementation, they are much cheaper to maintain. So, for real uses they have a good chance

[1]  K. Rustan M. Leino,et al.  The Spec# Programming System: An Overview , 2004, CASSIS.

[2]  Richard G. Hamlet,et al.  Data Abstraction, Implementation, Specification, and Testing , 1981, TOPL.

[3]  Peter D. Mosses,et al.  CASL User Manual: Introduction to Using the Common Algebraic Specification Language , 2004 .

[4]  Bertrand Meyer,et al.  Reconciling Manual and Automated Testing: The AutoTest Experience , 2007, 2007 40th Annual Hawaii International Conference on System Sciences (HICSS'07).

[5]  Tanja E. J. Vos,et al.  Trace-based Reflexive Testing of OO Programs with T2 , 2008, 2008 1st International Conference on Software Testing, Verification, and Validation.

[6]  Bertrand Meyer,et al.  On the Predictability of Random Tests for Object-Oriented Software , 2008, 2008 1st International Conference on Software Testing, Verification, and Validation.

[7]  Tsong Yueh Chen,et al.  Adaptive random testing by localization , 2004, 11th Asia-Pacific Software Engineering Conference.

[8]  Peter D. Mosses,et al.  CASL: the Common Algebraic Specification Language , 2002, Theor. Comput. Sci..

[9]  Bin Zhou,et al.  Automated Testing EJB Components Based on Algebraic Specifications , 2007, 31st Annual International Computer Software and Applications Conference (COMPSAC 2007).

[10]  Martin Odersky,et al.  An Overview of the Scala Programming Language , 2004 .

[11]  Marinus J. Plasmeijer,et al.  Gast: Generic Automated Software Testing , 2002, IFL.

[12]  Donald Sannella,et al.  Toward Component-Oriented Formal Software Development: An Algebraic Approach , 2002, RISSEF.

[13]  John V. Guttag,et al.  Abstract data types and the development of data structures , 1977, CACM.

[14]  Donald Sannella,et al.  Algebraic methods for specification and formal development of programs , 1999, CSUR.

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

[16]  P. David Stotts,et al.  Daistish: systematic algebraic testing for OO programs in the presence of side-effects , 1996, ISSTA '96.

[17]  Stephen J. Mellor Executable and Translatable UML 1 , .

[18]  Kokichi Futatsugi,et al.  Chapter 2 – CafeOBJ Jewels , 2000 .

[19]  M. Gerritsen Extending T 2 with Prime Path Coverage Exploration Maaike Gerritsen , 2008 .

[20]  Bertrand Meyer,et al.  Eiffel: The Language , 1991 .

[21]  Koen Claessen,et al.  QuickCheck: a lightweight tool for random testing of Haskell programs , 2000, ICFP.

[22]  A. Jefferson Offutt,et al.  Introduction to Software Testing , 2008 .