一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于数据集成预测的软件自适应测试方法与流程

2022-03-26 04:48:52 来源:中国专利 TAG:


1.本公开涉及软件缺陷预测和软件测试技术领域,尤其涉及一种基于数据集 成预测的软件自适应测试方法。


背景技术:

2.科技的迅猛发展增加了信息利用的广度和深度,信息技术的发展使得软件 也表现出高度复杂、高维交互、行为突现的特点,增加了软件行为的不确定性, 使得软件缺陷更难发现,软件测试开展难度大大提高。实际工程测试项目表明, 传统的软件测试方法在针对复杂软件进行测试过程中,消耗人力和财力资源十 分庞大,成本巨大,并且测试效率难以保证。
3.通过软件缺陷预测技术解决测试资源分配是提升软件测试效率的一种有 效手段,也是工程领域中的普遍做法。但是,面对新型软件演化出的特征,缺 陷预测面临更为巨大挑战,主要表现为:1)交互信息海量,软件失效场景更 为复杂多样,测试空间的膨胀导致预测的范围更广;2)软件高度复杂,关键 故障难以被预测以及定位,导致软件缺陷预测的精准度降低;3)软件行为突 现导致软件缺陷规律更难被识别,带来预测的不确定性更加显著。
4.目前绝大多数的缺陷预测技术仍停留在静态预测层面,缺陷预测和软件测 试仍是两个独立的体系。面对新型软件中更广的预测范围和更复杂的缺陷规律 变化,静态的缺陷预测结果可能会导致软件测试的效率变得更糟。传统的自适 应软件测试能够实现动态的测试过程,但是由于并不涉及到机器学习或深度学 习技术,在处理多维数据时,表现不佳,同时消耗大量的测试开销。


技术实现要素:

5.有鉴于此,本公开实施例提供一种基于数据集成预测的软件自适应测试方 法,该方法是一种动态的策略,针对新型软件的高度复杂、预测不确定问题能 有更佳的适应性。本方法通过缺陷预测优化软件测试过程,同时通过软件测试 结果优化缺陷预测过程,使得软件测试策略能够进行实时调整,以适应软件特 征的变化。
6.为了实现上述目的,本发明提供如下技术方案:
7.一种基于数据集成预测的软件自适应测试方法,包括以下步骤:
8.步骤1、设计外部数据过滤机制,确定全局缺陷预测器的训练数据;
9.步骤2、使用过滤选择的外部数据建立全局缺陷预测器并进行训练学习, 将被测软件划分为多个软件模块或测试用例,再使用训练后的全局缺陷预测器 对所述多个软件模块或测试用例进行缺陷概率预测,得到缺陷概率预测结果;
10.步骤3、将所述多个软件模块或测试用例按照缺陷概率预测结果从大到小 进行排序,选择前k位的软件模块或者测试用例作为测试集,完成下一步的测 试动作;
11.步骤4、将步骤3中得到的测试结果作为反馈输入加入到全局缺陷预测器 的训练
数据中,实现对全局缺陷预测器的动态调整,同时使用测试结果数据建 立并训练本地缺陷预测器,同时对所述全局缺陷预测器和本地缺陷预测器的权 重进行调整;
12.步骤5、将所述全局缺陷预测器和本地缺陷预测器的结果按照权重调整方 案进行集成预测,完成测试过程。
13.进一步地,所述步骤5中还包括:利用全局缺陷预测器和本地缺陷预测器 的集成预测结果指导被测软件再次进行软件模块或者测试用例的选择,完成测 试动作后,再次将测试结果作为全局缺陷预测器和本地缺陷预测器的反馈输 入,对全局缺陷预测器和本地缺陷预测器的训练模型进行动态的反馈调整,并 再次调整权重,循环操作直至达到测试目标时,结束软件测试过程。
14.进一步地,步骤5中,所述权重调整方案包括:随着测试进度,调整本地 缺陷预测器和全局缺陷预测器的权重分配,在测试进程中增强本地缺陷预测器 的影响,弱化全局缺陷预测器的影响。
15.进一步地,步骤5中,当达到测试目标时,结束软件测试过程,所述测试 目标包括:当缺陷检出率达到目标,或重要功能或模块覆盖率达到目标,或无 继续测试重大缺陷的必要时。
16.进一步地,步骤1中,从多个跨项目数据和软件测试历史数据库中选择与 被测软件的相似度高于预设相似度阈值的跨项目数据作为所述全局缺陷预测 器的训练数据。
17.进一步地,从包括类属、水平、特征三个方面进行对比,设计外部数据过 滤机制,评估得到跨项目数据与被测软件的所述相似度和所述预设相似度阈 值。
18.进一步地,所述步骤4中还包括,先将步骤3中得到的测试结果进行规范 化处理,再作为反馈输入加入到全局缺陷预测器的训练数据中。
19.进一步地,所述规范化处理包括,在测试结果中提取度量信息和缺陷信息, 进行标准化和数据格式化,再将得到的样本数据通过预处理与属性选择进行筛 选,形成构建预测模型最佳的训练数据,加入到全局缺陷预测器的训练数据中。
20.本发明提供的一种基于数据集成预测的软件自适应测试方法,其有益效果 在于:
21.(1)和传统的静态软件测试相比较,本发明减少了人力和财力等资源的 消耗,降低了测试成本,提高了测试效率。
22.(2)和单纯的软件缺陷预测技术相比,本发明实现了动态的缺陷预测过 程,能够将缺陷预测与软件测试过程进行结合,能够找到高度复杂、体量巨大、 高度智能、行为突现的软件中存在的缺陷,应对软件更广的预测范围和更复杂 的缺陷规律变化,也能够保证软件测试的效果。
23.(3)和传统的软件自适应测试方法相比,本发明由于机器学习和深度学 习方法的引入,在处理高维数据时,能够更高效、更准确地挖掘软件特征,从 而在提高效率的同时,大大降低成本。
附图说明
24.为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使 用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些 实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可 以根据这些附图获得其它的
附图。
25.图1为本发明的基于数据集成预测的软件自适应测试模型图;
26.图2为本发明的基于数据集成预测的软件自适应测试算法流程图;
27.图3为本发明方法中对测试结果进行规范化处理流程示意图。
具体实施方式
28.下面结合附图对本公开实施例进行详细描述。
29.以下通过特定的具体实例说明本公开的实施方式,本领域技术人员可由本 说明书所揭露的内容轻易地了解本公开的其他优点与功效。显然,所描述的实 施例仅仅是本公开一部分实施例,而不是全部的实施例。本公开还可以通过另 外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不 同观点与应用,在没有背离本公开的精神下进行各种修饰或改变。需说明的是, 在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本公开 中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有 其他实施例,都属于本公开保护的范围。
30.要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。 应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述 的任何特定结构及/或功能仅为说明性的。基于本公开,所属领域的技术人员 应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种 方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任 何数目个方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的 方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。
31.还需要说明的是,以下实施例中所提供的图示仅以示意方式说明本公开的 基本构想,图式中仅显示与本公开中有关的组件而非按照实际实施时的组件数 目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意 的改变,且其组件布局型态也可能更为复杂。
32.另外,在以下描述中,提供具体细节是为了便于透彻理解实例。然而,所 属领域的技术人员将理解,可在没有这些特定细节的情况下实践所述方面。
33.本公开实施例提供一种基于数据集成预测的软件自适应测试方法,包括以 下步骤:
34.步骤1、设计过滤机制,从类属、水平、特征三个方面进行考虑,确定跨 项目数据与被测软件的相似度阈值,从多个跨项目数据和软件测试历史数据库 中选择与被测软件的相似度高于预设相似度阈值的跨项目数据作为所述全局 缺陷预测器的训练数据;
35.步骤2、使用过滤选择的外部数据建立全局缺陷预测器并进行训练学习, 将被测软件划分为多个软件模块或测试用例,再使用训练后的全局缺陷预测器 对所述多个软件模块或测试用例进行缺陷概率预测,得到缺陷概率预测结果;
36.步骤3、将所述多个软件模块或测试用例按照缺陷概率预测结果从大到小 进行排序,选择前k位的软件模块或者测试用例作为测试集,完成下一步的测 试动作,将测试结果保存至本地测试数据库中;
37.步骤4、将步骤3中得到的测试结果进行规范化处理,作为反馈输入加入 到全局缺
陷预测器的训练数据中,实现对全局缺陷预测器的动态调整,同时使 用测试结果数据建立并训练本地缺陷预测器,同时对所述全局缺陷预测器和本 地缺陷预测器的权重进行调整;
38.其中,如图3所示,所述规范化处理包括:(一)设计用于构建缺陷预测 模型的训练集数据格式;(二)针对测试过程中产生的结果,提取缺陷来源、 分布、严重度、外部特征等度量信息和缺陷信息,进行标准化和数据格式化, 形成与训练集格式一致的样本;(三)通过预处理与属性选择对样本进行筛选, 形成构建预测模型最佳的训练数据。
39.步骤5、将所述全局缺陷预测器和本地缺陷预测器的结果按照权重调整方 案进行集成预测,利用全局缺陷预测器和本地缺陷预测器的集成预测结果指导 被测软件再次进行软件模块或者测试用例的选择,完成测试动作后,再次将测 试结果作为全局缺陷预测器和本地缺陷预测器的反馈输入,对全局缺陷预测器 和本地缺陷预测器的训练模型进行动态的反馈调整,并再次调整权重,循环操 作,当缺陷检出率达到目标,或重要功能或模块覆盖率达到目标,或无继续测 试重大缺陷的必要时,结束软件测试过程。
40.其中,所述权重调整方案包括:随着测试进度,调整本地缺陷预测器和全 局缺陷预测器的权重分配,在测试进程中增强本地缺陷预测器的影响,弱化全 局缺陷预测器的影响。
41.本公开实施例的一种基于数据集成预测的软件自适应测试方法,与传统的 软件自适应测试方法相比,该方法将缺陷预测与软件测试进行有机结合,将缺 陷预测模型作为软件自适应测试的控制器,并且根据数据来源的差异性,提出 一个综合使用本地数据与外部数据结合训练的全局缺陷预测器,其中,缺陷预 测模型可采用机器学习算法或深度学习算法进行实现。并将其与使用测试过程 中产生的本地数据训练的本地缺陷预测器进行集成预测,解决缺陷预测早期的 本地数据不足问题,提高缺陷预测的精度和效果,优先选择缺陷概率更高的用 例进行测试,增加软件测试前中期发现缺陷的数量,提高软件测试效率。
42.本方法还通过测试过程中收集的测试结果信息,将实时软件测试的结果增 加到本地缺陷预测器和全局缺陷预测器的训练模型中,作为反馈输入,对模型 进行动态的反馈调整,训练调整本地缺陷预测器和全局缺陷预测器,提高预测 精度和效果,更准确的进行下一次测试模块的选择。且设计权重调整方案,根 据测试进度,调整两种预测器的权重分配,在测试进程中逐渐弱化外部数据作 用,强化本地数据影响,实现模型的自适应调整。本发明能够更早发现更多的 软件缺陷,提高软件测试效率,还可以解决软件测试资源约束的问题,降低测 试成本,具有重要的工程应用价值。
43.本公开实施例的基于数据集成预测的软件自适应测试模型如图1所示,其 中图1中的符号含义如下表1所示:
44.表1:
45.pg全局缺陷检测率p
l
本地缺陷检测率p集成缺陷检测率ωg全局缺陷预测器权重ω
l
本地缺陷预测器权重sm被测软件中未测试的软件实体st
选择的被测软件实体dg全局数据d
l
本地数据δd新的测试数
46.图1中集成预测描述表示,在某一时刻,集成预测部分输出软件模块或用 例的预测缺陷概率p,被测软件按照设置的测试步长输出测试集st,测试动 作对测试集进行测试,测试动作完成时刻为反馈点,此时输出测试数据,放入 本地库中,一次测试完成。输出的测试数据作为缺陷预测增量数据

d,累加 到本地数据dl和全局数据dg中,根据这些数据,全局缺陷预测器和本地缺 陷预测器分别进行模型调整,同时二者的权重也会进行调整,这是一次反馈。 一次测试加上一次反馈就是一次完整动作,之后进入下一个完整动作。
47.接下来,参考图2,根据一种具体实施例对本发明作进一步说明。
48.图2是本实施例的一种基于数据集成预测的软件自适应测试算法流程图, 具体的实施方式如下:
49.输入:被测软件sut,测试数据库library,参数(测试步长k,权重阈值 w,比例阈值r)。
50.输出:本地数据dl。
51.过程:
52.步骤1.初始化设置。
53.缺陷数量defect=0;测试模块数module=0;测试时机t=0;
54.未测试模块集sm=sut;m=smlength();测试集s
t
=null;
55.本地数据d
l
=null;全局数据dg=gdf(library);测试集数据d
t
=null;
56.本地权重全局权重
57.步骤2.数据预处理。
58.preprocess(d
l
,dg,sm)
59.步骤3.根据本地数据建立本地缺陷预测器。
60.model_l=buildpredictor(d
l
)
61.步骤4.根据全局数据建立全局缺陷预测器
62.model_g=buildpredictor(dg)
63.步骤5.利用两个模型分别对sm进行缺陷概率预测。
[0064][0065][0066]
步骤6.预测结果规范化。
[0067][0068]
其中,m=smlength();
[0069]
步骤7.获得综合预测结果。
[0070][0071]
步骤8.对综合预测结果从大到小排序,并选出前k个模块作为测试集。
[0072]
sort(p
(t)
(i));s
t
=gettestset(sm,p
(t)
,k);sm=s
m-s
t
[0073]
步骤9.执行测试动作。
[0074]
对于i=1到k,对s
t
(i)进行测试获得测试结果d
t
(i)。
[0075]
如果d
t
(i)的缺陷信息为发现缺陷,缺陷数量defects 1;否则,继续。
[0076]
步骤10.模型数量module 1;
[0077]
步骤11.更新本地数据与全局数据,并清除测试数据。
[0078]dl
=d
l
d
t
;dg=dg d
t

[0079]dt
=null;s
t
=null
[0080]
步骤12.测试动作增加。
[0081]
t=t 1;
[0082]
步骤13.更新本地缺陷预测器权重与全局缺陷预测器权重。
[0083]
n=d
l
.length();ts=n:m;
[0084]
如果ts<r,否则,
[0085][0086]
步骤14.判断是否达到测试目标。
[0087]
通过defects或module的值判断是否停止测试。如果不停止测试,重复 步骤2;否则,停止测试,将d
l
加入到library中。
[0088]
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于 此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到 的变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围 应以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献