skip to main content
10.1145/2491411.2491459acmconferencesArticle/Chapter ViewAbstractPublication PagesfseConference Proceedingsconference-collections
research-article

SPLat: lightweight dynamic analysis for reducing combinatorics in testing configurable systems

Published:18 August 2013Publication History

ABSTRACT

Many programs can be configured through dynamic and/or static selection of configuration variables. A software product line (SPL), for example, specifies a family of programs where each program is defined by a unique combination of features. Systematically testing SPL programs is expensive as it can require running each test against a combinatorial number of configurations. Fortunately, a test is often independent of many configuration variables and need not be run against every combination. Configurations that are not required for a test can be pruned from execution. This paper presents SPLat, a new way to dynamically prune irrelevant configurations: the configurations to run for a test can be determined during test execution by monitoring accesses to configuration variables. SPLat achieves an optimal reduction in the number of configurations and is lightweight compared to prior work that used static analysis and heavyweight dynamic execution. Experimental results on 10 SPLs written in Java show that SPLat substantially reduces the total test execution time in many cases. Moreover, we demonstrate the scalability of SPLat by applying it to a large industrial code base written in Ruby on Rails.

References

  1. S. Apel and D. Beyer. Feature cohesion in software product lines: an exploratory study. In ICSE, pages 421–430, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. S. Apel, A. von Rhein, P. Wendler, A. Groblinger, and D. Beyer. Strategies for Product-Line Verification: Case Studies and Experiments. In ICSE, pages 482–491, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. T. H. Austin and C. Flanagan. Multiple facets for dynamic information flow. In POPL, pages 165–178, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. C. Boyapati, S. Khurshid, and D. Marinov. Korat: Automated testing based on Java predicates. In ISSTA, pages 123–133, July 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. I. Cabral, M. B. Cohen, and G. Rothermel. Improving the testing and testability of software product lines. In SPLC, pages 241–255, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. S. Chandra, E. Torlak, S. Barman, and R. Bod´ık. Angelic debugging. In ICSE, pages 121–130, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. A. Classen, P. Heymans, P.-Y. Schobbens, A. Legay, and J.-F. Raskin. Model checking lots of systems: Efficient verification of temporal properties in software product lines. In ICSE, pages 335–344, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. M. B. Cohen, M. B. Dwyer, and J. Shi. Coverage and adequacy in software product line testing. In ROSATEA, pages 53–63, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. M. B. Cohen, M. B. Dwyer, and J. Shi. Interaction testing of highly-configurable systems in the presence of constraints. In ISSTA, pages 129–139, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. M. d’Amorim, S. Lauterburg, and D. Marinov. Delta execution for efficient state-space exploration of object-oriented programs. In ISSTA, pages 50–60, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. B. Daniel, T. Gvero, and D. Marinov. On test repair using symbolic execution. In ISSTA, pages 207–218, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. FEST. Fixtures for Easy Software Testing. http://fest.easytesting.org/.Google ScholarGoogle Scholar
  13. P. Godefroid. Model checking for programming languages using verisoft. In POPL, pages 174–186, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. R. J. Hall. Fundamental nonmodularity in electronic mail. ASE Journal, 12(1):41–79, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. P. Hosek and C. Cadar. Safe Software Updates via Multi-version Execution. In ICSE, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Human-resource management system. 101Companies. http://101companies.org/wiki/@system.Google ScholarGoogle Scholar
  17. Java tokenizer and parser tools. JTopas. http:// jtopas.sourceforge.net/jtopas/index.html.Google ScholarGoogle Scholar
  18. K. Kang, S. Cohen, J. Hess, W. Nowak, and S. Peterson. Feature-oriented domain analysis (FODA) feasibility study. Technical Report 90-TR-21, CMU/SE, Nov. 1990.Google ScholarGoogle ScholarCross RefCross Ref
  19. C. Kästner, A. von Rhein, S. Erdweg, J. Pusch, S. Apel, T. Rendel, and K. Ostermann. Toward variability-aware testing. In FOSD, pages 1–8, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. C. H. P. Kim, D. Batory, and S. Khurshid. Reducing Combinatorics in Testing Product Lines. In AOSD, pages 57–68, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. C. H. P. Kim, E. Bodden, D. S. Batory, and S. Khurshid. Reducing Configurations to Monitor in a Software Product Line. In RV, pages 285–299, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. C. H. P. Kim, S. Khurshid, and D. Batory. Shared Execution for Efficiently Testing Product Lines. In ISSRE, pages 221–230, 2012.Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. C. H. P. Kim, D. Marinov, S. Khurshid, D. Batory, S. Souto, P. Barros, and M. d’Amorim. SPLat: Evaluation. http://www.cs.utexas.edu/~chpkim/splat, 2013.Google ScholarGoogle Scholar
  24. C. Kolbitsch, B. Livshits, B. Zorn, and C. Seifert. Rozzle: De-cloaking internet malware. In Oakland, 2012.Google ScholarGoogle Scholar
  25. Korat home page. http://mir.cs.illinois.edu/korat/.Google ScholarGoogle Scholar
  26. J. Kramer. Conic: an integrated approach to distributed computer control systems. Computers and Digital Techniques, IEE Proceedings E, 130(1), 1983.Google ScholarGoogle Scholar
  27. Library for object persistence. Prevayler. www.prevayler.org/.Google ScholarGoogle Scholar
  28. Library to serialize objects to XML and back again. XStream. http://xstream.codehaus.org/.Google ScholarGoogle Scholar
  29. R. E. Lopez-herrejon and D. Batory. A standard problem for evaluating product-line methodologies. In GPCE, pages 10–24. Springer, 2001.Google ScholarGoogle Scholar
  30. J. McGregor. Testing a Software Product Line. Technical Report CMU/SEI-2001-TR-022, CMU/SEI, Mar. 2001.Google ScholarGoogle ScholarCross RefCross Ref
  31. M. Plath and M. Ryan. Feature integration using a feature construct. SCP Journal, 41(1):53–84, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Puzzle game. Sudoku. https://code.launchpad.net/ ~spl-devel/spl/default-branch.Google ScholarGoogle Scholar
  33. A. V. Rhein, S. Apel, and F. Raimondi. Introducing Binary Decision Diagrams in the Explicit-State Verification of Java Code. In JPF Workshop, 2011.Google ScholarGoogle Scholar
  34. SAT4J. http://www.sat4j.org/.Google ScholarGoogle Scholar
  35. D. Schuler, V. Dallmeier, and A. Zeller. Efficient mutation testing by checking invariant violations. In ISSTA, pages 69–80, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. S. Thaker, D. S. Batory, D. Kitchin, and W. R. Cook. Safe composition of product lines. In C. Consel and J. L. Lawall, editors, GPCE, pages 95–104. ACM, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. N. Tillmann and W. Schulte. Unit Tests Reloaded: Parameterized Unit Testing with Symbolic Execution. Technical Report MSR-TR-2005-153, Microsoft Research, November 2005.Google ScholarGoogle Scholar
  38. J. Tucek, W. Xiong, and Y. Zhou. Efficient online validation with delta execution. In ASPLOS, pages 193–204, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. E. Weyuker and T. Ostrand. Theories of program testing and the application of revealing subdomains. IEEE TSE, 6(3):236–246, 1980. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. SPLat: lightweight dynamic analysis for reducing combinatorics in testing configurable systems

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in
    • Published in

      cover image ACM Conferences
      ESEC/FSE 2013: Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
      August 2013
      738 pages
      ISBN:9781450322379
      DOI:10.1145/2491411

      Copyright © 2013 ACM

      Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 18 August 2013

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • research-article

      Acceptance Rates

      Overall Acceptance Rate112of543submissions,21%

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader