嵌入式软件系统测试中的仿真系统结构设计
3 铁路微机联锁系统测试
被测铁路微机联锁2乘2取2系统运行在CPU(486DX)上,属于典型的嵌入式软件。逻辑图如图3所示。
被测嵌入式软件运行在图3中A系和B系的CPU中,通过以太网接收人工下达的联锁命令,经过处理后通过DP协议网络传输给输出模块,控制现场设备。A、B系中只能以一个系为主系,主从系的切换可以通过手动切换实现,也可以自动切换。
3.1 测试实施
测试实施之前,首先编制测试用例,并针对每个测试用例给出预期结果和可能产生的错误以及相应错误的故障定位。把这些数据输入仿真系统的分析模型中,为即将进行的测试工作做准备。
在测试实施过程中,首先利用此仿真系统按照第一类测试方法进行测试,验证铁路联锁2乘2取2系统被测软件是'工作的',也就是软件的功能是按照预先的设计执行的。然后按照第二类测试方法进行测试,验证软件是不工作的。
使用仿真系统设计并实施了很多在实际软硬件环境中不可能实现的测试用例。举例说明如下:
(1)非法数据的输入。正常运行的系统,操作人员不可能发送错误的联锁命令给被测软件,输入模块也不可能产生测试需要的各种非法输入数据。使用仿真系统的驱动模块和桩模块,可以很轻松地发送任何组合形式的非法数据,以测试铁路联锁2乘2取2系统被测软件的安全性。结合分析模块的使用,具体实施过程为:
通过人机界面输入超长非法测试数据6,244,244,80,0,17,1,0,80,0,255,255,255,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0给被测软件,预期结果为无测试结果数据返回,即嵌入式软件将非法数据过滤掉,不进行任何操作。仿真系统通过人机界面提示测试通过,实际情况也确实是微机联锁系统未进行任何操作,便将超长的非法数据过滤了。通过人机界面输入固定码的非法测试数据170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,预期结果为无测试数据返回,即嵌入式软件将非法数据过滤,不进行任何操作。仿真系统通过人机界面提示测试通过,而实际情况是微机联锁单元出现了死机现象。针对这种情况,修改预期结果内容为"无测试数据返回且与被测应用软件正常通讯",而在故障模型中增加了"与被测应用软件无任何通讯"项,以修正仿真系统的错误定位为微机联锁单元死机。同理也要修改前面超长非法测试数据的预期结果和故障模型的内容。如此反复,仿真系统的分析模型也在不断完善中。
(2)通信容量测试。铁路联锁2乘2取2系统被测软件中的基本功能包括系统通信最大I/O模块总数为100。在正常测试过程中,一般无法为测试搭建如此大规模的硬件测试环境,即使可以搭建,也会因为性价比较低而不实施此项测试。使用仿真系统,可以通过桩模块和驱动模块轻松实现100个I/O模块的通信量,同时可以省去购置I/O硬件模块的费用。
(3)铁路联锁系统软件需要满足IEC61508标准[4]中SIL4的要求。通过仿真软件驱动模块重复发送联锁命令,可以很容易地测试铁路联锁2乘2取2系统中的软件是否满足SIL4的要求,而这些测试如果单纯用人工输入进行测试是不可能实现的。交互操作模块则可以在测试过程中完成软件与人必需的交互操作功能。
被测软件第一次测试结束后,开发人员根据仿真系统的错误定位集中修改软件中的BUG,然后提交进行第一次回归测试。经过在第一次测试中人机交互的不断完善,仿真系统的分析模型趋于成熟,在回归测试过程中能很快定位错误,为测试及开发人员节省了大量时间,缩短了软件开发周期。
3.2 测试结果
通过使用仿真系统对铁路联锁2乘2取2系统被测软件实施测试,共发现涉及软件故障安全原则的致命问题和严重问题10个,涉及软件漏洞安全的致命问题和严重问题5个,涉及功能未实现的致命问题和严重问题6个,涉及可靠性的致命问题1个,一般和提示问题30个。
针对嵌入式软件的特点提出的具备交互式错误检测定位功能的仿真系统架构模型,实现了在系统测试过程中检测定位软件错误,解决了嵌入式软件系统测试过程中,由于被测程序与嵌入式系统平台和底层程序融合在一起,错误不容易定位的问题。通过在铁路微机联锁测系统试项目中的应用,发现了很多关键性问题,并且为测试人员和开发人员节省了大量时间,加快了测试进度,在回归测试阶段表现尤为明显。事实表明,此仿真系统架构模型不仅可以应用于嵌入式软件的系统测试,也可以应用于非嵌入式软件的黑盒测试。在以后的研究中,将应用人工智能学科的学习理论,实现仿真系统分析模块的自动学习功能,以实现在测试过程中自动定位软件错误,而无需人工干预。
- 基于DSP的导弹仿真器嵌入式组件设计(04-30)
- 为嵌入式软件建立统一软件系统框架的方法详介(05-23)
- 在VIM中实现对嵌入式软件的调试(08-06)
- 基于仿真的嵌入式软件白盒覆盖测试系统设计(08-26)
- 嵌入式软件运行剖面建模及测试用例生成(11-06)
- 嵌入式软件与硬件的集成测试过程研究(11-16)