Model checking for programming languages using VeriSoft
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Feature integration using a feature construct
Science of Computer Programming
Korat: automated testing based on Java predicates
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
Fundamental Nonmodularity in Electronic Mail
Automated Software Engineering
Coverage and adequacy in software product line testing
Proceedings of the ISSTA 2006 workshop on Role of software architecture for testing and analysis
Delta execution for efficient state-space exploration of object-oriented programs
Proceedings of the 2007 international symposium on Software testing and analysis
Interaction testing of highly-configurable systems in the presence of constraints
Proceedings of the 2007 international symposium on Software testing and analysis
Safe composition of product lines
GPCE '07 Proceedings of the 6th international conference on Generative programming and component engineering
Theories of Program Testing and the Application of Revealing Subdomains
IEEE Transactions on Software Engineering
Efficient online validation with delta execution
Proceedings of the 14th international conference on Architectural support for programming languages and operating systems
Efficient mutation testing by checking invariant violations
Proceedings of the eighteenth international symposium on Software testing and analysis
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
On test repair using symbolic execution
Proceedings of the 19th international symposium on Software testing and analysis
Improving the testing and testability of software product lines
SPLC'10 Proceedings of the 14th international conference on Software product lines: going beyond
Reducing configurations to monitor in a software product line
RV'10 Proceedings of the First international conference on Runtime verification
Reducing combinatorics in testing product lines
Proceedings of the tenth international conference on Aspect-oriented software development
Proceedings of the 33rd International Conference on Software Engineering
Feature cohesion in software product lines: an exploratory study
Proceedings of the 33rd International Conference on Software Engineering
Multiple facets for dynamic information flow
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Toward variability-aware testing
FOSD '12 Proceedings of the 4th International Workshop on Feature-Oriented Software Development
Strategies for product-line verification: case studies and experiments
Proceedings of the 2013 International Conference on Software Engineering
Safe software updates via multi-version execution
Proceedings of the 2013 International Conference on Software Engineering
Hi-index | 0.00 |
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.