# An Experimental Evaluation of Path-Based Product Line Integration Testing and Test Coverage Metrics
## 3 Path-Based SPL Integration Testing and Test Coverage Metrics
### Path-Based SPL Integration Testing
**Definition 1 (xx-MEP). **_A sequence of nodes that begins with a common/variable source node and ends with a common/variable sink node, with no intervening sink nodes._  
**Definition 2 (xx-MM-path). **_A sequence of xx-MEPs linked by messages._  
Based on the two definitions, the path-based integration testing for SPL classifies types of both the SPL-specific MEP and MM-path for use in test coverage measurements. In contrast to the path-based integration testing of single software testing, path-based SPL integration testing requires the handling of variability. In other words, the IUT in SPL can incorporate variability. Therefore, the MEP should be defined by considering this. However, in path-based SPL integration testing, it is not necessary to consider whether the statement fragments between source and sink nodes are common or variable statement fragments. This is because, in integration testing, only the statement fragment interacting with another unit (method or class) is a significant test target. The statement fragments located between the source and sink nodes belong to the same unit and are consequently tested during unit testing. Table 1 describes four types of xx-MEPs with their corresponding definitions, revised based on earlier work [8]. In the proposed method, MEPs differ from those in MM-path-based integration testing of single software in terms of the types of sink and source nodes, as shown in Figure 3. This distinction takes into account the structural characteristics of SPL implementation code and the nature of integration testing. In the proposed method, variable statement fragments within the same unit (e.g., nodes represented as a single dotted line in Figure 3) are assumed to be tested during unit testing, with the existence of an auxiliary test code, such as derivers or stubs, for handling variability. In the case of the xx-MM-path, which encompass cv-, vc-, and vv-MEPs containing variable slices, determining test data to cover the path becomes impossible if the variation point remains unbound. Even with test data decided, the path remains non-executable. Whether to test these paths during platform testing or during product testing depends on the test strategy. For example, if a test engineer performs testing according to the common and reuse strategy, the test path containing variability is created during platform testing, but the test execution is delayed until the binding time of application engineering. Because lots of stubs and/or drivers are needed for testing these paths, test costs increase exponentially. \begin{table}
\begin{tabular}{c c} \hline \hline
**xx-MEP** & **Definition** \\ \hline \multirow{3}{*}{cc-MEP} & Commonality/Commonality MEP begins with a common source node, traverses through common or variable statement fragments that do not issue messages, and ends with a common sink node. \\ \hline \multirow{3}{*}{cv-MEP} & Commonality/Variability MEP begins with a common source node, passes common or variable statement fragments that do not issue messages, and ends with a variable sink node. \\ \hline \multirow{3}{*}{vc-MEP} & Variability/Commonality MEP begins with a variable source node, passes common or variable statement fragments that do not issue messages, and ends with a common sink node. \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Types of xx-MEPs with definitions. Figure 3: MEPs composing MM-paths of an SPL. Table 2 describes the possible five types of MM-paths according to the types of MEPs in Table 1. Unlike the previous version [8], vc+cv-MM-path has been newly added, and the descriptions of the remaining MM-paths have been improved for clarity of meaning. MM-path-based SPL integration testing, like single software's path-based integration testing, is also source code-based. The difference between them lies in the foundation of the proposed method on the product line code base, which includes planned variation points and variants. Product line code base is the entire set of sources that is used to produce the products in a product line.