CN1667588A - 基于贝叶斯方法的软件运行剖面获取方法 - Google Patents

基于贝叶斯方法的软件运行剖面获取方法 Download PDF

Info

Publication number
CN1667588A
CN1667588A CN 200510011550 CN200510011550A CN1667588A CN 1667588 A CN1667588 A CN 1667588A CN 200510011550 CN200510011550 CN 200510011550 CN 200510011550 A CN200510011550 A CN 200510011550A CN 1667588 A CN1667588 A CN 1667588A
Authority
CN
China
Prior art keywords
software
operational profile
prior distribution
test
distribution
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.)
Pending
Application number
CN 200510011550
Other languages
English (en)
Inventor
白成刚
李宗民
刘玉杰
胡德斌
蔡开元
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beihang University
Beijing University of Aeronautics and Astronautics
Original Assignee
Beihang University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beihang University filed Critical Beihang University
Priority to CN 200510011550 priority Critical patent/CN1667588A/zh
Publication of CN1667588A publication Critical patent/CN1667588A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

一种基于贝叶斯方法的软件运行剖面获取方法,它是将贝叶斯方法应用到软件运行剖面获取中,具体包括下列步骤:(1)确定软件运行剖面的先验分布;(2)软件运行和测试;(3)由先验分布,得到后验分布;(4)计算后验分布的期望,得到软件运行剖面的估计值;(5)如果满足某停止准则就转入步骤(6),如不是则以得到的后验分布为下一轮试验的先验分布,转步骤(2);(6)输出结果。本发明根据充分利用了专家经验等先验信息,提高软件获取软件运行剖面的精度和稳定性。

Description

基于贝叶斯方法的软件运行剖面获取方法
所属技术领域
本发明涉及一种软件运行剖面获取技术,特别是一种基于贝叶斯方法的软件运行剖面获取技术。
背景技术
随着软件功能的增强,软件规模的增大,软件的质量越来越重要,软件可靠性评估就是衡量软件质量的有力手段。软件可靠性是软件无失效运行的定量的度量。在对软件进行可靠性分析时,软件运行剖面直接影响了软件的可靠性。软件运行剖面(software operational profile)是指软件的数据环境,指软件数据输入域以及各种输入数据的组合使用的机会(概率)。
把软件看作是输入数据域到输出数据的映射,由于软件输入数据很复杂,所以把软件的输入数据域划分成等价的几类输入,这些输入等价类在软件运行过程中被使用的概率就可以近似看成软件运行剖面。
软件运行剖面对于软件开发的整个过程都具有指导意义。在设计时,基于运行剖面的分析、设计使得软件开发目标更明确;在开发完成后,软件运行剖面可用于指导软件测试过程,集中精力对使用概率较高的等价类进行测试。同时,也可以使开发人员之间交流,开发人员与用户交流,对客户培训更有的放矢。同样,软件运行剖面的考虑也可以提高管理人员的管理效率。
对于软件运行剖面的获取,已经出现多种方法,其中有的假设软件运行剖面为静态的、时齐次的概率分布模型,也有的假设软件运行剖面为离散的马尔科夫链的模型,还有的将软件运行剖面看成是连续时间的马尔科夫链的模型,以及将软件运行剖面看作是泊松过程的模型等。其中,目前使用较多的是静态分布模型。但在测试用例样本较少时,使用静态模型得出的结果不能正确反映运行剖面。
发明内容
本发明技术解决问题是:克服现有技术的不足,提供一种基于贝叶斯方法的软件运行剖面获取方法,该方法不仅可以提高软件运行剖面获取的精度,而且还可以提高软件运行剖面获取的稳定性。
本发明的技术解决方案是:基于贝叶斯方法的软件运行剖面获取方法,其特点在于:按下列步骤获取软件运行剖面:
(1)确定软件运行剖面的先验分布;先验分布的获取主要有三种方法:一是根据专家经验来确定各节点先验分布,二是根据历史数据估计各节点先验分布,三是当既无专家经验也无历史数据时,可以采用无信息的先验分布,一般采用均匀分布做先验分布;
(2)软件运行和软件测试,软件测试采用分区测试方法;
(3)由先验分布和软件测试的当前数据,利用贝叶斯公式得到后验分布;
(4)由步骤(3)中后验分布计算软件运行剖面的期望,得到软件运行剖面的估计值;
(5)如果满足某停止准则就转至步骤(6),如不是则以得到的后验分布为下一轮试验的先验分布,转至步骤(2)。停止准则一般有两种:一种是根据连续若干次的估计稳定在预先给定的变化范围内,另一种达到预先规定的测试步数;
(6)输出结果。
本发明的原理:假设D表示软件的输入域,Ci是软件的第i个测试等价类。
D = Y i = 1 m C i 其中CiICj=φ,i≠j
这里输入域包含了m个不相交的测试等价类。
假设
q={q1,q2,Λ,qm}  并且 Σ i = 1 m q i = 1
其中qi表示一个输入选自第i个测试等价类的概率。
此时,软件运行剖面就定义为:
        SOP={D,q}={<Ci,qi>,i=1,2,Λ,m}
