Computer Science and Engineering, Department of


Date of this Version

Winter 12-2011

Document Type



A DISSERTATION Presented to the Faculty of The Graduate College at the University of Nebraska In Partial Fulfilment of Requirements For the Degree of Doctor of Philosophy, Major: Computer Science, Under the Supervision of Professor Matthew B. Dwyer and Professor Myra B. Cohen. Lincoln, Nebraska: December, 2011

Copyright (c) 2011 Jiangfan Shi.


A new software engineering methodology, software product line (SPL) engineering, has been increasingly studied in academia and adopted inindustry in the past decade. It allows the delivery of similar, but customized, software products to customers in the same domain within a short timeperiod. Software product line engineering produces an SPL by defining feature commonality and variability, and is supported by a well-managed asset base. SPL engineering can improve productivity from three to ten times, however, we require more efficient testing methods, so that we canensure the correctness of SPLs with the same resource allocation percentage as in the traditional software engineering; traditional methods appliedto SPL testing require a longer percentage of the software lifecycle.

In this dissertation, we show how modern constraint solvers can be used to tackle the challenge of efficiently ensuring dependability in SPLs fromtwo perspectives: sampling and reuse. In sampling, the key is to choose a subset of products that are representative of the whole configurationspace. We focus on one sampling technique, combinatorial interaction testing, that samples combinations of variability in the SPL. In reuse, the goalis to leverage the inherent property of SPLs: similarity, which stems from the fact that all configurations are generated from a core set of commonand variable features. Our primary contributions are improved sample generation techniques for SPL testing that efficiently incorporate constraintsbetween features, and reuse techniques that efficiently leverage similarities during integration testing.