法律状态公告日
法律状态信息
法律状态
2016-11-30
未缴年费专利权终止 IPC(主分类):G06F11/36 授权公告日:20140910 终止日期:20151014 申请日:20111014
专利权的终止
2014-09-10
授权
授权
2012-07-18
实质审查的生效 IPC(主分类):G06F11/36 申请日:20111014
实质审查的生效
2012-06-20
公开
公开
技术领域
本发明涉及一种软件可靠性分析方法。
背景技术
鉴于NHPP类软件可靠性增长模型在实际应用中的优秀表现,近年来人们开始研究 如何建立构件软件应用的NHPP模型。但是,NHPP模型是一种黑盒模型,它们把软件看 成一个单调的整体,只考虑软件同外部环境的交互,而不考虑软件的内部结构,因此这种 黑盒模型不能适应大型的基于构件的新型软件开发模式。黑盒方法的缺点包括它们忽略了 组成系统的构件的测试以及可靠性信息,没有考虑软件的体系结构。
发明内容
本发明为了解决现有黑盒方法的忽略了组成系统的构件的测试以及可靠性信息,没有 考虑软件的体系结构的缺点,而提出了一种基于PCSTM模型考虑测试与运行剖面不同测 的试数据转换构件软件可靠性分析方法。
基于PCSTM模型考虑测试与运行剖面不同测的试数据转换构件软件可靠性分析方 法,对需要用到的模型和参数进行定义:
PCSTM模型:
PCSTM定义为六元组<n,m,PUT,PWT,PTD,Φ>,其中n表示构件总数;m表示白 盒测试中集成构件的总次数;PUT表示单元测试模型集,PUT={UMi},i=1,…,n,其中 UMi表示构件ci的单元测试模型;PWT表示白盒测试模型集,i=1,…,m,其中表示Testi的白盒测试模型;PTD表示整个测试过程中收集到的测 试数据;Φ表示某一构件是否参与某一阶段测试的所有标志集,用矩阵表示为
公式一
式中Testi——构件软件测试过程中第i个测试阶段,如公式二所示;
——指示构件cj是否参与Testi,如公式三所示;
公式二
公式三
单元测试模型UMj:
UMj建模构件cj的单元测试过程;UMj定义为五元组<Dj,nj,Oj,mj,Bj>,其中Dj表 示构件cj的输入域;nj表示输入子域数目;Oj表示构件cj的输出域;mj表示输出子域数 目;Bj表示在cj每个输入子域上进行测试的总时间的集合,k=1,…,nj,其 中表示在子域Sjk上执行随机测试的总时间的期望值;
输入域Dj:
Dj可划分为nj个不相交的子域,其中Sjk表示构件cj的第k个输入子域; 设Pjk为子域Sjk的剖面,Pjk在Sjk上满足均匀分布,Pjk=1/|Sjk|;
输出域Oj:
Oj可划分为mj个不相交的子域,其中Ujk表示构件cj的第k个输出子 域;一个构件的输出域为它下一个构件的输入域;
测试数据集PTD:
PTD表示整个测试过程中收集到的测试数据,用矩阵表示为
公式四
式中——Testi执行过程中在构件cj的输入子域Sjk上发生失效的数据的有序 集,表示为
公式五
式中——Testi执行过程中在构件cj的输入子域Sjk上发生失效的数据, 满足
——失效发生的时间;
——时刻发生失效的个数;
白盒测试模型
建模Testi;定义为四元组其中 建模Testi的测试剖面;表示Testi中所有构件输入剖面组成的集合, 表示Testi中所有构件输出剖面组成的集合,表示Testi执行总时间的期望值;
构件输入剖面
建模构件cj在Testi中的输入剖面;在构件cj整个输入域Dj上具有概率密度 定义为一个概率向量,
构件输出剖面
建模构件cj在Testi中的输出剖面;定义为一个概率向量,
式中f——构件cj执行的运算函数;
构件子域依赖图
建模Testi的测试剖面;定义为五元组其 中表示Testi的节点集,表示Testi的有向边集,表示Testi子系统的起始执行构件的输入剖面集,由测试执行者确定;s表示起始节点; t表示终止节点;
有向边
建模Testi中从构件cj的输入子域Sjh到构件ck的输入子域Skl的控制流转移; 定义为三元组其中表示转移的名字;表 示Testi中从Sjh转移到Skl时构件cj的平均执行时间;表示Testi中构件cj当前执行 在输入子域Sjh的情况下,输出落在构件ck的子域Skl上的条件概率,表示为
式中f——构件cj执行的运算函数;
节点
建模Testi中在构件cj的输入子域Sjk上的测试过程;定义为三元组 其中表示节点的名字;表示在Testi当前子系统中在构 件cj的输入子域Sjk上的稳态概率,如公式八所示;表示Testi中在构件cj的输入子域 Sjk上的执行时间占整个子系统执行时间的比例,如公式九所示;
式中——表示Testi当前系统中构件cj执行的稳态概率;
基于PCSTM的测试数据转换包括如下四个步骤:
步骤1:实现构件测试剖面到运行剖面的映射;根据集成测试中起始构件的输入剖面 和集成子系统的测试剖面,计算系统中每个构件的运行剖面;
计算过程如下:
设cj为参与集成测试Testi的一个构件,且cj不是起始执行构件;来计算cj的输入剖 面cj的直接在前执行构件为输出域与构件cj的输入域具有 交集的构件;cj的输入剖面由它的直接在前执行构件的输出剖面决定;
设cl为参与Testi的一个构件,且l≠j;cl的输出域与cj的输入子域Sjk的交集为 当cl为cj的直接在前执行构件时,否则因此Sjk与Testi中构件cj的直接在前执行构件的输出域交集大小为
由于Sjk上构件的操作剖面满足均匀分布,假设构件cj的直接在前执行构件的输出剖 面已知,那么由此得到子域Sjk的权值为
接下来,证明以上假设成立,证明分以下两种情况讨论:
第一种情况,如果cj的直接在前执行构件是Testi的起始执行构件,那么它们的输入 剖面由用户确定,假设成立;
第二种情况,如果cj的直接在前执行构件不是Testi的起始执行构件,说明除起始执 行构件之外cj还有其他的在前执行构件;已知起始执行构件的输入剖面,根据公式九逐 一得到cj所有在前执行构件的输入剖面,因此假设成立;
根据公式六和公式七,得到表示为
将上式带入公式十得
步骤2:将白盒测试数据转化为单元测试数据;根据公式四在任意测试子域 Sjk(1≤j≤n;1≤k≤nj)上的所有测试数据为
上式中h=1,…,m;
步骤3:将步骤2得到的单元测试数据转化成系统测试数据;设转化后的数据集为
步骤4:建立可靠性数据集;基于步骤3中建立的系统测试数据集,在时间区间(0,th) (h=1,2,…,n;0<t1<t2<…<tn)内被发现的差错总数Yh表示为
本发明是测试数据转换的方法来实现黑盒方法和白盒方法的结合。它首先采用白盒方 法实现构件软件测试剖面到运行剖面的映射,建立NHPP模型需要的可靠性数据集,然 后采用黑盒方法建立构件软件应用的NHPP模型。测试数据转换的目的是将分阶段实现 的、异构的构件软件灰盒测试过程转换成满足NHPP模型假设的单调统一的黑盒测试过 程,把所有构件的单元测试数据和集成测试中构件之间的接口失效数据转换成整个应用基 础上的黑盒测试数据,建立满足NHPP模型假设的可靠性数据集。
附图说明
图1是系统的体系结构示意图;图2是测试为Test1时PCSTM构件子域依赖图,图 3是测试为Test2时PCSTM构件子域依赖图,图4是测试为Test3时PCSTM构件子域依 赖图,图5是实测数据,G-O模型,P-G-O模型,可加模型数据曲线图。
具体实施方式
具体实施方式一:本实施方式中对需要用到的模型和参数进行定义:
PCSTM模型:
PCSTM定义为六元组<n,m,PUT,PWT,PTD,Φ>,其中n表示构件总数;m表示白 盒测试中集成构件的总次数;PUT表示单元测试模型集,PUT={UMi},i=1,…,n,其中 UMi表示构件ci的单元测试模型;PWT表示白盒测试模型集,i=1,…,m,其中表示Testi的白盒测试模型;PTD表示整个测试过程中收集到的测 试数据;Φ表示某一构件是否参与某一阶段测试的所有标志集,用矩阵表示为
公式一
式中Testi——构件软件测试过程中第i个测试阶段,如公式二所示;
——指示构件cj是否参与Testi,如公式三所示;
公式二
公式三
构件输入空间自然划分为若干个功能性子域,每个子域具有自己的操作剖面,满足均 匀分布。构件实际运行剖面描述为这些子域的权值向量。运行剖面的这种形式允许构件开 发者对构件进行测试而不需要知道它将面临的剖面。因此在单元测试过程(Test0)为构 件开发者在构件每个子域上的随机测试过程。
单元测试模型UMj:
UMj建模构件cj的单元测试过程;UMj定义为五元组<Dj,nj,Oj,mj,Bj>,其中Dj表 示构件cj的输入域;nj表示输入子域数目;Oj表示构件cj的输出域;mj表示输出子域数 目;Bj表示在cj每个输入子域上进行测试的总时间的集合,k=1,…,nj,其 中表示在子域Sjk上执行随机测试的总时间的期望值;
输入域Dj:
Dj可划分为nj个不相交的子域,其中Sjk表示构件cj的第k个输入子域; 设Pjk为子域Sjk的剖面,Pjk在Sjk上满足均匀分布,Pjk=1/|Sjk|;
输出域Oj:
Oj可划分为mj个不相交的子域,其中Ujk表示构件cj的第k个输出子 域。一个构件的输出域为它下一个构件的输入域。
测试数据集PTD:
PTD表示整个测试过程中收集到的测试数据,用矩阵表示为
公式四
式中——Testi执行过程中在构件cj的输入子域Sjk上发生失效的数据的有序 集,表示为
公式五
式中——Testi执行过程中在构件cj的输入子域Sjk上发生失效的数据, 满足
——失效发生的时间;
——时刻发生失效的个数;
白盒测试过程(Testi,i=1,…,m)建模中,主要根据构件输入子域的定义建模构件运 行剖面和集成子系统测试剖面。对于第一个剖面,在单元测试子域定义的基础上,采取建 立构件标准化操作剖面模型的方式来实现。第二个剖面利用构件子域依赖图实现建模。
白盒测试模型
建模Testi;定义为四元组其中 建模Testi的测试剖面;表示Testi中所有构件输入剖面组成的集合, 表示Testi中所有构件输出剖面组成的集合,表示Testi执行总时间的期望值;
构件输入剖面
建模构件cj在Testi中的输入剖面;在构件cj整个输入域Dj上具有概率密度 定义为一个概率向量,
构件输出剖面
建模构件cj在Testi中的输出剖面;定义为一个概率向量,
式中f——构件cj执行的运算函数;
构件子域依赖图
建模Testi的测试剖面;定义为五元组其 中表示Testi的节点集,表示Testi的有向边集,表示Testi子系统的起始执行构件的输入剖面集,由测试执行者确定;s表示起始节点; t表示终止节点;
有向边
建模Testi中从构件cj的输入子域Sjh到构件ck的输入子域Skl的控制流转移; 定义为三元组其中表示转移的名字;表 示Testi中从Sjh转移到Skl时构件cj的平均执行时间;表示Testi中构件cj当前执行 在输入子域Sjh的情况下,输出落在构件ck的子域Skl上的条件概率,表示为
式中f——构件cj执行的运算函数;
节点
建模Testi中在构件cj的输入子域Sjk上的测试过程;定义为三元组 其中表示节点的名字;表示在Testi当前子系统中在构 件cj的输入子域Sjk上的稳态概率,如公式八所示;表示Testi中在构件cj的输入子域 Sjk上的执行时间占整个子系统执行时间的比例,如公式九所示;
式中——表示Testi当前系统中构件cj执行的稳态概率;
PCSTM模型考虑了构件软件测试过程中构件的测试剖面与运行剖面不同。基于 PCSTM模型进行测试数据转换时除了要实现集成测试剖面到实际运行剖面之间的映射 外,还需要实现单元测试中构件的测试剖面到集成测试中构件的运行剖面之间的映射。第 一个剖面映射的实现是以第二个剖面映射的实现为基础。第二个剖面映射关系是基于白盒 模型中构件输入剖面的定义来实现。第一个剖面映射关系是通过执行时间比例来定义的, 如公式九。
基于PCSTM的测试数据转换包括如下四个步骤:
步骤1:实现构件测试剖面到运行剖面的映射;根据集成测试中起始构件的输入剖面 和集成子系统的测试剖面,计算系统中每个构件的运行剖面;
计算过程如下:
设cj为参与集成测试Testi的一个构件,且cj不是起始执行构件。来计算cj的输入剖 面因为cj不是起始执行构件,所以cj具有直接在前执行构 件。cj的直接在前执行构件为输出域与构件cj的输入域具有交集的构件;cj的输入剖面 由它的直接在前执行构件的输出剖面决定;
设cl为参与Testi的一个构件,且l≠j;cl的输出域与cj的输入子域Sjk的交集为 当cl为cj的直接在前执行构件时,否则因此Sjk与Testi中构件cj的直接在前执行构件的输出域交集大小为
由于Sjk上构件的操作剖面满足均匀分布,假设构件cj的直接在前执行构件的输出剖 面已知,那么由此得到子域Sjk的权值为
接下来,证明以上假设成立,由于构件的输出剖面由它的输入剖面决定的,因此只需 要证明cj的直接在前执行构件的输入剖面已知。证明分以下两种情况讨论:
第一种情况,如果cj的直接在前执行构件是Testi的起始执行构件,那么它们的输入 剖面由用户确定,假设成立;
第二种情况,如果cj的直接在前执行构件不是Testi的起始执行构件,说明除起始执 行构件之外cj还有其他的在前执行构件;已知起始执行构件的输入剖面,根据公式九逐 一得到cj所有在前执行构件的输入剖面,因此假设成立;
根据公式六和公式七,得到表示为
将上式带入公式十得
步骤2:将白盒测试数据转化为单元测试数据;根据公式四在任意测试子域 Sjk(1≤j≤n;1≤k≤nj)上的所有测试数据为
上式中h=1,…,m;
步骤3:将步骤2得到的单元测试数据转化成系统测试数据;设转化后的数据集为
步骤4:建立可靠性数据集;基于步骤3中建立的系统测试数据集,在时间区间(0,th) (h=1,2,…,n;0<t1<t2<…<tn)内被发现的差错总数Yh表示为
具体实施方式二:结合图1至图5说明本实施方式,本实施方式与具体实施方式一 不同点在于为了分析基于测试数据转换方法建立的NHPP模型的有效性,开发了一个文 本查询系统,系统的体系结构如图1所示。该软件系统由四个构件组成,用C++语言开 发。各个构件详细参数如表1所示。
表1 构件参数
基于PCSTM模型的定义,我们考虑软件应用中构件测试剖面与运行剖面不同,对该 应用执行基于其构件子域的构件软件测试,整个测试过程中收集到的测试数据如表2所示。
表2、PCSTM测试数据信息
根据单元测试过程,建立单元测试模型如表3所示。
表3、PCSTM单元测试模型
根据集成测试和系统测试过程,建立白盒测试模型如图2至图4,以及表4所示。
表4、PCSTM白盒测试模型
基于所建立的PCSTM模型,执行基于PCSTM的测试数据转换,建立可靠性数据集如 表5所示。
表5、基于PCSTM测试数据转换建立的可靠性数据集
根据测试数据转换得到的可靠性数据集,建立整个构件软件应用的G-O模型,我们之 为P-G-O模型。利用最小二乘法进行参数估计,参数估计值如表6所示。
在对基于CSTM的测试数据转换方法的分析中,我们对该构件软件系统执行基于其运 行剖面的黑盒测试,建立了应用的G-O模型。为了进行比较,还建立了应用的可加模型。 我们将P-G-O模型与该软件应用的黑盒测试数据、G-O模型和可加模型进行比较,如图5 所示。从图中可以看出,P-G-O模型、G-O模型与构件软件系统黑盒测试数据曲线非常接 近,说明基于PCSTM的测试数据转换方法实现了构件软件的测试剖面到运行剖面的映射, 建立了满足NHPP模型假设的可靠性数据集。
表6、P-G-O模型参数
为了采用量化的方法来评测所建立的NHPP类软件可靠性增长模型,可用误差平方和 (Sum of Squared Errors,SSE)和R-square度量曲线拟合效果。模型的拟合结果如表7所 示。可以看出,P-G-O模型的拟合结果较理想,结果优于可加模型。
表7、P-G-O模型和可加模型的数据拟合情况对比
其它组成和连接方式与具体实施方式一相同。
机译: 通过测试由不同材料制成的构件的模型来估算耐热构件的热应力的方法
机译: 用于消除待测单元的较低价值测试,以及开发用于测试多个被测单元的多个不同且同步的测试执行命令的方法和设备
机译: 用于消除待测单元的较低价值测试,以及开发用于测试多个被测单元的多个不同且同步的测试执行命令的方法和设备