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

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

Info

Publication number
CN111597122A
CN111597122A CN202010724704.9A CN202010724704A CN111597122A CN 111597122 A CN111597122 A CN 111597122A CN 202010724704 A CN202010724704 A CN 202010724704A CN 111597122 A CN111597122 A CN 111597122A
Authority
CN
China
Prior art keywords
injection
defect
data
fault
fault type
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010724704.9A
Other languages
English (en)
Other versions
CN111597122B (zh
Inventor
熊阳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sichuan XW Bank Co Ltd
Original Assignee
Sichuan XW Bank Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sichuan XW Bank Co Ltd filed Critical Sichuan XW Bank Co Ltd
Priority to CN202010724704.9A priority Critical patent/CN111597122B/zh
Publication of CN111597122A publication Critical patent/CN111597122A/zh
Application granted granted Critical
Publication of CN111597122B publication Critical patent/CN111597122B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/008Reliability or availability analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks

Abstract

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

Description

一种基于历史缺陷数据挖掘的软件故障注入方法
技术领域
本发明涉及计算机软件开发及软件测试领域,具体讲是一种基于历史缺陷数据挖掘的软件故障注入方法。
背景技术
软件故障注入是指使用特定的工具和技术来构造或者触发软件系统的某一个或某一些缺陷,使得软件系统处于故障状态,在故障发生后,观察软件系统的短期和长期运行状态,评估软件系统是否具备健壮性、容错性、容灾性和服务高可用性。通常来说,软件故障注入的原理是使用特定的工具来修改软件系统的程序执行语句、数据库中的数据或者内存中的数据来模拟软件缺陷的发生。软件故障注入的技术主要有调试器注入、设备驱动器注入、网络通信注入和硬件注入等。
目前对如何分析应该往软件系统的哪个模块中注入缺陷、注入何种缺陷以及注入缺陷后会造成何种故障的问题,通常是由测试人员根据自己的经验来判断软件系统的哪些模块的健壮性、容错性、容灾性和服务高可用性相对较差,从而注入各种常见缺陷以广泛检测软件系统的健壮性、容错性、容灾性和服务高可用性。这种做法的工作量巨大,效率低下,并且会受到测试人员的经验影响,具有较大的随意性,工作质量也难以保证。
发明内容
本发明提供一种基于历史缺陷数据挖掘的软件故障注入方法,以客观数据的挖掘和分析来驱动故障注入策略的设计,指导测试人员向特定的软件模块中针对性地注入最有可能导致软件系统出现健壮性、容错性、容灾性和服务高可用性故障的缺陷,提高了故障注入的工作效率,工作结果也具有较高的准确度和可信度。
本发明一种基于历史缺陷数据挖掘的软件故障注入方法,包括:
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. 根据实体元素数据记录,在数据库的缺陷表中查询所述实体元素对应的所有缺陷数据记录。
B1. 将所有缺陷数据记录分为两个数据集:测试环境缺陷数据集和生产环境缺陷数据集。两个数据集均包含了缺陷数据的以下字段:缺陷id、缺陷所属实体元素id、缺陷类别、缺陷所在环境。
C. 建立软件模块的所有缺陷数据记录和注入故障类型的对应关系;
C1.建立注入故障类型数据集,包括了健壮性、容错性、容灾性、服务高可用性等所有注入故障类型。注入故障类型数据集包含了以下字段:注入故障类型id、注入故障类型名称,保存在数据库的注入故障类型表中;
C2.根据测试环境中软件模块的实际运行情况,针对测试环境缺陷数据集中的每一个缺陷数据,建立该缺陷与某一个或者某几个注入故障类型的关联关系;
C3.根据生产环境中软件模块的实际运行情况,针对生产环境缺陷数据集中的每一个缺陷数据,建立该缺陷与某一个或者某几个注入故障类型的关联关系;
C4.将上述所有缺陷数据与注入故障类型的关联关系数据保存在数据库中的缺陷与注入故障关系表中,每一条关系数据包含以下字段:缺陷id、注入故障类型id。
D.初始化隐马可夫模型参数, 建立注入故障预测模型;
D1.以实体元素id序列为观测序列、注入故障类型id序列为隐藏状态序列,建立隐马可夫模型λ=(A,B,π),其中,A为隐藏状态序列的状态转移概率的矩阵,B为隐藏状态序列生成观测序列的概率矩阵,π为初始的隐藏状态序列的概率分布矩阵;
D2. 初始化隐马可夫模型参数:根据实体元素id序列到注入故障类型id序列的转换,将模型参数变量设置为1,表示实体元素到注入故障类型的转换是必然发生的,每一个实体元素均有对应的注入故障类型。
E.使用训练样本集和测试样本集进行训练和测试,得到最优参数的注入故障预测模型;
E1.基于步骤B得到的训练样本集和测试样本集,从训练样本集中挑选一组数据,输入初始化后的隐马可夫模型,采用极大似然估计法来估计模型参数, 进行隐马可夫模型参数的估计;
E2.根据步骤E1中得到的估计结果后,通过损失函数进行训练效果度量,若度量结果超过给定阈值,则使用训练样本集中余下的训练数据,重复E1步骤,进行参数的调校,否则,用测试样本集进行测试,若测试结果符合要求,得到一组能够最优拟合训练数据集的模型参数,即得到参数最优的预测模型;否则,将测试样本集作为训练样本集,训练样本集作为测试样本集进行训练和测试, 如果预测模型不能很好的拟合测试结果,则交换训练样本集和测试样本集的数据,重新进行训练和测试。
F.根据软件模块的当前变更内容,将变更内容中所包括的实体元素集和注入故障预测模型一起输入维特比算法得到注入故障类型预测结果,以及与之关联的缺陷数据记录;
F1.根据软件模块的当前变更内容,分析变更内容中所包括的实体元素,并在数据库中查询出所有实体元素对应的id,形成待预测的实体元素id序列。将待预测的实体元素id序列和最优参数的预测模型一起输入维特比算法,得到最优的注入故障类型id序列;
F2.根据F1得到的注入故障类型id序列,在注入故障类型表中表查询出注入故障类型数据,得到注入故障类型预测结果。
F3.根据F1得到的注入故障类型id序列,在缺陷与注入故障关系表中查询出缺陷数据,得到导致这些注入故障的缺陷数据。
G. 根据实体元素集的注入故障类型预测结果和缺陷数据记录,设计整个软件模块的故障注入策略,判断软件的故障表现。
实施例:
假定现在有一个网站,包含“首页”、“注册页面”、“购物车页面”等模块。现在需要对“注册页面”这个模块进行新功能开发,该模块包含了“A:用户名”、“B:设置密码”、“C:确认密码”、“D:注册按钮”等四个实体元素。A、B、C、D四个实体元素在过往的软件研发历史中出现过100个缺陷,其中6个缺陷举例如下:
测试环境缺陷1:
(a)测试用例:访客进入注册页面,输入不存在的用户名,输入设置密码,输入确认密码,点击注册按钮。期望:注册页面提示“注册成功”
(b)发生缺陷步骤:期望:注册页面提示“注册成功”
(c)发生缺陷实体元素:注册页面
(d)缺陷类别:功能故障-显示故障-文案错误
(e)缺陷状态:关闭
测试环境缺陷2:
(a)测试用例:访客进入注册页面,输入不存在的用户名,输入设置密码,输入确认密码,点击注册按钮。期望:注册页面提示“注册成功”
(b)发生缺陷步骤:访客进入注册页面
(c)发生缺陷实体元素:注册页面
(d)缺陷类别:性能故障-网络故障-页面响应超时
(e)缺陷状态:关闭
测试环境缺陷3:
(a)测试用例:访客进入注册页面,输入不存在的用户名,输入设置密码,输入确认密码,点击注册按钮。期望:注册页面提示“注册成功”
(b)发生缺陷步骤:输入设置密码
(c)发生缺陷实体元素:设置密码
(d)缺陷类别:用户体验故障-用户体验不友好
(e)缺陷状态:关闭
生产环境缺陷1:
(a)测试用例:访客进入注册页面,输入不存在的用户名,输入设置密码,输入确认密码,点击注册按钮。期望:注册页面提示“注册成功”
(b)发生缺陷步骤:期望:注册页面提示“注册成功”
(c)发生缺陷实体元素:注册页面
(d)缺陷类别:功能故障-显示故障-文案错误
(e)缺陷状态:关闭
生产环境缺陷2:
(a)测试用例:访客进入注册页面,输入不存在的用户名,输入设置密码,输入确认密码,点击注册按钮。期望:注册页面提示“注册成功”
(b)发生缺陷步骤:访客进入注册页面
(c)发生缺陷实体元素:注册页面
(d)缺陷类别:性能故障-网络故障-页面响应超时
(e)缺陷状态:关闭
生产环境缺陷3:
(a)测试用例:访客进入注册页面,输入不存在的用户名,输入设置密码,输入确认密码,点击注册按钮。期望:注册页面提示“注册成功”
(b)发生缺陷步骤:输入确认密码
(c)发生缺陷实体元素:确认密码
(d)缺陷类别:容错性故障-提示错误
(e)缺陷状态:关闭
这6个历史缺陷,关联了4个注入故障类型:“X:健壮性故障”、“Y:容错性故障”、“Z:容灾性故障”、“W:高可用性故障”。
一、根据软件模块的变更内容,获取软件模块的所有实体元素,并提取这些实体元素的历史缺陷数据。
a.“注册页面”模块是本次软件更新需要开发新功能的软件模块,且包含“A:用户名”、“B:设置密码”、“C:确认密码”、“D:注册按钮”等四个实体元素,根据四个实体元素语义,在数据库的实体元素表查询到以上四个实体元素的信息。
b.根据四个实体元素的ID,在数据库的缺陷表中,查询到四个实体元素关联的所有历史缺陷,数量为100个,其中包括了测试环境缺陷(1)、测试环境缺陷(2)、测试环境缺陷(3)、生产环境缺陷(1)、生产环境缺陷(2)、生产环境缺陷(3)等6个缺陷。
c.将这6个缺陷数据记录,按照测试环境缺陷和生产环境缺陷两类进行划分,划分为测试环境缺陷数据集和生产环境缺陷数据集。其中,测试环境缺陷(1)、测试环境缺陷(2)、测试环境缺陷(3)属于测试环境缺陷数据集;生产环境缺陷(1)、生产环境缺陷(2)、生产环境缺陷(3)属于生产环境缺陷数据集。以上6个缺陷在缺陷表中的数据记录如表1所示:
表1:
Id 实体元素Id 缺陷类别 缺陷所在环境
1 A 功能故障-显示故障-文案错误 测试环境
2 B 性能故障-网络故障-页面响应超时 测试环境
3 C 用户体验故障-用户体验不友好 测试环境
4 D 功能故障-显示故障-文案错误 生产环境
5 A 性能故障-网络故障-页面响应超时 生产环境
6 C 容错性故障-提示错误 生产环境
二、根据缺陷数据对应的注入故障类型,建立注入故障类型数据表。并建立缺陷与注入故障的关系数据表。
a.根据步骤一.b中的6个缺陷所关联的4个注入故障类型,即“X:健壮性故障”、“Y:容错性故障”、“Z:容灾性故障”、“W:高可用性故障”,建立注入故障类型数据表,注入故障类型数据表包含了以下字段:注入故障类型id、注入故障类型名称。并将X、Y、Z、W四个注入故障类型数据保存在故障类型数据表中。如表2所示:
表2:
Id 名称
X 健壮性故障
Y 容错性故障
Z 容灾性故障
W 高可用性故障
b.建立缺陷与注入故障类型关系表,将上述6个缺陷与4个注入故障类型之间的关联关系数据保存在表中。如表3所示:
缺陷id 注入故障类型id:
表3:
缺陷id 注入故障类型id
1 X
2 W
3 X
4 X
5 W
6 Y
三、建立隐马可夫模型后,初始化隐马可夫模型的参数。
a.以实体元素ID序列{A、B、C、D}作为观测序列,注入故障类型ID序列{X、Y、Z、W}作为隐藏状态序列,建立隐马可夫模型。
b.隐马可夫模型模型参数变量设置为1,用于后续训练。
四、训练隐马可夫模型。
a.以实体元素ID集、实体元素ID关联的测试环境缺陷数据、测试环境缺陷关联的注入故障数据一起作为训练样本集,训练隐马可夫模型。根据训练结果逐次调校,直到对训练样本集最佳拟合。
b.以实体元素ID集、实体元素ID关联的生产环境缺陷数据、生产环境缺陷关联的注入故障数据一起作为测试样本集,测试隐马可夫模型。继续调校参数,直到对测试样本集最佳拟合。
c.计算误差,判断是否低于阈值。若未达到阈值,则交换训练样本集和测试样本集,继续训练和测试。。
d.重复以上步骤,最后得到模型的最优参数,即得到最优参数的预测模型。
五、使用预测模型和新的实体元素ID序列进行注入故障类型序列的预测。
a.新的待预测的软件模块按照步骤一和步骤四处理为实体元素ID序列,举例如下:
观测序列:{A,D,E,B,C}
b.将预测模型和观测序列输入已实现维特比算法的程序,求解注入故障类型ID序列。
输出结果:{X,W,Y}
六、将预测结果转换为故障注入策略,并实施。
a.将步骤五中得到的注入故障类型ID序列,按照id在数据库的注入故障类型表中查找对应的注入故障类型,并输出。
b.根据步骤五中得到的注入故障类型ID序列,按照id在数据库的缺陷与注入故障关系表中查找缺陷id,并输出。
c.根据六.b中得到的缺陷id,结合步骤五中的待预测实体元素ID序列中的每一个实体元素id,在数据库中的缺陷表中查找缺陷数据,并输出。
d.根据六.c中得到的缺陷数据中的缺陷类型,设计软件模块的缺陷构造策略,进行缺陷构造和模拟,实施故障注入,观察和评估软件模块的故障状态。

Claims (4)

1.一种基于历史缺陷数据挖掘的软件故障注入方法,其特征包括:
A.根据软件的界面模块、功能模块和程序模块中包含的实体元素,在数据库的实体元素表中查找出相对应的实体元素的数据记录,根据所述实体元素的数据记录,在数据库的数据缺陷表中查询出这些实体元素对应的所有缺陷数据记录;
B.将所有缺陷数据记录分为两个数据集:测试环境缺陷数据集和生产环境缺陷数据集,在所述两个数据集中均包含了缺陷数据的以下字段:缺陷id、缺陷所属的实体元素id、缺陷类别和缺陷所在环境;
C.建立注入故障类型数据集,根据测试环境中软件模块的实际运行情况,针对测试环境缺陷数据集中的每一个缺陷数据,建立该缺陷数据与注入故障类型的关联关系数据集;根据生产环境中软件模块的实际运行情况,针对生产环境缺陷数据集中的每一个缺陷数据,建立该缺陷数据与注入故障类型的关联关系数据集;
并将所有缺陷数据与注入故障类型的关联关系数据保存在数据库中的缺陷数据与注入故障关系表中,每一条关系数据至少包含以下字段:缺陷id、注入故障类型id;
D.初始化隐马可夫模型λ的参数, 建立注入故障预测模型;
E.以测试环境缺陷数据集和缺陷数据与注入故障类型的关联关系数据集一起作为训练样本集,以及将生产环境缺陷数据集和缺陷数据与注入故障类型的关联关系数据集一起作为测试样本集,用训练样本集和测试样本集对注入故障预测模型进行训练和测试,当训练误差值低于阈值时,终止训练,得到满足要求的最优参数的注入故障预测模型;
F.根据软件模块的当前变更内容,分析变更内容中所包括的实体元素,并在数据库中查询出所述对应的实体元素对应的id,形成待预测的实体元素id序列;将所述待预测的实体元素id序列和最优参数的注入故障预测模型一起输入维特比算法,得到最优的注入故障类型id序列;
G.根据得到的最优注入故障类型id序列,在注入故障类型表中查询出该注入故障类型数据,得到注入故障类型预测结果;在缺陷数据与注入故障关系表中查询出缺陷数据,得到导致这些注入故障的缺陷数据;
H.根据得到的注入故障类型预测结果,以及对应的缺陷数据,得到需要注入软件模块的每一个实体元素的缺陷类型,从而设计出软件模块的缺陷构造策略,进行缺陷构造和模拟,实施故障注入,判断软件模块的故障状态。
2.如权利要求1所述的一种基于历史缺陷数据挖掘的软件故障注入方法,其特征为:步骤C建立注入故障类型数据集,其中包括健壮性、容错性、容灾性和服务高可用性注入故障类型,注入故障类型数据集包含了以下字段:注入故障类型id、注入故障类型名称,并且将其保存在数据库的注入故障类型表中;根据软件模块的实际运行情况,建立缺陷数据与故障类型的关联关系。
3.如权利要求1所述的一种基于历史缺陷数据挖掘的软件故障注入方法,其特征为:步骤D包括:以实体元素id序列为观测序列、注入故障类型id序列为隐藏状态序列,建立隐马可夫模型λ, λ=(A,B,π),其中A为隐藏状态序列的状态转移概率的矩阵,B为隐藏状态序列生成观测序列的概率矩阵,π为初始的隐藏状态序列的概率分布矩阵;
初始化隐马可夫模型参数:根据实体元素id序列到注入故障类型id序列的转换,将模型参数变量设置为1,表示实体元素到注入故障类型的转换是必然发生的,每一个实体元素均有对应的注入故障类型。
4.如权利要求1所述的一种基于历史缺陷数据挖掘的软件故障注入方法,其特征为:步骤E包括:基于步骤B和步骤C得到训练样本集和测试样本集,从训练样本集中任意挑选一组数据,输入初始化后的隐马可夫模型,采用极大似然估计法进行隐马可夫模型参数的估计,得到估计结果后,通过损失函数进行训练效果度量,如果度量结果超过给定阈值,则使用训练样本集中余下的数据继续估计,进行参数的调校;如果度量结果没有超过给定阈值,则用测试样本集进行测试,如果测试结果符合要求,得到一组能够最优拟合训练样本集的模型参数,即得到参数最优的注入故障预测模型;如果预测模型不能很好的拟合测试结果,则交换训练样本集和测试样本集的数据,重新进行训练和测试。
CN202010724704.9A 2020-07-24 2020-07-24 一种基于历史缺陷数据挖掘的软件故障注入方法 Active CN111597122B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010724704.9A CN111597122B (zh) 2020-07-24 2020-07-24 一种基于历史缺陷数据挖掘的软件故障注入方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010724704.9A CN111597122B (zh) 2020-07-24 2020-07-24 一种基于历史缺陷数据挖掘的软件故障注入方法

Publications (2)

Publication Number Publication Date
CN111597122A true CN111597122A (zh) 2020-08-28
CN111597122B CN111597122B (zh) 2020-11-06

Family

ID=72183058

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010724704.9A Active CN111597122B (zh) 2020-07-24 2020-07-24 一种基于历史缺陷数据挖掘的软件故障注入方法

Country Status (1)

Country Link
CN (1) CN111597122B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112380084A (zh) * 2020-12-05 2021-02-19 中国人民解放军32181部队 一种故障注入与仿真验证方法
CN113539502A (zh) * 2021-07-15 2021-10-22 中国人民解放军联勤保障部队第九六〇医院 一种基于临床电子病历的药品不良反应数据模拟算法
CN113609001A (zh) * 2021-07-13 2021-11-05 中国银行股份有限公司 测试问题确定方法和装置
CN114356641A (zh) * 2022-03-04 2022-04-15 中南大学 一种增量式的软件缺陷预测方法、系统、设备及存储介质
CN117130945A (zh) * 2023-10-26 2023-11-28 中国证券登记结算有限责任公司 一种测试方法和装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130103972A1 (en) * 2011-10-24 2013-04-25 Emre Özer Data processing apparatus and method for analysing transient faults occurring within storage elements of the data processing apparatus
CN108563555A (zh) * 2018-01-10 2018-09-21 江苏工程职业技术学院 基于四目标优化的故障更改代码预测方法
CN108960654A (zh) * 2018-07-11 2018-12-07 佛山科学技术学院 一种面向机器学习的装备部件健康管理方法及系统
CN109101010A (zh) * 2018-09-30 2018-12-28 深圳市元征科技股份有限公司 一种汽车故障诊断方法及相关设备
CN109697162A (zh) * 2018-11-15 2019-04-30 西北大学 一种基于开源代码库的软件缺陷自动检测方法
CN110175120A (zh) * 2019-05-20 2019-08-27 北京理工大学 一种基于强化学习的模糊测试用例自适应变异方法和装置
CN110389892A (zh) * 2018-04-23 2019-10-29 南京大学 一种基于云平台历史故障数据的故障注入方法
CN110727593A (zh) * 2019-10-12 2020-01-24 四川新网银行股份有限公司 基于历史需求数据挖掘的测试用例智能生成方法及介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130103972A1 (en) * 2011-10-24 2013-04-25 Emre Özer Data processing apparatus and method for analysing transient faults occurring within storage elements of the data processing apparatus
CN108563555A (zh) * 2018-01-10 2018-09-21 江苏工程职业技术学院 基于四目标优化的故障更改代码预测方法
CN110389892A (zh) * 2018-04-23 2019-10-29 南京大学 一种基于云平台历史故障数据的故障注入方法
CN108960654A (zh) * 2018-07-11 2018-12-07 佛山科学技术学院 一种面向机器学习的装备部件健康管理方法及系统
CN109101010A (zh) * 2018-09-30 2018-12-28 深圳市元征科技股份有限公司 一种汽车故障诊断方法及相关设备
CN109697162A (zh) * 2018-11-15 2019-04-30 西北大学 一种基于开源代码库的软件缺陷自动检测方法
CN110175120A (zh) * 2019-05-20 2019-08-27 北京理工大学 一种基于强化学习的模糊测试用例自适应变异方法和装置
CN110727593A (zh) * 2019-10-12 2020-01-24 四川新网银行股份有限公司 基于历史需求数据挖掘的测试用例智能生成方法及介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CHRIS SCHNEIDER 等: ""Autonomous Fault Detection in Self-Healing Systems:Comparing Hidden Markov Models and Artificial Neural Networks"", 《PROCEEDINGS OF INTERNATIONAL WORKSHOP ON ADAPTIVE SELF-TUNING COMPUTER SYSTEMS》 *
马骅 等: ""基于历史的云平台故障注入测试"", 《计算机学报》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112380084A (zh) * 2020-12-05 2021-02-19 中国人民解放军32181部队 一种故障注入与仿真验证方法
CN112380084B (zh) * 2020-12-05 2024-03-26 中国人民解放军32181部队 一种故障注入与仿真验证方法
CN113609001A (zh) * 2021-07-13 2021-11-05 中国银行股份有限公司 测试问题确定方法和装置
CN113539502A (zh) * 2021-07-15 2021-10-22 中国人民解放军联勤保障部队第九六〇医院 一种基于临床电子病历的药品不良反应数据模拟算法
CN114356641A (zh) * 2022-03-04 2022-04-15 中南大学 一种增量式的软件缺陷预测方法、系统、设备及存储介质
CN114356641B (zh) * 2022-03-04 2022-05-27 中南大学 一种增量式的软件缺陷预测方法、系统、设备及存储介质
CN117130945A (zh) * 2023-10-26 2023-11-28 中国证券登记结算有限责任公司 一种测试方法和装置
CN117130945B (zh) * 2023-10-26 2024-02-09 中国证券登记结算有限责任公司 一种测试方法和装置

Also Published As

Publication number Publication date
CN111597122B (zh) 2020-11-06

Similar Documents

Publication Publication Date Title
CN111597122B (zh) 一种基于历史缺陷数据挖掘的软件故障注入方法
US20070061144A1 (en) Batch statistics process model method and system
CN111459700A (zh) 设备故障的诊断方法、诊断装置、诊断设备及存储介质
CN111597121B (zh) 一种基于历史测试用例挖掘的精准测试方法
CN112052172B (zh) 第三方通道的快速测试方法、装置和电子设备
CN112860676B (zh) 应用于大数据挖掘和业务分析的数据清洗方法及云服务器
CN111782532B (zh) 一种基于网络异常节点分析的软件故障定位方法及系统
Hua et al. Validation of digital twins: challenges and opportunities
CN111339535A (zh) 面向智能合约代码的漏洞预测方法、系统、计算机设备和存储介质
CN112416800A (zh) 智能合约的测试方法、装置、设备及存储介质
CN115907829A (zh) 基于人工智能的用户账户分析方法及系统
CN113157551B (zh) 一种面向ros的差分模糊测试方法
CN115640155A (zh) 基于语句依赖和补丁相似性的程序自动修复方法与系统
CN114841663A (zh) Gps设备安装质量的核验方法、装置、设备及存储介质
CN111552639B (zh) 一种软件测试综合控制方法及系统
CN111538669A (zh) 一种基于历史问题回溯分析的测试案例抽取方法及装置
CN113434408B (zh) 一种基于测试预言的单元测试用例排序方法
CN116501531B (zh) 用于监测软件运行数据安全的软件插件配置方法和系统
CN113495831A (zh) 基于关键字生成测试用例的方法、系统、设备及介质
CN117370284B (zh) 一种日志错误数据追踪方法及系统
CN113268431B (zh) 一种rpa机器人软件的学习方法
CN117273620A (zh) 匹配分割字词以检测装置内元件正确性的系统及方法
CN118035100A (zh) 一种大模型增强的测试想定智能设计方法
Li et al. Board-level Functional Test Selection Based on Fault Tree Analysis
CN117370184A (zh) 接口测试方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant