APP下载

基于故障树的靶标回收系统软件可靠性测试分析∗

2018-08-28王艳军张海军

舰船电子工程 2018年8期
关键词:测试用例用例靶标

王艳军 张海军

(91404部队 秦皇岛 066001)

1 引言

靶标回收系统是某型水下试验靶的回收控制系统,负责完成水下试验靶试验完成或意外情况下的靶体回收任务,在整个靶标系统中具有极其重要的作用。系统由嵌入式系统平台、各类传感器和控制软件等多个组成[1],在水下工作过程中一旦出现失效,可能会导致靶标丢失等情况,系统是否可靠会直接影响到一次任务的成败。目前各有关工业部门、军兵种越来越重视可靠性管理,可靠性技术已经贯穿于产品的各个环节[2],针对嵌入式软件系统进行安全性分析已成为现代嵌入式系统安全性保障的重要方法和研究热点[3]。针对靶标回收系统各底事件及中间事件发生的概率无法确定的现状,基于靶标回收系统的系统设计方案,建立靶标回收系统的故障树模型,通过对故障树进行分析,帮助软件测试人员快速判明会导致系统失效的潜在故障发生路径,对系统的可靠性验证和软件测试[4]用例设计提供有效指导[5]。

2 故障树

SEFT(State/Event Fault Tree),状态/事件故障树是Kaiser博士于2007年提出的一种安全性建模方法,将传统的故障树中的元素与基于状态机的元素结合起来,区分了事件与状态,既能有效地建模软件系统的行为又能表达系统失效因果链[3]。SEFT能够通过系统行为有效地表达软件系统中构件的失效与系统危害发生之间的因果关系,适用于建模构件化软件系统的危害场景。SEFT能够建模较低层次的系统,且可以很好地填补安全性分析与形式化方法之间的空缺。故障树分析法已被国内外大量应用于各个行业,如装甲装备的故障诊断与定位[6],鱼雷动力系统故障树诊断模式识别[7]等,是系统可靠性分析中最常见的方法之一,是一种自顶向下的分析方法,即从软件系统不希望发生的事件(主事件或顶事件)[8],特别是对人员和设备的安全产生重大影响的事件开始,向下主保护追查导致主事件发生的原因,直至基本事件(底事件)[9]。

3 系统故障树模型构建

3.1 靶标回收系统设计

靶标回收系统是一个典型的嵌入式系统平台。软件模块包括遥控指令接收处理、深度判断、电量判断、距离判断、事件判断、回收操控指令生成处理。硬件模块由遥控模块、定时器、压力传感器、深度传感器、电量传感器、定位模块,舵机控制模块、气泵等模块组成。

按照系统设计,在典型任务情况下,系统可以通过两种方式进行回收:

1)遥控回收:当回收系统的遥控模块接收到遥控回收命令,系统生成回收控制指令并执行,控制舵机执行靶体上浮动作,当检测到靶体已出水(在水下深度小于5m)时,控制气泵放气,抛出回收网。回收动作执行完成。

2)自动回收:当系统工作超时(>4h)、靶体深度超限(>500m)、电池电量低(<20%),靶体距离指控点超出安全距离(大于5km)时,系统自动生成回收控制指令并执行回收操作。

3.2 故障树模型构建

一个系统,不同的应用活动包括不同的故障原因,将系统故障转化为故障树的结构,必须要考虑具体的应用信息[10]。故障树分析是把系统不希望发生的失效事件作为失效分析的目标,这一目标在故障树分析中定义为“主事件”。针对回收系统,可以利用故障树中故障现象和故障源之间的逻辑关系建立规则[11],将“回收系统失效”设置为主事件,将“回收系统失效”主事件分解,得到两个中间事件:“回收控制指令生成失败”和“回收控制指令执行失败”。通过对系统各个软硬件模块之间的安全性依赖关系进行详细地分析,将各个中间事件逐步向下分解,最终建立系统故障树模型,见图1。

图中顶层事件F1表示回收系统失效:事件M1表示未能有效生成回收控制指令,M2表示未能有效执行回收动作。当M1和M2之一出现失效就会导致F1失效事件发生。从图1中可以看出,通过对顶事件和中间事件进行分解最终得到会导致系统失效的基本事件共有14个,其中软件基本事件7个,见表1。

表1 系统基本状态/事件

4 系统安全性分析与用例设计

根据图1,可以列出全部的失效序列。

F1=M1∪M2;M1=M3∩M7;M2=X21∪X22∪M21;M3=X1∩M4∩M5∩M6;M4=X2∪X3;M5=X7∪X8;M6=X4∪X5∪X6;M7=X9∪X10;M21=X23∪X24。将各个中间事件用基本事件替换带入,最终得到系统的失效序列:

F1=((X1∩(X2∪X3)∩(X7∪X8)∩(X4∪X5∪X6))∩(X9∪X10))∪(X21∪X22∪X23∪X24)。

4.1 最小割集计算

最小割集是导致主事件发生的基本事件的集合,即全部发生时会导致系统失效。即当任一个最小割集中全部基本事件为“失效”时,主事件必然为“失效”。

