论文信息
- 期刊 :ACM Transactions on Software Engineering and Methodology
- 名称 :Efficient Generation of Test Cases for MPI Program Path Coverage through Elite Individual Selection
论文内容
研究背景
MPI(Message-Passing Interface) 是高性能计算、科学计算和复杂数据处理领域的事实标准,广泛应用于多处理器环境下的并行程序开发。然而,MPI程序具有通信、同步和非确定性三大特征,导致其测试成本远高于普通串行程序——研究表明,软件测试通常占软件开发总成本的50%以上,而MPI程序的测试成本更是显著高于串行程序。
路径覆盖测试的核心地位: 在软件测试的各类覆盖准则(语句覆盖、决策覆盖、路径覆盖等)中,路径覆盖是覆盖率最高的测试标准,能够最全面地验证程序执行逻辑。因此,为MPI程序生成路径覆盖测试数据成为确保并行软件质量的关键环节,但同时也是成本最昂贵的环节。
问题提出(现有研究局限性)
(1)串行与并行的鸿沟
现有测试方法和工具主要针对串行程序设计,对MPI等并行程序的支持有限。虽然已有研究提出了专门针对MPI程序的结构测试准则和全路径覆盖技术,但未能提供高效的测试数据生成方法。
(2)进化算法的高昂代价
进化算法(EAs)如:遗传算法(GA)、粒子群优化(PSO)已被广泛用于测试数据生成,但其致命缺陷在于:每生成一个个体都需要执行被测程序以计算适应度,对于复杂的MPI程序,这种"生成-执行-评估"的循环会产生巨大的计算资源消耗。
(3) 代理模型的早期失效
为降低成本,研究者引入代理模型(Surrogate Model)来预测个体适应度,避免频繁执行程序。但在进化早期阶段,可用训练样本极少,导致模型泛化能力差、预测不确定性高,严重影响后续精英个体选择的准确性。1
(4) 单一指标的选择偏差
为进一步降低成本,现有研究倾向于仅从种群中选择部分精英个体进行实际验证。但这些方法过度依赖单一指标(即预测适应度值)进行选择。当预测存在偏差时,选出的"精英"可能不具代表性,反而增加计算开销。
(5) 高维数据的维度灾难
MPI程序输入通常具有高度复杂性,涉及多维数据操作。高维数据导致数据空间呈指数级增长(维度灾难),不仅增加计算复杂度,还使得基于距离的操作(如欧氏距离计算)效果变差,进一步加剧了测试数据生成的难度。
主要贡献
(1) 贡献 1:提出 NVSA(邻居值共享算法)
核心内容: 提出了一种基于邻居值共享的个体适应度预测方法。克服了传统代理模型在进化早期因训练数据不足而导致的高不确定性和预测偏差问题。
创新点:
- 假设基础:个体与其邻近个体的适应度存在相关性
- 实现方式:通过建模邻近个体的适应度相关性来近似当前个体的适应度
- 关键优势:在进化早期数据样本有限时,无需构建复杂的代理模型,仍能通过共享邻居信息提供较准确的预测结果
(2) 贡献 2:提出 RES(基于排名的精英选择)
核心内容: 提出了一种综合考虑多维度信息的精英个体选择策略。克服了现有方法过度依赖单一指标(预测适应度值)导致的精英选择偏差问题
创新点:
-
双维度评估:
- pr(population rank) :衡量个体在种群中的代表性
- ar(area rank) :衡量个体在整个数据域中的位置优势
-
自适应融合:通过比例参数 χ 自适应调整两个维度的权重,早期两者并重,后期偏向高代表性个体
-
排名机制:通过量化这两类信息获得个体最终排名(fr),指导精英选择
(3)贡献 3:首次将数据降维技术引入测试数据生成
核心内容: 将 PCA(主成分分析) 降维技术应用于测试数据生成过程。缓解了 MPI 程序输入维度高、数据空间大导致的维度灾难问题
创新点:
- 开创性:据作者所述,这是首个在测试数据生成设计中考虑数据降维的研究
- 具体应用:在计算 NVSA 和 RAV 之前,对种群、共享集、区域集进行统一降维(降至原维度的 1/3)
- 成本削减:显著降低了高维数据带来的计算复杂度和存储开销
研究问题
RQ1:整体方法效率验证
问题:本文提出的方法是否比现有方法展现出更高的测试数据生成效率?
验证目标:验证将 NVSA、RES 和降维技术整合后的整体框架在生成 MPI 程序路径覆盖测试用例时的效率优势。
对比基线:SAEO [17]、ESM [18]、MSM [31](三种现有的并行程序测试数据生成方法)
关键指标:时间消耗、程序执行次数(评估次数)、成功率
提出问题的映射 :(对应提出的挑战 1-3)
RQ2:NVSA 有效性验证
问题:使用 NVSA(邻居值共享算法)预测个体适应度是否具有合理有效性?
验证目标:验证 NVSA 在适应度预测方面的性能,特别是在进化早期训练样本有限时的预测准确性和效率。
对比基线:SAM1 [17](基于多模态聚类的代理模型)、SAM2 [18](基于多模型集成的代理模型)
关键指标:时间消耗、评估次数、成功率、数据稳定性
提出问题的映射 :(对应提出的挑战 4)
RQ3:RES 有效性验证
问题:使用 RES(基于排名的精英选择)能否在种群中更好地选择精英个体?
验证目标:验证 RES 策略是否比仅依赖适应度预测值的传统选择方法更能有效识别具代表性的精英个体。
对比基线:onlyFit(仅使用个体适应度预测值进行排序和选择的方法)
关键指标:时间消耗、评估次数、成功率、数据稳定性
提出问题的映射 :(对应提出的挑战 5)
RQ4:数据降维有效性验证
问题:使用数据降维技术能否更有效地促进测试用例生成?
验证目标:验证引入 PCA 降维是否能有效降低计算开销,同时保持测试生成效果。
对比基线:noDim(不使用数据降维技术的对照版本,其他策略保持一致)
关键指标:时间消耗、评估次数、成功率
提出问题的映射 :(对应提出的挑战 5)
论文方法介绍
NVSA(邻居值共享算法)
- 设计动机:解决代理模型的"冷启动"困境
在进化算法生成测试数据时,适应度评估是计算瓶颈(需实际执行 MPI 程序)。传统代理模型(Surrogate Model) (如 RBFN、神经网络)试图通过拟合历史数据来预测适应度,但在进化早期面临致命缺陷:
- 训练样本极少(通常 < 50 个),模型无法捕捉真实适应度 landscape
- 高不确定性:预测值偏差大,误导后续搜索方向
NVSA 的核心洞察:与其构建全局近似模型,不如利用空间局部性——在解空间中相近的个体往往具有相似的适应度。通过直接"借用"邻近已知样本的适应度,避免复杂的模型训练。
- 算法机制
NVSA 对种群中每个个体 Xi 执行以下流程:
阶段一:预采样构建知识库
- 使用拉丁超立方采样在输入空间均匀采样
- 实际执行程序获得真实适应度,形成共享集(Shared Set) S={(xj,fj)}
阶段二:动态预测(算法 1)
Step 1:距离计算 计算 Xi 与共享集中所有样本的欧氏距离,找到最近邻及其距离 δmin
Step 2:双模式判断
| 模式 | 条件 | 计算公式 | 适用场景 |
|---|---|---|---|
| 直接继承 | 位于已知数据密集区,完全信任最近邻 | ||
| 加权预测 | 位于稀疏区,综合 个邻居的适应度加权估计 |
关键参数说明:
- dr (自适应距离阈值) :随迭代递减(公式 7:。早期较大以快速利用有限数据,后期收紧以提高精度。
| 符号 | 含义 | 取值/说明 |
|---|---|---|
| 初始距离阈值 | 通常设为输入数据的维度大小(降维后的维度 ) | |
| 当前迭代次数 | 从 0 开始,随进化过程递增(最大 1000) | |
| 种群规模 | 固定为 30(论文设定) |
- ns (邻居数量) :通常设为 3-6,平衡估计精度与计算开销。
3.数学本质:局部加权插值
NVSA 的加权预测公式(公式 5-6)可重写为:
这是一种二阶加权平均:
- 分子:强调高适应度邻居的贡献(平方项放大优质样本权重)
- 分母:归一化因子
与 RBFN 等使用距离加权(如高斯核 e−γδ2 )不同,NVSA 采用适应度加权——距离仅用于筛选邻居集合,最终预测值由邻居的质量(适应度高低)决定,而非距离远近。这在适应度函数非光滑时更鲁棒。
- 动态更新:闭环增强机制
NVSA 不是静态预测器,而是自适应系统:
优势:随着进化进行,共享集 ∣S∣ 增大,预测精度自然提升,形成"越用越准"的正反馈。
提出 RES(基于排名的精英选择)
1. 设计动机:克服单一指标的局限性
传统方法的缺陷
现有研究通常仅依赖预测的适应度值(fitness)对个体排序,选择排名靠前的个体执行验证。但这种方法存在系统性风险:
- 预测偏差:NVSA 或代理模型的预测值存在误差,若完全依赖此单一指标,可能选中"伪精英"(预测值高但实际值低)
- 局部最优陷阱:仅考虑种群内的相对表现,忽略了个体在全局解空间中的位置信息,可能导致搜索陷入局部最优
2. 双维度评估体系
RES 构建了两个互补的评估指标:pr(Population Rank,种群排名)和 ar(Area Rank,区域排名)。
2.1 基础概念:区域适应值(RAV)
在计算双维度之前,需先定义 RAV(Regional Adaptation Value) :
-
劣势区域(regionalSet) :预采样中适应度低于阈值 fitLine 的样本点及其邻域构成的区域
-
RAV 计算(算法 2):个体 i 的 RAV 值表示其"远离劣势区域的程度"
- 若个体位于劣势区域内或附近,RAV 值较低(甚至为 0)
- 若个体远离劣势区域,RAV 值较高
-
物理意义:RAV = 0 表示该位置极可能包含目标测试用例(低适应度区域通常对应未覆盖路径) 2.3 第二维度:位置优势(ar)
定义:衡量个体在全局数据域中的位置优越性,引入探索多样性。
计算逻辑(算法 4): 对于个体 i 和 j :
- 情况 1:若 RAVi=0 且 RAVj>0 ,则 i 位置优于 j (i 位于潜在目标区域)
- 情况 2:若 RAVi>0 且 RAVj>0 且 RAVi<RAVj ,则 i 位置优于 j (i 更接近劣势区域/目标)
- 情况 3:其他情况,通过代表性关系判断
ari = 位置优于 i 的个体数量
性质:
- ar 越小越好:表示 i 位于更有潜力的搜索区域
- 避免局部最优:即使 i 在当前种群中适应度不是最高,但若位于未充分探索的区域(低 RAV),仍可能获得高排名
3. 自适应融合:最终排名(fr)
3.1 融合公式(公式 8)
fri=χ⋅pri+(1−χ)⋅ari
其中:
- fri :Final Rank,个体 i 的最终综合排名(值越小越好)
- χ∈[0.5,1] :自适应权重,动态调整两种信息的比重
3.2 权重自适应机制(公式 9)
χ=1−0.5⋅(1−Pgood)
参数说明:
- Pgood :优良个体比例,种群中适应度超过 fitLine 的个体占比
4. 算法流程总结
Step 1:预处理(算法 2)
- 基于预采样数据划分劣势区域(regionalSet)
- 计算种群中每个个体的 RAV 值
Step 2:计算 pr(算法 3)
- 遍历所有个体对 (i,j)
- 若 i 在适应度和 RAV 上均优于 j ,标记 i→j
- 统计每个个体被多少其他个体支配,得到 pr 值
Step 3:计算 ar(算法 4)
- 基于 RAV 值和代表性关系,判断个体间的位置优劣
- 统计位置优于当前个体的数量,得到 ar 值
Step 4:融合与选择
- 计算当前种群的 Pgood ,得到自适应权重 χ
- 按公式 8 计算每个个体的最终排名 fr
- 排序:按 fr 值升序排列(值越小排名越靠前)
- 选择:选取前 eliteSize 个个体作为精英,执行实际程序验证
5. 技术优势分析
5.1 双维度互补
- pr 维度:确保选中个体在当前种群中的竞争力(利用,exploitation)
- ar 维度:确保选中个体具有全局探索价值(探索,exploration)
- 平衡:避免单纯追求高适应度而陷入局部最优,或单纯追求新位置而忽略质量
5.2 容错机制
即使 NVSA 的预测适应度存在偏差:
- 若偏差是系统性的(整体偏高/偏低),pr 计算中的相对排序仍可能保持
- 若偏差导致某些区域被误判,ar 通过 RAV 机制仍可能保留这些区域的个体进行验证
5.3 自适应能力
χ 根据种群状态自动调整:
- 无需手动设置固定的探索/开发比例
- 响应式地适应进化不同阶段的需求
数据降维技术引入测试数据生成
2. 问题动机:维度灾难的影响
MPI 程序的高维特性
MPI 程序测试面临的维度问题:
-
输入复杂:如论文表 1 所示,测试程序输入维度从 8 维(Mpi_Dijkstra)到 16 维(Cjacobi)甚至混合数据类型(ClustalW)
-
空间爆炸:d 维输入空间的体积随维度指数增长,导致:
- 距离计算失效(高维空间中欧氏距离趋于同质化)
- 计算开销剧增(NVSA 需要计算个体间距离)
- 存储需求增大(共享集和种群数据)
2. 技术实现:PCA 降维流程
2.1 方法选择:主成分分析(PCA)
选择 PCA 的原因:
- 常用性:经典线性降维方法,计算高效
- 信息保留:通过方差最大化保留数据主要特征
- 无需标签:无监督学习,适用于测试数据生成的场景
2.2 具体操作步骤(第 3.4 节)
Step 1:数据合并(dimSet 构建) 将以下三类数据合并为降维集(dimSet) :
- 种群数据(Population) :当前进化代的所有个体
- 共享集(Shared Set) :历史采样和执行的真实数据
- 区域集(Regional Set) :劣势区域标识数据
目的:确保所有相关数据在同一特征空间下处理,保持数据一致性。
Step 2:PCA 降维处理 对 dimSet 执行标准 PCA:
- 计算协方差矩阵 Σ=m1XTX
- 特征值分解:Σv=λv ,得到特征值 λi 和特征向量 vi
- 选择主成分:按累积贡献率选择前 k 个主成分(论文设定 k=⌈D/3⌉ ,即保留原维度的 1/3)
- 投影变换:Y=XWk ,其中 Wk=[v1,v2,...,vk]
Step 3:数据还原与使用 将降维后的数据分别放回对应集合:
- 降维后的种群 → 用于 NVSA 适应度预测
- 降维后的共享集 → 用于 NVSA 距离计算
- 降维后的区域集 → 用于 RAV 计算
3. 在整体框架中的关键应用
降维技术并非独立存在,而是与 NVSA 和 RES 深度耦合,降低两者的计算成本:
3.1 降低 NVSA 的计算复杂度
NVSA 的核心操作是欧氏距离计算:
降维前:维度 D (如 16 维、20 维) 降维后:维度 d=D/3 (如 5-7 维)
效果:
- 距离计算复杂度从 O(D) 降至 O(D/3)
- 在高维情况下(如 ClustalW 的混合高维数据),计算量减少约 66.7%
3.2 降低 RAV 的区域判断成本
RES 中的区域适应值(RAV)计算同样需要判断个体与劣势区域点的距离:
- 若 ∥Xi−xregional∥<dr ,则减少 RAV
降维后,这些距离计算同样在低维空间完成,加速精英选择过程。
3.3 缓解存储压力
共享集随进化迭代不断增长:
- 原始:存储 S 个 D 维向量,空间 O(S⋅D)
- 降维后:存储 S 个 D/3 维向量,空间 O(S⋅D/3)
对于长时间运行的测试生成(如 ClustalW 的 468 条路径),显著降低内存占用。