将软件输入域D,划分成测试等价类Ci,i=1,2,Λ,m,用qi来表示一个输入选自第i个测试等价类的概率。则软件运行剖面为(q1,q2,Λ,qm)。可以把软件运行剖面看成是随机向量Q。
首先是选择先验分布,假设Q的先验分布为π(θ),其中θ是相关的参数;然后根据当前选择的测试输入方案Zi=(n1,n2,Λ,nm),其中ni表示在测试时取自第i个测试等价类的测试用例数。修改Q的先验分布,得出后验分布。
由于Dirichlet分布是公认的拟合度较好的多元分布。假设Q的先验分布为Dirichlet分布。Dirichlet分布定义如下:
Q={q1,q2,Λ,qm}是一个随机向量,如果它满足:
(1)对于任意的1≤i≤m,有0≤qi≤1,且 &Sigma; i = 1 m q i = 1 ;
(2)(q1,q2,Λ,qm)的分布密度为:
Figure A20051001155000052
其中 &alpha; 0 = &Sigma; i = 1 m &alpha; i , 对任意的αi,αi>0。
记成(q1,q2,Λ,qm-1)~Dir(q|α1,Λ,αm-1;αm)或(q1,q2,Λ,qm)~Dir(q|α1,α2,Λ,αm)。
记Q~Dir(Q|α),其中参数向量α=(α1,α2,Λ,αm)。
使用测试用例进行软件测试,各测试用例的概率分布服从多项式分布,假设有m个测试等价类,其概率分布为Q=(q1,q2,Λ,qm),若进行测试时,可能有N次测试用例选择,其中落入第1个等价类的有n1次,落入第2个等价类的有n2次,...,落入第m个等价类的有nm次,分布函数为:
f ( n 1 , n 2 , &Lambda; , n m ) = ( N ! n 1 ! &times; n 2 ! &times; &Lambda; &times; n m ! ) &times; q 1 n 1 &times; q 2 n 2 &times; &Lambda; &times; q m n m
其中 &Sigma; i = 1 m n i = N
选择Dirichlet分布作为Q的先验分布,那麽Q的后验分布为:
h ( q | n 1 , n 2 , &Lambda; , n m ) &Proportional; &Pi; i = 1 m q i ( &alpha; 1 - 1 ) &times; q 1 n 1 &times; q 2 n 2 &times; &Lambda; &times; q m n m
&Proportional; q 1 ( &alpha; 1 - 1 + n 1 ) &times; q 2 ( &alpha; 2 - 1 + n 2 ) &times; &Lambda; &times; q m ( &alpha; m - 1 + n m )
Π i = 1 m q i ( α i - 1 + n i )
确定出先验分布一般采用下面三种方法:①咨询领域专家来确定如何选取先验分布;②通过历史数据估计先验分布中参数;③没有先验信息时,选取无信息先验分布。
由于Dirichlet分布与多项式分布是共轭分布,Q的后验分布也是Dirichlet分布。随着测试(使用)过程进行,特定的输入测试用例被选择使用。当一组测试用例被选择使用后,可以得到其分布。假设有m个测试等价类,其概率分布为Q=(q1,q2,Λ,qm),进行测试时,有N次测试用例选择,其中属于第1个等价类的有n1个,属于第2个等价类的有n2个,...,属于第m个等价类的有nm个。
后验分布的参数使用下面公式调整:
αi (j)=αi (j-1)+ni,i=1,2,Λ,m,j=1,2,Λ,k
其中k是测试用例的组数。
最后,采用随机变量qi的期望E(qi)来对其进行估计,得到运行剖面。
本发明采用贝叶斯方法建模软件运行剖面,将先验信息和试验数据有机的结合起来利用贝叶斯方法获取软件运行剖面,可以随着软件运行利用贝叶斯理论在线获取软件运行剖面。
本发明与现有技术相比的优点:
(1)由于考虑了先验信息,提高运行剖面获取的精度;
(2)由于采用了贝叶斯技术,提高了稳定性。贝叶斯方法较之传统的频率估计要稳定,特别是在小样本的情况下。
附图说明
图1为本发明的方法步骤示意图。
实施例1
以Space软件为例。Space软件是一个公认的软件测试对象,它是为欧洲航天局开发的一个矩阵描述语言(ADL)解释器,从文件中读取ADL描述语句并检查文件内容是否合乎语法规则。如果ADL文件解释正确,Space将输出一个矩阵数据文件,包含矩阵元素信息、位置、激励,否则将输出错误提示。Space软件包含9564行C语言代码。
试验设软件有3个测试等价类,测试用的实际运行剖面为(q1,q2,q3)=(0.3243675,0.2981678,0.3774648)。
(1)确定软件运行剖面的先验分布。由于Dirichlet分布是公认的拟合度较好的多元分布。假设Q的先验分布为Dirichlet分布。通过分析,本实施例选取α1=α2=α3=40。
(2)软件运行和软件测试,本实施例采用分区随机测试方法,即按运行剖面为(q1,q2,q3)=(0.3243675,0.2981678,0.3774648)产生测试用例。
(3)由先验分布和软件测试的当前数据,利用贝叶斯公式得到后验分布。
(4)由上述步骤(3)中后验分布计算软件运行剖面的期望,得到软件运行剖面的估计值。
(5)如果测试步数达到50则转至步骤(6),如不是则以得到的后验分布为下一轮试验的先验分布,转至步骤(2)。
(6)输出结果。
50步后Bayes估计和频率估计的运行剖面分别是(0.370926,0.313036,0.316038)和(0.372966,0.311935,0.315099),它们和实际运行剖面的误差 分别是0.125868和0.174956。因此可以看出使用Bayes方法的产生的数据有机的结合了原有的对运行剖面的认识经验,和测试用例的信息,比传统的频率估计更好的逼近了运行剖面值。
实施例2
以一个度量软件SESS(Software Environment for Software ScienceData Collection)为例。该软件使用VC6编写,能够读取C语言源程序,统计源代码行数、操作符、操作数的种类和个数并显示,是进行部分重复性理论研究的工具。共有源代码17807行,源文件106个。
试验设软件有4个测试等价类,测试用的实际运行剖面为(q1,q2,q3,q4)=(0.2570,0.1740,0.3580,0.2110)。
(1)确定软件运行剖面的先验分布。由于Dirichlet分布是公认的拟合度较好的多元分布。假设Q的先验分布为Dirichlet分布。通过分析,本实施例选取α1=α2=α3=α3=α4=50。
(2)软件运行和软件测试,本实施例采用分区随机测试方法,即按运行剖面为(q1,q2,q3,q4)=(0.2570,0.1740,0.3580,0.2110)产生测试用例。
(3)由先验分布和软件测试的当前数据,利用贝叶斯公式得到后验分布。
(4)由步骤(3)中后验分布计算软件运行剖面的期望,得到软件运行剖面的估计值。
(5)如果测试步数达到50转至步骤(6),如不是则以得到的后验分布为下一轮试验的先验分布,转至步骤(2)。
(6)输出结果。
50步后Bayes估计和频率估计的运行剖面分别是(0.2731,0.1838,0.3128,0.2303)和(0.2904,0.2147,0.2863,0.2086),它们和实际运行剖面的误差 分别是0.0028和0.0079。
因此实施例也可以看出使用Bayes方法比传统的频率估计更好的逼近了运行剖面值。

Claims (4)

1、基于贝叶斯方法的软件运行剖面获取方法,其特征在于:将贝叶斯方法应用到软件运行剖面获取中,具体包括下列步骤:
(1)确定软件运行剖面的先验分布;
(2)软件运行和软件测试;
(3)由先验分布和软件测试的当前数据,利用贝叶斯公式得到后验分布;
(4)由步骤(3)中后验分布计算软件运行剖面的期望,得到软件运行剖面的估计值;
(5)如果满足某停止准则就转至步骤(6),如不是则以得到的后验分布为下一轮试验的先验分布,转至步骤(2);
(6)输出结果。
2、根据权利要求1所述的基于贝叶斯方法的软件运行剖面获取方法,其特征在于:所述的先验分布的获取主要有三种方法:一是根据专家经验来确定各节点先验分布,二是根据历史数据估计各节点先验分布,三是当既无专家经验也无历史数据时,可以采用无信息的先验分布,一般采用均匀分布做先验分布。
3、根据权利要求1所述的基于贝叶斯方法的软件运行剖面获取方法,其特征在于:所述的停止准则有两种:一种是根据连续若干次的估计稳定在预先给定的变化范围内,另一种达到预先规定的测试步数。
4、根据权利要求1所述的基于贝叶斯方法的软件运行剖面获取方法,其特征在于:所述的软件测试方法为分区测试方法。
CN 200510011550 2005-04-11 2005-04-11 基于贝叶斯方法的软件运行剖面获取方法 Pending CN1667588A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200510011550 CN1667588A (zh) 2005-04-11 2005-04-11 基于贝叶斯方法的软件运行剖面获取方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200510011550 CN1667588A (zh) 2005-04-11 2005-04-11 基于贝叶斯方法的软件运行剖面获取方法

