logo好方法网

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


技术摘要:
本发明一种基于历史缺陷数据挖掘的软件故障注入方法,包括:A.查询软件的实体元素记录;B.查询缺陷数据;建立缺陷和注入故障类型的关联关系并保存;C.初始化隐马可夫模型参数;使用数据训练模型,得到最优参数的模型;D.获取软件变更内容包含的实体元素;E.将最优参数  全部
背景技术:
软件故障注入是指使用特定的工具和技术来构造或者触发软件系统的某一个或 某一些缺陷,使得软件系统处于故障状态,在故障发生后,观察软件系统的短期和长期运行 状态,评估软件系统是否具备健壮性、容错性、容灾性和服务高可用性。通常来说,软件故障 注入的原理是使用特定的工具来修改软件系统的程序执行语句、数据库中的数据或者内存 中的数据来模拟软件缺陷的发生。软件故障注入的技术主要有调试器注入、设备驱动器注 入、网络通信注入和硬件注入等。 目前对如何分析应该往软件系统的哪个模块中注入缺陷、注入何种缺陷以及注入 缺陷后会造成何种故障的问题,通常是由测试人员根据自己的经验来判断软件系统的哪些 模块的健壮性、容错性、容灾性和服务高可用性相对较差,从而注入各种常见缺陷以广泛检 测软件系统的健壮性、容错性、容灾性和服务高可用性。这种做法的工作量巨大,效率低下, 并且会受到测试人员的经验影响,具有较大的随意性,工作质量也难以保证。
技术实现要素:
本发明提供一种基于历史缺陷数据挖掘的软件故障注入方法,以客观数据的挖掘 和分析来驱动故障注入策略的设计,指导测试人员向特定的软件模块中针对性地注入最有 可能导致软件系统出现健壮性、容错性、容灾性和服务高可用性故障的缺陷,提高了故障注 入的工作效率,工作结果也具有较高的准确度和可信度。 本发明一种基于历史缺陷数据挖掘的软件故障注入方法,包括: A.根据软件的界面模块、功能模块和程序模块包含的实体元素,在数据库的实体元素 表中查找出相对应的实体元素的数据记录,根据所述实体元素的数据记录,在数据库的数 据缺陷表中查询出这些实体元素对应的所有缺陷数据记录; 其中所述软件的界面模块是指软件的图形用户界面;功能模块是软件的各种功能组 件;程序模块是指软件的程序、代码行等。 B.将所有缺陷数据记录分为两个数据集:测试环境缺陷数据集和生产环境缺陷数 据集,在所述两个数据集中均包含了缺陷数据的以下字段:缺陷id、缺陷所属的实体元素 id、缺陷类别和缺陷所在环境; C.建立注入故障类型数据集;并且根据测试环境中软件模块的实际运行情况,针对测 试环境缺陷数据集中的每一个缺陷数据,建立该缺陷数据与注入故障类型的关联关系数据 集;以及根据生产环境中软件模块的实际运行情况,针对生产环境缺陷数据集中的每一个 缺陷数据,建立该缺陷数据与注入故障类型的关联关系数据集; 并将所有缺陷数据与注入故障类型的关联关系数据保存在数据库中的缺陷数据与注 4 CN 111597122 A 说 明 书 2/7 页 入故障关系表中,每一条关系数据至少包含以下字段:缺陷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得到的训练样本集和测试样本集,从训 练样本集中任意挑选一组数据,输入初始化参数后的隐马可夫模型,采用极大似然估计法 进行隐马可夫模型参数的估计,得到估计结果后,通过损失函数进行训练效果度量,如果度 量结果超过给定阈值,则使用训练样本集中余下的数据继续估计,进行参数的调校;否则, 用测试样本集进行测试,如果测试结果符合要求,得到一组能够最优拟合训练数据集的模 型参数,即得到参数最优的注入故障预测模型;如果预测模型不能很好的拟合测试结果,则 5 CN 111597122 A 说 明 书 3/7 页 交换训练样本集和测试样本集的数据,重新进行训练和测试。 本发明以客观数据的挖掘和分析来驱动故障注入策略的设计,指导测试人员向特 定的软件模块中针对性地注入最有可能导致软件系统出现健壮性、容错性、容灾性和服务 高可用性故障的缺陷,提高了故障注入的工作效率,工作结果也具有较高的准确度和可信 度。 以下结合实施例的
下载此资料需消耗2积分,
分享到:
收藏