一种基于历史缺陷数据挖掘的软件故障注入方法技术

技术编号:25438887 阅读:23 留言:0更新日期:2020-08-28 22:27
本发明专利技术一种基于历史缺陷数据挖掘的软件故障注入方法,包括:A.查询软件的实体元素记录;B.查询缺陷数据;建立缺陷和注入故障类型的关联关系并保存;C.初始化隐马可夫模型参数;使用数据训练模型,得到最优参数的模型;D.获取软件变更内容包含的实体元素;E.将最优参数模型和实体元素一起代入维特比算法计算出最优可能结果;F.输出注入故障类型和关联缺陷数据,设计故障注入策略。本发明专利技术以客观数据的挖掘和分析来驱动故障注入策略的设计,指导测试人员向特定的软件模块中针对性地注入最有可能导致软件系统出现健壮性、容错性、容灾性和服务高可用性故障的缺陷,提高了故障注入的工作效率,工作结果也具有较高的准确度和可信度。

【技术实现步骤摘要】
一种基于历史缺陷数据挖掘的软件故障注入方法
本专利技术涉及计算机软件开发及软件测试领域,具体讲是一种基于历史缺陷数据挖掘的软件故障注入方法。
技术介绍
软件故障注入是指使用特定的工具和技术来构造或者触发软件系统的某一个或某一些缺陷,使得软件系统处于故障状态,在故障发生后,观察软件系统的短期和长期运行状态,评估软件系统是否具备健壮性、容错性、容灾性和服务高可用性。通常来说,软件故障注入的原理是使用特定的工具来修改软件系统的程序执行语句、数据库中的数据或者内存中的数据来模拟软件缺陷的发生。软件故障注入的技术主要有调试器注入、设备驱动器注入、网络通信注入和硬件注入等。目前对如何分析应该往软件系统的哪个模块中注入缺陷、注入何种缺陷以及注入缺陷后会造成何种故障的问题,通常是由测试人员根据自己的经验来判断软件系统的哪些模块的健壮性、容错性、容灾性和服务高可用性相对较差,从而注入各种常见缺陷以广泛检测软件系统的健壮性、容错性、容灾性和服务高可用性。这种做法的工作量巨大,效率低下,并且会受到测试人员的经验影响,具有较大的随意性,工作质量也难以保证。
技术实现思路
本专利技术提供一种基于历史缺陷数据挖掘的软件故障注入方法,以客观数据的挖掘和分析来驱动故障注入策略的设计,指导测试人员向特定的软件模块中针对性地注入最有可能导致软件系统出现健壮性、容错性、容灾性和服务高可用性故障的缺陷,提高了故障注入的工作效率,工作结果也具有较高的准确度和可信度。本专利技术一种基于历史缺陷数据挖掘的软件故障注入方法,包括:A.根据软件的界面模块、功能模块和程序模块包含的实体元素,在数据库的实体元素表中查找出相对应的实体元素的数据记录,根据所述实体元素的数据记录,在数据库的数据缺陷表中查询出这些实体元素对应的所有缺陷数据记录;其中所述软件的界面模块是指软件的图形用户界面;功能模块是软件的各种功能组件;程序模块是指软件的程序、代码行等。B.将所有缺陷数据记录分为两个数据集:测试环境缺陷数据集和生产环境缺陷数据集,在所述两个数据集中均包含了缺陷数据的以下字段:缺陷id、缺陷所属的实体元素id、缺陷类别和缺陷所在环境;C.建立注入故障类型数据集;并且根据测试环境中软件模块的实际运行情况,针对测试环境缺陷数据集中的每一个缺陷数据,建立该缺陷数据与注入故障类型的关联关系数据集;以及根据生产环境中软件模块的实际运行情况,针对生产环境缺陷数据集中的每一个缺陷数据,建立该缺陷数据与注入故障类型的关联关系数据集;并将所有缺陷数据与注入故障类型的关联关系数据保存在数据库中的缺陷数据与注入故障关系表中,每一条关系数据至少包含以下字段:缺陷id、注入故障类型id;D.初始化隐马可夫模型λ的参数,建立注入故障预测模型;E.以测试环境缺陷数据集和缺陷数据与注入故障类型的关联关系数据集一起作为训练样本集,以及将生产环境缺陷数据集和缺陷数据与注入故障类型的关联关系数据集一起作为测试样本集,用训练样本集和测试样本集对注入故障预测模型进行训练和测试,当训练误差值低于阈值时,终止训练,得到满足要求的最优参数的注入故障预测模型;F.根据软件模块的当前变更内容,分析变更内容中所包括的实体元素,并在数据库中查询出所述对应的实体元素对应的id,形成待预测的实体元素id序列。将所述待预测的实体元素id序列和最优参数的注入故障预测模型一起输入维特比算法,得到最优的注入故障类型id序列;G.根据得到的最优注入故障类型id序列,在注入故障类型表中查询出该注入故障类型数据,得到注入故障类型预测结果;在缺陷数据与注入故障关系表中查询出缺陷数据,得到导致这些注入故障的缺陷数据;H.根据得到的注入故障类型预测结果,以及对应的缺陷数据,得到需要注入软件模块的每一个实体元素的缺陷类型,从而设计出软件模块的缺陷构造策略,进行缺陷构造和模拟,实施故障注入,判断软件模块的故障状态。本专利技术根据软件功能、软件模块、软件代码等实体元素与缺陷之间的关系、缺陷与注入故障类型之间的对应关系,构建训练数据集,设计机器学习预测模型进行训练。模型训练结束后,将待预测的实体元素集,输入预测模型进行预测,可以得到最有可能造成软件故障的注入故障类型,以此来确定该实体元素集的故障注入策略。这种方法以客观数据的挖掘和分析来驱动故障注入策略的设计,指导测试人员往特定的软件模块中针对性地注入最有可能导致软件系统出现健壮性、容错性、容灾性和服务高可用性故障的缺陷,提高了故障注入的工作效率,工作结果也具有较高的准确度和可信度。进一步的,步骤C建立注入故障类型数据集,其中包括健壮性、容错性、容灾性和服务高可用性注入故障类型,注入故障类型数据集包含了以下字段:注入故障类型id、注入故障类型名称,并且将其保存在数据库的注入故障类型表中;根据软件模块的实际运行情况,建立缺陷数据与故障类型的关联关系。进一步的,步骤D包括:以软件模块的实体元素集为观测序列,注入故障类型为隐藏状态序列;所述的隐马可夫模型λ为:λ=(A,B,π),其中A为隐藏状态序列的状态转移概率的矩阵,B为隐藏状态序列生成观测序列的概率矩阵,π为初始的隐藏状态序列的概率分布矩阵;初始化隐马可夫模型参数:根据实体元素id序列到注入故障类型id序列的转换,将模型参数变量设置为1,表示实体元素到注入故障类型的转换是必然发生的并且每一个实体元素均有对应的注入故障类型。进一步的,步骤E包括:基于步骤B和步骤C得到的训练样本集和测试样本集,从训练样本集中任意挑选一组数据,输入初始化参数后的隐马可夫模型,采用极大似然估计法进行隐马可夫模型参数的估计,得到估计结果后,通过损失函数进行训练效果度量,如果度量结果超过给定阈值,则使用训练样本集中余下的数据继续估计,进行参数的调校;否则,用测试样本集进行测试,如果测试结果符合要求,得到一组能够最优拟合训练数据集的模型参数,即得到参数最优的注入故障预测模型;如果预测模型不能很好的拟合测试结果,则交换训练样本集和测试样本集的数据,重新进行训练和测试。本专利技术以客观数据的挖掘和分析来驱动故障注入策略的设计,指导测试人员向特定的软件模块中针对性地注入最有可能导致软件系统出现健壮性、容错性、容灾性和服务高可用性故障的缺陷,提高了故障注入的工作效率,工作结果也具有较高的准确度和可信度。以下结合实施例的具体实施方式,对本专利技术的上述内容再作进一步的详细说明。但不应将此理解为本专利技术上述主题的范围仅限于以下的实例。在不脱离本专利技术上述技术思想情况下,根据本领域普通技术知识和惯用手段做出的各种替换或变更,均应包括在本专利技术的范围内。附图说明图1为本专利技术一种基于历史缺陷数据挖掘的软件故障注入方法的流程图。具体实施方式如图1所示本专利技术一种基于历史缺陷数据挖掘的软件故障注入方法的流程图,包括:A.根据软件的界面模块、功能模块和程序模块包含的实体元素,在数据库的实体元素表中查询出实体元素记录;B.根据实体元素数据记录,在数据库的缺陷表中查询所述本文档来自技高网...

