一种面向GUI软件的可靠性加速测试方法技术

技术编号:12514447 阅读:143 留言:0更新日期:2015-12-16 12:20
本发明专利技术公开了一种面向GUI软件的可靠性加速测试方法,步骤如下:1、提取标识词与特征,形成标识词链和特征集合;2、进行等价类划分;3、将每一步输入内容归到相应等价类下;4、将基础测试用例集合划分为各类结构信息与内容信息均相同的测试用例集合;5、根据映射关系,将测试用例的每一步输入内容转化为失效信息或者正常信息,并进行标识;6、按序执行测试,筛选各类测试用例执行效果为失效和第一个执行效果为正常的测试用例;7、累加相邻失效间隔之间用例的执行时间作为失效数据进行软件可靠性评估。优点:基于运行分类的思想,减少测试用例数量和测试时间提高GUI软件可靠性测试效率,保证失效数据可进行定量的软件可靠性评估。

【技术实现步骤摘要】
一种面向GUI软件的可靠性加速测试方法
本专利技术属于软件可靠性测试
,涉及软件可靠性测试中的加速测试方法,具体涉及一种面向GUI软件的可靠性加速测试方法。
技术介绍
随着计算机技术的迅猛发展,计算机软件已经渗透到越来越多的领域,特别是航空航天、金融和医疗等关系国计民生的关键领域。在这些领域中,软件系统规模庞大、逻辑复杂,对可靠性的要求往往非常高。因此,软件可靠性工程越来越受到人们的重视。软件可靠性测试是提高软件质量与可靠性的重要措施之一,逐渐成为国内外软件可靠性工程的主要研究方向;软件可靠性测试的主要特征是按照用户实际使用软件的方式来测试软件,它可以满足用户对软件的可靠性要求、评价软件可靠性水平及验证软件产品是否达到可靠性要求。软件可靠性测试通常根据软件可靠性测试剖面生成测试用例,软件可靠性测试剖面是指软件各种使用行为及其概率分布的一种模型,在软件可靠性测试剖面的基础上应用数理统计相关知识进行大量随机抽样获得测试用例。当测试用例集合足够大时,能够保证对软件使用情况的有效覆盖。但是,伴随着测试用例集的扩充,执行软件可靠性测试的代价会越来越高,当被测软件系统规模庞大、逻辑过于复杂时,付出的代价甚至无法承受。所以,软件可靠性测试在实际工程中的应用就会受到极大限制;因此,软件的可靠性加速测试就显得尤为必要。软件可靠性加速测试的目的在于减少软件可靠性测试的成本,并且给出具有一定置信度的可靠性评估。自上个世纪八十年代末九十年代初以来,软件可靠性测试在将近二十年的发展中已经取得了一定的成果,但是对软件可靠性加速测试却没有形成统一的明确的认识。现有技术中,硬件可靠性试验的加速强度测试,通过施加强度激励发现产品缺陷以保证系统拥有高可靠性和健壮性,软件可靠性工程借用硬件可靠性工程的基本概念,将硬件可靠性加速试验的相关概念和方法应用到软件可靠性加速测试的研究。比如,Chan给出了软件的加速强度测试的定义和对相关概念的理解,将软件加速强度测试视为通过施加加速应力、进行失效分析和采取纠正措施发现软件产品缺陷,以获取系统可靠性和健壮性,它结合硬件说明了软件加速强度测试中的基本可靠性规律。但是目前对于软件可靠性加速测试通常以强度测试为手段提高测试效率,发现更多的缺陷作为测试的目标。软件可靠性加速测试包括以下几点:(1)、对于测试的输入(激励),测试输入能够合理准确地生成,同时考虑整合与转换带来的测试效率的提高;(2)、对测试过程而言,可靠性测试效率应得到提高,即在相同测试量内,软件可靠性增长的速度要提高;相同测试量如测试时间相同或测试用例数目相同等;或达到相同的可靠性要求所需要的测试量要小,测试量比如时间短,测试用例数目少。(3)、对于测试结果的定量分析,给出合理的评估,软件可靠性评估结果的可信程度达到一定的水平;(4)、对软件质量而言,应强调测试本身的查错能力,尽可能地多发现软件缺陷,特别是重要的软件缺陷。无论是测试输入的生成和整合转换,还是合理有效地加快测试过程,或是某种条件下能够给出具有一定可信度的可靠性评估结果,都认为是对可靠性测试的一种加速,纳入到软件可靠性测试加速的概念中来。图形用户界面(GraphicalUserInterface,简称GUI,又称图形用户接口)指采用图形方式显示的计算机操作用户界面,是用户与计算机交流的主要方式,对GUI软件测试方法的研究也越来越受到学术界和工业界的重视。进行GUI软件测试时主要面临以下几个方面的困难:(1)、GUI软件输入组合空间存在爆炸问题,而且每个输入序列都会导致GUI软件出现不同的状态。(2)、测试数据对软件使用情况的覆盖情况会影响对GUI软件测试结果的评价。(3)、在GUI软件测试过程中,测试用例必须逐步执行并对软件当前状态进行验证,当发现软件错误后需要立即停止测试。(4)、GUI软件需要进行回归测试,随着软件版本的更新,会影响软件输入与输出之间的映射关系。现有的软件可靠性加速测试方法有:提高严酷度的软件可靠性加速测试方法、基于加速因子的软件可靠性加速测试方法、基于灰盒分析的软件可靠性加速测试方法、基于重要度抽样的软件可靠性加速测试方法、基于过程的软件可靠性加速测试方法等。但是考虑到GUI软件测试中的难点,以上的软件可靠性加速测试方法并不完全适用:提高环境严酷度的软件可靠性加速测试方法,其难点在于如何将在恶劣环境下得到的测试结果转化到标准使用环境下得到可靠性评估结果,目前还没有很好的解决方法;基于加速因子的软件可靠性加速测试方法,对加速因子没有约定俗成的定义,其计算更多来自于经验;基于灰盒测试的软件可靠性加速测试方法,虽然可以解决通过总体分布类型的假设检验保证测试数据满足运行剖面的统计特征,但是仍然无法保证利用覆盖信息辅助得到的测试数据能够从整体上满足用例生成的随机性,存在“使实际使用中后发生的输入提前发生的可能性大大提高”的问题,此顺序问题会造成“可靠性估计值与实际值的偏差可否忽略”成为一个不确定的问题;基于重要度抽样的软件可靠性加速测试方法,利用重要度抽样技术,提高某些关键度高的操作的发生概率,这种方法更加适用于安全关键类型软件上面;基于过程的软件可靠性加速测试方法,利用人工智能领域的一些聚类方法,实现对测试用例集合的分类,由于GUI软件的测试输入复杂多样,范围波动大,外加这些聚类方法不仅实现起来难度大,并不利于在工程上应用和推广,其效果也未必理想。由于软件可靠性测试不考虑被测软件的结构特征以及其他测试信息,完全按照“构造剖面—抽样生成测试用例—执行测试—收集结果—进行评估”的过程,所以测试用例集在常见功能点上过于重复,导致测试用例之间具有“局部相同,整体相似”的特点,可以考虑分类以减少测试用例数目,减少测试时间提高测试效率。Musa曾经指出:对运行进行有效的分类通过一定的策略在运行类中对运行进行选择,就可以在理论上改进软件可靠性测试的效率。如果运行类中的一个运行成功执行,则非常有可能这个运行类的所有运行都能够成功执行。类似地,如果运行类中的一个运行出现失效,则非常有可能这个运行类的所有运行都会出现同样的失效。这意味着运行类中的每个运行都可以近似看作是该运行类中的所有运行的代表。通过运行各运行类中的小部分运行,在理论上可以达到提高可靠性测试效率的目的。软件测试理论中的等价类划分,通过对相似输入进行整合,减少测试用例的数目,从而提高测试效率。那么在软件可靠性测试中是否也存在某种等价类,通过运行“等价类”中的某个个体就可以测试整个“等价类”,软件可靠性测试仍可利用这种思路来提高测试的效率。软件可靠性测试用例直接或间接的反映了软件的实际使用方式,构建测试剖面时,对于发生概率较高的操作或行为,通常会设置较高的发生概率或转移概率,因此随机生成足够多测试用例以满足软件使用模型,被赋予较高概率的操作往往会出现在大量测试用例中,而且许多测试用例往往是相似甚至相同的。在实际中,GUI软件功能的针对性较强,完成某一功能的执行路径是基本确定的。在采用操作剖面的形式对软件的使用情况进行建模之后,可以直接获取每个功能模块所包含的使用情况。进行GUI软件可靠性测试时,每一步输入所需的测试数据分为以下几种:正常输入,异常输入或者边界输入。结合等价类划分规则以及输入数据类型,将每本文档来自技高网...
一种面向GUI软件的可靠性加速测试方法

【技术保护点】
一种面向GUI软件的可靠性加速测试方法,其特征在于,包括如下步骤:步骤一、针对GUI软件可靠性测试所生成的基础测试用例集合中的每个测试用例,提取测试用例的标识词与特征,分别形成该测试用例的标识词链和特征集合;标识词为测试用例所包含的一个操作步骤,用wj表示;特征代表测试用例的一个操作步骤所对应的输入内容,用cj表示;将每个测试用例的标识词与特征进行组合,形成测试用例的表达式为:Ti={(w1,c1),(w2,c2),…,(wj,cj),...};Ti为一个测试用例;(wj,cj)为测试用例Ti的标识词与特征组合;i=1,2,...,n,n为整数;提取测试用例Ti所包含的标识词wj,形成标识词链W={w1,w2,...,...wj,...,wn};提取测试用例Ti所包含的特征cj,形成特征集合C={c1,c2,...,...cj,...,cn};j=1,2,...,n,n为整数;测试用例的标识词链体现了测试用例的结构信息,特征集合体现了测试用例的内容信息;步骤二、对测试用例中每个特征对应的输入内容进行等价类划分,得到每个特征的等价类划分结果;针对每个特征所对应的输入内容,将具有相同输出结果的输入内容合为一类,作为一个等价类,依次对特征中所有输入内容进行分类,得到属于特征的所有等价类划分结果;对某个特征的某个等价类命名为:特征+序号;序号按整数由小到大排列,最后的序号代表了特征划分后所形成的等价类数目;步骤三、将每个测试用例的每一步的输入内容,根据对应特征的等价类划分结果,归到相应的等价类下;步骤四、根据测试用例的结构信息与内容信息,对基础测试用例集合进行划分,得到结构信息与内容信息均相同的各类测试用例集合;步骤五、对结构信息和内容信息均相同的各类测试用例,根据软件输入与软件失效之间的映射关系,将每个测试用例中的每一步输入内容转化为失效信息或者正常信息,并在测试用例中的输入内容所在位置进行标识;步骤六、对经过步骤五标识的测试用例按序执行测试,筛选各类测试用例执行效果为失效且各类测试用例中第一个执行效果为正常的测试用例;步骤七、对执行效果为失效的测试用例,累加相邻失效间隔之间测试用例的执行时间作为失效数据进行软件可靠性评估。...

【技术特征摘要】
1.一种面向GUI软件的可靠性加速测试方法,其特征在于,包括如下步骤:步骤一、针对GUI软件可靠性测试所生成的基础测试用例集合中的每个测试用例,提取测试用例的标识词与特征,分别形成该测试用例的标识词链和特征集合;标识词为测试用例所包含的一个操作步骤,用wj表示;特征代表测试用例的一个操作步骤所对应的输入内容,用cj表示;将每个测试用例的标识词与特征进行组合,形成测试用例的表达式为:Ti={(w1,c1),(w2,c2),...,(wj,cj),...};Ti为一个测试用例;(wj,cj)为测试用例Ti的标识词与特征组合;i=1,2,...,n,n为整数;提取测试用例Ti所包含的标识词wj,形成标识词链W={w1,w2,...,...wj,...,wn};提取测试用例Ti所包含的特征cj,形成特征集合C={c1,c2,...,...cj,...,cn};j=1,2,...,n,n为整数;测试用例的标识词链体现了测试用例的结构信息,特征集合体现了测试用例的内容信息;步骤二、对测试用例中每个特征对应的输入内容进行等价类划分,得到每个特征的等价类划分结果;针对每个特征所对应的输入内容,将具有相同输出结果的输入内容合为一类,作为一个等价类,依次对特征中所有输入内容进行分类,得到属于特征的所有等价类划分结果;对某个特征的某个等价类命名为:特征+序号;序号按整数由小到大排列,最后的序号代表了特征划分后所形成的等价类数目;步骤三、将每个测试用例的每一步的输入内容,根据对应特征的等价类划分结果,归到相应的等价类下;步骤四、根据测试用例的结构信息与内容信息,对基础测试用例集合进行划分,得到结构信息与内容信息均相同的各类测试用例集合;步骤五、对结构信息和内容信息均相同的各类测试用例,根据软件输入与软件失效之间的映射关系,将每个测试用例中的每一步输入内容转化为失效信息或者正常信息,并在测试用例中的输入内容所在位置进行标识;步骤六、对经过步骤五标识的测试用例按序执行测试,筛选各类测试用例执行效果为失效且各类测试用例中第一个执行效果为正常的测试用例;步骤七、对执行效果为失效的测试用例,累加相邻失效间隔之间测试用例的执行时间作为失效数据进行软件可靠性评估。2.如权利要求1所述的一种面向GUI软件的可靠性加速测试方法,其特征在于,所述的步骤四具体为:基于结构信息的测试用例划分方法如下:步骤401、将基础测试用例集合中第一个测试用例放入用例库中作为一类;步骤402、依次按顺序对基础测试用例集合中的测试用例标识词链进行匹配分类;依次从基础测试用例集合中按顺序选取测试用例作为待对比用例,与用例库中各类测试用例的标识词链逐类匹配;步骤403、判断待对比用例的标识词链是否与用例库中某类用例的标识词链完全相同;如果待对比用例的标识词链与用例库中某类别用例的标识词链完全相同,则将待对比用例放在该类别下,否则,在用例库中增加一个类别,并将待对比用例放入新增加的类别下;步骤404、判断当前的待对比测试用例是否为基础测试用例集合中的最后一个用例,如果是,转到步骤405;如果不是,转到步骤402;步骤405、经过分类后的测试用例形成包含不同类别的用例库,每类测试用例的标识词链和对应位置的特征均相同,同类中的测试用例包含相同的结构信息;基于内容信息的测试用例划分方法,如下:步骤1、对每一类结构信息相同的测试用例集合,依次将...

【专利技术属性】
技术研发人员:吴玉美刘庆陆民燕邱文
申请(专利权)人:北京航空航天大学中国电子科技集团公司第五十四研究所
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1