Incremental Test Generation for Software Product Lines

Recent advances in mechanical techniques for systematic testing have increased our ability to automatically find subtle bugs, and hence, to deploy more dependable software. This paper builds on one such systematic technique, scope-bounded testing, to develop a novel specification-based approach for efficiently generating tests for products in a software product line. Given properties of features as first-order logic formulas in Alloy, our approach uses SAT-based analysis to automatically generate test inputs for each product in a product line. To ensure soundness of generation, we introduce an automatic technique for mapping a formula that specifies a feature into a transformation that defines incremental refinement of test suites. Our experimental results using different data structure product lines show that an incremental approach can provide an order of magnitude speedup over conventional techniques. We also present a further optimization using dedicated integer constraint solvers for feature properties that introduce integer constraints, and show how to use a combination of solvers in tandem for solving Alloy formulas.

[1]  Jiangfan Shi,et al.  Exploiting Constraint Solving History to Construct Interaction Test Suites , 2007, Testing: Academic and Industrial Conference Practice and Research Techniques - MUTATION (TAICPART-MUTATION 2007).

[2]  Markus Roggenbach,et al.  Speci?cation-Based Testing for Software Product Lines , 2008, 2008 Sixth IEEE International Conference on Software Engineering and Formal Methods.

[3]  Henry Muccini,et al.  Towards Testing Product Line Architectures , 2003, TACoS.

[4]  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).

[5]  Sarfraz Khurshid,et al.  Sequential Circuits for Relational Analysis , 2007, 29th International Conference on Software Engineering (ICSE'07).

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

[7]  Sarfraz Khurshid,et al.  Generating structurally complex tests from declarative constraints , 2004 .

[8]  Debra J. Richardson,et al.  Structural specification-based testing: automated support and experimental evaluation , 1999, ESEC/FSE-7.

[9]  Mahadevan Subramaniam,et al.  A Bounded Incremental Test Generation Algorithm for Finite State Machines , 2007, TestCom/FATES.

[10]  Benjamin C. Pierce,et al.  Basic category theory for computer scientists , 1991, Foundations of computing.

[11]  Clémentine Nebut,et al.  System Testing of Product Lines: From Requirements to Test Cases , 2006, Software Product Lines.

[12]  Don S. Batory,et al.  Scaling step-wise refinement , 2004, IEEE Transactions on Software Engineering.

[13]  Jia Liu,et al.  Modeling Interactions in Feature Oriented Software Designs , 2005, FIW.

[14]  Patricia G. Selinger,et al.  Access path selection in a relational database management system , 1979, SIGMOD '79.

[15]  Stephen A. Edwards,et al.  The challenges of hardware synthesis from C-like languages , 2005, Design, Automation and Test in Europe.

[16]  Christian Denger,et al.  Testing and inspecting reusable product line components: first empirical results , 2006, ISESE '06.

[17]  David L. Dill,et al.  Checking Satisfiability of First-Order Formulas by Incremental Translation to SAT , 2002, CAV.

[18]  Don S. Batory,et al.  The design and implementation of hierarchical software systems with reusable components , 1992, TSEM.

[19]  Koushik Sen,et al.  CUTE: a concolic unit testing engine for C , 2005, ESEC/FSE-13.

[20]  Mario Kolberg,et al.  Feature interaction: a critical review and considered forecast , 2003, Comput. Networks.

[21]  Koushik Sen,et al.  DART: directed automated random testing , 2005, PLDI '05.

[22]  Markus Roggenbach,et al.  CSP-CASL - A new integration of process algebra and algebraic specification , 2006, Theor. Comput. Sci..

[23]  Krzysztof Czarnecki,et al.  Verifying feature-based model templates against well-formedness OCL constraints , 2006, GPCE '06.

[24]  Nikolaj Bjørner,et al.  Z3: An Efficient SMT Solver , 2008, TACAS.

[25]  Myra B. Cohen,et al.  Coverage and adequacy in software product line testing , 2006, ROSATEA '06.

[26]  Barbara Liskov,et al.  Program Development in Java - Abstraction, Specification, and Object-Oriented Design , 1986 .

[27]  Don S. Batory,et al.  From implementation to theory in product synthesis , 2007, POPL '07.

[28]  Yannis Smaragdakis,et al.  JTS: tools for implementing domain-specific languages , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).

[29]  Don S. Batory,et al.  Feature Models, Grammars, and Propositional Formulas , 2005, SPLC.

[30]  Antonia Bertolino,et al.  PLUTO: A Test Methodology for Product Families , 2003, PFE.

[31]  Aske Simon Christensen,et al.  Precise Analysis of String Expressions , 2003, SAS.

[32]  André van der Hoek,et al.  Modeling Product Line Architectures through Change Sets and Relationships , 2007, 29th International Conference on Software Engineering (ICSE'07).

[33]  Daniel Jackson,et al.  Software Abstractions - Logic, Language, and Analysis , 2006 .

[34]  Emina Torlak,et al.  Kodkod: A Relational Model Finder , 2007, TACAS.

[35]  Gregg Rothermel,et al.  Analyzing Regression Test Selection Techniques , 1996, IEEE Trans. Software Eng..

[36]  Tomi Männistö,et al.  A Koala-Based Approach for Modelling and Deploying Configurable Software Product Families , 2003, PFE.

[37]  Sarfraz Khurshid,et al.  Generalized Symbolic Execution for Model Checking and Testing , 2003, TACAS.

[38]  Sarfraz Khurshid,et al.  Software assurance by bounded exhaustive testing , 2004, IEEE Transactions on Software Engineering.

[39]  Gang Chen,et al.  Design Wizards and Visual Programming Environments for GenVoca Generators , 2000, IEEE Trans. Software Eng..

[40]  Albert L. Baker,et al.  Preliminary design of JML: a behavioral interface specification language for java , 2006, SOEN.

[41]  Klaus Pohl,et al.  Variability management in software product line engineering , 2006, ICSE.

[42]  James C. King,et al.  Symbolic execution and program testing , 1976, CACM.

[43]  S. L. Gerhart,et al.  Toward a theory of test data selection , 1975, IEEE Transactions on Software Engineering.

[44]  Sarfraz Khurshid,et al.  Testing Software Product Lines Using Incremental Test Generation , 2008, 2008 19th International Symposium on Software Reliability Engineering (ISSRE).

[45]  Sarfraz Khurshid,et al.  Efficient specification-based testing using incremental techniques , 2008 .

[46]  Amerson H Lin Automated Analysis of Security APIs , 2005 .

[47]  Sarfraz Khurshid,et al.  Constraint Prioritization for Efficient Analysis of Declarative Models , 2008, FM.

[48]  Margus Veanes,et al.  Generating finite state machines from abstract state machines , 2002, ISSTA '02.

[49]  Jason Baumgartner,et al.  Transformation-Based Verification Using Generalized Retiming , 2001, CAV.

[50]  Michael L. Fredman,et al.  The AETG System: An Approach to Testing Based on Combinatiorial Design , 1997, IEEE Trans. Software Eng..

[51]  Sarfraz Khurshid,et al.  Checking Java implementation of a naming architecture using Testera , 2001, Workshop on Software Model Checking @ CAV.

[52]  Mana Taghdiri,et al.  Inferring specifications to detect errors in code , 2004, Proceedings. 19th International Conference on Automated Software Engineering, 2004..

[53]  Niklas Sörensson,et al.  An Extensible SAT-solver , 2003, SAT.

[54]  Oscar Díaz,et al.  Feature Oriented Model Driven Development: A Case Study for Portlets , 2007, 29th International Conference on Software Engineering (ICSE'07).

[55]  Sarfraz Khurshid,et al.  Whispec: white-box testing of libraries using declarative specifications , 2007, LCSD '07.

[56]  Hari Balakrishnan,et al.  The design and implementation of an intentional naming system , 1999, SOSP.