【技术保护点】
1.一种基于历史缺陷数据挖掘的软件故障注入方法,其特征包括:/nA.根据软件的界面模块、功能模块和程序模块中包含的实体元素,在数据库的实体元素表中查找出相对应的实体元素的数据记录,根据所述实体元素的数据记录,在数据库的数据缺陷表中查询出这些实体元素对应的所有缺陷数据记录;/nB.将所有缺陷数据记录分为两个数据集:测试环境缺陷数据集和生产环境缺陷数据集,在所述两个数据集中均包含了缺陷数据的以下字段:缺陷id、缺陷所属的实体元素id、缺陷类别和缺陷所在环境;/nC.建立注入故障类型数据集,根据测试环境中软件模块的实际运行情况,针对测试环境缺陷数据集中的每一个缺陷数据,建立该缺陷数据与注入故障类型的关联关系数据集;根据生产环境中软件模块的实际运行情况,针对生产环境缺陷数据集中的每一个缺陷数据,建立该缺陷数据与注入故障类型的关联关系数据集;/n并将所有缺陷数据与注入故障类型的关联关系数据保存在数据库中的缺陷数据与注入故障关系表中,每一条关系数据至少包含以下字段:缺陷id、注入故障类型id;/nD.初始化隐马可夫模型λ的参数, 建立注入故障预测模型;/nE.以测试环境缺陷数据集和缺陷数据与注入故障类型的关联关系数据集一起作为训练样本集,以及将生产环境缺陷数据集和缺陷数据与注入故障类型的关联关系数据集一起作为测试样本集,用训练样本集和测试样本集对注入故障预测模型进行训练和测试,当训练误差值低于阈值时,终止训练,得到满足要求的最优参数的注入故障预测模型;/nF.根据软件模块的当前变更内容,分析变更内容中所包括的实体元素,并在数据库中查询出所述对应的实体元素对应的id,形成待预测的实体元素id序列;将所述待预测的实体元素id序列和最优参数的注入故障预测模型一起输入维特比算法,得到最优的注入故障类型id序列;/nG.根据得到的最优注入故障类型id序列,在注入故障类型表中查询出该注入故障类型数据,得到注入故障类型预测结果;在缺陷数据与注入故障关系表中查询出缺陷数据,得到导致这些注入故障的缺陷数据;/nH.根据得到的注入故障类型预测结果,以及对应的缺陷数据,得到需要注入软件模块的每一个实体元素的缺陷类型,从而设计出软件模块的缺陷构造策略,进行缺陷构造和模拟,实施故障注入,判断软件模块的故障状态。/n...

