嵌入式软件的可靠性测试及评估
2013-07-20王丽芹林晓欲
王丽芹,林晓欲
(中国空空导弹研究院,洛阳 471009)
1 引言
随着数字化技术的大量应用,软件在产品中的重要性越来越大,其规模和复杂性急剧增加,软件已逐步成为独立的产品。为保证软件可靠性,需要对软件进行可靠性测试和评估工作,从而可以尽早发现并改正软件中影响质量的缺陷,有效提高软件可靠性,缩短产品的研制周期,降低软件研制成本。
软件可靠性是指在规定环境下,规定时间内软件不引起系统失效的概率[1]。软件可靠性是衡量软件质量的重要指标之一,不但与软件存在的差错有关,而且与系统输入和系统使用有关。通常来说,软件发生失效的次数越多或时间间隔越短,软件可靠性越低。
2 软件可靠性测试
软件可靠性测试是指为了保证和验证软件的可靠性而对软件进行的测试。它是随机测试的一种,其主要特征是按照用户实际使用软件的方式来测试软件[2-3]。通常软件可靠性测试分为软件可靠性增长测试和软件可靠性验证测试,如果没有可靠性指标要求而需要评估当前的可靠性水平,还有软件可靠性摸底测试。
软件可靠性测试与一般软件测试(如单元测试、集成测试、功能测试、性能测试、边界测试等)在测试目的、测试方法、测试对象等方面都存在差异。其中软件可靠性验证测试与一般软件测试的比较如表1 所示。
软件可靠性测试一般采用黑盒测试,因为它是面向使用的测试,它不需要了解程序的结构以及如何实现等问题。软件可靠性测试的主要流程如图1所示。
表1 软件可靠性验证测试与一般测试比较
图1 软件可靠性测试流程
3 软件可靠性测试中的关键技术
3.1 操作剖面的构造
软件可靠性测试的主要思想就是按照用户对软件实际使用的统计规律进行随机测试,目前通常采用操作剖面的形式对软件的使用情况进行建模。操作剖面的构造可以采用自顶向下逐层细化的方法。操作剖面的开发过程如图2 所示。
(1)客户剖面由独立的客户类型序列构成。客户类型是群体中以相近的方式使用系统的一个或多个客户,这些客户在使用软件的方式上与其他客户存在显著区别。客户剖面中需要为每一种客户类型确定发生概率。在软件客户比较单一的情况下,不需要建立客户剖面。
(2)用户剖面是用户组及其发生概率的集合,通常在客户剖面的基础上建立。
(3)系统模式剖面是系统模式及其相应发生概率的一个集合。系统模式可以来源于软件的需求或使用情况分析。
(4)功能剖面是在系统模式下分解系统所需的功能,并确定每个功能的发生概率。功能剖面的构造通常需要依据软件的研制任务书或软件的需求文档,再结合运行环境的各种情况得到功能列表,并为每个功能分配发生概率。
图2 操作剖面开发流程
(5)操作剖面是操作及其发生概率的集合,确定操作剖面的主要步骤是列出操作并确定每个操作的发生概率。一个功能可以映射成一个或多个操作,一组功能也可以重新合并成一组不同的操作,因此能够根据功能剖面获取操作列表。
3.2 可靠性测试环境
软件可靠性测试环境是指为被测软件提供测试输入并采集测试输出的软硬件环境。对于实时嵌入式软件进行可靠性测试,可以采用全数字仿真技术、半实物仿真平台和系统联试等几种模式的测试环境。为了得到尽可能真实的可靠性测试结果,可靠性测试应尽量在真实的环境下进行。但是在许多情况下,在真实环境下进行软件的可靠性测试很不现实,因此软件可靠性测试通常采用半实物仿真环境。通常对半实物仿真(或全数字仿真)的测试环境有如下要求:
(1)操作剖面中涉及到的操作可以在测试环境中执行。
(2)满足测试激励的实时性要求,即激励输入满足真实交联环境的输入接口、数据格式和输入时序的要求,与真实使用的交联环境的输入逻辑相同。
(3)能够采集用于软件可靠性测试分析的测试结果数据。
3.3 失效数据的收集和处理
软件失效数据是进行软件可靠性测试和评估的基础。在可靠性测试执行过程中,需要按要求记录每个测试用例的实际结果,并根据每个用例的期望测试结果和用例的通过准则判断该用例是否通过。若不通过,则记录下来。
对于软件可靠性测试中发现的问题应该根据问题的类型加以分析和处理,对于由被测软件本身的缺陷引起的软件问题计入被测软件失效,由被测软件以外的测试环境、测试方法、测试用例设计不当引起的软件问题不计入软件失效。
此外,还要对每个软件问题的类别和严重性等级进行描述。软件问题的类别包括设计问题、文档问题、程序问题和其它问题,问题的严重性等级可采用4 级进行描述。
4 软件可靠性测试统计方案
可靠性验证测试是一种统计试验,测试策划阶段应选定可靠性测试统计方案。选择统计测试方案时应考虑验证指标的类别、软件的质量要求、可承受的最大测试时间、可承受的最大失效数、测试经费、费用与时间的权衡等诸多因素。针对采用成功率表示产品可靠性的验证测试,通常采用成功率的验证测试方案[4]。所规定的成功率是一个产品将完成所要求的功能的概率或是产品在规定条件下试验成功的概率。观测成功率可以定义为在试验结束时未失效的产品数对试验产品总数的比值或成功的试验次数对试验总次数的比值。成功率验证测试方案的主要参数有:
R:成功率真值;
R0:可接收的成功率;
R1:不可接收的成功率;
d:成功率鉴别比(1-R1)/(1-R0);
n:接收所要求的固定试验数;
r:积累失效数;
rRE:拒收失效数;
α:生产方风险,即当R=R0的拒收概率;
β:使用方风险,即当R=R1的接收概率。
成功率的验证测试方案包括截尾序贯统计方案和定数试验统计方案。
4.1 截尾序贯统计方案
截尾序贯统计方案示意图如图3 所示。
图3 截尾序贯统计方案示意图
当r≤s.ns-h时,接收;
r≥s.ns+h时,拒收;
s.ns-h≤r≤s.ns+h时,继续试验。
序贯试验到截尾线截止,接收或拒收判断准则需按下述条件:
在ns=nt时,当r <rt,接收;
当r >rt,拒收;
其中,ns为序贯试验方案中积累的试验数,s为接收和拒收线的斜率,h为接收和拒收线在垂线上的截距,nt为截尾试验数,rt为截尾失效数。
4.2 定数试验统计方案
定数试验统计方案是在给定R0、d、α、β 后通过查表方式得到接收判决时所要求的试验数n 和作出拒收判决时所要求的失效数rRE。
4.3 两种方案的比较
截尾序贯统计和定数试验统计方案的比较如表2 所示。
表2 两种统计方案的比较
5 软件可靠性测试技术应用
针对某型机载武器产品的一个配置项软件,首先根据软件需求文档和实际运行情况,构造出涵盖该软件整个工作过程的操作剖面,抽取出具体的系统执行任务场景,分别对每一个场景设计测试用例,并对测试用例进行详细描述。
软件可靠性测试环境采用通用系统测试平台GESTE 来构建完成。其中,通用嵌入式软件仿真测试平台由三台测试主机、两台测试目标机、相关I/O以及信号转换装置构成。平台中所有设备由以太网连接,两台测试目标机通过内存反射式实时光纤网络进行实时数据通讯。其组成示意图如图4 所示。
该软件在规定条件和时间内失效的次数为离散型的随机变量,可靠度可以用成功率来给出,因此采用成功率验证定数测试统计方案。经过分析,确定该软件可靠性统计方案参数中α=10%,β=10%,R0=0.9701,R1=0.91。
图4 通用系统测试平台GESTE 结构示意图
鉴别比d=(1-R1)/(1-R0)=3.01
根据α=10%,β=10%,R0=0.9701,d=3.01,通过查表得出参数n 和rRE的值:n=101,rRE=6。
因此,需设计101个可靠性测试用例执行。在测试过程中软件失效数小于等于6,则接收该软件,否则拒收。
在软件可靠性测试中共发生失效4 次,小于最大软件失效数6,满足可靠性测试方案要求。
6 结束语
通过对软件可靠性测试和评估技术进行研究和应用,验证了软件可靠性测试和评估工作的可行性,为后续产品开展软件可靠性测试和评估工作提供技术和范例支持,对机载武器系统的嵌入式软件可靠性测试和评估工作有较大的指导意义。
[1]王自力,陆民燕.软件可靠性工程[M].北京:国防工业出版社,2011.
[2]刘斌.软件验证与确认[M].北京:国防工业出版社,2011.
[3]刘斌,高小鹏.嵌入式软件可靠性仿真测试系统研究[J].北京航空航天大学学报,2000(4):490-493.
[4]李鑫平.软件可靠性模型应用方法研究[D].哈尔滨:哈尔滨工程大学,2010.