Publications (1)

Publication Number Publication Date
CN1667588A true CN1667588A (zh) 2005-09-14

Family

ID=35038696

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200510011550 Pending CN1667588A (zh) 2005-04-11 2005-04-11 基于贝叶斯方法的软件运行剖面获取方法

Country Status (1)

Country Link
CN (1) CN1667588A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101894068A (zh) * 2010-05-31 2010-11-24 北京航空航天大学 一种嵌入式软件可靠性加速测试方法
CN102063375A (zh) * 2011-01-13 2011-05-18 北京航空航天大学 一种基于混合测试的软件可靠性评估方法及其装置
CN102662848A (zh) * 2012-01-09 2012-09-12 北京航空航天大学 一种贝叶斯软件可靠性验证测试方法及其计算机辅助工具
CN114971400A (zh) * 2022-06-24 2022-08-30 东南大学溧阳研究院 一种基于Dirichlet分布-多项分布共轭先验的用户侧储能聚合方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101894068A (zh) * 2010-05-31 2010-11-24 北京航空航天大学 一种嵌入式软件可靠性加速测试方法
CN101894068B (zh) * 2010-05-31 2013-01-30 北京航空航天大学 一种嵌入式软件可靠性加速测试方法
CN102063375A (zh) * 2011-01-13 2011-05-18 北京航空航天大学 一种基于混合测试的软件可靠性评估方法及其装置
CN102063375B (zh) * 2011-01-13 2013-01-30 北京航空航天大学 一种基于混合测试的软件可靠性评估方法及其装置
CN102662848A (zh) * 2012-01-09 2012-09-12 北京航空航天大学 一种贝叶斯软件可靠性验证测试方法及其计算机辅助工具
CN102662848B (zh) * 2012-01-09 2014-05-14 北京航空航天大学 一种贝叶斯软件可靠性验证测试方法及其计算机辅助工具
CN114971400A (zh) * 2022-06-24 2022-08-30 东南大学溧阳研究院 一种基于Dirichlet分布-多项分布共轭先验的用户侧储能聚合方法

Similar Documents

Publication Publication Date Title
Zhou et al. Dynamic strategy based parallel ant colony optimization on GPUs for TSPs
Wyatt et al. Prionn: Predicting runtime and io using neural networks
Nguyen et al. MRL and SuperFine+ MRL: new supertree methods
Ïpek et al. Efficiently exploring architectural design spaces via predictive modeling
McMinn et al. Input domain reduction through irrelevant variable removal and its effect on local, global, and hybrid search-based structural test data generation
Mclendon Iii et al. Finding strongly connected components in distributed graphs
Sundar et al. Hyksort: a new variant of hypercube quicksort on distributed memory architectures
Kotipalli et al. AMPT-GA: automatic mixed precision floating point tuning for GPU applications
Tan et al. Design and implementation of adaptive spmv library for multicore and many-core architecture
Ozfatura et al. Straggler-aware distributed learning: Communication–computation latency trade-off
Pattengale et al. Uncovering hidden phylogenetic consensus in large data sets
Kulkarni et al. Practical exhaustive optimization phase order exploration and evaluation
CN101162437A (zh) 基于关系模型分析系统性能采样数据的方法、设备和系统
CN106528428B (zh) 一种软件易变性预测模型的构建方法
CN1766848A (zh) 基于模拟器的嵌入式软件运行时能耗估算方法
CN110399182B (zh) 一种cuda线程放置优化方法
Ahn et al. Adaptive compressive tomography: A numerical study
Barinka Fast computation tools for adaptive wavelet schemes
CN1667588A (zh) 基于贝叶斯方法的软件运行剖面获取方法
CN112527300A (zh) 面向多目标的细粒度编译自调优方法
Sun et al. cstuner: Scalable auto-tuning framework for complex stencil computation on gpus
Malakar et al. Performance evaluation and optimization of nested high resolution weather simulations
CN116775301A (zh) 基于频域多分辨率卷积神经网络的服务器负载预测方法
Sponner et al. AI-driven performance modeling for AI inference workloads
Ben-Ari et al. Improving the efficiency of de Bruijn graph construction using compact universal hitting sets

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication