Product Line Engineering
A promising approach for developing variable software systems are software product lines. They improve reusability of software in a large number of products that share a common set of features.
Usually, more than a million different products can be derived from one Software Product Line. Miscellaneous approaches exist dedicated to Software Product Line testing. The challenging problem is that it is not feasible to test all products individually neither during nor after the development process. To cope with this problem we currently research on several strategies for testing software product lines.
1. Family-based: All products are considered together by using a parameterized Software Product Line implementation, e.g., C++ with variability encoded by #ifdef-statements. We aim to automatically generate a test suite from this implementation that tests all products.
2. Sample-based: Generating a representative set of products. Instead of testing each product individually only this set needs to be tested to reveal faults within a Software Product Line. We currently work on different strategies to find a minimal set, which is an NP-complete problem. Here also the question what is a good test order arises.