发明内容
本申请所要解决的技术问题是提供一种软件故障注入方法,用以解决现有软件故障注入无法在线实时修改的问题。本申请还提供一种软件故障注入系统,用于保证上述方法在实际中的实现及应用。本申请提供的软件故障注入方法和系统的技术方案如下:
本申请实施例提供一种软件故障注入方法,应用于一软件故障注入系统中,所述软件故障注入系统包括上位机和与所述上位机连接的实时仿真机,所述方法包括:
所述上位机生成故障信息并发送至所述实时仿真机中;
所述实时仿真机依据所述故障信息,确定故障信号类型;
所述实时仿真机将所述故障信号类型对应的故障数据添加至无故障测试信号中,生成故障测试信号,并发送所述故障测试信号,由待测系统对所述故障测试信号进行仿真测试。
优选地,所述上位机生成故障信息并发送至所述实时仿真机之前,所述方法还包括:所述上位机构建故障注入模块,并将所述故障注入模块编译下载至所述实时仿真机。
优选地,所述故障注入模块包括故障切换模块和至少一个故障类型模块;
所述实时仿真机依据所述故障信息,确定故障信号类型包括:所述实时仿真机依据所述故障信息,获取所述故障切换模块所选择的所述至少一个故障类型模块,确定所述所选择的故障类型模块对应的故障信号类型。
优选地,所述故障注入模块还包括:故障使能模块;
所述实时仿真机在所述故障使能模块的使能变量有效的情况下,将所述故障信号类型对应的故障数据添加至无故障测试信号中。
优选地,所述上位机生成故障信息包括:所述上位机获取所述故障切换模块和所述故障使能模块的取值,依据所述取值生成所述故障信息。
优选地,所述上位机构建所述故障注入模块,并将所述故障注入模块编译下载至所述实时仿真机之后,所述方法还包括:
所述实时仿真机对所述故障注入模块进行验证,得到模块验证结果;
所述实时仿真机在判断所述模块验证结果与所述上位机的数字仿真结果不一致的情况下,发送反馈信息至所述上位机;
所述上位机调整所述故障注入模块,并继续对调整后的所述故障注入模块编译下载至所述实时仿真机,由所述实时仿真机继续对调整后的故障注入模块进行验证直至调整后的故障注入模块的模块验证结果与所述上位机的数字仿真结果一致;
所述上位机在所述调整后的故障注入模块的模块验证结果与所述上位机的数字仿真结果一致的情况下,生成上位机生成故障信息并发送至所述实时仿真机。
本申请实施例还提供一种软件故障注入系统,所述软件故障注入系统包括上位机和与所述上位机连接的实时仿真机,所述上位机包括:信息生成单元和信息发送单元,其中,所述信息生成单元用于生成故障信息,所述信息发送单元用于发送所述故障信息至所述实时仿真机中;
所述实时仿真机包括:选取单元、生成单元和信号发送单元,其中,
所述选取单元,用于依据所述故障信息,确定故障信号类型;
所述生成单元,用于将所述故障信号类型对应的故障数据添加至无故障测试信号中,生成故障测试信号;
所述信号发送单元,用于发送所述故障测试信号,由待测系统对所述故障测试信号进行仿真测试。
优选地,所述上位机还包括:构建单元和编译下载单元;
所述构建单元,用于构建故障注入模块;
所述编译下载单元,用于将所述故障注入模块编译下载至所述实时仿真机。
优选地,所述故障注入模块包括故障切换模块、故障使能模块和至少一个故障类型模块;
所述选取单元具体用于依据所述故障信息,获取所述故障切换模块所选择的所述至少一个故障类型模块,确定所述所选择的故障类型模块对应的故障信号类型;
所述生成单元具体用于在所述故障使能模块的使能变量有效的情况下,将所述故障信号类型对应的故障数据添加至无故障测试信号中。
优选地,所述实时仿真机还包括:验证单元,用于对所述故障注入模块进行验证,得到模块验证结果,并在所述模块验证结果与所述上位机的数字仿真结果不一致的情况下,触发所述信号发送单元发送反馈信息至所述上位机;
所述构建单元还用于在接收到所述反馈信息后,调整所述故障注入模块,直至调整后的故障注入模块的模块验证结果与所述上位机的数字仿真结果一致。
与现有技术相比,本申请包括以下优点:
本申请实施例提供的软件故障注入方法应用于一包括上位机和实时仿真机的软件故障注入系统中,其中上位机生成故障信息并发送至实时仿真机中,实时仿真机在接收到故障信息后,确定故障信号类型,并将故障信号类型对应的故障数据添加至无故障测试信号中,生成故障测试信号,再由待测系统对故障测试信号进行仿真测试。
与现有软件故障注入方法相比,本申请实施例提供的软件故障注入方法中,实时仿真机在生成故障测试信号的同时,上位机可以生成一故障信息,该故障信息不同于上位机之前所生成的故障信息,从而实现故障测试信号生成的同时,上位机在线修改实时仿真机下一次生成的故障测试信号所依据的故障信息,使得修改更加便捷。进一步,上位机可以在生成故障信息的同时,实时仿真机生成故障测试信号,实现了两种操作在不同设备中执行,相对于这两种操作在同一设备中执行,降低执行时间。
具体实施方式
首先对本申请实施例提供的软件故障注入方法进行简单说明,该软件故障注入方法,应用于一软件故障注入系统中,软件故障注入系统包括上位机和与上位机连接的实时仿真机,其特征在于,方法包括:
上位机生成故障信息并发送至实时仿真机中。
实时仿真机依据故障信息,确定故障信号类型。
实时仿真机将故障信号类型对应的故障数据添加至无故障测试信号中,生成故障测试信号,并发送故障测试信号,由待测系统对故障测试信号进行仿真测试。
本申请实施例提供的软件故障注入方法中,实时仿真机在生成故障测试信号的同时,上位机可以生成一故障信息,该故障信息不同于上位机之前所生成的故障信息,从而实现故障测试信号生成的同时,上位机在线修改实时仿真机下一次生成的故障测试信号所依据的故障信息,使得修改更加便捷。进一步,上位机可以在生成故障信息的同时,实时仿真机生成故障测试信号,实现了两种操作在不同设备中执行,相对于这两种操作在同一设备中执行,降低执行时间。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参阅图1,其示出了本申请实施例提供的一种软件故障注入方法的一种流程图,该软件故障注入方法应用于一软件故障注入系统中,软件故障注入系统包括上位机和与上位机连接的实时仿真机,可以包括以下步骤:
步骤101:上位机生成故障信息并发送至实时仿真机中。
步骤102:实时仿真机依据故障信息,确定故障信号类型。
在本申请实施例中,故障信息可以用于确定故障信号类型以及控制实时仿真机是否生成故障测试信号。其中故障信号类型用于指示生成的故障测试信号针对的测试类型,不同的故障信号类型,测试类型也不同,若故障信号类型是数据类型,则测试主要针对的是对不同环境下数据测试,若故障信号类型是逻辑类型,则测试主要针对的是程序的逻辑执行测试。
步骤103:实时仿真机将故障信号类型对应的故障数据添加至无故障测试信号中,生成故障测试信号,并发送故障测试信号,由待测系统对故障测试信号进行仿真测试。
可以理解的是,故障信息控制实时仿真机是否生成故障测试信号的一种可行方式是:故障信息可以携带一变量,该变量用于标识实时仿真机是否需要生成故障测试信号。当变量有效时,实时仿真机将故障信号类型对应的故障数据添加至无故障测试信号中,生成故障测试信号,否则实时仿真机直接发送无故障测试信号。
其中,变量有效可以通过变量的取值确定,例如当变量的取值为1时,实时仿真机确定变量有效,此时实时仿真机生成故障测试信号。当变量的取值为0时,实时仿真机确定变量无效,此时实时仿真机不再生成故障测试信号,直接输出无故障测试信号。
由于实时仿真机在生成故障测试信号的同时,上位机可以生成一故障信息,该故障信息不同于上位机之前所生成的故障信息,从而实现故障测试信号生成的同时,上位机在线修改实时仿真机下一次生成的故障测试信号所依据的故障信息,使得修改更加便捷。进一步,上位机可以在生成故障信息的同时,实时仿真机生成故障测试信号,实现了两种操作在不同设备中执行,相对于这两种操作在同一设备中执行,降低执行时间
请参阅图2,其示出了本申请实施例提供的一种软件故障注入方法的另一种流程图,可以包括以下步骤:
步骤201:上位机构建故障注入模块,并将故障注入模块编译下载至实时仿真机。
步骤202:实时仿真机依据故障信息,获取故障切换模块所选择的至少一个故障类型模块,确定所选择的故障类型模块对应的故障信号类型。
其中故障注入模块可以包括故障切换模块和至少一个故障类型模块,每个故障类型模块对应一种故障信号类型,该故障信号类型用于标识故障测试信号的主要用途。
故障切换模块则用于进行故障信号类型的选择,具体过程是:从故障注入模块中选择至少一个故障类型模块,将其选择的故障类型模块对应的故障信号类型作为故障测试信号的类型。
下面以图3所示故障注入模块为例进行详细说明,在图3中故障注入模块包括三个具有不同故障测试功能的故障类型模块,分别是可调参故障类型模块、模态切换故障类型模块和滤波故障类型模块。
其中可调参故障类型模块对应的故障信号类型为纠错测试类型,用于测试协议层的数据纠错能力,可以包括:超范围数据、空数据和错误数据三种纠错测试数据。
模态切换故障类型模块对应的故障信号类型为逻辑测试类型,用于测试协议层的逻辑执行能力,可以包括:逻辑故障数据和多模态数据两种逻辑测试数据。
滤波故障类型模块对应的故障信号类型为抗干扰测试类型,用于测试协议层的抗干扰能力,可以包括:噪声数据、超调数据和变频数据三种抗干扰测试数据。
这里需要说明的一点是:逻辑故障数据是将正常逻辑更改为错误逻辑测试协议层,如原有正常逻辑应该是:A→B→C,而在测试时将其更改为:A→C→B。多模态数据是测试协议层处于至少两种模态下的逻辑执行。超调数据表示被调参数动态偏离给定值的最大程度,用于测试在这种情况下抗干扰能力,变频数据用于改变通信双方中某一方的发送或接收信号的频率,测试另一方是否能正确接收到信号。
步骤203:实时仿真机在故障使能模块的使能变量有效的情况下,将故障信号类型对应的故障数据添加至无故障测试信号中,生成故障测试信号。
在图3所示的故障注入模块中,故障注入模块输入端输入的是无故障测试信号,其输出端输出无故障测试信号还是故障测试信号由故障注入模块的故障使能模块,其中故障使能模块中设置有一使能变量,用于确定是否生成故障测试信号。
具体的,故障使能模块的输出端输出的是使能变量数值,如果该使能变量为高电平,则说明使能变量有效,通过故障切换模块确定所要选取的软件故障注入模块,进一步由实时仿真机从确定的软件故障注入模块中选取故障信号类型。故障信号类型被添加至无故障测试信号中,输出故障测试信号。如果使能变量为低电平,则说明使能变量无效,则实时仿真机直接输出无故障测试信号。
可以理解的是:使能变量是否有效,可以通过判断使能变量的取值来确定。例如图3中使能变量的取值为1,表示使能变量有效,此时实时仿真机将故障信号类型对应的故障数据添加至无故障测试信号中,生成故障测试信号,并从故障注入模块的输出端输出。
相对于图3所示的故障注入模块,实时仿真机从故障信息中可以确定故障切换模块选择的是可调参故障类型模块,则实时仿真机进一步将可调参故障类型模块对应的故障数据添加至无故障测试信号中,生成故障测试信号。
步骤204:实时仿真机将故障测试信号发送至待测系统。
步骤205:待测系统对故障测试信号进行仿真测试,得到最终的故障测试结果。
此外,在本申请实施例提供的软件故障注入方法中,上位机的显示界面中提供一人机交互界面,故障切换模块和故障使能模块以变量形式展示在人机交互界面中,如图4所示。在该人机交互界面中,测试人员可以操作故障切换模块选项选择故障类型模块,当测试人员选中某一个故障类型模块,则表示实时仿真机生成的故障测试信号中具有该故障类型模块的故障信号类型。同样测试人员可以选择故障使能模块的使能变量的取值,以控制故障使能模块的使能变量是否有效。
测试人员在选择故障切换模块和故障使能模块的取值时,上位机同步获取这两个模块的取值,再依据两个模块的取值生成故障信息。
当然除了图4所示人机交互界面来手动控制故障信息外,还可以在上位机上预先设置不同情况下对应的故障信息,对于不同情况下故障信息不同,则上位机可以在不同情况下选取预先设置的故障信息,实现自动生成故障信息,这样实时仿真机可以生成具有不同测试功能的故障测试信号。
在这里需要指出的一点是:实时仿真机中的故障注入模块是由上位机构建,并由上位机编译并下载至实时仿真机中。其中上位机对故障注入模块的构建过程如下:
在图形化的建模工具,如MATLAB(Matrix Laboratory,矩阵实验室)/Simulink环境下,根据系统的故障注入类型和功能要求,搭建如图3所示的故障注入模块,并在数学仿真环境下对所搭建的故障注入模块进行数学仿真验证,得到数学仿真结果。数学仿真环境是指在上位机以数学工具搭建的一个模型环境。
当数学仿真验证符合开发人员所设定的设计结构和设计指标则认为该故障注入模型设计合理并具有实施性,则此时上位机对故障注入模块进行编译下载至实时仿真机中。
实时仿真机对该故障注入模块进行测试,由于实时仿真机和上位机测试故障注入模块的环境不同,所以两者的测试结果可能不同,当两者的测试结果不同时,实时仿真机发送反馈信息至上位机,由上位机调整故障注入模块。具体过程如图5所示流程图,可以包括以下步骤:
步骤501:实时仿真机对故障注入模块进行验证,得到模块验证结果。
步骤502:实时仿真机在判断模块验证结果与上位机的数字仿真结果不一致的情况下,发送反馈信息至上位机。
实时仿真机如果出现仿真超时或信号逻辑不正确的模块验证结果,则可以判断模块验证结果与上位机的数字仿真结果不一致,此时实时仿真机发送反馈信息至上位机,提示上位机调整故障注入模块。
步骤503:上位机调整故障注入模块,并继续对调整后的故障注入模块编译下载至实时仿真机,由实时仿真机继续对调整后的故障注入模块进行验证直至调整后的故障注入模块的模块验证结果与上位机的数字仿真结果一致。
步骤504:上位机在调整后的故障注入模块的模块验证结果与上位机的数字仿真结果一致的情况下,生成上位机生成故障信息并发送至实时仿真机。
上位机通过选择易于从数字仿真到实时仿真过渡的建模工具来搭建故障注入模块,并选用通用的实时仿真平台来验证故障注入模块,从而可以快速实现对故障模型的设计开发和验证。
本申请实施例提供的软件故障注入方法采用基于图3所示的故障注入模块,在该故障注入模块中添加可调参故障类型模块、模态切换故障类型模块和滤波故障类型模块等表示故障类型的模块,可以在仿真测试过程中,通过手动故障注入或者自动故障注入这两种软件故障注入管理方式,在线修改故障注入模块中的中各类型模块的取值,实现了在无需停止仿真测试过程即可进行故障修改,从而实现在线修改以及可快速地实现各类故障注入功能。
此外,本申请实施例将故障注入模块采用图形化的建模工具构建,使故障注入模块的搭建过程图形化、简单化、模块化,有模板可循,使用者无需深厚的编程基础即可实现故障模型设计与实现。同时上位机可以通过操作人员手动故障注入以及自动故障注入这两种软件故障注入管理方式的切换,使得故障注入过程更加灵活、便捷和高效。
与上述方法实施例相对应,本申请实施例还提供一种软件故障注入系统,其结构示意图请参阅图6所示,包括上位机1和与上位机1连接的实时仿真机2。其中,
上位机1包括:信息生成单元11和信息发送单元12,信息生成单元11,用于生成故障信息。信息发送单元12用于发送故障信息至实时仿真机2。
实时仿真机2包括:选取单元21、生成单元22和信号发送单元23,其中,选取单元21,用于依据故障信息,确定故障信号类型。
在本申请实施例中,故障信息可以用于确定故障信号类型以及控制实时仿真机2是否生成故障测试信号。其中故障信号类型用于指示生成的故障测试信号针对的测试类型,不同的故障信号类型,测试类型也不同,若故障信号类型是数据类型,则测试主要针对的是对不同环境下数据测试,若故障信号类型是逻辑类型,则测试主要针对的是程序的逻辑执行测试。
生成单元22,用于将故障信号类型对应的故障数据添加至无故障测试信号中,生成故障测试信号。可以理解的是,故障信息可以携带一变量,该变量用于标识实时仿真机是否需要生成故障测试信号。当变量有效时,生成单元22将故障信号类型对应的故障数据添加至无故障测试信号中,生成故障测试信号,否则生成单元22直接发送无故障测试信号至信号发送单元23。
其中,变量有效可以通过变量的取值确定,例如当变量的取值为1时,生成单元22确定变量有效,此时生成单元22生成故障测试信号。当变量的取值为0时,生成单元22确定变量无效,此时生成单元22不再生成故障测试信号,直接输出无故障测试信号。
信号发送单元23,用于发送故障测试信号,由待测系统对故障测试信号进行仿真测试。
由于故障信息生成和故障测试信号生成分别由上位机1和实时仿真机2的不同单元进行,所以信息生成单元21在生成单元21生成故障测试信号的同时,可以在线修改故障信息,进而生成单元21生成该故障信息对应的故障测试信号,从而实现在线修改。
请参阅图7,其示出了本申请实施例提供的一种软件故障注入系统的另一种结构示意图,在图6基础上上位机1还可以包括:构建单元13和编译下载单元14。其中构建单元13,用于构建故障注入模块。编译下载单元14,用于将故障注入模块编译下载至实时仿真机。
在本申请实施例中,故障注入模块的结构示意图如图3所示,可以包括:故障切换模块、故障使能模块和至少一个故障类型模块。在图3中故障注入模块包括三个具有不同故障测试功能的故障类型模块,分别是可调参故障类型模块、模态切换故障类型模块和滤波故障类型模块。
其中可调参故障类型模块对应的故障信号类型为纠错测试类型,用于测试协议层的数据纠错能力,可以包括:超范围数据、空数据和错误数据三种纠错测试数据。
模态切换故障类型模块对应的故障信号类型为逻辑测试类型,用于测试协议层的逻辑执行能力,可以包括:逻辑故障数据和多模态数据两种逻辑测试数据。
滤波故障类型模块对应的故障信号类型为抗干扰测试类型,用于测试协议层的抗干扰能力,可以包括:噪声数据、超调数据和变频数据三种抗干扰测试数据。
故障切换模块则用于进行故障信号类型的选择,相应的,选取单元21具体用于依据故障信息,获取故障切换模块所选择的至少一个故障类型模块,确定所选择的故障类型模块对应的故障信号类型,该故障信号类型可以作为故障测试信号的类型。
生成单元22则具体用于在故障使能模块的使能变量有效的情况下,将故障信号类型对应的故障数据添加至无故障测试信号中。
可以理解的是:使能变量是否有效,可以通过判断使能变量的取值来确定。例如图3中使能变量的取值为1,表示使能变量有效,此时实时仿真机将故障信号类型对应的故障数据添加至无故障测试信号中,生成故障测试信号,并从故障注入模块的输出端输出。
相对于图3所示的故障注入模块,实时仿真机从故障信息中可以确定故障切换模块选择的是可调参故障类型模块,则实时仿真机进一步将可调参故障类型模块对应的故障数据添加至无故障测试信号中,生成故障测试信号。
此外,本申请实施例提供的软件故障注入系统中,实时仿真机2还可以包括:验证单元,用于对故障注入模块进行验证,得到模块验证结果,并在模块验证结果与上位机的数字仿真结果不一致的情况下,触发信号发送单元23发送反馈信息至上位机。
构建单元13还用于在接收到反馈信息后,调整故障注入模块,直至调整后的故障注入模块的模块验证结果与上位机的数字仿真结果一致。
当然,在实际设计中实时仿真机和待测系统的系统参数不同,如信号量和信号类型不同,则实时仿真机在发送故障测试信号至待测系统之前,需要首先进行故障测试信号转换,所以本申请实施例提供的软件故障注入系统还可以包括适配箱,该适配箱用于转换故障测试信号,以使待测系统可以识别。
软件故障测试系统的再一种示意图请参阅图8所示,包括:上位机1、实时仿真机2和适配箱3。上位机1中的故障注入模块通过以太网发送至实时仿真机2中,实时仿真机2中运行该故障注入模块的界面,如图8中实时仿真机左侧的界面。实时仿真机2生成故障测试信号后,经由适配箱3转换后发送至待测系统。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于系统类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
为了描述的方便,描述以上系统时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
以上对本申请所提供的一种软件故障注入方法及系统进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。