首页> 中国专利> 一种基于噪声共振的软件加速测试技术的构建方法

一种基于噪声共振的软件加速测试技术的构建方法

摘要

本发明提供一种基于噪声共振的软件加速测试技术的构建方法,其步骤如下:1、收集待测软件源代码;2、基于进化式智能方法自动生成软件测试用例,直至搜索到与故障现象一致或相近的信息;3、开启“饱和噪声模式”,同时以最大强度施加所有可控噪声源;4、同时以最小强度施加所有可控噪声源;5、开启“策略噪声干扰模式”,产生噪声共振;6、在产生噪声共振的噪声强度上持续施加该噪声;7、生成有效的测试序列;通过上述步骤,本发明可以完成对基于噪声共振的软件加速测试技术的构建,帮助软件测试人员在测试中加速软件故障的复现,进而对软件进行更新,提高其使用可靠性,具有很高的实用价值。

著录项

  • 公开/公告号CN108519944A

    专利类型发明专利

  • 公开/公告日2018-09-11

    原文格式PDF

  • 申请/专利权人 北京航空航天大学;

    申请/专利号CN201810186487.5

  • 发明设计人 杨顺昆;苟晓冬;郑征;黄婷婷;

    申请日2018-03-07

  • 分类号

  • 代理机构北京慧泉知识产权代理有限公司;

  • 代理人王顺荣

  • 地址 100191 北京市海淀区学院路37号

  • 入库时间 2023-06-19 06:28:31

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-04-05

    授权

    授权

  • 2018-10-09

    实质审查的生效 IPC(主分类):G06F11/36 申请日:20180307

    实质审查的生效

  • 2018-09-11

    公开

    公开

说明书

技术领域

本发明提供一种基于噪声共振的软件加速测试技术的构建方法,它涉及一种基于噪声共振的软件加速测试技术的实现,属于软件可信性、软件测试领域。

背景技术

随着计算机技术的飞速发展,软件的功能越来越强大,软件的规模和复杂度也急剧增大。为减小软件故障造成的损失,在软件正式发布之前进行软件测试,发现软件故障并排除故障以确保软件的质量和可靠性变得异常重要。与此同时,由于软件规模的急剧增大,传统的软件测试方法由于费时费力,测试的成本居高不下,实现测试自动化的需求也变得日益迫切。当前已经比较成熟且较为流行的自动化测试方法之一就是基于进化式方法的测试用例自动生成。

目前广泛应用的进化式方法大致思路都是将测试用例集作为种群,以测试用例的覆盖率作为覆盖率函数,通过各自的进化机制实现测试用例寻优。同时,也有各种的优化方法被提出,用以改进进化式方法几乎不可避免的容易陷入局部最优的缺点,持续提升测试效益。实践表明,进化式的测试用例自动生成方法可以在降低软件测试的成本的同时,实现更高的测试覆盖率。

随机共振理论可以被描述为当保持非线性系统的输入信号强度不变,而增加输入噪声强度时,当噪声强度处于某个特定的水平时,在非线性系统的输出端,系统的输出信噪比会增加,出现力学中人们熟知的单峰(或多峰)共振曲线。近年来,以绝热近似、线性响应口和本征微扰展开作为主要理论,随机共振的研究取得了很大的进展,在工程领域得到了广泛的应用。

由于进化式的软件测试通常过度追求程序空间覆盖的提升,而强调变异和交叉等突出多样性和跳出方法局部收敛的特性,因此在搜索过程中,即使暂时性地搜索到了与软件故障现象一致或相似的信息,也极有可能在下一轮迭代进化测试过程中生成不相关或与故障现象距离较远的测试序列,从而导致在局部空间有效故障样本量过小的情况。因此,当这种局部最优或近似解出现的时候,应该暂停正常的进化变异操作,而是嵌套采用一种新的策略,目的是充分利用这十分有益、而又难得出现的局部稀有事件(尤其是当故障现象很接近的时候),生成更多与故障现象接近的测试序列,提高软件故障的复现概率。针对这一状况,我们将提出一种基于噪声共振的软件加速测试技术的构建方法,在这项技术中,我们借鉴随机共振理论,把被测试的软件看成是一个动态的、非线性的混沌信息系统,在程序输入空间端,施加各种类型的噪声,利用程序空间中自身可能存在的相关耦合和干扰产生的内噪声,进行噪声的耦合和传递,从而在程序空间、输出空间进行放大,在输出端尽可能触发噪声共振,产生更多的和故障相关的测试用例,实现软件故障现象的快速复现,或增加复现的概率。使用这一技术可以充分利用噪声,基于噪声共振理论实现软件的加速测试。

该软件测试技术基于噪声共振理论进行构建,形成基于噪声共振的软件加速测试技术,在提高软件测试效率的同时,达到提高软件可信性、安全性、可用性的目的。

发明内容

(一)本发明目的:现有软件测试领域中的测试用例自动生成技术多是基于进化式智能方法,将测试用例集作为种群,以测试用例的覆盖率作为覆盖率函数,通过各自的进化机制实现测试用例寻优。同时,使用各种各样的理论方法改善进化式方法几乎不可避免的容易陷入局部最优的缺点,取得了良好的效果。但是也正是由于进化式的测试用例生成过度追求程序空间覆盖的提升,而强调变异和交叉以突出多样性和跳出方法局部收敛,因此在搜索过程中,即使暂时性地搜索到了与软件故障现象一致或相似的信息,也极有可能在未来的进化过程中生成不相关或与故障现象距离较远的测试序列,从而导致有效故障样本量过小的情况。因此本发明将结合随机共振理论,提供一种基于噪声共振的软件加速测试技术的构建方法。随机共振理论可描述一种现象:非线性系统中内噪声或外噪声的存在可以增加系统输出的响应,在化学、生物、物理、数学及信号处理等领域已得到广泛应用。本发明的核心思想是利用噪声共振理论,在进化式方法生成测试用例的过程中,当搜索到与故障现象一致或相似的信息时,暂时停止进化,适时加入噪声扰动环节,通过噪声调控,在程序输入空间、程序内部空间、程序输出空间及故障现象空间之间进行耦合、干扰、传递、放大和震荡,从而形成局部的噪声共振现象,加快随机故障现象复现。在这项技术中,首先开启饱和噪声模式,即同时以最大强度施加所有可控噪声源;然后同时以最小强度施加所有可控噪声源;若两者均不能产生噪声共振,则开启策略(时间约束或步长约束)随机噪声干扰模式。在干扰过程中,只要是程序非死机、崩溃状态,原则上保持在程序的连续操作中施加干扰,便于时间及空间累积效应的体现。该技术可以加速软件故障的复现或者增加复现的概率,实现软件的加速测试。

可以看出该技术的构建对现有的进化式测试用例生成技术和噪声共振理论进行了整合与创新,形成了基于噪声共振的软件加速测试技术。

(二)技术方案

本发明技术方案:基于噪声共振的软件加速测试技术的构建方法过程如下:

本发明所述方法中,引用NRSAT来表述基于噪声共振(即“Noise Resonance”)的软件加速测试(即“Software Accelerated Testing”)技术。

本发明提供一种基于噪声共振的软件加速测试技术的构建方法,其步骤如下:

步骤1、收集待测软件源代码;

步骤2、基于进化式智能方法自动生成软件测试用例,直至搜索到与故障现象一致或相近的信息;

步骤3、开启“饱和噪声模式”,同时以最大强度施加所有可控噪声源;

步骤4、同时以最小强度施加所有可控噪声源;

步骤5、开启“策略噪声干扰模式”,产生噪声共振;

步骤6、在产生噪声共振的噪声强度上持续施加该噪声;

步骤7、生成有效的测试序列。

其中,在步骤1中所述的“收集待测软件源代码”的做法如下:获取需要进行测试的软件的源程序文件。

其中,在步骤2中所述的“基于进化式智能方法自动生成软件测试用例,直至搜索到与故障现象一致或相近的信息”,其具体作法如下:

所述的“基于进化式智能方法自动生成软件测试用例”的做法如下:目前已有的进化式测试用例自动生成技术都是将测试用例集作为种群,单个测试用例即为种群的个体,以测试用例的某种覆盖率作为适应度函数,一般包含以下步骤:

1)种群初始化,通过随机生成等方式生成初始种群;

2)计算种群的适应度函数;

3)判断是否满足终止进化要求;

4)若满足,转到步骤6);

5)若不满足终止要求,则进行变异、交叉、选择等操作,种群进化形成新种群,并计算新种群的适应度函数,转到3);

6)程序终止,输出种群;

由于种群的进化是在父体的基础上变化的,进化到一定代数后,个体之间的差异性就会减小,从而导致陷入局部最优;因此,为了增大种群多样性,很多情况下会强调交叉和变异以跳出局部最优,但这也导致了即使在搜索过程中暂时性地搜索到了与故障现象一致或相似的信息,也极有可能在下一轮迭代进化测试过程中生成不相关或与故障现象距离较远的测试序列,从而导致在局部空间有效故障样本量过小的情况;

所述的“直至搜索到与故障现象一致或相近的信息”是指种群进化过程中,生成的某个测试用例或者某些测试用例可以激发软件故障;尤其是对于某些难以复现的随机故障的故障再现而言,能够触发和想要复现的故障现象一致或相近的故障的测试用例是非常稀少而又极具意义的;因而应该生成更多的和这些测试用例相似的测试用例以尽可能多的触发软件故障,加速故障再现。

其中,在步骤3中所述的“开启饱和噪声模式,同时以最大强度施加所有可控噪声源”,其做法如下:噪声共振只有在当噪声的强度处于某个“共振点”的时候才会被触发,这就要求噪声一定是可以人工控制的噪声,即噪声的强度、持续时间等可以根据需要随时做出调整;为了触发噪声共振,首先以饱和噪声模式进行噪声的施加,饱和噪声模式是指施加的所有可控噪声都处于最大强度Intensitymax,便于观察噪声带来的影响。

其中,在步骤4中所述的“同时以最小强度施加所有可控噪声源”的做法如下:饱和噪声模式一般不会正好就触发噪声的共振,在施加饱和噪声之后,即改为同时以最小的强度Intensitymin对软件系统施加所有的可控噪声。

其中,在步骤5中所述的“开启策略噪声干扰模式,产生噪声共振”的做法如下:同时以最小的强度对软件系统施加所有的可控噪声也无法保证在该噪声强度下就可以触发噪声共振,因而需要某种策略去寻找能够触发噪声共振的“共振点”噪声强度;“策略噪声干扰模式”主要包含“时间约束”和“步长约束”两种策略,可以单独进行,也可以两种策略一起使用;

“时间约束”策略是指逐步改变所有可控噪声的连续施加时间,可以以秒为单位,根据系统对噪声的敏感情况选定一个时间增量Δt,每次的噪声连续时间增加Δt,直至寻找到可以出发噪声共振的连续施加时间;

“步长约束”策略是指逐步改变所有可控噪声的强度Intensity,在系统受到的噪声干扰处于最低强度Intensitymin时,依据软件系统对噪声的敏感情况选定一个强度增量ΔIntensity,该增量的选定可以依据如下公式而定:

式中,n的大小根据软件系统对噪声的敏感程度而定,越敏感n的值越大,反之越小;

“策略噪声干扰模式”旨在触发噪声共振,“时间约束”和“步长约束”两种策略可以根据实际情况进行灵活使用。

其中,在步骤6中所述的“在产生噪声共振的噪声强度上持续施加该噪声”,其做法如下:通过“策略噪声干扰模式”得到可以触发噪声共振的噪声强度Intensityresonance后,只要是程序处于非死机、崩溃状态,原则上保持在程序的连续操作中施加噪声干扰,便于时间及空间累积效应的体现。

其中,在步骤7中所述的“生成有效的测试序列”,其做法如下:当软件系统处于噪声共振状态下时,生成更多与故障现象接近的测试序列,以提高软件故障复现的概率。

通过上述步骤,可以完成对基于噪声共振的软件加速测试技术的构建,当搜索到与故障现象一致或相似的信息时,暂停进化,适时加入噪声扰动环节,通过噪声调控,在程序输入空间、内部空间、输出空间及故障现象空间之间进行耦合、干扰、传递、放大和震荡,从而形成局部的噪声共振现象,加快软件故障现象的复现;本发明适用于解决实际软件测试中的软件故障复现问题,可以帮助软件测试人员加快复现软件故障,找出故障原因,进而对软件进行更新提高其使用可靠性,具有较高的实际应用价值。

(三)优点

本发明与现有技术相比的优点在于:现有的进化式测试在生成测试用例的时候过度追求程序空间覆盖的提升,而强调变异和交叉以突出多样性和跳出方法局部收敛,因而即使暂时性地搜索到了与软件故障现象一致或相似的信息,也极有可能在后续的进化过程中生成不相关或与故障现象距离较远的测试序列,从而导致有效故障样本量过小的情况。因此本发明将借鉴随机共振理论,在软件进化式的测试中加入噪声,触发噪声共振,生成更多的和故障现象相关的测试用例,加速故障复现。本发明对现有的随机共振理论和软件进化式测试方法进行了整合与创新,提供一种基于噪声共振的软件加速测试技术。

附图说明

图1为本发明所述方法的总体步骤流程图。

图2为基于进化式方法的测试用例自动生成流程图。

图中序号、符号、代号说明如下:

图1中的“步骤1~9”即技术方案中对应的步骤;

图1中的Intensitymax、Intensitymin,Intensityresonance即为最大可控噪声强度、最小噪声强度以及触发噪声共振的噪声强度;

图1中的Δt和ΔIntensity即为“时间约束”策略中的时间增量和“步长约束”中的强度增量;

具体实施方式

为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图进行详细描述。

本发明提供了一种基于噪声共振的软件加速测试技术的构建方法。利用该方法构建的技术可以在软件测试中加速软件故障的快速复现。在这项技术中,首先使用基于智能方法的进化式测试方法生成测试用例,当搜索到与故障现象一致或相似的信息时,暂时停止进化,适时加入噪声扰动环节。首先开启饱和噪声模式,即同时以最大强度施加所有可控噪声源,然后同时以最小强度施加所有可控噪声源,最后则开启策略(时间约束或步长约束)随机噪声干扰模式。在噪声施加过程中,只要是程序非死机、崩溃状态,则保持连续施加干扰,便于时间及空间累积效应的体现。该技术可以加速软件故障的复现或者增加复现的概率,实现软件的加速测试。

本发明一种基于噪声共振的软件加速测试技术的构建方法,如图1所示,其具体构建步骤如下:

步骤一:收集待测软件源代码。其构建方法是:

获取需要进行测试的软件的源程序文件。

步骤二:基于进化式智能方法自动生成软件测试用例,其构建方法是:

以测试用例集为种群,单个测试用例为种群的个体,以测试用例的某种覆盖率作为适应度函数,进化式的测试用例自动生成一般包含以下步骤:

该方法流程图如图2所示。

进化式的测试用例自动生成相比于传统的软件测试的人工生成测试用例已经在效率和效果上有了很大的进步,但是由于这一类的方法是基于进化式方法,而种群的进化是在父体的基础上变化的,进化到一定代数后,个体之间的差异性就会减小,无法进一步搜索到更多的信息,从而导致陷入局部最优。因此,为了增大种群多样性,在很多的实际工程应用中会强调交叉和变异以跳出局部最优,但这也导致了即使在搜索过程中暂时性地搜索到了与故障现象一致或相似的信息,也极有可能在下一轮迭代进化测试过程中生成不相关或与故障现象距离较远的测试序列,也就是说生成的测试用例很多,但是很多用例都是无法触发软件的故障的,从而导致在局部空间有效故障样本量过小的情况。在软件测试中,对于某些难以复现的随机故障的故障再现而言,能够触发和想要复现的故障现象一致或相近的故障的有效测试用例是非常稀少而又极具意义的。因而应该生成更多的和这些测试用例相似的测试用例以尽可能多的触发软件故障,加速故障再现。

步骤三:开启饱和噪声模式施加噪声。其构建方法是:

噪声共振只有在当噪声的强度处于某个“共振点”的时候才会被触发,这就要求噪声一定是可以人工控制的噪声,即噪声的强度、持续时间等可以根据需要随时做出调整。为了触发噪声共振,首先以饱和噪声模式进行噪声的施加,饱和噪声模式是指施加的所有可控噪声都处于最大强度Intensitymax。当噪声处于最大强度时,可以更直观的观察噪声带来的影响,以便于在后续的噪声调节操作中确定调节的幅度。

步骤四:同时以最小强度施加所有噪声。其构建方法是:

由于饱和噪声模式一般不会正好就触发噪声的共振,在施加饱和噪声之后,即改为同时以最小的强度Intensitymin对软件系统施加所有的可控噪声。后续直接在最小噪声强度的基础上进行噪声调节以便触发噪声共振。

步骤五:开启策略噪声干扰模式,产生噪声共振。其构建方法是:

同时以最小的强度对软件系统施加所有的可控噪声也无法保证在该噪声强度下就可以触发噪声共振,因而需要某种策略去寻找能够触发噪声共振的“共振点”噪声强度。“策略噪声干扰模式”主要包含“时间约束”和“步长约束”两种策略,可以单独进行,也可以两种策略一起使用。

“时间约束”策略是指逐步改变所有可控噪声的连续施加时间,可以以秒为单位,根据系统对噪声的敏感情况选定一个时间增量Δt,每次的噪声连续时间增加Δt,直至寻找到可以出发噪声共振的连续施加时间。

“步长约束”策略是指逐步改变所有可控噪声的强度Intensity,在系统受到的噪声干扰处于最低强度Intensitymin时,依据软件系统对噪声的敏感情况选定一个强度增量ΔIntensity,该增量的选定可以依据如下公式而定:

式中,n的大小根据软件系统对噪声的敏感程度而定,越敏感n的值越大,反之越小。

“策略噪声干扰模式”旨在触发噪声共振,“时间约束”和“步长约束”两种策略可以根据实际情况进行灵活使用。

步骤六:持续施加产生共振的噪声,其构建方法是:

通过“策略噪声干扰模式”得到可以触发噪声共振的噪声强度Intensityresonance后,只要是程序处于非死机、崩溃状态,原则上保持在程序的连续操作中施加噪声干扰,以体现噪声共振在时间及空间上的累积效应。

步骤七:生成有效的测试序列。其构建方法如下:

当软件系统处于噪声共振状态下时,生成更多与故障现象接近的测试序列,以提高软件故障复现的概率。

通过上述步骤,可以完成对基于噪声共振的软件加速测试技术的构建。在这项技术中,首先使用基于智能方法的进化式测试方法生成测试用例,当搜索到与故障现象一致或相似的信息时,暂时停止种群的进化,适时加入噪声扰动环节。首先开启饱和噪声模式,即同时以最大强度施加所有可控噪声源,然后同时以最小强度施加所有可控噪声源,最后则开启策略(时间约束或步长约束)噪声干扰模式。在噪声施加过程中,只要是程序非死机、崩溃状态,则保持连续施加干扰,便于时间及空间累积效应的体现。该技术可以加速软件故障的复现或者增加复现的概率,实现软件的加速测试。

该故障预测技术基于随机共振理论进行构建,形成较为实用的基于噪声共振的软件加速测试技术。

本发明未详细阐述部分属于本领域公知技术。

以上所述,仅为本发明部分具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本领域的人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号