APP下载

基于SFMEA和SFTA的软件测试

2018-08-25张凌东

电子设计工程 2018年16期
关键词:软件测试软件测试

徐 彬,张凌东,李 华

(1.中国电子科技集团公司第58研究所江苏无锡214072;2.中国运载火箭技术研究院211厂军代室北京100076)

软件测试的目的是为了找出软件中的问题,分析哪些地方有可能隐藏问题。但在执行过程中分析依据大部分是设计提供的文档,依照文档的思路进行分析,没有成熟统一的方法,导致分析的结果具有很大的主观性。SFMEA和SFTA是软件可靠性分析领域常用的两种分析方法,两者对于失效故障的分析全面精准,逻辑清晰,为提高软件可靠性发挥了重要的作用。将SFMEA和SFTA分析方法应用到软件测试过程,借助SFMEA和SFTA的技术优势规范测试分析过程,从而使分析过程标准统一化,最终提高软件测试的质量。

1 SFMEA

SFMEA即软件失效模式与影响分析(SFMEA,Software Failure Modes and Effects Analysis),分析软件系统中每一个模块、组件所有可能产生的故障模式及其对软件系统造成所有可能影响的一种归纳方法[1]。它是识别和评估潜在风险的系统方法,它提供了一种条理性准则减少甚至清除软件失效的概率[2]。软件测试是为了找出软件中存在的问题,若是利用SFMEA,可以事先理清系统结构层次和关键变量的因果关系,分析出软件隐藏的问题,使测试过程中更具有针对性,这将大大提高软件测试的效率。

SFMEA执行过程主要分为如下三步:

1)建立失效模式库

SFMEA是软件失效模式驱动的分析活动,确定失效模式是实施SFMEA的关键步骤之一[3-4]。由于软件项目种类繁多,功能多样,建立一致的失效模式库是不可能的,建立通用功能的失效模式是可行的。例如:数据输入失效模式库(部分)见表1。具体项目实施过程中,以通用的失效模式为参考,需要增加符合项目特点的失效模式。

表1 通信失效模式库(部分)举例

2)确定软件约定层次

约定层次实际是确定需要分析的软件内容以及逻辑关系,即相关变量的一系列线索,SFMEA根据软件中关键变量查找潜在故障,通常系统分析中找到的关键事件,往往受关键变量影响。约定层次从最初约定层,到分析的约定层,直至最低约定层。例如图1所示,最初约定层为该通信系统,分析约定层定为处理模块,最低约定层可以是功能1-4中任意一个或几个。

图1 通信软件系统层次举例

3)建立SFMEA工作表

工作表是SFMEA分析内容具体体现,文献[5-6]分别给出应用实践的工作表示例可作参考。考虑到软件测试的特殊应用场景,总结出适用于软件测试的工作表,主要内容包括约定层次、失效分类、失效模式、失效原因、失效影响,严酷度等。工作表中每一项对软件测试过程中挖掘潜在问题都是至关重要的参考信息,严酷度更是软件测试风险优先级管理的重要评判依据。一般情况下,SFMEA工作表还应包含预防措施,考虑到软件测试中不涉及,故此处删除。

2 SFTA

SFTA是软件故障树分析(SFTA,software fault tree analysis),用于表明软件中哪些模块的故障、外部事件或者他们的组合导致软件发生故障的逻辑图[1]。SFTA分析先确定软件中一个不希望发生的事件,然后在一定的环境与工作条件下,对软件进行分析,找出不希望发生事件发生的确切方式,即找出不希望事件发生的各种原因[7]。

文献[8-9]分别阐述了SFTA应用于软件测试和雷达故障诊断中,可见SFTA在软件测试中的应用已得到认可。SFTA最终以一个框图展现结果,其中顶事件是指要分析的软件最顶层不希望发生的事件,中间事件是指一个逻辑门或多个输入事件发生的故障事件,基本事件是指不能再进一步展开的或无需再进一步展开的基本初始故障事件,如图2所示。

图2 SFTA框图举例

SFTA是自顶向下的进行分析,其一般步骤为:

1)确定最顶事件

确定最不希望发生的事件,特别是对人身安全和设备安全产生重大影响的事件作为最顶事件。

2)分析逻辑关系

从最顶事件向下逐步分析导致顶事件发生的原因,一直到基本事件。

通过SFTA分析结果可以找到重大关键的隐藏问题,且对软件层次分析透彻,便于发现根本原因。

3 SFMEA和SFTA应用于软件测试

SFMEA与SFTA两种技术在单独应用时各有不足:SFMEA是一种自底向上的单因素失效分析方法,其分析结果以表格方式列出,无法直接表现失效原因之间的逻辑关系。SFTA是一种自顶向下依照树状结构从上向下推导出故障原因的方法,在选取顶事件时,可能考虑不周全,存在遗漏的情况。另外,SFTA在分析故障原因时也会有所遗漏,这会影响底事件的严酷度排序,从而影响实施改进措施时对轻重缓急的判断。文献[10-11]阐述了SFMEA和SFTA综合技术,文献[12]介绍了二者综合后应用于智能移动终端系统可靠性分析。两种技术的结合,互相弥补不足,在可靠性分析领域发挥更大的优势。

