软件看门狗测试方法和装置与流程

文档序号:14784973发布日期:2018-06-27 22:08阅读:1582来源:国知局
软件看门狗测试方法和装置与流程

本发明涉及软件技术领域,尤其涉及一种软件看门狗测试方法和装置。



背景技术:

看门狗技术是一种程序监视技术,是用来防止程序故障产生错误输出而采取的防护机制。看门狗可分为软件看门狗和硬件看门狗。其中,在对软件看门狗进行测试时,最常用的方法是采用代码模拟方式,模拟程序跑飞的情况。例如:在某个被监视的函数内部添加while(1)代码,使程序执行while(1)陷入死循环,不能正常喂狗,测试看门狗复位情况,若能正确复位,则表示软件看门狗功能正常;若不能正确复位,则测试不通过,表示软件看门狗功能未正确实现。

但是,上述方法只能测试软件看门狗对程序跑飞情况的防护功能,而对于程序未按照规定的执行顺序执行的情况,采用现有的测试方法则无法确定软件看门狗是否能够正常防护。



技术实现要素:

本发明旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本发明的第一个目的在于提出一种软件看门狗测试方法,该方法通过在模拟主程序的多个程序语句中依次插入对应的喂狗序号,并对具有喂狗序号的程序语句进行修改,从而生成喂狗顺序故障模拟主程序,以及编译执行该模拟主程序,利用多种顺序故障对软件看门狗进行测试,测试其能否正确防护,从而使得软件看门狗的监视功能更加全面、准确。

本发明的第二个目的在于提出一种软件看门狗测试装置。

为了实现上述目的,本发明第一方面实施例提出了一种软件看门狗测试方法,包括:获取模拟主程序;在模拟主程序的多个程序语句中依次插入对应的喂狗序号;对具有喂狗序号的程序语句进行修改,以生成具有喂狗顺序故障的模拟主程序;编译并执行具有喂狗顺序故障的模拟主程序,以对软件看门狗进行测试;当软件看门狗执行复位操作时,确定软件看门狗的功能正常。

本发明实施例的软件看门狗测试方法,通过在模拟主程序的多个程序语句中依次插入对应的喂狗序号,并对具有喂狗序号的程序语句进行修改,从而生成喂狗顺序故障模拟主程序,以及编译执行该模拟主程序,利用多种顺序故障对软件看门狗进行测试,测试其能否正确防护,从而使得软件看门狗的监视功能更加全面、准确。

为达上述目的,本发明第二方面实施例提出了一种软件看门狗测试装置,包括:获取模块,用于获取模拟主程序;插入模块,用于在模拟主程序的多个程序语句中依次插入对应的喂狗序号;修改模块,用于对具有喂狗序号的程序语句进行修改,以生成具有喂狗顺序故障的模拟主程序;测试模块,用于编译并执行具有喂狗顺序故障的模拟主程序,以对软件看门狗进行测试;确定模块,用于当软件看门狗执行复位操作时,确定软件看门狗的功能正常。

本发明实施例的软件看门狗测试装置,通过在模拟主程序的多个程序语句中依次插入对应的喂狗序号,并对具有喂狗序号的程序语句进行修改,从而生成喂狗顺序故障模拟主程序,以及编译执行该模拟主程序,利用多种顺序故障对软件看门狗进行测试,测试其能否正确防护,从而使得软件看门狗的监视功能更加全面、准确。

本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

图1是根据本发明一个实施例的软件看门狗测试方法的流程图;

图2是根据本发明一个实施例的软件看门狗监视程序的方法的流程图;

图3是根据本发明一个实施例的软件看门狗测试装置的结构示意图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。

下面参考附图描述本发明实施例的软件看门狗测试方法和装置。

本发明实施例提出了一种软件看门狗测试方法,包括:获取模拟主程序;在模拟主程序的多个程序语句中依次插入对应的喂狗序号;对具有喂狗序号的程序语句进行修改,以生成具有喂狗顺序故障的模拟主程序;编译并执行具有喂狗顺序故障的模拟主程序,以对软件看门狗进行测试;当软件看门狗执行复位操作时,确定软件看门狗的功能正常。

图1是根据本发明一个实施例的软件看门狗测试方法的流程图。

如图1所示,该软件看门狗测试方法包括:

S101,获取模拟主程序。

其中,模拟主程序是一段可实现某种功能的程序语句。在模拟主程序的程序语句中插入软件看门狗后,再执行该模拟主程序。可通过打乱模拟主程序中程序语句的顺序等方法,来测试软件看门狗能否对其进行正确防护。

在本发明的一个实施例中,可获取模拟主程序。

S102,在模拟主程序的多个程序语句中依次插入对应的喂狗序号。

在获取模拟主程序后,从模拟主程序中选取多个程序语句,并依次插入对应的喂狗序号,以表示在执行到对应程序语句时发送对应的喂狗信号。例如,模拟主程序共有二十条程序语句,可在第一条、第三条、第五条等第奇数条程序语句中,依次插入喂狗序号Num(1)、Num(2)、Num(3)、Num(4)、Num(5)、Num(6)、Num(7)、Num(8)、Num(9)、Num(10)。

其中,插入喂狗序号的多个程序语句,可根据实际需要选取。

S103,对具有喂狗序号的程序语句进行修改,以生成具有喂狗顺序故障的模拟主程序。

在模拟主程序的多个程序语句中依次插入对应的喂狗序号后,对具有喂狗序号的程序语句进行修改,如删除程序语句、颠倒程序语句的顺序等等,生成具有喂狗顺序故障的模拟主程序。

其中,喂狗是指当模拟主程序执行到具有喂狗序号的程序语句时,发出一个信号。该信号可称为喂狗信号。

可以理解的是,喂狗序号与喂狗信号是一一对应的。例如,模拟主程序的程序语句中插入了喂狗序号Num(1)、Num(2)、Num(3)、Num(4)、Num(5)、Num(6)、Num(7)、Num(8)、Num(9)、Num(10),当具有喂狗序号的程序语句依次被执行时,会发出对应的喂狗信号,可表示为drv_Num(1)、drv_Num(2)、drv_Num(3)、drv_Num(4)、drv_Num(5)、drv_Num(6)、drv_Num(7)、drv_Num(8)、drv_Num(9)、drv_Num(10)。如果插入喂狗序号的程序语句被删除,则不会产生对应的喂狗信号。

下面通过具体示例对具有喂狗序号的程序语句进行修改,生成具有喂狗顺序故障的方法进行详细说明。具体示例如下:

示例一:可从具有喂狗序号的程序语句中,选择一条或者多条具有喂狗序号的程序语句进行删除,当执行到被删除的程序语句时,由于程序语句被删除不能发出对应的喂狗信号,从而造成喂狗信号缺失,即生成喂狗信号缺失故障。例如,将具有喂狗序号Num(2)的程序语句删除,当该执行该程序语句时,由于程序语句被删除,所以未能发出喂狗信号drv_Num(2),造成了喂狗信号drv_Num(2)的缺失,从而生成了喂狗信号drv_Num(2)的缺失故障。

示例二:可从具有喂狗序号的程序语句中,选择至少两条程序语句,将其喂狗序号修改成一致的喂狗序号,以生成喂狗信号重复故障。例如,从具有喂狗序号的程序语句中选择两条程序语句,分别为模拟主程序中的第一条程序语句和第三条程序语句,其喂狗序号分别为Num(1)和Num(2),将第三条程序语句的喂狗序号Num(2)修改为Num(1),使第三条程序语句的喂狗序号与第一条程序语句的喂狗序号一致。当第一条程序语句被执行时,发出喂狗信号drv_Num(1),由于两个程序语句的喂狗序号相同均为Num(1),因此当第三条程序语句被执行时,也发出喂狗信号drv_Num(1),造成喂狗信号drv_Num(1)的重复,从而生成喂狗信号重复故障。

示例三:可将两条或者两条以上具有喂狗序号的程序语句的顺序颠倒,以生成喂狗信号顺序故障错误。例如,将具有喂狗序号Num(1)的程序语句与具有喂狗序号Num(4)的程序语句的位置颠倒。由于程序语句被颠倒,所以喂狗信号为Num(4)的程序语句先被执行,喂狗信号为Num(1)的程序语句后被执行。因此,先发出喂狗信号drv_Num(4),后发出喂狗信号drv_Num(1),使得喂狗信号drv_Num(1)和喂狗信号drv_Num(4)的发出顺序发生了错误,生成了喂狗信号顺序错误故障。

示例四:也可从具有喂狗序号的程序语句中,选择喂狗信号连续的程序语句,并在喂狗信号连续的程序语句之间的某一程序语句中添加一喂狗序号。例如,可在具有喂狗序号Num(2)的程序语句和具有喂狗序号Num(3)的程序语句之间的程序语句中,添加一个喂狗序号如Num(11),当程序执行到该部分时,喂狗信号发出顺序依次是drv_Num(2)、drv_Num(11)、drv_Num(3),使得喂狗信号drv_Num(2)和drv_Num(3)发出顺序不连续,生成了喂狗信号顺序错误故障。

示例五:还可将排序位置位于最后的具有喂狗序号的程序语句的喂狗序号修改超出最大喂狗序号上限。例如,模拟主程序中,排序位置位于最后的喂狗序号是Num(9),将喂狗序号Num(9)修改为比Num(9)大的喂狗序号,如Num(10)或Num(11)等,使得该程序语句被执行时发出的喂狗信号与前面的喂狗信号在顺序上不连续,从而生成了喂狗信号故障。

可理解的是,可以通过上述一种或者多种方法对具有喂狗序号的程序语句进行修改,以生成多样化的故障,对软件看门狗的功能进行全面测试。

S104,编译并执行具有喂狗顺序故障的模拟主程序,以对软件看门狗进行测试。

在对具有喂狗序号的程序语句修改完后,对模拟主程序进行编译。编译完毕后,执行具有喂狗顺序故障的模拟主程序,以通过具有喂狗顺序故障的模拟主程序对软件看门狗进行测试。

例如,将喂狗序号Num(3)修改成喂狗序号Num(1)后对模拟主程序进行编译运行,模拟主程序在运行过程中发出了两个相同的喂狗信号drv_Num(1),即生成了喂狗信号重复故障。利用喂狗信号重复故障,对软件看门狗进行测试,测试其是否能识别出喂狗信号重复故障。

S105,当软件看门狗执行复位操作时,确定软件看门狗的功能正常。

在执行具有喂狗顺序故障的模拟主程序的过程中,如果软件看门狗执行复位操作,则可确定软件看门狗的功能正常,起到了应有的防护作用。

而如果模拟主程序能够继续执行,没有进行复位,则说明软件看门狗对该故障并不能正确识别,未起到防护作用。

本发明实施例的软件看门狗测试方法,通过在模拟主程序的多个程序语句中依次插入对应的喂狗序号,并对具有喂狗序号的程序语句进行修改,从而生成喂狗顺序故障模拟主程序,以及编译执行该模拟主程序,利用多种顺序故障对软件看门狗进行测试,测试其能否正确防护,从而使得软件看门狗的监视功能更加全面、准确。

利用上述方法对软件看门狗测试完毕后,如果软件看门狗功能正常,则可利用软件看门狗对需要监视的程序进行监视。下面结合图2对一种软件看门狗监视程序的方法进行说明。

如图2所示,该软件看门狗监视程序的方法可包括:

S201,在需要监视的主程序中插入喂狗序号。

例如,用户想用软件看门狗监视某主程序的运行。具体地,在需要监视的主程序中选择多个程序语句,并依次插入喂狗序号。以在主程序中依次插入5个喂狗序号Num(1)、Num(2)、Num(3)、Num(4)、Num(5)为例。

S202,执行主程序。

在主程序中插入喂狗序号后,编译并执行主程序。

S203,判断发出的喂狗信号的顺序是否正确。

执行主程序的过程中,当执行具有喂狗序号的程序语句时,会发出喂狗信号。软件看门狗对发出的喂狗信号的顺序进行判断,判断喂狗信号的顺序是否正确,即判断主程序是否按照规定的顺序执行。

S204,软件看门狗执行复位操作。

如果在主程序执行的过程中,发出的喂狗信号的顺序不是drv_Num(1)、drv_Num(2)、drv_Num(3)、drv_Num(4)、drv_Num(5),即喂狗信号的顺序与喂狗序号不对应,则软件看门狗执行复位操作。

S205,主程序继续执行。

如果软件看门狗监视到发出的喂狗信号顺序与喂狗序号对应,即主程序按照规定的顺序执行,则主程序继续执行。

下面结合图3对本发明实施例提出的软件看门狗测试装置进行描述。图3是根据本发明一个实施例的软件看门狗测试装置的结构示意图。

如图3所示,该软件看门狗测试装置可包括:获取模块310、插入模块320、修改模块330、测试模块340、确定模块350。

其中,获取模块310用于获取模拟主程序。

插入模块320用于在模拟主程序的多个程序语句中依次插入对应的喂狗序号。

在获取模拟主程序后,插入模块320从模拟主程序中选取多个程序语句,并依次插入对应的喂狗序号,以表示在执行到对应程序语句时发送对应的喂狗信号。例如,模拟主程序共有二十条程序语句,可在第一条、第三条、第五条等奇数条程序语句中,依次插入喂狗序号Num(1)、Num(2)、Num(3)、Num(4)、Num(5)、Num(6)、Num(7)、Num(8)、Num(9)、Num(10)。

其中,插入喂狗序号的多个程序语句,可根据实际需要选取。

修改模块330用于对具有喂狗序号的程序语句进行修改,以生成具有喂狗顺序故障的模拟主程序。

修改模块330用于删除具有喂狗序号的程序语句中的一条或多条,以生成喂狗信号缺失故障。

修改模块330用于将至少两条具有喂狗序号的程序语句对应的喂狗序号修改成一致,以生成喂狗信号重复故障。

修改模块330用于将至少两条具有喂狗序号的程序语句的顺序颠倒,以生成喂狗信号顺序错误故障。

修改模块330用于为连续两条具有喂狗序号的程序语句之间的某一程序语句添加一喂狗序号,以生成喂狗信号顺序错误故障。

修改模块330用于将排序位置位于最后的具有喂狗序号的程序语句的喂狗序号修改超出最大喂狗序号上限,以生成喂狗信号故障。

在模拟主程序的多个程序语句中依次插入对应的喂狗序号后,修改模块330对具有喂狗序号的程序语句进行修改,如删除程序语句、颠倒程序语句的顺序等等,生成具有喂狗顺序故障的模拟主程序。

其中,喂狗是指当模拟主程序执行到具有喂狗序号的程序语句时,发出一个信号。该信号可称为喂狗信号。

可以理解的是,喂狗序号与喂狗信号是一一对应的。例如,模拟主程序的程序语句中插入了喂狗序号Num(1)、Num(2)、Num(3)、Num(4)、Num(5)、Num(6)、Num(7)、Num(8)、Num(9)、Num(10),当具有喂狗序号的程序语句依次被执行时,会发出对应的喂狗信号,可表示为drv_Num(1)、drv_Num(2)、drv_Num(3)、drv_Num(4)、drv_Num(5)、drv_Num(6)、drv_Num(7)、drv_Num(8)、drv_Num(9)、drv_Num(10)。如果插入喂狗序号的程序语句被删除,则不会产生对应的喂狗信号。

下面通过具体示例对修改模块330对具有喂狗序号的程序语句进行修改,生成具有喂狗顺序故障进行详细说明。具体示例如下:

示例一:修改模块330可用于从具有喂狗序号的程序语句中,选择一条或者多条具有喂狗序号的程序语句进行删除,当执行到被删除的程序语句时,由于程序语句被删除不能发出对应的喂狗信号,造成喂狗信号缺失,即生成喂狗信号缺失故障。例如,将具有喂狗序号Num(2)的程序语句删除,当该执行该程序语句时,由于程序语句被删除,所以未能发出喂狗信号drv_Num(2),造成了喂狗信号drv_Num(2)的缺失,从而生成了喂狗信号drv_Num(2)的缺失故障。

示例二:修改模块330可用于从具有喂狗序号的程序语句中,选择至少两条程序语句,将其喂狗序号修改成一致的喂狗序号,以生成喂狗信号重复故障。例如,从具有喂狗序号的程序语句中选择两条程序语句,分别为模拟主程序中的第一条程序语句和第三条程序语句,其喂狗序号分别为Num(1)和Num(2),将第三条程序语句的喂狗序号Num(2)修改为Num(1),使第三条程序语句的喂狗序号与第一条程序语句的喂狗序号一致。当第一条程序语句被执行时,发出喂狗信号drv_Num(1),由于两个程序语句的喂狗序号相同均为Num(1),因此当第三条程序语句被执行时,也发出喂狗信号drv_Num(1),造成喂狗信号drv_Num(1)的重复,从而生成喂狗信号重复故障。

示例三:修改模块330可用于将两条或者两条以上具有喂狗序号的程序语句的顺序颠倒,以生成喂狗信号顺序故障错误。例如,将具有喂狗序号Num(1)的程序语句与具有喂狗序号Num(4)的程序语句的位置颠倒。由于程序语句被颠倒,所以喂狗信号为Num(4)的程序语句先被执行,喂狗信号为Num(1)的程序语句后被执行。因此,先发出喂狗信号drv_Num(4),后发出喂狗信号drv_Num(1),使得喂狗信号drv_Num(1)和喂狗信号drv_Num(4)的发出顺序发生了错误,生成了喂狗信号顺序错误故障。

示例四:修改模块330也可用于从具有喂狗序号的程序语句中,选择喂狗信号连续的程序语句,并在喂狗信号连续的程序语句之间的某一程序语句中添加一喂狗序号。例如,可在具有喂狗序号Num(2)的程序语句和具有喂狗序号Num(3)的程序语句之间的程序语句中,添加一个喂狗序号如Num(11),当程序执行到该部分时,喂狗信号发出顺序依次是drv_Num(2)、drv_Num(11)、drv_Num(3),使得喂狗信号drv_Num(2)和drv_Num(3)发出顺序不连续,生成了喂狗信号顺序错误故障。

示例五:修改模块330还可用于将排序位置位于最后的具有喂狗序号的程序语句的喂狗序号修改超出最大喂狗序号上限。例如,模拟主程序中,排序位置位于最后的喂狗序号是Num(9),将喂狗序号Num(9)修改为比Num(9)大的喂狗序号,如Num(10)或Num(11)等,使得该程序语句被执行时发出的喂狗信号与前面的喂狗信号在顺序上不连续,从而生成了喂狗信号故障。

测试模块340用于编译并执行具有喂狗顺序故障的模拟主程序,以对软件看门狗进行测试。

在对具有喂狗序号的程序语句修改完后,测试模块340对模拟主程序进行编译。编译完毕后,执行具有喂狗顺序故障的模拟主程序,以通过具有喂狗顺序故障的模拟主程序对软件看门狗进行测试。

例如,将喂狗序号Num(3)修改成喂狗序号Num(1)后对模拟主程序进行编译运行,模拟主程序在运行过程中发出了两个相同的喂狗信号drv_Num(1),即生成了喂狗信号重复故障。利用喂狗信号重复故障,对软件看门狗进行测试,测试其是否能识别出喂狗信号重复故障。

确定模块350用于当软件看门狗执行复位操作时,确定软件看门狗的功能正常。

在执行具有喂狗顺序故障的模拟主程序的过程中,如果软件看门狗执行复位操作,则确定模块350可确定软件看门狗的功能正常,软件看门狗起到了应有的防护作用。

而如果模拟主程序能够继续执行,没有进行复位,则说明软件看门狗对该故障并不能正确识别,未起到防护作用。

需要说明的是,前述对软件看门狗测试方法实施例的解释说明也适用于该实施例的软件看门狗测试装置,此处不再赘述。

综上所述,本发明实施例的软件看门狗测试装置,通过在模拟主程序的多个程序语句中依次插入对应的喂狗序号,并对具有喂狗序号的程序语句进行修改,从而生成喂狗顺序故障模拟主程序,以及编译执行该模拟主程序,利用多种顺序故障对软件看门狗进行测试,测试其能否正确防护,从而使得软件看门狗的监视功能更加全面、准确。

在本说明书的描述中,参考术语:“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1