4. 测试数据采集与生成方法
航空软件测试数据的来源通常分为两条主线:一条是从真实系统、总线记录设备或半物理试验环境中采集数据;另一条是在无法获取真实数据或需要覆盖极端工况时,通过模型、脚本或工具生成数据。两条主线最终都要落到同一件事上——为测试用例提供输入激励、预期输出和判定依据。本节围绕测试用例设计、采集工具、仿真生成以及边界与鲁棒性数据构造展开,重点说明“数据从哪来、怎么造、怎么判断可用”。
一、从测试用例反推数据需求
测试数据不是先采再想用途,而应由测试用例驱动。面向航空软件,一条完整的测试用例至少应明确:被测功能、前置状态、输入参数及其取值、激励时序、预期输出、判定容差和数据来源。以某型大气数据计算机的高度通道测试为例,若用例目标是验证“高度从0 ft爬升至35000 ft过程中,高度变化率输出误差不超过±2%”,则数据需求包括:高度随时间的变化序列、对应的高度变化率参考值、采样周期、总线报文格式以及允许误差带。此时采集或生成的数据必须能覆盖该用例的完整动态过程,而不是只给几个离散点。
建议在用例设计阶段同步填写“数据需求映射”,把每个输入参数与数据来源绑定。例如:静压、总压来自大气数据试验台采集;高度变化率参考值由标准轨迹模型生成;离散量状态由仿真激励板卡注入。这样可避免后期出现“用例写了但数据没有”的断档。
二、数据采集工具与采集要点
航空软件测试常用的采集对象包括ARINC 429、AFDX、CAN、RS-422/485、模拟量、离散量和时间戳。采集工具通常由总线接口卡、协议解析软件、记录存储模块和时统模块组成。以ARINC 429采集为例,典型配置为:通道速率100 kbps或12.5 kbps、字长32 bit、标签(Label)八进制编码、SDI源/目的标识、SSM符号状态矩阵。采集时需重点关注三点:
- 时间同步:所有通道应使用统一时统,避免不同总线数据在时间轴上错位。若采集工具支持IRIG-B或PTP,应优先启用。
- 原始记录与解析记录分离:原始报文应完整落盘,解析后的工程量另存,便于回溯和重新解析。
- 采集完整性校验:记录丢帧计数、校验错误计数和缓冲区溢出标志,作为数据可用性的第一道判据。
采集完成后,不能直接拿原始数据当测试输入。需要做数据清洗:剔除无效帧、按时间戳重采样、统一量纲和坐标系。例如,若采集到的高度单位为米,而被测软件接口要求英尺,则必须按1 m = 3.28084 ft换算,并在数据说明中记录换算关系,保证全文和图示参照一致。
三、仿真数据生成方法
当真实数据不可得或需要构造特定工况时,仿真生成是主要手段。常见方式有三类:
第一类是基于标准轨迹模型生成。例如按起飞、爬升、巡航、下降、进近阶段定义高度、速度、航向随时间的变化,再通过大气模型换算为静压、总压、温度等参数。以ISA标准大气为例,海平面温度15 ℃、气压1013.25 hPa,对流层内温度递减率约6.5 ℃/km,可据此计算不同高度的静压和静温,作为大气数据软件的输入激励。
第二类是基于脚本或工具批量生成。用Python、MATLAB或专用测试脚本按参数表批量产生激励序列,适合参数扫描和回归测试。例如对高度变化率限值做扫描,生成一组从-8000 ft/min到+8000 ft/min、步长500 ft/min的斜坡信号,观察软件是否在超限时正确置位告警。
第三类是基于半物理仿真环境生成。将真实机载设备接入仿真计算机,由模型实时解算并输出总线数据,适合验证软硬件接口和时序逻辑。此时需注意仿真步长与软件采样周期的匹配,避免因步长过大导致信号台阶化。
四、边界与鲁棒性数据构造
边界值分析关注参数取值的临界点。以高度参数为例,若软件定义有效范围为-1000 ft至50000 ft,则边界数据至少包括:-1000 ft、-1001 ft、50000 ft、50001 ft,以及边界内侧的-999 ft和49999 ft。对每个边界点,还要考虑变化方向:从有效区内逼近边界和从有效区外进入边界,软件的处理逻辑可能不同。
鲁棒性数据则进一步考察异常输入下的行为,常见构造包括:
- 超范围值:超出定义范围但仍在物理量程内的值,如高度60000 ft。
- 非法编码:ARINC 429中SSM置为故障状态、Label不匹配、奇偶校验错误。
- 跳变与毛刺:在正常信号上叠加单周期尖峰,验证软件滤波和告警抑制逻辑。
- 时序异常:数据更新周期抖动、报文丢失、重复帧、乱序到达。
- 极限组合:多个参数同时处于边界,如高度50000 ft、速度接近Vmo、温度处于极限值。
构造鲁棒性数据时,必须同步定义“预期行为”。例如,当高度报文SSM为故障状态时,软件应输出无效标志而非继续使用旧值;当高度变化率超过±8000 ft/min时,应触发超限告警并记录故障码。没有预期行为的异常数据,只能算“乱测”,无法形成有效判定。
五、数据可用性判断与示例
无论采集还是生成,数据进入测试前都应通过可用性检查。检查项包括:时间戳连续、无丢帧、量纲正确、取值范围合理、与用例需求匹配、预期输出已定义。以下给出一个简化的数据需求映射示例,用于说明如何把用例、数据和判定绑定在一起。
| 用例编号 | 输入参数 | 数据来源 | 关键取值 | 预期输出 |
|---|---|---|---|---|
| TC-ALT-012 | 高度 | 轨迹模型生成 | 0→35000 ft,爬升率2500 ft/min | 高度变化率误差≤±2% |
| TC-ALT-013 | 高度 | 边界构造 | 50000 ft、50001 ft | 50000 ft有效,50001 ft置无效 |
| TC-ALT-014 | 高度SSM | 鲁棒性构造 | 故障状态 | 输出无效标志,不沿用旧值 |
| TC-ALT-015 | 高度变化率 | 脚本扫描 | ±8000 ft/min、±8500 ft/min | ±8000内正常,±8500触发告警 |
上述参数均为教学示例,实际项目中应以被测软件的需求规格和接口控制文件为准。数据采集与生成的核心不是“有数据”,而是“数据能支撑用例、能判定结果、能复现问题”。只有把用例设计、采集工具、仿真生成和边界鲁棒性构造串成一条链,测试数据才真正具备证据价值。