# 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
MM-paths for an SPL are derived by analyzing call-returns between modules based on the product line code base. This is possible because the product line code base includes all the code necessary to configure the planned products. In addition, the proposed method is currently agnostic to variability mechanisms. While the variability mechanisms used to implement variabilities are essential aspects for executing integration testing, the proposed approach uses a product line code base to generate MM-paths, giving prominence to the method-message execution paths between different modules. If different variabilities involve interactions across modules, they create method-message execution paths, which become components of MM-paths. MM-path-based SPL integration testing emphasizes the commonalities and variabilities in source nodes and sink nodes, which interact with different modules, as it focuses on the interfacing between various modules. Figure 4 represents an MM-path composed of cc-MEP, vc-MEP, and vv-MEP. The cases described by the paths <b1, b2, c1>, <c4, b2> in Figure 4 are examples including different variabilities. \begin{table}
\begin{tabular}{c p{142.3 pt}} \hline \hline
**xx-MM-Path** & \multicolumn{1}{c}{**Definition**} \\ \hline \multirow{4}{*}{cc-MM-path} & \multicolumn{1}{c}{Commonality/Commonality-MM-path starts with a cc-MEP, passes only cc-MEPs, and ends with a cc-MEP in which the sink node sends no messages. A set of cc-MM-path, Pcc, consists of only cc-MEPs, as described in the following: \\  & \(\mathrm{P_{cc}}=\{\)path scntaining cc-MEP combination\(\}\), where \(\mathrm{P_{cc}}\cap\{\)vc-MEP, cv-MEP, vc-MEP\(\}=\emptyset\) \\ \hline \multirow{4}{*}{vc-MM-path} & \multicolumn{1}{c}{Variability/Commonality-MM-path starts with a cc-MEP, passes cc-MEPs, and ends with a cc-MEP in which the sink node sends no messages. A set of this path, Pvc, should begin with a single cc-MEP, as described in the following: \\  & \(\mathrm{P_{vc}}=\{\)vc-MEP\(\}\leq\mathrm{P_{cc}}\), where \(\mathrm{P_{vc}}\cap\{\)vc-MEP\(\}\
eq\emptyset\). \\ \hline \multirow{4}{*}{cv-MM-path} & \multicolumn{1}{c}{Commonality/Variability-MM-path starts with a cc-MEP, passes cc-MEPs, and ends with a cc-MEP in which the sink node sends no messages. A set of this path, Pcv, should include a single cc-MEP, as described in the following: \\  & \(\mathrm{P_{cv}}=\{\)cv-MEP\(\}\), where \(\mathrm{P_{cv}}\cap\{\)cv-MEP\(\}\
eq\emptyset\). \\ \hline \multirow{4}{*}{vv-MM-path} & \multicolumn{1}{c}{Variability/Variability-MM-path starts with a cc-MEP, vc-MEP, vv-MEP, or cv-MEP, passes xx-MEP(s), and ends with a cc-MEP, cv-MEP, vc-MEP, or vv-MEP in which the sink node sends no messages. A set of this path, Pvv, should include at least one vv-MEP, as described in the following: \\  & \(\mathrm{P_{vv}}=\{\)path scntaining cc-MEP, vc-MEP, cv-MEP, and vv-MEP combination\(\}\), where \(\mathrm{P_{cv}}\cap\{\)vv-MEP\(\}\
eq\emptyset\). \\ \hline \hline \end{tabular}
\end{table} 
Table 2: Types of xx-MM-paths with definitions. The number of MM-paths does not depend on the number of valid products of an SPL. The proposed method employs a product line code base, so the complexity of the product line code base determines the number of MM-paths.