七十年代以来,国内外研究出多种求解故障树最小割集的算法。这里采用下行法[12]进行计算,从主事件开始,由上到下,顺次把上一级事件置换为下一级事件,通过对上面的F1失效序列进行化简和计算,最终得到导致系统失效的最小割集,见表2。

表2 系统最小割集

从这些最小割集中可以看出引起系统失效的所有最小场景。此外,还可以看出X21(回收指令执行失效)、X22(舵机上浮控制失效)、X23(气泵控制失效)、X24(出水判断失效)分别是系统的关键事件和关键状态。这些关键事件和状态在系统测试过程中应重点关注,在系统设计和测试过程中,在测试用例生成[13]以及软件模型检验属性的生成时充分考虑,从而进一步提高软件系统的可靠性。

4.2 最小径集计算

最小径集是指使主事件状态为失效不发生的最低限度的基本事件的集合。即当集合中的基本事件全部不发生(安全),则必然主事件不发生(安全)。将故障树转换为安全树[14],然后计算该安全树的最小割集,即为对应故障树的最小径集。

通过对图1中的故障树进行转换计算,最终得到系统故障树的最小径集5个,见表3。

表3 系统最小径集

4.3 结构重要度判断

通过对故障树中基本事件的结构重要程度进行分析,可以得到各个基本事件的重要度如下:

考虑到系统中硬件的可靠性普遍要高于软件模块,且软件为新开发产品,因此单独列出各个软件模块基本事件的重要度关系。

①(X21,X24)> ②(X10,X9,X8,X3)> ③(X6)

在对系统可靠性进行测试用例设计时,应该考虑各个软件模块对系统失效影响的重要程度,必要时对关键软件模块进行深入分析和重点测试。

4.4 测试用例设计

按照表1中基本事件,每个基本事件有两种状态(失效/安全),则全部的状态组合共有214=16384个。显然这对于测试用例设计来说是一个天文数字,如想覆盖全部基本事件状态,成本是不可承受的。

在测试过程中,针对系统软件安全性分析的结果,将基本事件状态作为用例输入条件,根据系统输出结果(系统最终状态F1),我们可以根据最小割集设计得到基础失效用例(当测试用例中的输入条件均为失效时,系统必然失效,为避免影响其他基本事件,其他基本事件均应设置为“安全”)28个。根据最小径集设计基础安全用例(当测试用例中的输入条件均为安全时,系统必然安全,为避免其他基本事件的影响,其他基本事件均应设置为“失效”)5个。

考虑到对各个最小割集内基本事件的组合,可以设计补充安全用例,以割集(X1,X2,X4,X7,X9)为例:

由割集的定义可知,当其他基本事件的状态为“安全”时,当割集(X1,X2,X4,X7,X9)中任一事件为“安全”,最终系统状态(F1)就不会为“失效”。由此可以设计补充安全用例25-1=31个。

表4为以割集(X1,X2,X4,X7,X9)为例设计的测试用例。

针对全部最小割集数量m,每个最小割集中基本事件数量n,得到补充安全用例数量a的计算公式

表4 割集(X1,X2,X4,X7,X9)测试用例设计

计算得到全部最小割集的补充安全用例数量a=24*31+4*0=744个。

同样我们还可以对各个最小径集内基本事件的组合设计补充失效用例,以径集(X1,X21,X22,X23,X24)为例:当其他基本事件的状态为“失效”时,当径集(X1,X21,X22,X23,X24)中任一事件为“失效”,最终系统状态(F1)就不会为“安全”。由此可以设计补充失效用例25-1=31个。针对全部最小径集计算得到合计补充失效用例个数b=31+63*3+127=347个。

显然通过故障树分析方法可以高效指导系统软件的安全性测试用例的设计工作,从上面的分析可以看出,通过故障树的最小割集和最小径集设计33个基础用例,即可覆盖系统软件最小失效和安全关键路径,考虑补充设计的测试用例,全部用例为1124个,有效提高了软件测试的效率。

5 结语

故障树分析方法在硬件系统的应用已很广泛[15],但在软件测试过程中的应用较少。通过建立回收系统故障树,可以明确影响系统可靠性的各个软硬件基本事件之间的逻辑关系,有助于测试人员对系统失效出现的原因进行较为深入的分析研究,验证系统设计与实现的一致性。通过对系统失效树的分析,可以帮助测试人员高效地设计测试用例,有针对性对关键的软硬件模块进行重点分析验证。

猜你喜欢

测试用例用例靶标
纳米载体可缓解农药对靶标作物的负作用
靶标龙伯球一体化反射器电磁和气动特性融合设计
基于LDA模型的测试用例复用方法*
“百灵”一号超音速大机动靶标
靶标评改,让习作评改有序更有效
资费拨测系统的研究与应用
软件测试中的测试用例及复用研究
用例规约在课程成绩管理系统需求分析中的应用研究
使用用例建模进行软件需求分析研究
测试工时受限的测试策略研究