【技术特征摘要】
1.一种基于历史缺陷数据挖掘的软件故障注入方法,其特征包括:
A.根据软件的界面模块、功能模块和程序模块中包含的实体元素,在数据库的实体元素表中查找出相对应的实体元素的数据记录,根据所述实体元素的数据记录,在数据库的数据缺陷表中查询出这些实体元素对应的所有缺陷数据记录;
B.将所有缺陷数据记录分为两个数据集:测试环境缺陷数据集和生产环境缺陷数据集,在所述两个数据集中均包含了缺陷数据的以下字段:缺陷id、缺陷所属的实体元素id、缺陷类别和缺陷所在环境;
C.建立注入故障类型数据集,根据测试环境中软件模块的实际运行情况,针对测试环境缺陷数据集中的每一个缺陷数据,建立该缺陷数据与注入故障类型的关联关系数据集;根据生产环境中软件模块的实际运行情况,针对生产环境缺陷数据集中的每一个缺陷数据,建立该缺陷数据与注入故障类型的关联关系数据集;
并将所有缺陷数据与注入故障类型的关联关系数据保存在数据库中的缺陷数据与注入故障关系表中,每一条关系数据至少包含以下字段:缺陷id、注入故障类型id;
D.初始化隐马可夫模型λ的参数,建立注入故障预测模型;
E.以测试环境缺陷数据集和缺陷数据与注入故障类型的关联关系数据集一起作为训练样本集,以及将生产环境缺陷数据集和缺陷数据与注入故障类型的关联关系数据集一起作为测试样本集,用训练样本集和测试样本集对注入故障预测模型进行训练和测试,当训练误差值低于阈值时,终止训练,得到满足要求的最优参数的注入故障预测模型;
F.根据软件模块的当前变更内容,分析变更内容中所包括的实体元素,并在数据库中查询出所述对应的实体元素对应的id,形成待预测的实体元素id序列;将所述待预测的实体元素id序列和最优参数的注入故障预测模型一起输入维特比算法,得到最优的注入故障类型id序列;
G.根据得到的最优注入故障类型id序列,在注入故障类型表中查询出该注入故障类型数据,得到注入故障类型预测结果;在缺陷数据与注入故障关系表中查询出缺陷数据,得到导致这些注入故障的缺陷...

【专利技术属性】
技术研发人员:熊阳
申请(专利权)人:四川新网银行股份有限公司
类型:发明
国别省市:四川;51

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

1