一种动态随机测试方法

文档序号:6575222阅读:232来源:国知局

专利名称::一种动态随机测试方法
技术领域
:本发明涉及一种缺陷测试方法,特别是涉及一种动态随机测试方法。属于可靠性测试
技术领域
。(二)
背景技术
:随机测试是在一个含有大量测试用例的测试用例集合中根据一个均匀或者非均匀的概率分布选择测试用例,进行测试,直到发现并剔除所有的缺陷。分类随机测试则是在任意一步测试中,从一个已知含有附个测试用例等价类的集合中根据某一种概率分布选择测试用例,这样把测试进行下去,直到剔除所有的缺陷。例如测试用例集合共含有附个等价类(q,C2,…,Cj,其中第/个等价类含有《.个测试用例,分类随机测试首先从m个等价类中依据某一概率分布随机选择一个等价类,如依据均匀分布则每个等价类被选中的概率是J^,其次从被选中的等价类中,根据均匀分布随机选择一个测试用例进行测试,假设第类被选中,则第/类中每个测试用例被选中的概率是X。分类随机测试中选择测试用例等价类的随机概率分布被称为测试剖面,{^,/2,...,pra},其中A在现有测试技术中,随机测试(包括分类随机测试)仍然是主流的测试手段,在可靠性测试的各个阶段被广泛使用,但是由于其自身原理的限制,随机测试技术存在以下两个主要缺点(1)没有引入测试历史信息,大量的测试信息(比如,测试用例的有表示第/个等价类被选中的概率,且X!a二i。效性)没有用于指导下一步的测试行为;(2)测试策略不会随着测试的进行而自动调整。由此,产生的结果是(1)随机测试技术缺乏对测试过程的改进,不能得到最有效的测试过程;(2)随着测试的进行,测试对象发生变化时,随机测试技术不能及时进行调整来适应测试的需要。而动态随机测试方法则是通过利用测试历史的反馈信息,对测试剖面在线地进行调整,从而优化测试用例的选择过程,更快地发现和剔除缺陷,提高测试的整体效率,提高检测性能的稳定性。
发明内容1、目的本发明的目的是为了提供一种动态随机测试方法,该方法了克服现有技术的不足,它不仅可以提高缺陷检测效率,还可以提高缺陷检测性能的稳定性,而且原理简单、应用方便。2、技术方案本发明的原理是把测试用例或测试对象输入域划分为多个等价类,在测试过程中不断把历史测试信息反馈给测试过程,使得随着测试过程的进行可以对测试剖面进行在线的调整,并根据测试剖面确定下一步选择的测试用例等价类,在该等价类中选择一个测试用例作为被测对象的输入。本发明的技术解决方案是本发明一种动态随机测试方法,该方法具体步骤如下步骤一将测试用例或测试对象输入域,根据某种分类原则,如按功能模块、覆盖率和创建时间等,划分为w个等价类(C"C2,…,Cj;步骤二确定一个初始的测试剖面(/p/2,…,/J,根据该剖面随机地选择一个测试用例集合c,.,从G中随机选择一个测试用例,作为被测对象的输入,执行测试并检查被测对象的输出结果是否符合设计要求;步骤三根据测试的结果,即有无发现缺陷,对测试剖面进行调整A.若发现缺陷,则令ifA》m—l0if/y.<附一l附一1for/#/(1)同时剔除发现的缺陷;其中,s是测试剖面动态调整的参数;w是测试用例等价类个数;/7是除第/类外,其余各等价类的被选择概率,a是上一步中被选择的等价类c,.在当前测试剖面中的被选择概率;B.若没有发现缺陷,则令0if>,"巧+J附-1am—1ifa<s(2)for)#/其中,s是测试剖面动态调整的参数;m是测试用例等价类个数;p,是除第/类外,其余各等价类的被选择概率,a是上一步中被选择的等价类c,.在当前测试剖面中的净皮选择扭克率;步骤四根据调整后的测试剖面选择一个测试用例集合,从中随机选择测试用例,并进4于测试;步骤五再次根据测试的结果,即有无发现缺陷,对测试剖面进行调整,6调整的MJ3'j同步骤三;步骤六依此类推,直到发现和剔除全部缺陷或者满足其他测试终止条3、优点及功效本发明与现有技术相比的优点(1)提高缺陷检测效率;(2)提高检测性能的稳定性;(3)相比其他测试技术,如反随机测试技术和自适应测试技术,计算量小,原理简单,应用方便。(四)图1本发明动态随才几测试方法流程方框示意图图中符号说明如下其中,s是测试剖面动态调整的参数;附是测试用例等价类个数;P/是除第/类外,其余各等价类的被选择概率,A是上一步中被选择的等价类C,在当前测试剖面中的被选择概率;(五)具体实施例方式如图1所示,在测试过程中,以软件测试为例,包括软件可靠性增长测试,软件变异测试和软件可靠性评估过程,基于分类随机测试的基本方法,将测试用例集合划分成w个等价类,即(CpC2,…,Cj,其中每个等价类被选择了测试用例等价类c;后,假设c,.中有&个测试用例,则随机地从c,.中选择一个测试用例进行测试,即每个测试用例被选中的概率是力s是测试剖面动态调整的参数,需要在测试进行前给定,该参数的选取选择的概率由测试剖面(A,P2,…,/7」决定,且X!/7,.=1。会影响到测试的效率和测试性能的稳定性。除了选择固定的S值,还可以选择相对值,Wf=/,.xe%,其中;,是公式(1)和公式(2)中的参数,即上等价类C;的被选择概率。具体实施例子以Space软件为例。Space软件是一个公认的典型软件测试对象,它是为欧洲航天局开发的一个矩阵描述语言(ADL)解释器,从文件中读取ADL描述语句并检查文件内容是否合乎语法规则。如果ADL文件解释正确,Space将输出一个矩阵数据文件,包含矩阵元素信息、位置、激励,否则将输出错误提示。Space软件包含9564行C语言代码,已知36个缺陷,每个缺陷有很多种表现形式。典型的比如,输入合法的ADL文件没有得到正确的结果或输入非法的ADL文件没有得到错误提示。13498个测试用例,一个测试用例为一个ADL文件。本发明的实现平台是基于x86架构的计算机硬件环境,也可以推广到其他硬件体系架构,软件环境主要是Windows平台下的软件测试,也可以推广到Linux,Unix等其他平台。此例中测试的软件环境为WindowsXPSP3,动态随机测试方法由.NETFramework和C弁语言实现,被测对象SPACE由C语言实现,用于测试的计算机硬件配置为IntelCore2Duo2.4GCPU,4G内存,300G硬盘。本发明一种动态随机测试方法,该方法具体实施例步骤如下步骤一确定动态随机测试方法的参数f=0.05,把测试用例或软件输入域划分为4个等价类;步骤二确定初始测试剖面{a=0.25,p2二0.25,/3=0.25,/4=0.25},根据测试剖面{/^,/2,;3,/4}选择一个测试用例等价类C,,从C,.中随机选地择一个测试用例,即ADL文件,将该ADL文件输入SPACE软件进行测试;步骤三观察测试的结果,即有无发现缺陷,根据该结果对测试剖面进8行如下调整假设发现缺陷,则令'0.05巧03if巧if^<0.05丁0.05foi7#/■3(1)乂>'假设没有发现缺陷,则令;,一0.05ifp,々0.050if>,.<0.050.0533if/,.20.05ifp,.<0.05(2),如果发现了缺陷,则剔除该缺陷;步骤四根据调整后的测试剖面选择一个测试用例等价类C,,从C,.中随机选地择一个测试用例,即ADL文件,将该ADL文件输入SPACE软件进4亍测试;步骤五根据测试的结果,对测试剖面进行如步骤五所述的调整;如果没有发现缺陷,前往步骤四;如果发现缺陷,剔除缺陷;步骤六如果检测到指定的缺陷个数(在本实验中为36个)或测试步数等于于指定最大步数,则测试结束,否则前往步骤四。其中,s^0.05是测试剖面动态调整的参数;附=4是测试用例等价类个数;巧是除第/类外,其余各等价类的被选择概率,A是上一步中被选择的等价类C;在当前测试剖面中的被选择概率;使用动态随机测试方法进行缺陷检测实验,对比随机测试,动态随机测试无论是检测效率(步数均值)还是检测性能的稳定性(方差)都明显优于后者,详见下表:<table>tableseeoriginaldocumentpage10</column></row><table>其中F表示50次重复实验测试实验中检测并剔除已知36个缺陷所需的平均测试用例数。"表示50次重复实验测试实验中检测并剔除已知36个缺陷所需的测试用例数的方差。该技术不仅可应用于软件的测试过程,也能应用于其它领域的测试过程以提高测试效率。权利要求1、一种动态随机测试方法,其特征在于该方法具体步骤如下步骤一将测试用例根据分类原则,按功能模块、覆盖率和创建时间,划分为m个等价类即{C1,C2,...,Cm},其中,{C1,C2,...,Cm}分别表示m个测试用例等价类,m表示测试用例等价类个数;步骤二确定一个初始的测试剖面{p1,p2,...,pm},根据该剖面随机地选择一个测试用例集合Ci,从Ci中随机选择一个测试用例,作为被测对象的输入,执行测试并检查被测对象的输出结果是否符合设计要求;其中,{p1,p2,...,pm}表示初始测试剖面,Ci表示被选中的测试用例集合;步骤三根据测试的结果,即有无发现缺陷,对测试剖面进行调整A.若发现缺陷,则令<mathsid="math0001"num="0001"><math><![CDATA[<mrow><msub><mi>p</mi><mi>j</mi></msub><mo>=</mo><mfencedopen='{'close=''><mtable><mtr><mtd><msub><mi>p</mi><mi>j</mi></msub><mo>-</mo><mfrac><mi>&epsiv;</mi><mrow><mi>m</mi><mo>-</mo><mn>1</mn></mrow></mfrac></mtd><mtd><mi>if</mi></mtd><mtd><msub><mi>p</mi><mi>j</mi></msub><mo>&GreaterEqual;</mo><mfrac><mi>&epsiv;</mi><mrow><mi>m</mi><mo>-</mo><mn>1</mn></mrow></mfrac></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mi>if</mi></mtd><mtd><msub><mi>p</mi><mi>j</mi></msub><mo>&lt;</mo><mfrac><mi>&epsiv;</mi><mrow><mi>m</mi><mo>-</mo><mn>1</mn></mrow></mfrac></mtd></mtr></mtable></mfenced><mi>forj</mi><mo>&NotEqual;</mo><mi>i</mi><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow>]]></math></maths><mathsid="math0002"num="0002"><math><![CDATA[<mrow><msub><mi>p</mi><mi>i</mi></msub><mo>=</mo><mn>1</mn><mo>-</mo><munder><mi>&Sigma;</mi><mrow><mi>j</mi><mo>&NotEqual;</mo><mi>i</mi></mrow></munder><msub><mi>p</mi><mi>j</mi></msub></mrow>]]></math></maths>同时剔除发现的缺陷;其中,ε是测试剖面动态调整的参数;m是测试用例等价类个数;pj是除第i类外,其余各等价类的被选择概率,pi是上一步中被选择的等价类Ci在当前测试剖面中的被选择概率;B.若没有发现缺陷,则令<mathsid="math0003"num="0003"><math><![CDATA[<mrow><msub><mi>p</mi><mi>i</mi></msub><mo>=</mo><mfencedopen='{'close=''><mtable><mtr><mtd><msub><mi>p</mi><mi>i</mi></msub><mo>-</mo><mi>&epsiv;</mi></mtd><mtd><mi>if</mi></mtd><mtd><msub><mi>p</mi><mi>i</mi></msub><mo>&GreaterEqual;</mo><mi>&epsiv;</mi></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mi>if</mi></mtd><mtd><msub><mi>p</mi><mi>i</mi></msub><mo>&lt;</mo><mi>&epsiv;</mi></mtd></mtr></mtable></mfenced></mrow>]]></math></maths><mathsid="math0004"num="0004"><math><![CDATA[<mrow><msub><mi>p</mi><mi>j</mi></msub><mo>=</mo><mfencedopen='{'close=''><mtable><mtr><mtd><msub><mi>p</mi><mi>j</mi></msub><mo>+</mo><mfrac><mi>&epsiv;</mi><mrow><mi>m</mi><mo>-</mo><mn>1</mn></mrow></mfrac></mtd><mtd><mi>if</mi></mtd><mtd><msub><mi>p</mi><mi>i</mi></msub><mo>&GreaterEqual;</mo><mi>&epsiv;</mi></mtd></mtr><mtr><mtd><msub><mi>p</mi><mi>j</mi></msub><mo>+</mo><mfrac><msub><mi>P</mi><mi>i</mi></msub><mrow><mi>m</mi><mo>-</mo><mn>1</mn></mrow></mfrac></mtd><mtd><mi>if</mi></mtd><mtd><msub><mi>p</mi><mi>i</mi></msub><mo>&lt;</mo><mi>&epsiv;</mi></mtd></mtr></mtable></mfenced><mi>forj</mi><mo>&NotEqual;</mo><mi>i</mi><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow>]]></math></maths>其中,ε是测试剖面动态调整的参数;m是测试用例等价类个数;pj是除第i类外,其余各等价类的被选择概率,pi是上一步中被选择的等价类Ci在当前测试剖面中的被选择概率;步骤四根据调整后的测试剖面选择一个测试用例集合,从中随机选择测试用例,并进行测试;步骤五再次根据测试的结果,即有无发现缺陷,对测试剖面进行调整,调整的规则同步骤三;步骤六依此类推,直到发现和剔除全部缺陷及满足其他测试终止条件。全文摘要一种动态随机测试方法,它包括下列步骤(1)将测试用例或测试对象输入域划分为若干个等价类{C<sub>1</sub>,C<sub>2</sub>,…,C<sub>m</sub>};(2)确定一个初始的测试剖面{p<sub>1</sub>,p<sub>2</sub>,…,p<sub>m</sub>},根据该剖面随机选择一个测试用例集合C<sub>i</sub>,从C<sub>i</sub>中随机选择一个测试用例并进行测试;(3)根据测试的结果,对测试剖面进行调整若发现缺陷,则令p<sub>i</sub>=p<sub>i</sub>+ε,同时剔除发现的缺陷;若未发现缺陷,则令p<sub>i</sub>=p<sub>i</sub>-ε,ε是测试前给定的参数,同时对测试剖面其他元素进行相应修正使得p<sub>i</sub>≥0,i=1,2,…,m且∑p<sub>i</sub>=1;(4)根据调整后的测试剖面选择一个测试用例集合,从中随机选择测试用例进行测试;(5)再次根据测试的结果,对测试剖面进行调整,调整的规则同步骤(3);(6)依此类推,直到发现和剔除全部缺陷或满足其他测试终止条件。本发明原理简单、应用方便。文档编号G06F11/36GK101620566SQ20091008962公开日2010年1月6日申请日期2009年7月23日优先权日2009年7月23日发明者锋叶,江昌海,海胡,蔡开元,征郑申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1