发明名称 一种嵌入式软件可靠性加速测试方法
摘要 本发明公开了一种嵌入式软件可靠性加速测试方法,通过建立软件任务剖面,来随机抽取产生软件任务序列,作为实际可靠性测试中施加的完整而有效的测试输入;测试过程中统计收集任务特征和任务状态,测试过程达到稳定过程后进入控制过程,施加测试策略,最后对软件可靠性进行工程评估。本发明控制过程中的测试策略的提出达到了合理高效地加速可靠性测试过程的目的,也拓展了对嵌入式软件进行可靠性测试的思路。基于软件任务剖面生成的软件任务序列,可以满足对复杂的输入条件的描述和覆盖,保证了可靠性测试数据的可信性;评估方法不依赖于失效数据的假设数学分布,适用于对精度没有过高要求的嵌入式软件的可靠性评估。
申请公布号 CN101894068B 申请公布日期 2013.01.30
申请号 CN201010195358.6 申请日期 2010.05.31
申请人 北京航空航天大学 发明人 吴玉美;刘志方;陆民燕
分类号 G06F11/36(2006.01)I 主分类号 G06F11/36(2006.01)I
代理机构 北京永创新实专利事务所 11121 代理人 官汉增
主权项 1.一种嵌入式软件可靠性加速测试方法,其特征在于:第一步,建立软件任务剖面;所述的建立软件任务剖面,实现流程如下:(1)根据软件需求规格说明书和与任务相关的要求,得到任务集合T;(2)进一步将任务集合T划分,得到任务集合T中所包含的子任务集T<sub>i</sub>,i=1,2,3……n;(3)分别得到各子任务集T<sub>i</sub>之间的时序转移关系和概率转移关系;(4)确定每个子任务集T<sub>i</sub>中任务t<sub>ij</sub>的时序转移关系和概率转移关系,画出子任务集转移图;(5)在每个子任务集中画出任务的转移图,同时按照任务描述方法对任务进行描述;所述的任务描述方法的步骤包括:(I)确定实现任务的所有事件{E<sub>i</sub>|i=1,2,…,n};(II)确定事件之间的时序转移关系和条件约束关系;所述的时序转移关系包括顺序关系、并发关系和偏序关系三种,所述的顺序关系是指一个任务发生并完成后,另一任务在其后发生;所述的并发关系是指多个任务同时发生、同时进行的关系;所述的偏序关系是指每个任务都有明确的发生时刻,如一个任务在某一时刻发生,另一任务要求在另一时刻发生;(III)确定表示事件的变量的属性,即给出表示事件的变量,确定变量类型、取值或取值范围;表示事件的变量类型包括以下三种:(a)离散型变量:主要有枚举型、布尔型和字符型;对于每一种类型的离散型变量,需要在描述中给出各种取值的概率,但是要注意每个离散型变量V<sub>i</sub>的各个取值的概率<img file="FDA00001803072900011.GIF" wi="102" he="59" />之和必须满足<img file="FDA00001803072900012.GIF" wi="268" he="131" />i=1,2,…,m,m是变量V的个数,j表示变量V<sub>i</sub>的第j种取值情况,n<sub>i</sub>表示变量V<sub>i</sub>取值的个数;(b)连续型变量:主要有整型和浮点型,对于这种类型的连续型变量,其取值范围由取值区间的集合表示,即取值范围划分为多个取值区间,并给出在这些取值区间上分别取值的概率,保证概率之和为1;(c)与时间相关的变量:离散型变量和连续型变量是通过取值来描述输入行为的变量,对于嵌入式软件,其输入行为不仅与取值相关而且与时间有关,因此表示事件的输入变量还应该有这样一类具有时间特性的与时间相关的变量;(6)将子任务集逐层分解,如果需要,进一步分解为子子任务集,直到底层的子任务集或子子任务集直接由一个或几个任务组成,得到被测软件的软件任务剖面;第二步,根据软件任务剖面,通过随机抽取产生软件任务序列,作为实际可靠性测试中施加的完整而有效的测试输入;所述的软件任务序列是带有时间标签的一组可能存在关系的任务t<sub>ij</sub>(i=1,2,…,n;j=1,2,…,n<sub>i</sub>)组成的一次软件运行,每个任务可能来自于不同的任务集、子任务集或子子任务集,软件任务序列集合TSP的数学表达式为:{TSP|TSP=〈tsq<sub>k</sub>,P<sub>k</sub>〉,k=1,2,…,N},tsq<sub>k</sub>表示第k个软件任务序列,P<sub>k</sub>表示第k个软件任务序列发生的概率,N表示软件任务序列的个数;第三步,人工编写测试脚本,建立测试环境,开始测试;第四步,测试过程中统计收集任务特征和任务状态,根据稳定判据判定测试过程是否达到稳定过程,如果未达到稳定,则继续执行软件任务序列进行测试,如果是达到稳定,则进入到控制过程;所述的任务特征是任务实现过程中相对独立的有特性的行为;所述的任务状态是任务特征的动态属性,用任务状态ts<sub>ij</sub>来刻画和表示任务特征,同时描述任务特征的具体实现,即某一任务特征由若干个任务状态实现,对于任务特征集合TC中的第i个任务特征tc<sub>i</sub>,存在tc<sub>i</sub>={ts<sub>ij</sub>|j=1,2,…,M<sub>i</sub>},其中,j表示第i个任务特征tc<sub>i</sub>的任务状态序号,M<sub>i</sub>表示第i个任务特征tc<sub>i</sub>所包含的任务状态ts<sub>ij</sub>的个数;所述的稳定过程是指当任务状态覆盖率C达到级别C<sub>T</sub>时,继续增加测试用例,软件的可靠性水平始终稳定在一个水平R,其数学描述为:{|R<sub>j</sub>-R<sub>i</sub>|<ε,ε→o<sup>+</sup>|((Nt<sub>j</sub>-Nt<sub>i</sub>)→b)^(C>C<sub>T</sub>),j>i>0,b>0,C<sub>T</sub>>0}其中,b是规定的较小的正数,Nt<sub>i</sub>表示第i组测试中测试用例的个数,Nt<sub>j</sub>表示第j组测试中测试用例的个数,R<sub>i</sub>表示第i组测试完成后得到的软件可靠性估计,R<sub>j</sub>表示第j组测试完成后得到的软件可靠性估计,若两组测试的用例个数相差趋近于正数b,而对应的可靠性估计差值小于规定的正数ε,同时任务状态覆盖率C大于级别C<sub>T</sub>时,即认为已到达稳定过程;所述的任务状态覆盖率C是指实际测试中软件经历的不同的状态个数与状态空间中所有状态个数的比值;第五步,进入控制过程,施加测试策略,终止控制过程;所述的测试策略是指:(1)对测试过的完全相同的软件任务序列不再测试,同时对测试过的相似软件任务序列也不再测试,所述的相似软件任务序列是指软件任务序列中的任务的集合相同、任务之间的时序转移关系相同,而对于其中的某一任务,其任务特征和任务状态不同;(2)加入对可靠性影响大的软件任务序列;所述加入对可靠性影响大的软件任务序列等同于加入具有如下特征的软件任务序列:(a)任务特征对可靠性评估的贡献f(d<sub>i</sub>):F(D)={f(d<sub>i</sub>)≤1|i=1,2,…,n}对F(D)中所有f(d<sub>i</sub>)按照从大到小排序,包含相对较大的f(d<sub>i</sub>)的软件任务序列认为是对可靠性影响较大的软件任务序列,取F(D)集合中排列前30%的为相对较大的f(d<sub>i</sub>);(b)任务特征的各种任务状态对可靠性评估的贡献g(s<sub>ij</sub>):<maths num="0001"><![CDATA[<math><mrow><mi>G</mi><mrow><mo>(</mo><msub><mi>S</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>=</mo><mo>{</mo><mi>g</mi><mrow><mo>(</mo><msub><mi>s</mi><mi>ij</mi></msub><mo>)</mo></mrow><mo>|</mo><mo>,</mo><mi>j</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>m</mi><mo>,</mo><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>m</mi></munderover><mi>g</mi><mrow><mo>(</mo><msub><mi>s</mi><mi>ij</mi></msub><mo>)</mo></mrow><mo>=</mo><mn>1</mn><mo>}</mo></mrow></math>]]></maths>对G(S<sub>i</sub>)中所有g(s<sub>ij</sub>)按照从大到小排序,包含相对较大的g(s<sub>ij</sub>)的软件任务序列认为是对可靠性影响较大的软件任务序列,取G(S<sub>i</sub>)集合中排列前30%的为相对较大的g(s<sub>ij</sub>);(c)任务状态:对任务状态验证进行统计:<img file="FDA00001803072900032.GIF" wi="494" he="144" />只要任务状态s<sub>ij</sub>的任务状态变量的取值的所有情况中有一种情况被覆盖到,认为该任务状态s<sub>ij</sub>已验证,则v(s<sub>ij</sub>)=1,如果任何一种情况都没有被覆盖到,认为该任务状态s<sub>ij</sub>没有验证,v(s<sub>ij</sub>)=0,将没有验证的任务状态s<sub>ij</sub>作为对可靠性影响较大的软件任务序列;(3)运行关键的软件任务序列;所述的关键软件任务序列是指遍历到关键或重要的任务特征的软件任务序列,即任务特征对可靠性评估的贡献f(d<sub>i</sub>)大,且含有多个任务的软件任务序列;此外,将运行失败产生后果严重度高的软件任务序列也看作是关键的软件任务序列,需要在控制过程中优先施加;第六步,对软件可靠性进行工程评估,结束测试;利用稳定过程和控制过程两个过程中收集到的任务状态和任务特征计算被测软件的任务可靠度,软件任务可靠度的近似计算式如下:<maths num="0002"><![CDATA[<math><mrow><mi>R</mi><mo>=</mo><mfrac><mrow><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><mi>f</mi><mrow><mo>(</mo><msub><mi>d</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>*</mo><mrow><mo>(</mo><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>m</mi><mi>i</mi></msub></munderover><mi>g</mi><mrow><mo>(</mo><msub><mi>s</mi><mi>ij</mi></msub><mo>)</mo></mrow><mo>*</mo><mi>v</mi><mrow><mo>(</mo><msub><mi>s</mi><mi>ij</mi></msub><mo>)</mo></mrow><mo>)</mo></mrow></mrow><mi>n</mi></mfrac></mrow></math>]]></maths>式中,n为任务特征的个数,m<sub>i</sub>为任务特征tc<sub>i</sub>所包含的任务状态的个数。
地址 100191 北京市海淀区学院路37号