In Software Product Lines (SPLs) it may be difficult or even impossible to test all the products of the family because of the large number of valid feature combinations that may exist. Thus, we want to find a minimal subset of the product family that allows us to test all these possible combinations (pairwise). Furthermore, when testing a single product is a great effort, it is desirable to first test products composed of a set of priority features. This problem is called Prioritized Pairwise Test Data Generation Problem. State-of-the-art algorithms based on Integer Linear Programming for this problema are faster enough for small and medium instances. However, there exists some real instances that are too large to be computed with these algorithms in a reasonable time because of the exponential growth of the number of candidate solutions. Also, these heuristics not always lead us to the best solutions. In this work we propose a new approach based on a hybrid metaheuristic algorithm called Construct, Merge, Solve & Adapt. We compare this matheuristic with four algorithms: a Hybrid algorithm based on Integer Linear Programming ((HILP), a Hybrid algorithm based on Integer Nonlinear Programming (HINLP), the Parallel Prioritized Genetic Solver (PPGS), and a greedy algorithm called prioritized-ICPL. The analysis reveals that CMSA results in statistically significantly better quality solutions in most instances and for most levels of weighted coverage, although it requires more execution time.
翻译:在软件产品线(SPLs)中,由于可能存在大量有效的特征组合,测试产品家族中的所有产品可能非常困难甚至不可行。因此,我们希望找到一个最小的产品子集,使我们能够测试所有这些可能的组合(成对)。此外,当测试单个产品需要很大工作量时,最好先测试由一组优先级特征组成的产品。这个问题被称为优先级成对测试数据生成问题。基于整数线性规划的现有算法对于中小型实例足够快。然而,由于候选解数量的指数增长,存在一些实际实例过大,无法在合理时间内通过这些算法计算。此外,这些启发式算法并不总能得到最优解。在本研究中,我们提出了一种基于混合元启发式算法(称为构造、合并、求解与自适应)的新方法。我们将这种数学启发式算法与四种算法进行了比较:基于整数线性规划的混合算法(HILP)、基于整数非线性规划的混合算法(HINLP)、并行优先级遗传求解器(PPGS)以及一种称为优先级-ICPL的贪心算法。分析表明,CMSA在大多数实例和大多数加权覆盖率水平上能获得统计上显著更优的解,尽管它需要更多的执行时间。