车载嵌入式系统中的自动化软件缺陷检测与识别
摘要
汽车工业的趋势表明,对嵌入式系统(尤其是高级驾驶辅助系统(ADAS))的测试需求将在不久的将来显著增长。本文提出了一种新方案,用于实现嵌入式系统中软件缺陷的自动检测。该方案包含一种数据驱动采样算法,通过顺序生成测试用例来智能地采样测试空间。此外,该方案能够将不同缺陷相互分离,并识别出触发每个缺陷的信号。与其他用于缺陷识别和分析的自动化方法相比,结果表明,这种新颖的方案能够更快地识别缺陷。此外,它能正确分离缺陷并可靠地复现各个独立的缺陷。
索引术语
高级驾驶辅助系统,自动测试模式生成,汽车电子,嵌入式软件,机器学习,元建模,模式聚类,系统验证。
一、引言
RECENT 研究表明,原型高级驾驶辅助系统(ADAS)的性能已接近或超过人类水平[1]–[4]。随着这些高级驾驶辅助系统(ADAS)进入量产车辆,大量新的硬件和软件组件正被引入到用户手中。
由于这些新组件具有安全敏感性,必须开发测试程序以确保系统无缺陷。传统的汽车验证可确保满足所有功能需求。然而,这种测试不足以验证嵌入式系统在意外但可能发生的真实世界情况下的安全运行。
软件和电子集成缺陷每年导致数百万辆汽车被召回[5]。尽管各种法律法规和工业界标准要求通过测试来验证功能[6],[7], 当电子控制模块(ECM)接收到未预见或未经测试的输入信号时,仍会触发意外缺陷。要实现嵌入式系统输入空间的最低程度覆盖,也需要投入大量时间。因此,全面组合测试变得不可行,原始设备制造商(OEMs)被迫在生产前评估部分可能的测试用例。这不可避免地需要在测试覆盖率和测试时长之间进行权衡。
本文介绍了一种新颖的数据驱动方法,用于自动进行此类系统的测试和分析。该方法减少了测试时间和原始设备制造商(OEM)专家工程师所需的输入。该方法包括三个阶段:(1)缺陷检测,(2)缺陷分离,以及(3)缺陷因果分析。
第一阶段旨在以最少的测试时间检测出所有不同的软件缺陷。第二阶段确定检测到的不同缺陷的数量,并根据每个测试用例中检测到的缺陷进行测试用例的分离。第三阶段确定触发每个缺陷的输入信号,并提供额外信息以实现快速修复。这三个独立阶段结合在一起,形成了一条消除缺陷的连贯路径。各阶段的整体流程及结果总结见图1。
这些方法在一个独立的电子控制模块(ECM)及其嵌入式软件上进行了验证。测试在丰田汽车欧洲公司的技术中心针对多个代表性模型进行,使用了一款原型交通标志识别ADAS软件。本文详述的技术不仅限于提高输入空间的覆盖率,还能根据以往测试中的系统行为智能地生成测试用例。这些技术此前尚未在汽车领域中应用过,并且被证明显著优于本文后续所述的基准测试实践。
在本文接下来的部分中,缺陷一词将用于描述嵌入式系统中的一种非期望行为。对触发诊断条目或诊断故障码(DTC)的车辆问题的正确识别将被称为指示器。
II. 相关工作
在过去十年中,汽车开发与测试已高度依赖于基于模型的系统工程和基于模型的验证与确认(V&V)[8]–[11]。V&V的关键环节之一是测试用例生成,这项任务劳动密集且容易出现人为错误。已有大量方法被提出用于自动生成测试用例[12]。可以利用SysML/UML需求生成测试用例[13],[14]。类似地,也可使用时序逻辑[15],根据运行需求来测试边界区域。这些方法在开发早期阶段(如模型在环(MIL)测试)非常有用,并且对于确保所有需求均被满足至关重要[16]。这些方法要么基于对被测系统(SUT)内部结构的专家知识,要么为需求验证而手动设计[17]–[19]。然而,这些测试策略并未专门解决发现未知缺陷的问题。
在[20]–[22]中,采用基于统计的机器学习技术来搜索汽车软件缺陷。具体而言,系统被建模为马尔可夫链,并使用蒙特卡洛或吉布斯采样器生成测试用例。这些方法已被集成到商业工具中,能够成功检测缺陷。马尔可夫链的缺点在于,在开始任何测试之前,必须由开发工程师预先定义系统状态和转移。这些状态和转移定义仅为测试而创建,给开发工程师增加了大量工作。因此,这种白盒方法在时间上效率不高。
基于变异的测试用例生成是用于基于模型的测试的一种相对较新的方法[23],[24]。该方法利用一个已验证的系统模型,对其进行变异,并生成测试用例以检测这种变异。只要这些变异数能够代表实际系统中的缺陷,该方法就具有价值,但在硬件在环(HIL)测试期间无法提供功能支持。本文所描述的方法同样利用了已验证的系统模型,但不是事先生成测试用例,而是在HIL测试过程中自适应地生成测试用例。
其他方法将被测系统视为黑箱,仅评估其输入和输出信号[10],[25]。黑盒测试在许多软件测试领域已被证明具有重要价值,尤其适用于汽车应用,因为它对测试人员所需的输入极少。通过减少设置测试用例所需的时间,可以投入更多时间进行实际测试。尽管前景良好,但在过去十年中,有关推进汽车领域黑盒测试的研究成果发表较少。
到目前为止讨论的工作主要集中在缺陷检测上,其假设是工程师在给定一个触发缺陷的测试用例时能够确定根本原因。虽然这在某些情况下是成立的,但根本原因识别本身可能是一项复杂且耗时的任务。现有研究将识别和因果分析视为独立的主题;本文则将它们结合在一个简化的流程中。
在[26],[27]中,遗传算法被用于根本原因分析,以确定缺陷发生时的输入信号阈值。尽管这种方法很有用,但它仅适用于依赖少量输入信号的单个缺陷。这是由于遗传算法在高维度情况下收敛速度较慢。通常会识别出多个独立缺陷,这些缺陷依赖于不同的输入信号。在使用遗传算法之前,必须通过手动步骤将唯一缺陷分离,并确定每个缺陷由哪些信号触发。
本文介绍了一种用于端到端高级驾驶辅助系统黑盒测试的新方法。通过自动化大部分缺陷测试所需的工作,可以在更短的时间内对软件进行彻底评估。本文中的方法并不取代需求验证,而是作为缺陷消除的补充流程。
III. 黑盒表示
本文所采用的各个技术在其他领域已被证明是有效的[28]–[31]。此处将这些技术专门引入用于汽车缺陷检测。为了能够成功描述这些技术,首先将讨论被测系统(SUT)。
A. 实时基于模型的测试
为了对汽车硬件[32]进行真实评估,应实时执行对被测系统(SUT)的测试。在本文中,需求被整合到一个经过验证的Simulink模型中。该经过验证的模型用于定义缺陷。因此,本文不专门评估系统需求,因为这些需求被认为已在Simulink模型的模型在环(MIL)测试期间得到验证。这种方法在实际工业应用中已被证明效果良好[32]–[34]。
B. 输入信号规范
测试ECM读取的所有总线消息将被称为系统输入。每个输入信号是在总线刷新率下离散化的时间序列。系统输出定义为被测ECM发送的所有总线消息的集合。该算法如图2所示,为每次测试独立生成一个测试用例。测试用例定义为一次测试中评估的所有输入信号的集合。
C. 输入信号生成
在本文测试的示例软件中,任意时刻存在2 × 10^13种可能的输入值组合。由于每个信号的刷新率为100赫兹,因此无法对输入空间进行穷尽搜索。此外,该完整的输入空间并不能代表ECM的行为,因为输入空间中的不同位置不一定对应于评估不同的ECM功能。
输入空间将被缩减,从而使算法能够分析一个更低维度且更具意义的特征空间。这是通过使用定性特征而非严格的定量定义来描述信号行为而实现的。
每个多维输入信号都被转换为二维特征空间中的一个新点。所实现的两个定性特征被归一化到区间[0, 1]:
-
复杂度
:信号变化的速率。零复杂度信号是恒定不变的,而复杂度为1的信号将以该信号的总线刷新率发生改变。每次变化的时序均随机均匀采样。
-
比例性
:定义信号可取的值。每个参数的可能值首先被划分为两个集合,分别对应系统状态的变化。信号的比例性越高,其从第二个集合中选择的值就越多,而非第一个集合。
根据对信号值的了解,原始设备制造商软件专家将比例性划分为不同的集合;示例见附录A。当信号在集合1和集合2的值之间转换时,系统状态可以在不直接定义的情况下发生改变。通过类似地调整每个信号的复杂度,可间接控制系统状态。利用这两个特性定义信号行为,可显著减少输入空间,同时仍能控制系统状态。由该方法生成的信号已由丰田汽车欧洲公司验证,确认其代表了第七节中测试的计算机视觉软件所遇到的真实信号。
定性特征提取满足两个属性:
1. 在特征固定的情况下,该算法应生成用于评估相似ECM功能的输入信号。
2. 在特征固定的情况下,每个测试用例都应是唯一的。
如图3所示,根据性质二的要求,改变特征会产生具有不同特性的信号。性质一在图4中得到展示,显示了在固定复杂度和比例性下不同的信号。变化的时序以及瞬时值均为随机方法。然而,在图4的所有图表中,变化点的数量以及在每个集合中花费的时间百分比大致保持恒定。
D. 输出信号表示
被测系统和理想Simulink模型的瞬时输出均为等长的二进制向量。向量中的每个元素均为对应诊断条目状态的布尔指示器。该瞬时输出以100赫兹进行采样,形成两个尺寸相同的二进制矩阵,分别对应被测系统和理想Simulink模型。所有第一阶段测试均在预定义的恒定持续时间内运行。
被测系统的输出与理想模型相减,得到一个定义缺陷的矩阵。A是已验证模型的输出,B是被测系统(SUT)的输出,C是组合表示;这些量均为大小为(T × n)的矩阵,其中T表示时间步长的数量,n表示输出中的指标数量。对于每个时间步长t:
$$
A = [A_{t0} \quad A_{t1} \quad A_{t2} \ldots A_{tn}]
$$
$$
B = [B_{t0} \quad B_{t1} \quad B_{t2} \ldots B_{tn}]
$$
$$
C_{ti} =
\begin{cases}
1 & \text{if } A_{ti} = 1 \text{ and } B_{ti} = 0 \
-1 & \text{if } A_{ti} = 0 \text{ and } B_{ti} = 1 \
0 & \text{if } A_{ti} = B_{ti}
\end{cases}
$$
基于此表示方式,当软件存在误报时对应于输出矩阵中出现虚假正值($C_{ti} = -1$),存在漏报时对应于出现虚假负值($C_{ti} = 1$),而如果软件与理想模型一致,则无缺陷($C_{ti} = 0$)。该输出矩阵C会为所有测试用例保存下来。理想模型与被测系统之间的任何偏差均构成缺陷,无论其持续时间长短。换句话说,只要矩阵C包含任意非零元素,即表示该测试用例检测到了缺陷。
IV. 第一阶段:缺陷检测算法
为了高效评估被测系统,本文提出了一种算法来自适应地识别输入的区域包含缺陷的空间。测试用例使用迭代采样算法FLOLA‐沃罗诺伊(FV)在二维特征空间[28],[29]中生成。在第一阶段的每次迭代中,所有信号共享相同的二维特征值。
A. FLOLA-沃罗诺伊
FV策略基于两个独立的组成部分:模糊局部线性逼近(FLOLA)和沃罗诺伊镶嵌。它通过根据特征空间中每个位置附近的样本数量以及缺陷检测率对所有位置进行评分,从而平衡了利用与探索。
利用会为缺陷检测率表现出非线性行为的区域分配高分。这些区域已经识别出缺陷。在非线性区域中增加额外样本将有助于定义二维特征空间中缺陷停止出现的边界。
探索则通过沃罗诺伊镶嵌计算,为采样稀疏的区域分配更高分数,其中每个先前采样的点周围都会绘制一个单元格。
FV算法的这两个组件相结合,为特征空间中的每个位置分配一个分数,并选择得分最高的坐标作为下一个测试样本点。FV在每次迭代中分析所有以往测试用例的结果。利用与探索之间的平衡确保了能够获得每种缺陷的多个示例,同时继续搜索新的缺陷。
B. 顺序采样循环
采样点被依次选择,以最大化每个点的效率。这极大地减少了识别相同数量缺陷所需的测试用例数量以及测试时间。由于该方法旨在识别依赖于未知输入参数的未知数量缺陷,因此形式化验证(FV)不会排除输入空间中的任何区域。特征空间中每个选定位置均根据以下伪代码进行评估:
- 使用得分最高的特征值生成20个测试用例。
- 对每个测试用例,分别评估一次被测系统和Simulink模型。
- 比较被测系统和Simulink的输出以确定缺陷率。
- 根据FV对特征空间的所有区域进行评分。
FV用于衡量在选定位置检测到缺陷的测试用例比例,结果介于0和1之间。在该位置执行完所有测试后,FV会重新评估特征空间,并选择得分最高的下一个位置。
由于该算法在顺序采样循环开始前对系统一无所知,因此需要少量初始点。使用拉丁超立方空间填充设计选择十一个初始点[35]。
V. 第二阶段:缺陷分离算法 THM
第一阶段之后,已识别出大量包含缺陷的测试用例。第二阶段确定唯一缺陷的数量。通过聚类将由相同缺陷引起的测试用例分组到同质簇中。
对于每个测试用例,输出C是一个(T × n)矩阵,其中包含许多重复的行。每个C矩阵被简化为一组n维向量,其中n是指标的数量。全零行被移除,因为它们表示未检测到缺陷的情况。其次,所有与前一行相同的行也被移除,因为它们表示相同输出在较长时间内持续发生。这样得到每个矩阵的一组向量;这些向量将被聚类。由于缺陷间交互噪声的存在,唯一向量的数量通常远大于真实系统缺陷的数量。第二阶段将确定唯一缺陷的数量。
用于聚类分类向量的标准算法是k‐模式[30];此处使用了其改进版本。聚类后,假设每个簇对应一个唯一缺陷。第二阶段的结果是每个簇的一组测试用例。
A. 加权相异性度量
聚类算法的目标是最小化簇内距离,同时最大化簇间距离。必须使用一种能够恰当适应汽车总线信号独特结构的相异性度量。
在标准的k‐模式分类聚类应用中,通过将每个属性的值与相应簇的质心进行比较来确定相等性。换句话说,该不相似性度量不对每个属性的不同取值进行区分。该度量如下所示,其中X和Y是两个分类向量[30]:
$$
d(X, Y) = \sum_{i=1}^{n} \delta(x_i, y_i)
$$
其中
$$
\delta(x_i, y_i) =
\begin{cases}
0 & \text{if } x_i = y_i \
1 & \text{if } x_i \neq y_i
\end{cases}
$$
给定矩阵C中的表示,该度量未能完全捕捉向量中包含的信息。对于第一阶段的每个类别属性,存在三种可能的类别[-1, 0, 1]。类别0可被视为一种特殊的默认情况,因为它表示“未检测到缺陷”。由于大多数缺陷仅在少数输出属性上表现出来,因此大多数向量将主要为零的稀疏表示。如果所有属性均为等权重,则存在许多情况下一个向量与多个聚类中心等距。
本文介绍了一种改进的相异性度量方法,该方法在计算距离时调整特定属性上的权重。这种相异性度量在质心和样本均为默认值(值为0)时添加附加权重。新度量方法旨在将那些在默认指示符(正常运行)上一致的样本与在缺陷指示符上一致的样本区分开来。
这可以看作是[36]中提出的解决方案的一个特例。新度量对应于在(3)中用(4)所示的内容替换$\delta(x_i, y_i)$,其中ε是一个介于0和1之间的值:
$$
\delta(x_i, y_i) =
\begin{cases}
0 & \text{if } x_i = y_i \neq 0 \
\epsilon & \text{if } x_i = y_i = 0 \
1 & \text{if } x_i \neq y_i
\end{cases}
$$
在此实现中,ε的值取决于向量长度$\epsilon = 3/n$。数值3是第一阶段所有向量中非零元素个数的中位数。该新的相异性度量被用于标准的k‐模式聚类算法中。
B. 初始簇质心选择
聚类算法的一个关键输入是初始聚类中心。本文引入了一种启发式方法,利用第一阶段数据的特定结构来确定初始质心。首先,保留那些C矩阵仅包含一个向量的测试用例。假设这些向量对应于单个缺陷。从这些向量中,那些在一个指示器上发生偏离的向量将作为初始类别聚类中心。
这种启发式方法倾向于高估缺陷数量,而这比低估更为可取。如果两个不同的缺陷被聚类到一起并报告为一个缺陷,那么很可能其中一个缺陷将不会被修复。然而,如果一个缺陷被报告为多个缺陷,只需额外花费一些时间来确定它们是相同缺陷,仅对效率造成较小影响。
VI. 第三阶段:缺陷复现算法
利用第二阶段的聚类结果,第三阶段的目标是确定每个唯一缺陷的原因。将嵌入式系统视为黑箱使得真正的根本原因分析不可行。本文将因果分析的目标定义为算法能够使用不同的测试用例可靠地复现缺陷的能力。换句话说,算法应能够通过仅指定依赖于该缺陷的输入信号的行为来复现每个缺陷。
嵌入式系统中的几乎所有软件实现错误都可以通过评估4到6个参数之间的相互作用来检测[31],[37]。这种技术称为组合测试或t阶测试,它生成的测试用例包含了n个输入信号中某个子集的所有可能组合。仅测试这些t阶相互作用,旨在以少量测试用例达到与全因子设计相似的覆盖率。在本文中,将t设为5,以覆盖大多数相互作用,同时避免测试数量过多。
对于每个簇,将执行少量额外的测试,以隔离与每个缺陷相关的信号。复杂度和比例性的值定义了一个信号的行为。这将用于通过将每个信号设置为基线来“关闭”信号。复杂度的基线为0,意味着该参数在整个仿真过程中保持恒定。对于比例性,由于边界值0和1实际上在两组值之间进行选择,因此基线值将是远离原始测试用例中所使用特征值的边界。
每个簇在第二阶段确定最短测试时间。每个簇的该值将不同。最短测试时间是指缺陷首次发生的时间,并用于每个簇的第三阶段测试。由于测试是实时进行的,这显著减少了第三阶段所需的时间,同时也确保了测试用例的简洁性。
对于每个簇,质心是最常见的输出向量。从生成该输出向量的所有测试用例中,选择触发缺陷最快的测试用例作为第三阶段的初始输入。该算法现在将通过编辑此测试用例来评估可能的输入参数交互。这是通过使用五阶交互的二元组合测试设计实现的。
对于每个参数,信号将为基线或与初始测试用例相同。基线将是从比例集中选择的常量值,且该比例集与初始测试用例中的相反。这种t阶测试可以看作是开启和关闭特定输入信号,并评估每种t阶开关组合。根据仍能触发缺陷的开关组合,确定因果信号。
VII. 实验设置与结果
本文提出的方法通过对正在开发中的丰田安全感知 2.0系统组件——丰田路标识别系统(RSA)的车载诊断功能进行测试验证[38]。控制模块被视为一个通过车辆总线接收和发送消息的黑箱。该测试软件具有32个输入参数和43个输出指示器。第一阶段采用固定的15秒测试时间,在后处理前生成了一个1500 x 43大小的C矩阵。每个输入参数具有2到94个可能的离散值。
本文所述方法在MATLAB中开发,并与经过验证的 Simulink模型集成,该模型是控制模块软件开发过程中使用的行业标准。MATLAB算法通过Vector硬件和软件(CANoe)与ECM通信。尽管测试使用的是控制器局域网(CAN)协议信号,但该解决方案可轻松与标准通信工具接口,支持通过更先进的协议(如以太网、FlexRay等)进行通信。被测ECM控制路标识别功能,该功能利用计算机视觉实时识别交通标志并向驾驶员显示。该系统将在未来几代驾驶辅助系统中供其他控制模块用于逻辑决策。通过简单更换附录A中所示的Simulink模型和输入信号定义,该相同技术可 readily 应用于其他ADAS产品的基于模型的软件在环(SIL)、处理器在环(PIL)和硬件在环(HIL)测试。黑箱方法使得被测系统能够实现快速且简便的更改。所有测试均在比利时扎芬特姆的丰田技术中心进行。
为了验证,该算法在已知软件缺陷上进行了评估,这些缺陷被注入到经过验证的Simulink模型中。这些缺陷模型替换了图2所示测试设置中的被测系统。共引入了八个独立的缺陷,已引入各种可能单独或同时发生缺陷的场景(例如,每次 2个或3个)。这些注入的缺陷由丰田汽车欧洲公司根据被测系统之前版本中的真实缺陷创建。8个缺陷的摘要如表 I所示。
A. 缺陷检测
第一阶段的缺陷检测一直持续到在复杂性和比例性特征空间中完成了100个点的评估。在每个点生成了20个随机测试用例,总共进行了2000次评估。
针对生成这些测试用例的不同方法进行了相互对比:
-
FLOLA
: 特征空间变换,后接第IV节中详细描述的 FLOLA‐沃罗诺伊。这构成了本文所述方法的基础。
-
随机参数(RP)
: 在复杂性和比例性的二维特征空间变换中,值被均匀地随机选择。这些值随后用于为每次测试生成新的输入信号。
-
Random
: 从每个参数的所有值中随机选择值来生成输入信号。时间和转换次数也以均匀随机的方式选择。共生成了2000个随机测试用例。
这两个随机化基准允许对序列采样算法的两个方面进行比较:输入信号参数化和FLOLA‐沃罗诺伊采样。随机方法从所有可能的信号值中选择,因此不使用信号参数化方法。RP生成利用了信号参数化技术,但并未智能地采样二维设计空间。通过这些基准,预期随机参数生成将优于随机生成,而这两者都将逊于FV算法。
1) 单个缺陷
本文开发的算法在8个合成缺陷上进行了测试,并记录了缺陷检测的百分比。最初,每次只考虑一个缺陷。结果总结如下表II和图5所示。
表II显示,FLOLA采样在八个缺陷中的七个上表现最佳。在这七个缺陷上,RP采样也如预期般优于完全的随机生成。在缺陷#8上,FLOLA表现不如RP采样,而随机生成明显优于两种更高级的方法。由于该缺陷易于触发(是唯一检测率超过80%的缺陷),信号参数化和特征空间探索反而略微降低了检测次数。尽管如此,FLOLA仍以69%的频率显著捕获到该缺陷。在多个缺陷同时出现的情况下,当算法需要将一个缺陷与另一个缺陷分离时,较低的检测率在常见缺陷上将显示出其优势。
除了检测率之外,评估每种方法首次检测到各个缺陷的情况也很有意义。为此,针对每个缺陷,每种方法均进行了十二次测试,并记录了首次检测到每个缺陷的测试用例。已计算这些首次识别结果的均值和标准差。标准差为 0表示该缺陷在全部12次测试中均在同一时间被首次检测到。这种情况仅出现在FLOLA方法中,原因是其初始拉丁超立方测试用例具有结构化生成特性。表III中记录了均值、标准差以及单因素方差分析结果。如果ANOVA p值小于 0.05,则可以以95%置信度认为不同方法的结果来自不同的分布。
在八个缺陷中的五个缺陷上,FLOLA 在统计学意义上优于 RP 和随机生成方法。这五个缺陷是 RP 和随机方法难以定位检测的缺陷。在其余三个缺陷上,FLOLA 仍然表现良好,但这些是常见缺陷,RP 和随机方法也能快速检测到。FLOLA 的性能在缺陷#2和#3上尤为明显,这两个缺陷发生频率较低,且所有方法都难以检测。缺陷#2和#3均与环境空气传感器的诊断有关,而该诊断需要非常特定的信号序列才能执行。
2) 多个同时发生的缺陷
为了评估更复杂的场景,执行了相同的流程,其中多个缺陷同时存在于同一模型中。测试了两种缺陷场景:缺陷 #1 和 #7(场景 10)以及缺陷 #6、#7 和 #8(场景 11)。由于罕见缺陷(#6)与常见缺陷(#8)混合,场景 11 的分离将尤其具有挑战性。检测到的缺陷总百分比记录在表 IV 中,忽略正在发生的具体是哪种缺陷。
结果表明,FLOLA 在场景 10 中的表现优于 RP 和随机方法,但在场景 11 中则不然。场景 11 中随机生成的结果与缺陷 8 的结果几乎相同(而 FLOLA 的结果有所增加),这表明随机方法检测到的大多数缺陷均为缺陷 8。在评估触发多个缺陷的检测情况时,仅查看总检测率是不够的。
由于目标是检测出所有缺陷,因此更重要的是评估哪些缺陷被成功检测到。每种唯一缺陷被触发的测试用例数量汇总于下表 V 中。对于每个场景,均执行了 2000 次测试;然而,由于许多测试用例触发了多个缺陷,因此各项结果之和不等于 2000。
查看这些详细结果可以明确看出,FLOLA 在检测缺陷方面优于其他两种方法。由于探索与利用的权衡,FLOLA 的结果在缺陷检测上更为均衡。此外,还明显可以看出特征变换有助于平衡缺陷检测,因为RP优于随机方法。在场景11中使用随机方法的结果尤其偏斜,几乎仅检测到缺陷#8。尽管其总体检测率最高,但这种偏斜会在第二阶段带来问题。缺陷#6的随机检测仅有33次,其中大多数与缺陷#7或缺陷#8同时发生。将缺陷#6从缺陷#8的1822次检测中分离出来,无异于大海捞针。而采用FV后,虽然缺陷 #8的检测率仍然较高,但各缺陷检测结果的数量级更为接近,这将使聚类能够成功识别出这些不同的缺陷。
同样,每个场景均进行了十二次测试,以记录每个缺陷被检测到的速度。结果如下表 VI 所示,列出了两种场景下各个缺陷的检测情况以及每个场景的总体结果。正如预期,FLOLA 在除缺陷 #8 外的所有缺陷上均优于其他两种方法,在缺陷 #8 上的表现略逊于随机方法。但这一微小差异被在检测缺陷 #6 和缺陷 #7 时的统计学上的显著改进所远远超过,即使这些缺陷与缺陷 #8 同时发生也是如此。在场景 10 中,当缺陷 #7 与缺陷 #1 同时出现时,其检测速度也显著更快。
B. 缺陷分离
第一阶段的结果均为随机化处理并组合在一起,作为第二阶段的输入,在第二阶段中将测试用例划分为唯一缺陷。如前所述,必须进行此类聚类,以消除来自相同缺陷多个示例的干扰噪声。例如,在测试某一缺陷注入时(缺陷5),预计会影响4个不同的指标;实际结果在每次15秒的仿真中产生了平均13个不同的输出向量,共得到400个唯一的输出向量。采用所述启发式方法选择初始聚类中心,该方法往往会高估唯一缺陷的数量。
1) 单个缺陷
首先对所有仅有一个缺陷激活的测试结果进行聚类。共有8个唯一缺陷,通过第五节中描述的方法,算法将这些缺陷分组为19个聚类。所有19个聚类的组成情况如图6的饼图所示。这些饼图可以解释为每个聚类的纯度;目标是获得主要由每种独立缺陷组成的单一簇,同时知道会存在包含缺陷的异质混合的额外聚类。这一目标已明显实现,因为每个唯一缺陷在某一聚类中的占比至少达到81%;事实上,8种缺陷中有7种缺陷的聚类浓度超过 90%。单个缺陷在某一聚类中占据显著多数,可确保其被 OEM工程师识别。
尽管聚类数量是真实缺陷数量的两倍以上,但对于黑箱方法而言,19 仍是一个合理的近似值。共有 39,085 个向量被用作聚类算法的输入,其中包含 537 个唯一配置。因此,聚类将潜在缺陷的数量从 537 个减少到 19 个。虽然有可能进一步减少聚类数量,但所开发的启发式方法能够持续保证每个缺陷都包含一个以其为主导的簇。这一问题的挑战在发生频率较低的缺陷中表现得尤为明显。缺陷2仅生成了79个向量,其中69个被正确聚类在一起;类似地,缺陷3生成的69个向量中有64个被正确聚类。作为对比,缺陷5生成了16,403个向量,包含400个唯一向量。
2) 多个同时发生的缺陷
相同的聚类算法也被应用于多个缺陷同时激活的测试用例。这些是第一阶段中的相同测试用例(场景10和11),经过随机化并分组在一起。使用场景10和11,共有4个不同的缺陷。这些缺陷被算法聚类为9个组,如图7所示。在这些测试中,实际上出现的唯一向量组合数量(703)比单个缺陷的数量更多,这是由于缺陷同时发生时产生的缺陷间交互噪声所致。该方法将结果聚类为较少数量的聚类,这进一步验证了用于确定初始聚类中心的启发式方法的有效性。该启发式方法能够判断出,尽管唯一向量数量较多,但真实缺陷的数量较少。聚类数量大约是真实缺陷数量的两倍,但比唯一向量的数量少两个数量级。这一结果为第三阶段提供了合理数量的聚类以供评估。再次可以明显看出,每个缺陷都有一个其占绝对多数(大于80%)的聚类,即使对于缺陷#6这样的罕见缺陷也是如此。聚类是使用所有向量进行的,但图表仅使用每次仅一个缺陷激活的向量生成,以避免某些向量被重复计算两次或三次。
C. 缺陷复现
该算法提取了每个聚类出现的最短测试时间。对于大多数聚类而言,该时间显著少于第一阶段使用的15秒。具有大多数相同缺陷的聚类共享相同的最短时间。
32个输入参数的五阶交互至少需要额外进行214个测试,以达到最短测试时间针对每个簇。在每次测试中记录每个参数的t阶开关,以及缺陷是否被触发。预计只有当多个信号处于特定开关位置时,每个簇才会触发缺陷。为此,针对触发缺陷的测试用例和未触发缺陷的测试用例,分别计算每个输入信号的比例性均值和标准差。
结果识别出触发每个缺陷的参数,以及这些参数应取的值。若某参数的标准差低于0.25的阈值,则判定该参数会触发缺陷。该参数较低的标准差意味着在缺陷发生时其倾向于某一特定值集。基于这些参数,通过测量其均值比例性来确定其应取的值;该过程依据开发工程师在测试前提供的两组值集。结合最短测试时间,这些信息对某些输入参数施加约束,以便于每个缺陷能够被轻松复现。第三阶段的输出信息及整体方法为一份缺陷列表,其中每个缺陷由其最短测试时间、一组触发该缺陷的输入信号以及各触发输入信号应选取的值集来定义。用于触发该缺陷的一组测试用例也被保存下来供工程师参考。
VIII. 结论
本文中的方法已被证明在原型高级驾驶辅助系统软件上比基准方法能够更快速、更可靠地检测缺陷。该方法仅需附录A中所示的简单参数定义以及已验证的Simulink模型(开发工程师通常已经拥有)作为输入。在识别出缺陷后,该方法能够确定唯一缺陷的数量,并将所有测试用例划分为对应于这些唯一缺陷的聚类。除了提供这些示例外,该解决方案还分析输入信号以识别因果信号;此外,它还对输入值以及测试时间施加约束。这些信息对于工程师确定每个缺陷的根本原因极为宝贵。
本文描述的整体测试方法针对汽车应用场景,特别是嵌入式ADAS系统软件的测试。输入信号生成技术的设计和评估均以ADAS信号为典型代表。由于嵌入式软件之间具有普遍的相似性,预计该解决方案可轻松推广至汽车领域内外的其他各种软件测试场景。
2875

被折叠的 条评论
为什么被折叠?