SFMEA和SFTA技术综合,最典型的有两种方式,正向综合分析和逆向综合分析[13],正向综合分析以分析结果为导向,对关键的、有重大影响的事件作为顶事件进行SFTA,从而对顶事件进行充分的分析。逆向综合分析先进行SFTA,其着眼点是最低层的基本事件,依次向上追寻线索。软件测试是从整个系统为出发点,以软件的需求说明或设计文件为依据,所以正向综合分析方法更适合,将这种正向综合分析方法应用到软件测试整个流程中,如图3所示。

图3 SFMEA和SFTA应用于软件测试框图

从SFMEA开始,首先分析系统结构图,确定约定层次;再从失效模式库中选择适应于项目的失效模式,失效模式对应SFTA的中间事件,中间事件的分析又可详细的体现在集成测试和配置测试中。根据中间事件分别向下和向上追踪线索,查找对应的基本事件和顶事件。反之,应用SFTA的基本事件,可以容易地确定SFMEA中的失效原因,基本事件又是单元测试的主要对象。SFTA的顶事件,可以明确SFMEA中的失效影响,且可作为系统测试中判断失效的重要依据。当然,SFTA与软件测试的每一阶段的对应关系不是绝对的,SFTA在整个软件测试流程中始终是贯通的,例如,系统测试过程中分析问题也是可以借鉴SFTA中的基本事件来定位最低层的问题。

SFMEA中的严酷度是根据失效影响和发生可能性来确定[14],GJB-Z 1391-2006故障模式影响及危害性分析指南给出明确的评分准则,评分等级10-1,10表示故障影响最严重,且最有可能发生的等级,1表示故障等级最轻。在测试管理过程中不同阶段,根据严酷度来计划和分配子任务的优先级,将评分等级高的任务放到项目前期重点实施,保证测试过程中严酷度高的故障模式优先被测试。

采用SFMEA和SFTA综合技术的软件测试,相比传统方式,既将可靠性方法应用于测试过程,使测试策略合理化、综合化[15];又将风险管理方法纳入测试,确定测试的优先级、测试重点,有效选择、有效地配置测试资源[16]。既提高软件的安全性,又降低软件风险,一举两得。

4 实例应用

以某嵌入式信息处理系统中存储部分为分析对象,在系统测试中使用上述方法进行软件测试前期分析,以验证软件测试实施过程更加有针对性和统一性。

4.1 实践对象介绍

某嵌入式信息处理系统共有三大主要模块:时钟模块、控制模块和数据传输模块。数据传输模块又包括CAN通信、网络通信和SD存储。我们主要以SD卡存储部分中的初始化功能和枚举功能作为实践对象进行上述方法验证。整个信息处理系统框图如图4所示。

图4 某嵌入式信号处理系统框图

4.2 SFMEA工作表建立

首先确定分析约定层为SD卡存储,最低约定层为 F1、F2、F3、F4,主要以 F1、F2为例,F3、F4只给出一个宽泛的例子。从通用失效模式库中选择失效模式,建立SFMEA工作表如表2所示。

表2 SD卡存储的SFMEA工作表(部分)

4.3 SFTA故障树建立

以“SD卡不可访问故障”作为故障顶事件进行故障树分析,采用分层分析法,如图5所示。分析完成后,可根据最低层的基本事件再来完善SFMEA中的失效原因。

图5 SD卡不可访问故障树

4.4 软件测试实施

根据SFMEA中的失效分类和失效模式,确定测试的功能点,根据严酷度,确定实施测试时的优先级,级别高的先执行,级别低的后执行。根据SFTA的基事件,确定测试的子功能点,以及测试细节关注点。整理的测试说明纲要如表3所示。

通过SFMEA和SFTA来编写测试说明大纲,相比以往方式,更加的快捷高效,且更统一化,不易遗漏。因为SFMEA每一个失效分类均为一个大的测试功能点,而SFTA的每一个基本事件均为一个小测试点,再参照严酷度来安排测试的优先级,整个测试实施过程既兼顾整体,又不遗漏小测试点,高风险测试先执行,优先排查关键问题。

表3 SD卡测试说明大纲

5 结 论

软件测试实施过程前期要针对需求、设计文档做大量的分析工作,一般是遵循文档的思路来设计测试方案,尔后再根据测试方案来实施测试。SFMEA和SFTA技术应用,是站在整体角度,分别从下而上,再从上而下进行全面分析,跟踪提炼系统中的每一个线索,能够查找到每一个故障存在的原因,使测试更加的有针对性。另外能够辨别出一些重要的测试点,先进行测试,排查主要问题。

SFMEA和SFTA已是成熟的技术,但在软件测试实施过程中应用不是很普遍,主要因为SFMEA和SFTA分析过程比较繁琐,需要花费一定的精力,所以一般不需要对系统中所有功能点都进行遍历式的分析,而是选择一些关键且受硬件控制小的模块作为分析对象,相信在软件测试实施中不断进行探索,一定会使三者融合达到最佳效果。

猜你喜欢

软件测试软件测试
禅宗软件
幽默大测试
基于OBE的软件测试课程教学改革探索
“摄问”测试
软件对对碰
“摄问”测试
“摄问”测试
EXCEL和VBA实现软件测试记录管理
关于软件测试技术应用与发展趋势研究
软件测试工程化模型及应用研究