CN103970654A - 一种软件可靠性虚拟测试方法 - Google Patents
一种软件可靠性虚拟测试方法 Download PDFInfo
- Publication number
- CN103970654A CN103970654A CN201410182032.8A CN201410182032A CN103970654A CN 103970654 A CN103970654 A CN 103970654A CN 201410182032 A CN201410182032 A CN 201410182032A CN 103970654 A CN103970654 A CN 103970654A
- Authority
- CN
- China
- Prior art keywords
- input
- test
- software
- inefficacy
- space
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Abstract
本发明提供了一种软件可靠性虚拟测试方法,应用于软件可靠性试验领域。本发明包括:建立测试输入空间;建立失效输入空间;对测试输入空间进行随机抽样生成测试输入向量;计算测试输入向量与失效输入空间的匹配度;根据计算的匹配度与设定的置信度进行比较断软件是否失效;根据失效的各输入变量的累计执行次数和对应的实际执行时间确定失效间隔时间。进行匹配度计算时包括输入变量值的匹配和输入变量间输入关系的匹配。本发明能够为软件全生命周期中的失效数据获得在软件可靠性测试中可能的失效时间,大大减少了测试人员的工作量和测试时间,为软件可靠性评估提供数据基础。
Description
技术领域
本发明应用于软件可靠性试验领域,具体涉及软件可靠性虚拟测试方法。
背景技术
软件可靠性测试是指为了保证和验证软件的可靠性要求而对软件进行的测试,其主要目的是验证软件的可靠性是否满足用户对软件可靠性的要求,能有效地暴露在实际使用过程中影响软件可靠性要求的软件错误,改善和提高软件的可靠性指标。事实上,软件可靠性测试的主要目的在于评估软件可靠性,因此在进行软件可靠性测试设计时,需要综合考虑软件可靠性评估工作。
就目前软件行业的发展趋势而言,尤其是具有大型复杂系统的军工软件,其软件可靠性定量评估已经成为保障软件质量的一项重要工作。为了获得准确的软件可靠性评估结果,往往需要通过软件可靠性测试获取足够的失效数据用于评估。目前较为常用的软件可靠性评估的模型有G-O模型、Duane模型、J-M模型、M-O模型和L-V模型等。在上述模型中,在进行评估时,都需要对软件可靠性测试中失效时间进行搜集处理,以便于应用模型对软件可靠性进行评估。然而由于软件已趋于复杂化,通常高可靠性、高安全性要求的软件需要大量的测试用例以验证其可靠性要求是否满足,以平均故障间隔时间(MTBF)为40000小时左右的软件为例,通常要求的可靠性测试时间将大于40000小时,这是一般的项目无法承受的。
目前,软件可靠性定量评估主要基于软件可靠性测试或真实使用中收集的失效数据进行,但是由于软件可靠性测试的测试周期很长且难以收集到足够的失效数据,而在软件生命周期中的测试发现的大量软件失效却由于与实际使用过程无关或没有失效时间记录而无法用于软件可靠性定量评估,限制了软件可靠性定量评估在实际工程中的使用。
发明内容
本发明针对目前由于软件可靠性测试的测试周期很长且难以收集到足够的失效数据,而在软件生命周期中的各种失效数据却由于与实际使用过程无关或没有失效时间记录限制了软件可靠性定量评估在实际工程中的使用,提出了一种软件可靠性虚拟测试方法。
本发明提出的一种软件可靠性虚拟测试方法,包括如下步骤:
步骤1:建立测试输入空间;所建立的测试输入空间包括软件操作、输入域集合、输入域区间分布以及输入关系函数。
步骤2:建立失效输入空间;根据已发现的软件失效的输入变量建立失效输入空间,失效输入空间是软件失效时所有输入向量的集合,失效输入空间包括失效输入域集合和失效输入关系函数。
步骤3:对测试输入空间进行随机抽样生成测试输入向量。
步骤4:计算测试输入向量与失效输入空间的匹配度σU;
设测试输入向量具有L个输入变量,L个输入变量的时序和规则为F,第i个输入变量的输入值表示为Inputi,第i个输入变量的失效输入域为FUi,则:
其中,σ(FUi,Inputi)表示测试输入向量的第i个输入变量值的匹配度;Rule(F)表示测试输入向量的输入关系匹配度;当测试输入向量和发生失效时输入之间的关系相同时,Rule(F)为1,否则Rule(F)为0。
步骤5:首先,根据置信度λ判断软件是否失效,具体是:当σU≥λ时,判定测试输入向量和失效输入空间匹配,软件失效,此时记录失效时各输入变量的累计执行数,将所发现的失效空间移除,将累计执行数清零;否则,判定软件测试输入向量和失效输入空间不匹配,软件未失效,此时记录各输入变量的累计执行数;
然后,判断是否所有失效空间都已移除或者达到了最大测试时间要求,若是,则停止虚拟测试,执行步骤6;否则转步骤3执行。
步骤6:失效时间还原,具体是:对每个失效,将该失效的各输入变量的累计执行次数和对应的实际执行时间乘积后求和,得到该失效的失效间隔时间。
本发明与现有技术相比,具有以下明显的优势和有益效果:
利用本发明提出的软件可靠性虚拟测试方法,能够为软件全生命周期中的失效数据获得在软件可靠性测试中可能的失效时间,为软件可靠性评估提供数据基础。实施全过程并非真实的测试,不需要通过输出来判断是否失效,只需要考虑随机抽样得到的输入向量是否落入已知的失效输入空间中,进而获得常规失效的间隔时间。都为自动化虚拟测试且不需要人为干预,大大减少了测试人员的工作量和测试时间,对于软件可靠性工程的应用具有深远的意义。
附图说明
图1是本发明软件可靠性虚拟测试方法的流程图;
图2是使用输入关系函数对软件可靠性测试剖面描述的一个实例图;
图3是本发明方法的测试输入空间与失效输入空间关系图;
图4是本发明方法实例验证中SMSS剖面的系统使用视图;
图5是本发明方法实例验证中SMSS剖面的使用场景剖面视图;
图6是本发明方法实例验证中SMSS剖面的空中模式剖面视图;
图7是本发明方法实例验证中SMSS剖面的地面维护模式剖面视图;
图8是本发明方法实例验证中SMSS剖面的对TASKA剖面视图;
图9是本发明方法实例验证中SMSS剖面生成测试用例的一个实例图;
图10是本发明方法实例验证的失效输入匹配辅助工具界面视图。
具体实施方式
为了便于本领域普通技术人员理解和实施本发明,下面结合附图对本发明作进一步的详细和深入描述。
本发明提出的一种软件可靠性虚拟测试方法,包括根据软件可靠性测试剖面的特点建立软件可靠性测试输入空间模型,并在该模型的基础上提出了失效输入匹配技术,通过将软件生命周期中发现的失效在测试输入空间模型中进行匹配,还原出这些失效数据在软件可靠性测试中可能的失效时间,使其达到了软件可靠性定量评估的条件。
测试输入空间主要从软件可靠性测试的角度进行建模,描述出软件在规定的条件下可能的使用情况和分布,为进行软件可靠性虚拟测试提供基础。构造测试输入空间的流程是:首先需要揭示软件输入时序、值域、概率分布的相互关系,从宏观的输入场景细化到输入形式、输入范围、输入关系、约束条件等描述,从软件使用输入的动态行为和静态关系对输入空间建模,体现出输入向量的抽取的规则,提出具体的软件可靠性测试输入空间建模方法。其次分析已知软件失效的失效机理,根据软件发生失效时的输入方式在测试输入空间模型中描述出失效输入空间,主要包括取值关系和约束关系的描述,使其成为测试输入空间的一个子集。
失效输入匹配技术主要用于判定随机抽样的输入向量是否落入已知的失效输入空间中,进而获得失效间隔时间。建立一种数据匹配方法,并在给定的置信度下,对输入向量数据和失效输入空间数据进行匹配度的计算,若匹配度不小于该置信度,就可认为输入向量引发软件缺陷。每一个被匹配发现的失效都将在记录全部输入累积执行次数后移除,从而模拟出一个软件可靠性增长过程。判断输入向量与失效输入空间是否匹配包括两部分:1)输入值的匹配;2)各输入之间关系的匹配,只有当两者都满足匹配条件时,才判定为失效。
失效时间还原技术主要是将全部输入的累积执行次数还原为累计失效间隔时间。失效时间还原的流程是:首先通过不同的测试人员真实测试一定数量且具有一定输入特点的测试用例,并分别记录测试用例的实际测试时间;之后利用统计学原理对多组测试时间进行平均和近似计算,得到全部输入的单元执行时间;最后将全部输入的累积执行次数换算为累计失效间隔时间。
软件可靠性测试剖面和软件生命周期中发现的失效数据之间有着一定的数据关联。对于软件可靠性测试剖面而言,其核心是描述出软件可能的所有输入空间。软件可靠性测试输入空间由带有输入关系的操作序列和输入值域共同组成:操作序列是指软件使用的过程中在时间轴上各输入所组成的序列,操作的发生有着较强的时间要求,并且执行的操作之间具有一定的顺序和规则;输入值域是系统中所有输入在软件使用中可能出现的全部状态值集合,其本质为软件全部输入构成的多维数据空间,各输入区间分布由使用者提供实际使用时区间内状态值发生的概率决定。用户对软件的使用过程可以看作一系列按照一定时序的操作集合,且每一个操作可以看作相关输入变量值的集合。而从大量的常规软件测试中发现的失效数据可以发现,当软件发生失效时,造成失效的相关输入处于软件输入域中的某一范围,同时输入之间存在固定的时序关系。因此,造成软件失效的输入空间实际上是软件可靠性输入空间中的一个子集。而测试输入空间随机抽样的测试用例数据如果落入失效输入空间时,软件即发生失效。
本发明的软件可靠性虚拟测试方法的根本出发点在于计算执行过程中的测试用例数据与失效输入空间两者之间的匹配度,当匹配度达到一定置信等级后,判定这个执行过程中的测试用例与真实失效输入有相同的执行效果,从而使用该测试用例的累计执行时间获得失效的发生时间。在进行匹配度计算过程时,通过计算测试用例与失效输入空间之间的数据关系,从而得到其匹配度,再通过选定置信等级判定该测试用例是否造成软件失效。
如图1所示,为本发明的软件可靠性虚拟测试的方法流程。主要包括六大步骤,测试输入空间建模01、失效输入空间建模02、随机生成测试输入向量03、计算匹配度04、失效判定05以及失效时间还原06。其中前二步是整个方法流程核心所在,直接影响到数据匹配的准确性和有效性。下面详细介绍每一步骤:
步骤1:测试输入空间建模01,是指对被测软件真实使用中全部可能的输入序列的描述。测试输入空间模型主要包括时间维、值维和概率分布维,从描述方式上包括对动态输入行为、取值关系和约束关系的描述。可以通过分析软件输入的时序、值域、概率分布的相互关系,从软件输入的动态行为和静态关系的角度进行建模。这些信息可以通过阅读相关文档获得,例如研制任务书、需求文档等;还可以查阅相关资料,例如书籍、标准规范等。建立的测试输入空间主要包括软件操作、软件输入域集合、输入域区间分布以及输入关系函数。
1)软件输入域集合,它主要体现出输入空间的输入变量的取值区间。输入变量的取值区间是一个广义的概念。取值区间可以是合法的输入范围,也可以是非法的输入范围;可以是某一数据类型的连续取值范围,也可以是离散点集合,可以是离散点;对于不同时刻,输入变量可以有不同的取值区间。因此,输入域数据类型包括离散值(point)、范围值(range)或值(or)、否定值和空值(null)等。
2)输入域区间分布,它表示输入在区间内的概率密度函数。输入值是在输入域中根据概率密度随机获取抽样得到的,即输入在区间内的概率密度函数决定了输入值。输入域分布主要包括离散型分布和连续型分布,体现了输入空间的概率分布维。
3)输入关系函数,它表示输入之间的关系约束。软件操作之间存在较强的约束,首先为时间上的约束:输入变量的起始时间及持续时间;除此之外,还包括:前一个操作的输入值对后一个操作输入值的影响;被测软件的反馈输出结果控制着后续操作的发生;操作之间必须有严格的顺序,两种操作同时进行等多种情况。可以用以下5种输入关系运算符表示输入之间的关系:表示并发关系,表示互斥关系,表示顺序关系,表示条件关系,表示函数关系。如图2所示,为使用输入关系函数对一个软件可靠性测试剖面进行描述的示例,op1~op9为本实例中的软件操作,开始执行操作op1,然后以概率0.8执行操作op2,以概率0.2执行操作op3,op4和op5是并发执行的,操作op6和op7在执行完毕后结束本次测试,当操作op3的输入值Iop3满足一定条件时执行操作op8,而操作op9的输入值Iop9与操作op3的输入值Iop3具有某个函数关系。
步骤2:失效输入空间建模02,是指当软件失效时所有输入向量的集合,输入向量实际是测试输入空间的一个点,若干造成软件失效的点集构成了失效输入空间,而失效输入空间是测试输入空间的一个子集。对已发现的软件失效的输入变量触发机理进行分析,剥离与失效非相关输入,利用与失效相关输入建立失效输入空间。失效输入空间主要包括失效输入域集合、失效输入关系函数。软件输入域集合决定失效输入值域的表达形式,且失效输入域为软件输入域的子集,失效输入关系是软件输入关系的子集。如图3所示,SIS表示测试输入空间,OP表示软件操作集合,DomainS(OP)表示软件输入域集合,RuleS(OP)表示输入关系函数的集合,Distribution(DomainS)表示输入域区间分布的集合,FIS表示失效输入空间,OPF表示失效输入对应的软件操作集合,DomainF(OPF)表示失效输入域集合,RuleF(OPF)表示失效输入关系函数的集合。其中,OPF是OP的一个子集,DomainF(OPF)是DomainS(OP)的一个子集,RuleF(OPF)是RuleS(OP)的一个子集。
步骤3:随机生成测试输入向量03,是指对测试输入空间进行随机抽样获得测试输入向量的过程。所获得的测试输入向量就是测试用例。测试输入向量包含着输入时序、输入取值和输入之间并行、互斥、顺序关系等。
例如,通过测试输入空间生成操作序列(op1→op2→......→opn》,op1~opn为操作1到操作n,并将操作序列转化为测试输入向量。
步骤4:计算匹配度04。为了判断测试输入向量是否落入到失效输入空间中,需要一种能够实现输入向量数据与失效输入空间数据进行匹配的方法。判断是否匹配包括两部分:输入值的匹配、各输入之间关系的匹配。只有当两者都满足匹配条件时,才判定失效。本发明提供的匹配方法主要包括如下内容:range数据类型匹配度、匹配规则集RU、输入关系匹配度以及失效输入匹配度。
1)range数据类型匹配度。令FU为某一输入的失效输入域,Input为该输入在虚拟测试中随机抽样的值,FU和Input都是range类型,则FU与Input的匹配度σ(FU,Input)定义为:
σ(FU,Input)=ran(FU∩Input)/ran(Input)
其中,ran(A)表示区间A的长度,ran(FU)和ran(Input)分别描述FU与Input的区间长度。例如,FU=[30~80],Input=[25~40],则σ(FU,Input)=10/15=0.67。
2)匹配规则集。测试输入向量与失效输入空间的类型主要包括离散值、范围值、空值、或值、否定值等等。将否定值通过先归结为离散值或范围值再取反进行转换,表示为范围值。或值可表示为多个范围值集合。离散值也可作为一个特殊的范围值。因此,对于值的匹配度可基于上面range数据类型匹配度的计算获取。
匹配规则集RU可以表示为:
其中,TFU表示某一输入变量的失效输入域的数据类型,TInput表示某一输入变量值的数据类型,FU和Input分别为数据类型TFU与TInput的数据实例,为数据类型TFU与TInput间的匹配规则,σ(FU,Input)为FU和Input的匹配度,Ω={point,range,or,null}表示数据类型集合。
对于如下匹配规则:
{R(null-point/range/null),R(point/range/or-null),R(point-point),R(range-point/range),R(or-point/range)}
匹配度的计算如下:
对于R(null-point/range/null),FU为null类型,则σ(FU,Input)=1;
对于R(point/range/or-null),Input为null类型,若FU不为null类型,则σ(FU,Input)=0;
对于R(point-point),若FU=Input,则σ(FU,Input)=1;若FU≠Input,则σ(FU,Input)=0;
对于R(range-point),若Input∈FU,则σ(FU,Input)=1;若则σ(FU,Input)=0;
对于R(range-range),σ(FU,Input)=ran(FU∩Input)/ran(Input);
对于R(or-point),设or数据类型的FU表示为n个range数据类型的数据区间的集合,
FU={FU(1),FU(2),...,FU(n)},则FU(j)表示FU中的第j个数据区间;
对于R(or-range),若FU={FU(1),FU(2),...,FU(n)},则有:
3)输入关系匹配度Rule(F)。软件输入向量是按照一定的顺序和规则对软件进行激励的,造成软件失效的原因必定与输入之间的关系有着紧密的数据和规则上的关联。当软件测试输入向量和发生失效时输入之间的关系相同时,设定输入关系匹配度Rule(F)为1;当软件测试输入向量和发生失效时输入之间的关系不同,设定输入关系匹配度Rule(F)为0。
失效输入匹配度。判断测试输入向量与失效输入空间的匹配度需要确定两部分,即输入值得匹配和输入关系的匹配,其表达式为:其中,L表示测试输入向量的输入变量个数,L个输入变量的时序和规则为F,第i个输入变量的输入值表示为Inputi,第i个输入变量的失效输入域为FUi,σ(FUi,Inputi)表示测试输入向量的第i个输入变量值的匹配度,根据上面公式,可得:
σ(FUi,Inputi)=ran(FUi∩Inputi)/ran(Inputi)
步骤五:失效判定05。选取一定的置信度λ作为在进行软件测试输入向量和失效输入空间在数据匹配时的判别标准。若对于失效输入匹配度σU和给定的置信度λ,存在σU≥λ,则判定软件测试输入向量和失效输入空间匹配,软件失效;否则,判定软件测试输入向量和失效输入空间不匹配,当前测试输入向量通过测试,软件未失效。置信度λ由用户根据需要设定。
当判定软件失效时,记录下失效时各输入变量的累计执行数,之后移除所发现的失效空间,将累计执行数清零;当判定软件未失效时,记录各输入变量的累计执行数。
判断所有的失效空间都已经移除或达到了最大测试时间要求,若是,则停止虚拟测试,执行步骤六,否则返回到步骤三执行。
步骤六:失效时间还原06。通过真实测试一定数量且具有一定输入特点的测试用例并记录测试用例的实际测试时间,利用统计学原理对每一步输入变量的平均测试时间进行换算得到每种输入变量的实际执行时间,再将各输入变量的累计执行数转化为虚拟执行时间,获得失效间隔时间。具体针对某个失效,将该失效的各输入变量的累计执行数和对应输入变量的实际执行时间乘积后求和,得到该失效的失效间隔时间。
通过上述六大步骤得到的软件可靠性虚拟测试方法主要适用于软件的可靠性试验,利用软件可靠性测试输入空间模型,以输入向量随机匹配的方式在输入空间中与软件生命周期中的各种失效数据的失效输入空间进行匹配得到在软件可靠性测试中可能的失效时间,为软件可靠性评估提供数据基础,实现利用常规软件测试失效数据进行软件可靠性定量评估。
下面通过实例来说明本发明软件可靠性虚拟测试方法的可行性和有效性。以仿真外挂物管理系统软件(SMSS)作为实例,它的主要用途是模拟监视和外挂物的工作情况,提供和管理与其他分系统之间通信,实时管理和控制外挂物。本软件是嵌入式软件,软件在可靠性测试中可以手动或自动地排除已发现的潜在缺陷,除此之外可以根据实验需要植入已知的软件缺陷,易于控制和得到注入的软件缺陷的失效时间,得到的失效数据可以与本发明方法设计的实验结果进行对比,因此适合本发明方法可行性和有效性的验证。具体实例验证过程如下:
A.构造软件可靠性测试剖面,建立测试输入空间。
SMSS的使用情况很大程度上依赖于系统所处的任务阶段,不同的任务下的操作是不同的,表现在功能的不同、操作顺序的不同、操作概率的不同等等。因此,在分析构建操作剖面时应该从整个系统出发,从顶层至底层依次分析出SMSS在各层可能的使用情况。构造SMSS操作剖面的步骤如下。
1)编辑系统使用视图;
建立软件交联关系,确定被测软件与外部系统之间的交联关系以及在相应关系下的全部输入变量和输出变量。SMSS在执行工作时是和与之相连的交联系统通过输入变量的激励和输出变量的反馈共同完成系统任务。如图4所示,为SMSS提供输入变量的交联系统包括:显示控制系统(DCMP)、接口单元(AIU)、数据传输设备(DTE)和惯性导航系统(INS)。
2)编辑操作剖面视图;
使用过程中,使用者主要包括角色A和角色B,根据使用者的不同,其实用场景剖面主要包括空中模式和地面模式两种,如图5所示,空中模式和地面模式比例为4:1。
地面模式的主要工作有两种:维护自检测和数据加载。由于在不同的工作任务下操作流程是不同的,因此需要分别对维护自检测和数据加载这两项工作分别建立子剖面,细化剖面后,被测系统的使用情况分析得更加具有针对性,得到的操作内容、操作顺序和概率信息更准确。通过软件需求分析得到维护自检测与数据加载的比例为2:3,如图6所示。
空中模式可以划分为三种不同的子剖面,分别是TASKA、TASKB和TASKC,三种场景在空中模式下发生的概率由SMSS实际使用时出现的频率决定,如图7所示。
对于空中模式中的每一种场景,都可以分解成两个子剖面:地面加载和空中任务,地面加载包括准备活动,空中任务包括起飞后所进行的各种相关的活动。由于被测软件的重点在于空中任务,地面加载部分不再做详细介绍。
对于TASKA,考虑到实现功能Function1、Function2所进行的处理是不同的,分别给出各自发生的概率为0.3、0.7,如图8所示。
3)编辑操作描述视图;
根据SMSS的特点,将操作定义成为完成某一目的的一个控制字,控制字中含有多个输入变量。由于SMSS操作剖面中操作数目较多,此处只给出“送挂点状态”操作描述过程加以说明。该操作所对应的控制字为0011-0001-00011001,相应的输入变量有:代号、存在信号、挂点故障以及外挂物数量等。对每个输入变量进行描述,取值和分配概率。挂点代号有7种取值,即0-7以2进制的方式表达(000、001、010、011、100、101、110、111);挂点存在有两种取值,即0表示不存在,1表示存在;挂点故障有两种取值,即0表示无故障,1表示故障,概率都为0.5;外挂物数量从0-100均匀分布。
B.生成测试用例。
通过测试输入空间随机抽样生成的是一组操作序列,而且生成的操作序列的长度也是根据使用剖面随机变化的,这与真实情况下用户对软件的使用更加一致。自动遍历测试输入空间中各个输入变量,生成XML格式的测试用例。如图9所示,为一个生成内容为维护自检测模式的XML格式的测试用例,其中,需要测试的输入变量包括控制字开头、模式、模式类型、显控输入模式类型等,各输入变量值为测试剖面按照一定的规律抽样获得。
C.植入软件缺陷。
根据软件缺陷设计文档提供的所有设计缺陷,并结合仿真外挂物管理系统操作剖面的特点,选择了如下几类具有代表性的缺陷,兼顾考虑缺陷被发现的时间,尽量模拟真实使用情况选择了10个缺陷,具体见表1。
表1植入缺陷列表
进行可靠性测试时,事先植入这10个缺陷到SMSS中,并在注入缺陷的路径中写入触发器用来记录自动化测试中被发现的缺陷,当相应编号的缺陷被发现时,自动或手动地排除该缺陷,并继续执行未执行的测试用例,直到全部缺陷被发现为止。
D.软件可靠性虚拟测试。
为了研究软件可靠性虚拟测试方法,开发一种失效输入匹配辅助工具,其主要作用是为了辅助软件输入向量与失效输入空间进行匹配的实施与实验。它的主要功能包括:测试用例数据解析、失效输入空间建模、数据匹配以及失效间隔操作计数,如图10所示。
根据SMSS剖面生成的测试用例的特点,操作按照“控制字开头”的类型分类,每个操作包括若干输入变量,如表2所示。
表2SMSS剖面中操作分类
操作号 | 控制字开头特征 | 对应操作状态 |
OP1 | 0010-0001-00010111 | 模式转为正常、N/A转为导航、转为导航 |
OP2 | 0010-0001-00010101 | 更改DTE状态 |
OP3 | 0010-0001-00011001 | 送挂点状态 |
OP4 | 0100-0001-00010010 | 加载外挂物清单 |
OP5 | 0100-0001-00010011 | 加载程序 |
操作号 | 控制字开头特征 | 对应操作状态 |
OP6 | 0010-0001-00010110 | 更改W状态 |
OP7 | 0010-0001-00100011 | 显控告知TASKA |
OP8 | 0011-0001-00101001 | 返回正确信息、第一次返回错误信息 |
OP9 | 0010-0001-00110011 | 显控告知TASKA准备 |
OP10 | 0101-0001-00010001 | 发送经纬度 |
OP11 | 0011-0001-00111001 | 送双挂点打开 |
OP12 | 0011-0001-01001001 | 送导关闭信息 |
OP13 | 0010-0001-00100011 | 显控告知TASKB开启 |
OP14 | 0011-0001-00101001 | 返回正确数量 |
OP15 | 0010-0001-00010100 | 显控命令完成 |
将置信度λ设置为0.95进行测试。将全部失效输入空间注入到失效输入匹配工具中,执行事先确定不变的一组测试用例,按照增长测试流程进行实验,执行结果如表3所示。本发明实施例中全部的失效输入空间是根据表1所示的10个缺陷所对应的输入变量建立。
表3失效间隔操作计数
为了获得软件可靠性测试时间,需要对软件的每一组操作或每一个输入在真实使用过程中的执行时间进行统计。其统计方法为先对操作或输入进行详细的分类,再通过统计得到每个操作的平均执行时间。选取30个测试用例对操作数和测试用例时长进行统计,如表4所示。
表430个测试用例的操作数和执行总时间
根据以上分析,将相同操作数量的测试用例进行统计得到执行该测试用例的平均时间,在通过解多元方程组得到每一个操作的执行时间,可以得出:OP6的执行时间为2s,每个测试用例执行结束后的软件恢复初始状态的时间为2s,其他每一个操作的时间为1s。将虚拟测试得到的失效间隔的每一种操作计数转化为失效间隔时间。以182号失效为例:
t182=(133+47+376+312+137+30+26+31+5+26+6+4)*1+(35+48)*2=1299
也就是182号失效的失效间隔时间为1299s。
E.常规软件可靠性测试。
将设计的10个缺陷植入到SMSS中,以模拟真实中软件缺陷状态。执行传统的软件可靠性增长测试,使得许多植入缺陷在测试前期得以激发暴露并剔除,这样外挂管理系统可靠性得到增长,并对测试用例执行效果进行收集整理。在测试之前需要对测试平台进行配置,保证自动化测试过程正常运行,测试结果可靠。
执行完成全部测试用例后,收集并整理测试结果。在本实例验证过程中,主要验证实际执行效果与数据匹配判定结果的差异以及失效间隔时间的准确性,因此需要收集并实际执行效果与执行时间。由于这组测试用例的测试记录过长,对其进行简化,测试结果如表5所示。
表5常规软件可靠性测试执行结果
用例号 | 执行结果 | 开始时间 | 结束时间 | 执行时间 | 失效间隔时间 |
1 | 052未通过 | 16:13:30 | 16:13:32 | 2s | 2s |
1 | 032未通过 | 16:13:42 | 16:13:45 | 4s | 3s |
用例号 | 执行结果 | 开始时间 | 结束时间 | 执行时间 | 失效间隔时间 |
1 | 通过 | 16:13:51 | 16:14:04 | 13s | |
2 | 101未通过 | 16:14:04 | 16:14:25 | 21s | 34s |
2 | 092未通过 | 16:14:29 | 16:14:53 | 24s | 24s |
2-7 | 通过 | 16:14:57 | 16:17:59 | 182s | |
8 | 080未通过 | 16:17:59 | 16:18:14 | 15s | 197s |
8-56 | 通过 | 16:18:19 | 16:38:46 | 1227s | |
57 | 182未通过 | 16:38:46 | 16:39:12 | 26s | 1253s |
58-142 | 通过 | 16:50:08 | 17:28:34 | 2306s | |
143 | 126未通过 | 17:28:34 | 17:29:11 | 37s | 2343s |
143-170 | 通过 | 17:29:16 | 17:32:10 | 774s | |
170 | 180未通过 | 17:32:10 | 17:33:02 | 52s | 826s |
170-638 | 通过 | 17:33:07 | 21:09:18 | 12971s | |
639 | 129未通过 | 21:09:18 | 21:09:48 | 30s | 13001s |
639-795 | 通过 | 21:09:53 | 22:20:11 | 4218s | |
796 | 124未通过 | 22:20:11 | 22:20:43 | 32s | 4250s |
对以上两组实验结果进行整理,实验结果对比如表6所示:
表6实验结果对比
通过对比可以看出,本发明方法得到的失效时间与常规软件可靠性测试得到的失效间隔时间之间的误差很小,基本确定两组实验结果相同,因此验证了本发明提出的综合试验剖面构造方法的有效性和可行性。通过上述SMSS的实例分析可知,本发明提出的软件可靠性虚拟测试方法能够还原出软件生命周期中发现的失效在可靠性测试中的失效时间,利用该方法获得的失效数据进行软件可靠性评估,其评估结果对软件研制提供指导,与此同时为其他软件可靠性相关工作提供参考,有利于软件可靠性工程的推广。
Claims (3)
1.一种软件可靠性虚拟测试方法,其特征在于,包括如下步骤:
步骤1:建立测试输入空间;所建立的测试输入空间包括软件操作、输入域集合、输入域区间分布以及输入关系函数;
步骤2:建立失效输入空间;根据已发现的软件失效的输入变量建立失效输入空间,失效输入空间是软件失效时所有输入向量的集合,失效输入空间包括失效输入域集合和失效输入关系函数;
步骤3:对测试输入空间进行随机抽样生成测试输入向量;
步骤4:计算测试输入向量与失效输入空间的匹配度σU;
设测试输入向量具有L个输入变量,L个输入变量的时序和规则为F,第i个输入变量的输入值表示为Inputi,第i个输入变量的失效输入域为FUi,则:
其中,σ(FUi,Inputi)表示测试输入向量的第i个输入变量值的匹配度;Rule(F)表示测试输入向量的输入关系匹配度;当测试输入向量和发生失效时输入之间的关系相同时,Rule(F)为1,否则Rule(F)为0;
步骤5:首先,根据置信度λ判断软件是否失效,具体是:当σU≥λ时,判定测试输入向量和失效输入空间匹配,软件失效,此时记录失效时各输入变量的累计执行数,将所发现的失效输入空间移除,将累计执行数清零;否则,判定软件测试输入向量和失效输入空间不匹配,软件未失效,此时记录各输入变量的累计执行数;
然后,判断是否所有失效空间都已移除或者达到了最大测试时间要求,若是,则停止虚拟测试,执行步骤6;否则转步骤3执行;
步骤6:对每个失效,将该失效的各输入变量的累计执行次数和对应的实际执行时间乘积后求和,得到该失效的失效间隔时间。
2.根据权利要求1所述的一种软件可靠性虚拟测试方法,其特征在于,所述的步骤4中第i个输入变量值的匹配度σ(FUi,Inputi),根据下面公式获得:
σ(FU,Input)=ran(FU∩Input)/ran(Input)
其中,FU表示失效输入域中输入变量的取值范围,Input表示测试输入变量的取值范围,ran(A)表示区间A的长度,将FU=FUi,Input=Inputi代入上面公式得到σ(FUi,Inputi)。
3.根据权利要求2所述的一种软件可靠性虚拟测试方法,其特征在于,步骤4中所述的输入变量值,其数据类型为离散值point、范围值range、空值null、或值or或者否定值;
设为数据类型TFU与TInput间的匹配规则,TFU表示某一输入变量的失效输入域的数据类型,TInput表示某一输入变量值的数据类型,FU和Input分别为数据类型TFU与TInput的数据实例;输入变量Input和FU的匹配度σ(FU,Input)为:
对于R(null-point/range/null),FU为null类型,则σ(FU,Input)=1;
对于R(point/range/or-null),Input为null类型,FU不为null类型,则σ(FU,Input)=0;
对于R(point-point),若FU=Input,则σ(FU,Input)=1;若FU≠Input,则σ(FU,Input)=0;
对于R(range-point),若Input∈FU,则σ(FU,Input)=1;若则σ(FU,Input)=0;
对于R(range-range),σ(FU,Input)=ran(FU∩Input)/ran(Input);
对于R(or-point),设or数据类型的FU表示为n个range数据类型的数据区间的集合,FU={FU(1),FU(2),...,FU(n)},则FU(j)表示FU中的第j个数据区间;
对于R(or-range),设FU={FU(1),FU(2),...,FU(n)},则有:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410182032.8A CN103970654B (zh) | 2014-04-30 | 2014-04-30 | 一种软件可靠性虚拟测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410182032.8A CN103970654B (zh) | 2014-04-30 | 2014-04-30 | 一种软件可靠性虚拟测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103970654A true CN103970654A (zh) | 2014-08-06 |
CN103970654B CN103970654B (zh) | 2017-01-25 |
Family
ID=51240183
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410182032.8A Active CN103970654B (zh) | 2014-04-30 | 2014-04-30 | 一种软件可靠性虚拟测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103970654B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105868106A (zh) * | 2016-03-24 | 2016-08-17 | 飞依诺科技(苏州)有限公司 | 超声设备可靠性的测试方法及测试系统 |
CN109634866A (zh) * | 2018-12-14 | 2019-04-16 | 泰康保险集团股份有限公司 | 数据测试方法、装置、介质及电子设备 |
CN109947658A (zh) * | 2019-04-03 | 2019-06-28 | 颜沿(上海)智能科技有限公司 | 一种模拟真实场景数据产生的方法及装置 |
CN111858298A (zh) * | 2020-05-29 | 2020-10-30 | 卡斯柯信号有限公司 | 一种基于3v模型的软件测试方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5815654A (en) * | 1996-05-20 | 1998-09-29 | Chrysler Corporation | Method for determining software reliability |
CN102541736A (zh) * | 2011-11-30 | 2012-07-04 | 北京航空航天大学 | 一种软件可靠性执行过程加速测试方法 |
CN103279415A (zh) * | 2013-05-27 | 2013-09-04 | 哈尔滨工业大学 | 基于组合测试的嵌入式软件测试方法 |
-
2014
- 2014-04-30 CN CN201410182032.8A patent/CN103970654B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5815654A (en) * | 1996-05-20 | 1998-09-29 | Chrysler Corporation | Method for determining software reliability |
CN102541736A (zh) * | 2011-11-30 | 2012-07-04 | 北京航空航天大学 | 一种软件可靠性执行过程加速测试方法 |
CN103279415A (zh) * | 2013-05-27 | 2013-09-04 | 哈尔滨工业大学 | 基于组合测试的嵌入式软件测试方法 |
Non-Patent Citations (2)
Title |
---|
郑峰等: "模糊判别在软件可靠性加速测试中的应用", 《北京航空航天大学学报》 * |
陈雪松等: "基于面向对象技术的实时软件可靠性测试数据生成方法研究", 《测控技术》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105868106A (zh) * | 2016-03-24 | 2016-08-17 | 飞依诺科技(苏州)有限公司 | 超声设备可靠性的测试方法及测试系统 |
CN105868106B (zh) * | 2016-03-24 | 2018-07-13 | 飞依诺科技(苏州)有限公司 | 超声设备可靠性的测试方法及测试系统 |
CN109634866A (zh) * | 2018-12-14 | 2019-04-16 | 泰康保险集团股份有限公司 | 数据测试方法、装置、介质及电子设备 |
CN109947658A (zh) * | 2019-04-03 | 2019-06-28 | 颜沿(上海)智能科技有限公司 | 一种模拟真实场景数据产生的方法及装置 |
CN109947658B (zh) * | 2019-04-03 | 2022-03-04 | 颜沿(上海)智能科技有限公司 | 一种模拟真实场景数据产生的方法及装置 |
CN111858298A (zh) * | 2020-05-29 | 2020-10-30 | 卡斯柯信号有限公司 | 一种基于3v模型的软件测试方法 |
CN111858298B (zh) * | 2020-05-29 | 2022-08-30 | 卡斯柯信号有限公司 | 一种基于3v模型的软件测试方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103970654B (zh) | 2017-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Matinnejad et al. | Automated test suite generation for time-continuous simulink models | |
Balci | How to assess the acceptability and credibility of simulation results | |
CN107066382B (zh) | 一种基于模型的航天器系统自动化测试方法 | |
CN106528100A (zh) | 用于安全关键软件开发的基于模型的技术和过程的系统和方法 | |
CN110245085B (zh) | 利用在线模型检验的嵌入式实时操作系统验证方法及系统 | |
Khoshgoftaar et al. | Using process history to predict software quality | |
Mancini et al. | Anytime system level verification via parallel random exhaustive hardware in the loop simulation | |
CN103970654A (zh) | 一种软件可靠性虚拟测试方法 | |
CN109375948A (zh) | 一种智能功能点识别的软件计价方法 | |
Olsson et al. | Semi-automatic mapping of source code using Naive Bayes | |
Boussaa et al. | Leveraging metamorphic testing to automatically detect inconsistencies in code generator families | |
CN105512372B (zh) | 模型化的星载数据处理仿真测试方法 | |
CN114492258A (zh) | 随机约束和覆盖组同步方法 | |
Forouzani et al. | Method for assessing software quality using source code analysis | |
CN115827353A (zh) | 故障诊断方法及装置 | |
Johnson | The systems engineer and the software crisis | |
Kusuma et al. | The Implementation of the Black Box Method for Testing Smart Hajj Application Ministry of Religion | |
Krka et al. | Probabilistic automata for architecture-based reliability assessment | |
Beine | A model-based reference workflow for the development of safety-critical software | |
CN107229568A (zh) | 带过去时态的线性时态逻辑性质的有界运行时验证方法 | |
KR102106696B1 (ko) | 소프트웨어 검사 장치 및 방법 | |
CN113282504A (zh) | 一种增量代码覆盖率检测方法及业务开发方法、装置 | |
Ören et al. | Model reliability and software quality assurance in simulation of nuclear fuel waste management systems | |
CN114579084A (zh) | 发动机的控制软件的形式化处理方法和装置 | |
Sheppard et al. | Managing conflict in system diagnosis |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |