Automated Test Case Generation for Airborne Software Using a VAE–Transformer Model
本文提出了一种基于 VAE–Transformer 的框架,该框架将结构化事件场矩阵表示与状态语义向量相结合,以生成多样化、高质量的测试用例,与传统方法相比,显著提高了安全性关键航空软件模糊测试的覆盖率和效率。
原始论文采用 CC BY 4.0 许可(https://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
现代飞机依赖软件来管理从飞行控制到任务规划的一切事务。这些代码属于安全关键型软件,这意味着一个错误就可能导致灾难性的后果。因此,工程师必须对这些程序进行严格测试,以确保它们在每种可能的情况下都能表现正确。测试中的一个主要挑战在于软件运行在复杂的、不断变化的各种状态中。例如,一个改变飞行模式的命令只有在飞机处于特定的预备状态且电池电量充足时才是有效的。传统的测试方法在处理这个问题时往往表现不佳,因为它们将输入数据视为简单的随机变化流。当这些随机变化应用于结构化数据时,它们经常会破坏格式规则或忽略系统的当前状态,导致测试在触及那些可能隐藏着漏洞的深层、隐蔽路径之前就已失败。
西北工业大学和中国民用航空大学的研究人员开发了一种新方法来解决这一问题。他们创建了一个利用人工智能生成专门针对机载软件的高质量测试用例的系统。该方法并非盲目地变异数据,而是首先理解输入的结构以及飞机的当前系统状态。然后,它利用两种截然不同的机器学习模型协同工作,创造出既符合结构规范又符合上下文语境的新测试场景。研究人员在真实飞行控制系统的六个不同模块上测试了该系统。结果发现,与标准测试工具相比,该方法发现了更多的隐藏执行路径并覆盖了更多的代码,同时消耗的计算资源更少。
这种新方法的核心在于它如何表示数据。机载软件的输入不仅仅是随机的数字字符串;它们被组织成特定的块,就像一个网格,其中每一行代表序列中的一个步骤,每一列代表一个特定的信息,例如一个命令、一种模式设置或一个传感器读数。研究人员将他们的测试数据组织成了这种网格格式。他们还提取了飞机运行状态的摘要——例如系统是否处于预备状态、处于何种模式或是否存在任何活动故障——并将此转化为一个紧凑的信息向量。这个向量充当了生成过程中的一组规则或约束,确保生成的任何新测试用例都遵循系统的当前状态。
为了生成新的测试用例,该系统采用了两部分架构。第一部分是一个变分自编码器(VAE),它充当多样性的生成器。它学习观察到的数据中成功测试用例的潜在模式。它不仅仅是复制旧的例子,而是创建一个连续的可能性空间,可以在其中采样新的变体。至关重要的是,它在保持运行状态向量不变的情况下进行操作。这意味着它可以产生许多种测试用例的结构变体,而这些变体都符合相同的特定状态条件,例如“处于预备状态且处于巡航模式”。这使得系统可以探索许多不同的路径,而不会意外破坏软件所要求的状态规则。
系统的第二部分是一个Transformer模型,这是一种以理解序列中不同部分之间关系而闻名的神经网络类型。在这种情况下,它同时观察整个事件网格。它理解在序列开始时发送的一个命令可能需要与序列结束时设置的状态标志相兼容。系统使用一种特殊的门控机制,将来自第一部分的系统状态约束与来自第二部分的多样化变体进行融合。这确保了最终输出是一个完整且连贯的测试用例,其中每个字段在相对于其他字段及整体状态时都是合理的。该模型是并行生成整个测试用例,而不是逐个字节进行猜测,这有助于保持数据的结构完整性。
研究人员使用PX4飞行控制系统(一种广泛使用的开源自动驾驶仪)的指挥模块对该方法进行了评估。他们将该方法与依赖随机变异的标准覆盖导向模糊测试工具(fuzzer),以及另一种常用于生成数据的AI模型——生成对抗网络(GAN)进行了对比。结果显示,其VAE-Transformer方法始终优于其他方法。在指挥模块上,与标准模糊测试工具相比,它将边缘覆盖率提高了约4.9个百分点,行覆盖率提高了5.1个百分点,分支覆盖率提高了4.6个百分点。更重要的是,它在实现更高覆盖率的同时,使用的计算量(以软件执行次数衡量)减少了约9.6%。
这种优势并不局限于单个模块。团队在包括任务管理、健康监测和安全恢复系统在内的六个不同的控制逻辑模块上测试了该系统。在所有六个目标中,新方法发现的独特执行路径和覆盖的代码行数都显著多于对比方法。例如,在任务管理模块上,它比排名第二的方法多发现了77条独特路径。该系统还展示了在发现新路径方面更具持续性的能力,而其他方法往往会达到一个停止发现新代码的平台期。研究人员指出,该方法在处理飞行控制软件特有的复杂状态依赖关系方面特别有效,因为在这些软件中,输入的有效性往往取决于时间、数值和系统状态的精确组合。
研究还包括了确定系统中哪些部分最重要的实验。当研究人员移除变分自编码器或Transformer组件时,性能都会下降,这表明这两个部分对于获得最佳结果都是必要的。同样,当研究人员用更简单的信息组合方法替换自适应门控机制时,系统寻找新路径的效率也会降低。这表明,模型平衡状态约束与随机多样性的特定方式是其成功的关键因素。研究人员得出结论,该方法为高保证软件的自动化测试提供了一种可行的方式,既提高了测试的彻底性,也提高了测试的效率。
尽管结果令人鼓舞,但作者承认,该方法是为具有清晰字段边界的定长输入设计的,这在许多飞行控制系统中很常见,但并非全部。他们建议,未来的工作需要解决可变长度协议和更复杂的交互约束问题。尽管如此,这项研究证明了通过结合系统状态理解与先进的生成模型,可以创建比传统随机方法更有效的测试用例,从而挖掘出隐藏的缺陷。这种方法为确保维持现代飞机飞行的软件的安全性和可靠性提供了一种新工具。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。