APP下载

总线容错机制及其验证方法

2010-12-11

空间控制技术与应用 2010年2期
关键词:测试环境应用层用例

高 猛

(北京控制工程研究所,北京 100190)

总线容错机制及其验证方法

高 猛

(北京控制工程研究所,北京 100190)

卫星系统广泛采用容错技术以提高系统的可靠性,而总线通信的稳定性和可靠性对于系统任务的成功至关重要.工程研制中,通常采用总线容错技术对系统通信故障进行识别和屏蔽.介绍了基于故障仿真技术的总线容错机制验证方法,包括故障规格分析技术、故障用例生成技术和故障仿真技术,利用该方法对某星载软件的总线通信功能进行了容错测试,验证了方法的有效性和实用性.

总线容错;故障模式;故障仿真

卫星系统广泛采用容错技术以提高系统的可靠性.现代容错技术中包括对硬件故障的容错,越来越多地借助软件容错加以实现,星载软件的可信性评估变得愈加重要.

研究表明,对于安全关键系统,系统内及系统与环境间的复杂交互作用所引起的故障较其他类型的故障而言,对系统安全性的影响更大.文献[1]中对1200个软件缺陷进行因果关系分析,得出组件外部接口故障所占的比例达到60%.

卫星系统通过数据总线构建起设备之间的通信网络,总线通信的稳定性和可靠性对于系统安全和任务成功至关重要.在工程实际中,因总线通信故障造成的任务失败或系统失效也时常发生.因此,总线容错机制的验证是星载软件确认测试工作中的重要内容之一.

对总线容错机制的验证,不仅需要通过仿真建模方法构建被测系统的真实运行环境,还需要在故障仿真技术的支持下实现在多种失效场景下对被测系统进行测试,以有效扩大被测系统的输入空间,进一步提高测试的充分性.

1 总线容错机制

在星载软件的研制设计中,针对总线通信有如下可靠性、安全性需求[2]:

1)星载软件能够周期性的对总线通断情况进行检测,如果连续通信失败,则切换总线或重新初始化总线控制器;

2)星载软件能够对消息数据进行有效性验证,屏蔽错误的消息;

3)总线通信时间(如传输时间、应答时间)满足设计约束.

为了实现上述容错需求,星载软件设计中主要采用冗余技术[2].所谓冗余,是指当系统无故障时取消这些冗余措施不会影响系统正常运行;当系统出现故障时,冗余机制能够对故障加以规避,系统不致失效或功能降级.

通常采用的总线冗余技术包括:

1)硬件冗余:指以追加系统的硬件资源为代价.如系统采用总线A、B备份.

2)软件冗余:指针对同一功能需求,由不同开发人员研制不同的软件模块,并对模块进行备份.

3)信息冗余:指在消息中附加检错码或纠错码,以检查数据是否发生偏差,并在有偏差时能够纠正偏差.如上注指令的校验和验证、错误指令码的筛选验证等.常用的检错码有奇偶校验码、循环码.

4)时间冗余:通过附加执行时间来诊断总线是否发生永久性故障,并排除瞬时故障的影响.如检测到通信延时,需要重新发送指令或返回原始程序.

2 总线容错机制验证方法

针对星载软件的总线容错机制,通常采用故障仿真技术验证其容错效果.对总线容错能力的测试是否充分直接影响到对容错效果的验证.通常,进行容错测试时必须具备以下2个方面的条件.

1)需要有充分的故障测试用例.故障测试用例面向总线通信的故障行为,与系统的外部故障行为相一致.

2)需要有良好的仿真测试环境.测试环境用来驱动被测系统软件运行,施加各种测试激励(如总线故障的仿真),通过软件的动态行为来验证和评价软件的总线容错效果.

因此,针对总线的容错机制的验证和测试也同样需要具备以上两个条件.

2.1故障测试用例的生成

故障测试用例的生成过程如图1所示.

图1 故障测试用例的生成过程

1)故障模式分析

星载软件确认测试中通常是对总线应用层协议进行测试,限于篇幅,本文仅以1553B总线为例,对总线应用层的故障模式进行分析.

应用层协议是面向用户自定义的高层通信协议.应用层协议数据是指各星载设备外部接口变量的集合.总线应用层协议的故障直接影响系统的功能实现,通过分析总结出应用层协议数据在数值域和时间域两个方面的故障模式.

数值域故障是指外部接口变量的取值不满足协议的定义.数值域故障模式包括变量值域越界、变量数量越界、变量类型不匹配、变量精度错误、变量源和目的错误等.例如,热控软件中的开启加热门限超限就属于变量数量越界的故障.

时间域故障是指星载设备中的外部接口变量在时序上不满足功能或使用需求.时间域故障模式包括时间过早故障、时间延迟故障等.例如,并发执行程控指令与上注指令会导致程控指令执行延时及应答超时等,这些都属于时间延迟故障.

2)故障规格分析

在故障模式分析的基础上,进行故障规格分析.故障规格分析层次框架分为如下3个层次.

①模式层:表示故障模式的基本属性、故障表现等基本信息,定义了故障的范围、各种类型故障模式的基本属性以及该故障模式的相关故障仿真技术.

②关系层:依据模式层中的基本故障模式构建,可对故障模式之间的相关性进行分析.该层主要定义了故障模式之间的传播关系以及等效、组合和映射关系,构成故障模式关系集合,以具体的形式给出故障的等价解决方案.

③特征层:在关系层的基础上,定义了故障模式与系统功能、测试特性之间的外部关系,目的在于确定故障集抽样选取准则[3],用来衡量故障样本集在典型特性构成上对被测系统故障模式集的代表性.

故障规格分析是在软件需求规格分析的基础上,对被测系统可能出现的故障模式集合进行的定义,对故障模式的基本属性、故障模式之间的相关性以及故障模式与系统功能、测试的外部关系进行分析,作为测试中故障抽样、故障仿真和故障验证的依据.

3)失效场景建立

为实现对星载软件容错机制的有效测试,测试人员应对被测系统可能出现的潜在故障情况建立失效场景.失效场景建立需要描述系统中可能导致失效的故障、触发事件和系统相关状态等因素.

总线的失效场景举例如下:

总线数据接收/发送缓存区溢出;

总线数据传输过程中出现校验和错误;

总线数据出现实时应答超时.

4)设计故障测试用例

依据失效场景,设计故障测试用例.用例设计时,应结合以下原则进行:

①覆盖需求规格说明中给定的总线通信故障模式,遍历工程实际中出现的总线故障模式;

②结合灰盒测试技术,针对软件通信模块中的异常分支进行故障设计;

③运行中难以实现的故障,依据故障规格中的关系层,采用故障模式等价组合的方法进行设计.

设计故障测试用例,能够有效地提高测试输入域的覆盖范围,同时缩短了故障触发的时间,提高了执行效率.

2.2仿真测试环境

星载软件作为嵌入式系统中的应用软件,其运行状态、功能行为与交联环境的交互操作密切相关.为了能够有效考察星载软件在异常输入空间下(如总线通信故障)的软件可能失效行为,通常采用全数字仿真测试环境执行故障测试.

全数字仿真测试环境[4]适用于配置项测试,是指使用计算机仿真的方式构建星载软件运行所需的硬件环境(处理器、接口芯片)以及运行时所需要的外部接口数据源,在此基础上通过施加各种测试激励(包括故障激励),实现对软件的功能、性能、可靠性、安全性以及强度等各项测试的评估验证工作.空间飞行器软件检测站自主研发的VTest就属于全数字仿真测试环境.

2.3故障仿真技术

总线故障测试,即在仿真测试环境的基础上,通过对外部总线消息通信、信号传输以及总线控制器的运行状态进行故障仿真,模拟潜在总线故障改变被测系统的行为,实现被测系统在预期失效场景下的测试.

由于星载软件的总线故障测试面向的对象是应用层协议,同时目前空间飞行器软件检测站的全数字仿真测试环境中已经对1553B总线控制器及通信过程中的常见故障模式(控制寄存器溢出、离线等)进行了软件仿真,因此实际故障测试中,总线的故障仿真通常通过脚本驱动加以实现,其基本原理如图2所示.故障脚本的格式如下:

[时间令] #设置总线故障;200;A1.

其中参数200表示指令的发送时刻,参数A1表示总线A溢出的故障模式.

图2 故障仿真的基本原理

在仿真测试环境的基础上进行故障仿真,实现对总线的应用层进行协议测试.依据协议测试的定义[3],测试类别可分为3种:一致性测试、互操作性测试和性能测试.表1是针对3种测试类别的故障仿真实现.

一致性测试是检测协议实现是否符合协议标准,其故障主要是基本数据单元各位段与协议定义不符合.

互操作性测试主要检测协议实现与对应星载设备的匹配情况,即接口数据的源与目的的符合性,其故障主要是站地址通道错误等.

性能测试是检测协议是否实现系统的性能指标(如数据传输时间、应答响应时间和吞吐量等).

表1 故障仿真实现

注:*标识故障类别;**帧间隔为0.2ms.

系统测试通常采用半实物仿真测试环境[5],总线的传输层、链路层及物理层的故障激励及容错机制验证需要在半实物仿真测试环境中进行.通过采用基于总线驱动的故障注入技术实现故障仿真和注入.限于篇幅,本文不展开说明.

3 工程实例

下面结合某星载软件的故障测试案例对上述方法的有效性和实用性进行说明.被测软件(SUT)为某型号星载热控软件,编程语言为C语言,主要负责卫星系统的温度控制,通过1553B总线与星务实现通信.依据该软件的总线通信协议和需求规格,测试人员针对总线应用层协议设计了故障用例,如表2所示.

表2 故障用例设计与脚本实现

针对总线通信功能,测试人员共设计了18个用例,用例类别和分布如表3所示.

表3 用例统计

上述用例执行完毕后,共发现1个协议一致性错误(站地址故障未屏蔽)和1个性能错误(间接指令应答超时),测试结果如表4所示.同时,总线通信模块的语句覆盖率和分支覆盖率均达到100%.

在实际测试工作中,通过上述方法能够较全面和准确地发现总线容错设计中的缺陷.

基于此,本文的总线容错机制验证方法的有效性和实用性得到了验证.

表4 用例执行结果

4 结 论

本文介绍了基于总线故障仿真技术的总线容错机制验证方法,包括故障规格分析技术、故障用例生成技术、故障仿真技术.如何控制故障源的时间域和空间域的颗粒度,以提高故障仿真的准确性和有效性,及如何结合仿真测试环境提高故障测试的通用性将是后续研究的工作重点.

[1] Nakajo T,Kume H.A case history analysis of software error cause-effect relationships [J].IEEE Transactions on Software Engineering, 1991, 17:630-838

[2] 徐春林.中巴地球资源卫星数管软件开发实践与体会[J].航天器工程, 2002,11(5):107-110

[3] 徐应诗.基于故障注入的仿真测试方法与关键技术研究[D].北京: 北京航空航天大学, 2007

[4] 贺红卫.全数字仿真环境技术及其在航天软件测试中的应用[C].中国宇航学会计算机应用专业委员会学术会议, 黄山,2006

[5] Zhong D M,Liu B.The domain analysis and design of system-testing equipment for software-intensive avionics[C].IEEE Systems Readiness Technology Conference, Michigan, September 2006

ResearchonBusFault-TolerantMechanismandItsVerificationMethod

GAO Meng

(BeijingInstituteofControlEngineering,Beijing100190,China)

Fault-tolerant technique is extensively used in the satellite control systems to improve reliability.And the stability and reliability of bus communication are critical for the success of tasks.In real engineering development, the fault-tolerant mechanism is commonly used to identify and to shield the bus communication failures.A fault simulation-based bus fault-tolerance verification method including failure specification analysis technique, fault-case generation technique and fault simulation technique is described in the paper.As an example, the fault-tolerant capability of a satellite software bus is tested using the method, and the validity and practicability of the method are verified.

bus fault-tolerant;fault mode; fault simulation

2009-10-30

高猛(1982—),男,山东人,助理工程师,研究方向为软件可靠性及软件测试 (e-mail: buaagaomeng@163.com).

TP302

A

1674-1579(2010)02-0051-04

猜你喜欢

测试环境应用层用例
UML用例间包含关系与泛化关系的比较与分析
UML用例模型中依赖关系的比较与分析
全数字仿真测试环境在航天软件测试中的应用研究
雷达航迹处理测试环境构建方法研究
网络设备自动化测试设计与实现
传输层和应用层的隧道技术
基于分级保护的OA系统应用层访问控制研究
物联网技术在信息机房制冷系统中的应用
负离子纺织品检测方法分析
软件设计中用例详细需求描述的应用研究