CN107729231B - 一种基于操作系统的故障注入方法及装置 - Google Patents

一种基于操作系统的故障注入方法及装置 Download PDF

Info

Publication number
CN107729231B
CN107729231B CN201710852831.5A CN201710852831A CN107729231B CN 107729231 B CN107729231 B CN 107729231B CN 201710852831 A CN201710852831 A CN 201710852831A CN 107729231 B CN107729231 B CN 107729231B
Authority
CN
China
Prior art keywords
test
address
program
variable
test information
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.)
Active
Application number
CN201710852831.5A
Other languages
English (en)
Other versions
CN107729231A (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.)
Kyland Technology Co Ltd
Original Assignee
Kyland Technology 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 Kyland Technology Co Ltd filed Critical Kyland Technology Co Ltd
Priority to CN201710852831.5A priority Critical patent/CN107729231B/zh
Publication of CN107729231A publication Critical patent/CN107729231A/zh
Application granted granted Critical
Publication of CN107729231B publication Critical patent/CN107729231B/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/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime

Abstract

本申请涉及互联网技术领域,尤其涉及一种基于操作系统的故障注入方法及装置,用以解决现有技术中故障注入方法存在着测试不方便且测试效率低的问题;本申请实施例提供的基于操作系统的故障注入方法包括:运行测试程序的过程中,接收并保存宿主机端注入的至少一条测试信息;每条测试信息中包含测试点的地址、测试变量的地址和变量修改公式;对任一条测试信息,根据测试信息中测试点的地址在测试程序中设置断点;当确定测试程序运行至断点时,根据测试信息中的变量修改公式对测试变量的地址中保存的数据进行修改;基于修改后的数据从断点处运行测试程序,这样,在测试程序的运行过程中接收宿主机端注入的测试信息,测试效率更高、测试也更加方便。

Description

一种基于操作系统的故障注入方法及装置
技术领域
本申请涉及互联网技术领域,尤其涉及一种基于操作系统的故障注入方法及装置。
背景技术
随着互联网技术的快速发展,软件产品也日益增多,为了保证软件产品的质量,几乎任何一种软件产品在投产以前都需要经过测试,其中,故障注入就是一种非常重要的软件测试手段。
目前,故障注入分为编译时故障注入和调试暂停时故障注入,其中,编译时故障注入是在对测试程序进行编译时注入故障,这样在运行测试程序的过程不能对注入的故障进行调整,测试起来不方便;而调试暂停时故障注入需要使测试程序的运行停止下来,之后由测试人员对注入的故障进行反复调试,这样测试效率比较低。
可见,现有技术中的故障注入方法存在着测试不方便且测试效率低的问题。
发明内容
本申请实施例提供一种基于操作系统的故障注入方法及装置,用以解决现有技术中的故障注入方法存在着测试不方便且测试效率低的问题。
本申请实施例提供的一种基于操作系统的故障注入方法,包括:
在运行测试程序的过程中,接收并保存宿主机端注入的至少一条测试信息;每条测试信息中包含测试点的地址、测试变量的地址和对测试变量进行修改的变量修改公式;
对于任一条测试信息,根据所述测试信息中测试点的地址在所述测试程序中设置断点;当确定所述测试程序运行至所述断点时,根据所述测试信息中的变量修改公式,对所述测试信息中测试变量的地址中所保存的数据进行修改;基于修改后的数据从所述断点处运行所述测试程序。
本申请实施例提供的一种基于操作系统的故障注入装置,包括:
接收模块,用于在运行测试程序的过程中,接收并保存宿主机端注入的至少一条测试信息;每条测试信息中包含测试点的地址、测试变量的地址和对测试变量进行修改的变量修改公式;
故障注入模块,用于对于任一条测试信息,根据所述测试信息中测试点的地址在所述测试程序中设置断点;当确定所述测试程序运行至所述断点时,根据所述测试信息中的变量修改公式,对所述测试信息中测试变量的地址中所保存的数据进行修改;基于修改后的数据从所述断点处运行所述测试程序。
本申请实施例提供的一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行上述基于操作系统的故障注入的方法。
本申请实施例提供的一种电子设备,包括至少一个处理器,以及与所述至少一个处理器通信连接的存储器;其中:
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行时,使所述电子设备执行上述基于操作系统的故障注入的方法。
本申请实施例提供的一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,其中,当所述程序指令被计算机执行时,使所述计算机执行上述基于操作系统的故障注入方法。
本申请实施例中,接收到测试指令时,运行测试程序,在运行测试程序的过程中接收并保存宿主机端注入的至少一条测试信息,其中,每条测试信息中包含测试点的地址、测试变量的地址和对测试变量进行修改的变量修改公式,对于任一条测试信息,根据该测试信息中测试点的地址在测试程序中设置断点,当确定测试程序运行至该断点时,可以根据该测试信息中的变量修改公式,对该测试信息中测试变量的地址中所保存的数据进行修改,基于修改后的数据从断点处运行测试程序,这样,在测试程序的运行过程中可以接收宿主机端注入的测试信息,并且可以根据注入的测试信息对测试程序中断点处的变量进行修改,完成故障注入的时间为秒级,并且故障注入时也不需改变测试程序的运行状态,因此测试效率更高、测试也更加方便。
附图说明
图1为本申请实施例提供的基于操作系统的故障注入方法流程图;
图2为本申请实施例提供的又一基于操作系统的故障注入方法流程图;
图3为本申请实施例提供的基于操作系统的故障注入装置结构图;
图4为本申请实施例提供的用于实现基于操作系统的故障注入方法的电子设备的硬件结构示意图。
具体实施方式
本申请实施例中,在运行测试程序的过程中接收并保存宿主机端注入的至少一条测试信息,其中,每条测试信息中包含测试点的地址、测试变量的地址和对测试变量进行修改的变量修改公式,对于任一条测试信息,根据该测试信息中测试点的地址在测试程序中设置断点,当确定测试程序运行至该断点时,可以根据该测试信息中的变量修改公式,对该测试信息中测试变量的地址中所保存的数据进行修改,基于修改后的数据从断点处运行测试程序,这样,在测试程序的运行过程中可以接收宿主机端注入的测试信息,并且可以根据注入的测试信息对测试程序中断点处的变量进行修改,完成故障注入的时间为秒级,并且故障注入时也不需改变测试程序的运行状态,因此测试效率更高、测试也更加方便。
下面结合说明书附图对本申请实施例作进一步详细描述。
实施例一
如图1所示,为本申请实施例提供的基于操作系统的故障注入方法流程图,包括以下步骤:
S101:在运行测试程序的过程中,接收并保存宿主机端注入的至少一条测试信息;每条测试信息中包含测试点的地址、测试变量的地址和对测试变量进行修改的变量修改公式。
在具体实施过程中,测试人员通过宿主机端来调试注入的故障信息,调试完成的故障信息即为测试信息,之后,测试人员通过宿主机端将测试信息发送给目标系统,目标系统接收到测试信息后,可以将测试信息添加到本地存储的测试列表中。这里,每条测试信息包含有测试点的地址信息、测试变量的地址、对测试变量进行修改的变量修改公式和测试次数,其中,测试次数是根据测试程序运行至该测试信息对应的断点处的次数确定的,并且测试次数不大于测试程序运行至该测试信息对应的断点处的次数。
S102:对于任一条测试信息,根据该测试信息中测试点的地址在测试程序中设置断点;当确定测试程序运行至该断点时,根据测试信息中的变量修改公式,对测试信息中测试变量的地址中所保存的数据进行修改;基于修改后的数据从断点处运行测试程序。
在具体实施过程中,可以监测测试程序在运行过程中访问的内存地址,对于任一条测试信息,当测试信息中包含的测试点的地址与测试程序访问的内存地址相同时,确定测试程序运行至测试信息对应的断点。
进一步地,确定测试程序运行至测试信息对应的断点后,根据测试信息中测试变量的地址,从内存中读取该地址中所保存的数据,之后根据测试信息中的变量修改公式对读取的数据进行修改,并将内存中该地址中保存的数据更新为修改后的数据。
可选地,对于任一条测试信息,若测试变量的地址中保存的数据为x,则测试信息中的变量修改公式可以为以下任一种:
Ax+B;sinx;cosx;
其中,A、B为整数,且A和B的取值是由测试人员根据实际的测试需求预先确定的。
上述变量修改公式对于测试信息中的测试次数无要求,即测试次数可以为1次,也可以为多次。
进一步地,基于修改后的数据从断点处运行测试程序,并记录测试程序的运行情况,这样,在测试程序运行结束以后,可以根据记录的测试程序在各断点处的运行情况评价测试程序的容错能力。
可选地,当记录测试程序的运行情况时,若测试信息中的测试次数为1,则可以为测试程序指定记录终止点,这样,只需记录修改变量后测试程序从断点到记录终止点之间的运行情况,以节省测试机的存储资源;若测试信息中的测试次数大于1,则可以记录数据修改后测试程序从断点处开始,直到再次运行至断点(当测试次数大于1时,测试程序运行至某断点的次数大于测试次数,即测试程序必然会多次循环运行至断点处)时的运行情况,之后返回步骤S102中根据测试信息中的变量修改公式,对测试信息中测试变量的地址中所保存的数据进行修改的步骤,直到循环次数等于测试次数。
下面以测试信息中变量修改公式为x+1,测试次数为5为例,对上述循环测试的过程进行说明。
假设测试程序第一次运行至测试信息对应的断点时,从变量地址中读取的数据为1,利用x+1将1修改为2,并重新保存在内存地址中,之后运行测试程序,记录测试程序的运行情况;当测试程序第二次运行至测试信息对应的断点时,从变量地址中读取的数据为2,利用x+1将1修改为3,并重新保存在内存地址中,之后运行测试程序,记录测试程序的运行情况……,以此类推直到循环次数等于5。
这样,利用一条测试信息就可以控制测试变量按照线性增长,得到测试变量在不同取值下测试程序的运行情况,减少了测试人员在测试程序运行过程中注入测试信息的总数量,不但可以减轻人力成本,而且可以进一步提高测试效率。
本申请实施例中,接收到测试指令时,运行测试程序,在运行测试程序的过程中接收并保存宿主机端注入的至少一条测试信息,其中,每条测试信息中包含测试点的地址、测试变量的地址和对测试变量进行修改的变量修改公式,对于任一条测试信息,根据该测试信息中测试点的地址在测试程序中设置断点,当确定测试程序运行至该断点时,可以根据该测试信息中的变量修改公式,对该测试信息中测试变量的地址中所保存的数据进行修改,基于修改后的数据从断点处运行测试程序,这样,在测试程序的运行过程中可以接收宿主机端注入的测试信息,并且可以根据注入的测试信息对测试程序中断点处的变量进行修改,完成故障注入的时间为秒级,并且故障注入时也不需改变测试程序的运行状态,因此测试效率更高、测试也更加方便。
实施例二
如图2所示,为本申请实施例提供的又一基于操作系统的故障注入方法流程图,包括以下步骤:
S201:目标系统接收到测试指令时,运行测试程序。
S202:在运行测试程序的过程中,接收宿主机端注入的至少一条测试信息。
在具体实施过程中,测试人员可以根据实际的测试需求设置测试点的地址信息、测试变量的地址、对测试变量进行修改的变量修改公式和测试次数等信息,并通过以太网、串口、1394总线等目标系统软件可识别的通讯方式将这些信息组成的测试信息发送给目标系统。
S203:对于任一条测试信息,将测试信息添加到本地存储的测试列表中。
进一步地,目标系统接收到测试信息后,将其存放在内存的空闲区域中,并更新本地存储的测试列表。
S204:根据新添加的测试信息中测试点的地址在测试程序中设置断点。
在确定测试列表更新以后,根据新添加的测试信息中测试点的地址在测试程序中设置断点。
S205:当确定测试程序运行至断点时,根据测试信息中的变量修改公式,对测试信息中测试变量的地址中所保存的数据进行修改,基于修改后的数据从断点处运行测试程序。
具体地,当确定测试程序运行至断点时,可以根据测试信息中测试变量的地址,从内存中读取该地址中所保存的数据,之后根据测试信息中的变量修改公式对读取的数据进行修改,并将内存中该地址中保存的数据更新为修改后的数据,之后根据修改后的数据从断点处继续运行测试程序。
S206:记录修改数据后测试程序的运行状况。
在具体实施过程中,若测试信息中的测试次数为1,则可以为测试程序指定记录终止点,这样,只需记录修改变量后测试程序从断点到记录终止点之间的运行情况,以节省测试机的存储资源;若测试信息中的测试次数大于1,则可以记录数据修改后测试程序从断点处开始,直到再次运行至断点时的运行情况,之后返回步骤S205中根据测试信息中的变量修改公式,对测试信息中测试变量的地址中所保存的数据进行修改的步骤,直到循环次数等于测试次数。
在测试程序运行结束以后,可以根据记录的测试程序在各断点处的运行情况评价测试程序的容错能力,或者确定测试程序的需求是否全部实现。
下面结合具体的实施例对上述过程进行说明。
在具体实施过程中,目标系统接收测试指令后,运行测试程序,并监控测试程序在运行过程中访问的内存地址。假设目标系统在运行测试程序的过程中接收到一条测试信息,测试信息中测试点的地址为00001111,测试变量的地址为00101110,变量修改公式为x+1,测试次数为1。那么,当目标系统监控到测试程序当前访问的内存地址为00001111时,则可以确定测试程序运行至该测试信息对应的断点,之后暂停测试程序,从地址为00101110的内存单元或者寄存器中读取数据,假设读取的数据为5,之后,利用变量修改公式x+1将5修改为6,并重新存储在地址为00101110的内存单元或者寄存器中,此时,地址为00101110的内存单元或者寄存器中保存的数据就发生了变化,之后从断点处继续运行测试程序,并记录修改目标变量后测试程序的运行状况,便于后续根据记录运行情况评价测试软件的容错能力。
本申请实施例中,宿主机端将测试人员设置的测试信息发送给目标系统,目标系统中的测试程序根据测试信息中测试点的地址在测试程序中设置断点,当测试程序运行至断点时,根据测试信息中测试变量的地址和变量修改公式对断点处的变量进行修改,以此来模拟测试程序软硬件故障的发生。这样,目标系统在测试程序运行的过程中也可以通过宿主机端接收测试信息,并且依据测试信息中的测试点的地址、测试变量的地址、变量修改公式和测试次数来完成对测试程序的测试,实现了故障的实时注入,并且不改变测试程序的运行状态,测试效率更高。
实施例三
基于同一发明构思,本申请实施例中还提供了一种与基于操作系统的故障注入方法对应的基于操作系统的故障注入装置,由于该装置解决问题的原理与本申请实施例基于操作系统的故障注入方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
如图3所示,为本申请实施例提供的基于操作系统的故障注入装置结构图,包括:
接收模块301,用于在运行测试程序的过程中,接收并保存宿主机端注入的至少一条测试信息;每条测试信息中包含测试点的地址、测试变量的地址和对测试变量进行修改的变量修改公式;
故障注入模块302,用于对于任一条测试信息,根据所述测试信息中测试点的地址在所述测试程序中设置断点;当确定所述测试程序运行至所述断点时,根据所述测试信息中的变量修改公式,对所述测试信息中测试变量的地址中所保存的数据进行修改;基于修改后的数据从所述断点处运行所述测试程序。
可选地,所述故障注入模块具体用于:
对于任一条测试信息,根据以下步骤确定所述测试程序运行至所述测试信息对应的断点:
监测所述测试程序在运行过程中访问的内存地址;
当所述内存地址与所述测试信息中包含的测试点的地址相同时,确定所述测试程序运行至所述测试信息对应的断点。
可选地,所述故障注入模块302具体用于:
根据所述测试信息中测试变量的地址,从内存中读取该地址中所保存的数据;
根据所述测试信息中的变量修改公式对读取的所述数据进行修改;
将内存中该地址中保存的数据更新为修改后的数据。
可选地,所述装置还包括:
记录模块303,用于基于修改后的数据从所述断点处运行所述测试程序之后,记录数据修改后所述测试程序的运行情况,以便所述测试程序运行结束后,根据所述运行情况评价所述测试软件的容错能力。
可选地,所述测试信息中还包含有测试次数;当所述测试次数大于1时,所述记录模块具体303用于:
记录数据修改后所述测试程序再次运行至所述断点时的运行情况;
所述故障注入模块302,还用于:
当确定所述程序再次运行至所述断点时,返回根据所述测试信息中的变量修改公式,对所述测试信息中测试变量的地址中所保存的数据进行修改的步骤,直到循环次数等于所述测试次数。
实施例四
本申请实施例提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例中的基于操作系统的故障注入方法。
实施例五
图4是本发明实施例四提供的用于实现基于操作系统的故障注入方法的电子设备的硬件结构示意图,如图4所示,该电子设备包括:
一个或多个处理器410以及存储器420,图4中以一个处理器410为例。
执行基于操作系统的故障注入方法的电子设备还可以包括:输入装置430和输出装置440。
处理器410、存储器420、输入装置430和输出装置440可以通过总线或者其他方式连接,图4中以通过总线连接为例。
存储器420作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的基于操作系统的故障注入方法对应的程序指令/模块/单元(例如,附图3所示的接收模块301、故障注入模块302)。处理器410通过运行存储在存储器420中的非易失性软件程序、指令以及模块/单元,从而执行服务器或者智能终端的各种功能应用以及数据处理,即实现上述方法实施例基于操作系统的故障注入方法。
存储器420可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据基于操作系统的故障注入装置的使用所创建的数据等。此外,存储器420可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器420可选包括相对于处理器410远程设置的存储器,这些远程存储器可以通过网络连接至基于操作系统的故障注入装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置430可接收输入的数字或字符信息,以及产生与基于操作系统的故障注入装置的用户设置以及功能控制有关的键信号输入。输出装置440可包括显示屏等显示设备。
所述一个或者多个模块存储在所述存储器420中,当被所述一个或者多个处理器410执行时,执行上述任意方法实施例中的基于操作系统的故障注入方法。
上述产品可执行本申请实施例所提供的基于操作系统的故障注入方法,具备执行基于操作系统的故障注入方法相应的功能模块和有益效果,未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的基于操作系统的故障注入方法。
本申请实施例的电子设备以多种形式存在,包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
(5)其他具有数据交互功能的电子装置。
实施例六
本申请实施例提供了一种计算机程序产品,其中,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,其中,当所述程序指令被计算机执行时,使所述计算机执行本申请上述方法实施例中任一项基于操作系统的故障注入方法。
本申请实施例所提供的基于操作系统的故障注入装置可通过计算机程序实现。本领域技术人员应该能够理解,上述的模块划分方式仅是众多模块划分方式中的一种,如果划分为其他模块或不划分模块,只要基于操作系统的故障注入装置具有上述功能,都应该在本申请的保护范围之内。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (8)

1.一种基于操作系统的故障注入方法,其特征在于,包括:
在运行测试程序的过程中,接收并保存宿主机端注入的至少一条测试信息;每条测试信息中包含测试点的地址、测试变量的地址、对测试变量进行修改的变量修改公式和测试次数,所述测试次数不大于所述测试程序运行至所述测试信息对应的断点处的次数;
对于任一条测试信息,根据所述测试信息中测试点的地址在所述测试程序中设置断点;当确定所述测试程序运行至所述断点时,根据所述测试信息中的变量修改公式,对所述测试信息中测试变量的地址中所保存的数据进行修改;基于修改后的数据从所述断点处运行所述测试程序;
记录数据修改后所述测试程序的运行情况,用于所述测试程序运行结束后,根据所述运行情况评价所述测试程序的容错能力;
当所述测试信息中包含的测试次数大于1时,记录数据修改后所述测试程序的运行情况,包括:
记录数据修改后所述测试程序再次运行至所述断点时的运行情况;以及
所述方法还包括:
当确定所述程序再次运行至所述断点时,返回根据所述测试信息中的变量修改公式,对所述测试信息中测试变量的地址中所保存的数据进行修改的步骤,直到循环次数等于所述测试次数。
2.如权利要求1所述的方法,其特征在于,对于任一条测试信息,根据以下步骤确定所述测试程序运行至所述测试信息对应的断点:
监测所述测试程序在运行过程中访问的内存地址;
当所述内存地址与所述测试信息中包含的测试点的地址相同时,确定所述测试程序运行至所述测试信息对应的断点。
3.如权利要求2所述的方法,其特征在于,根据所述测试信息中的变量修改公式,对所述测试信息中测试变量的地址中所保存的数据进行修改,包括:
根据所述测试信息中测试变量的地址,从内存中读取该地址中所保存的数据;
根据所述测试信息中的变量修改公式对读取的所述数据进行修改;
将内存中该地址中保存的数据更新为修改后的数据。
4.一种基于操作系统的故障注入装置,其特征在于,包括:
接收模块,用于在运行测试程序的过程中,接收并保存宿主机端注入的至少一条测试信息;每条测试信息中包含测试点的地址、测试变量的地址、对测试变量进行修改的变量修改公式和测试次数,所述测试次数不大于所述测试程序运行至所述测试信息对应的断点处的次数;
故障注入模块,用于对于任一条测试信息,根据所述测试信息中测试点的地址在所述测试程序中设置断点;当确定所述测试程序运行至所述断点时,根据所述测试信息中的变量修改公式,对所述测试信息中测试变量的地址中所保存的数据进行修改;基于修改后的数据从所述断点处运行所述测试程序;
记录模块,用于基于修改后的数据从所述断点处运行所述测试程序之后,记录数据修改后所述测试程序的运行情况,以便所述测试程序运行结束后,根据所述运行情况评价所述测试程序的容错能力;
当所述测试信息中包含的测试次数大于1时,
所述记录模块,具体用于记录数据修改后所述测试程序再次运行至所述断点时的运行情况;
所述故障注入模块,还用于当确定所述程序再次运行至所述断点时,返回根据所述测试信息中的变量修改公式,对所述测试信息中测试变量的地址中所保存的数据进行修改的步骤,直到循环次数等于所述测试次数。
5.如权利要求4所述的装置,其特征在于,所述故障注入模块具体用于:
对于任一条测试信息,根据以下步骤确定所述测试程序运行至所述测试信息对应的断点:
监测所述测试程序在运行过程中访问的内存地址;
当所述内存地址与所述测试信息中包含的测试点的地址相同时,确定所述测试程序运行至所述测试信息对应的断点。
6.如权利要求5所述的装置,其特征在于,所述故障注入模块具体用于:
根据所述测试信息中测试变量的地址,从内存中读取该地址中所保存的数据;
根据所述测试信息中的变量修改公式对读取的所述数据进行修改;
将内存中该地址中保存的数据更新为修改后的数据。
7.一种非易失性计算机存储介质,存储有计算机可执行指令,其特征在于,所述计算机可执行指令用于执行如权利要求1~3任一权利要求所述的方法。
8.一种电子设备,其特征在于,包括至少一个处理器,以及与所述至少一个处理器通信连接的存储器;其中:
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行时,使所述电子设备执行如权利要求1~3任一权利要求所述的方法。
CN201710852831.5A 2017-09-19 2017-09-19 一种基于操作系统的故障注入方法及装置 Active CN107729231B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710852831.5A CN107729231B (zh) 2017-09-19 2017-09-19 一种基于操作系统的故障注入方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710852831.5A CN107729231B (zh) 2017-09-19 2017-09-19 一种基于操作系统的故障注入方法及装置

Publications (2)

Publication Number Publication Date
CN107729231A CN107729231A (zh) 2018-02-23
CN107729231B true CN107729231B (zh) 2021-02-02

Family

ID=61206704

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710852831.5A Active CN107729231B (zh) 2017-09-19 2017-09-19 一种基于操作系统的故障注入方法及装置

Country Status (1)

Country Link
CN (1) CN107729231B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108804271A (zh) * 2018-06-28 2018-11-13 北京潘达互娱科技有限公司 接口容错测试方法及装置
CN109213680B (zh) * 2018-08-28 2022-01-25 康烁 基于嵌入式软件仿真器的自动化测试方法
CN110941549B (zh) * 2019-11-19 2021-12-07 北京字节跳动网络技术有限公司 一种内存泄漏的检测方法、装置、介质和电子设备
CN112131098A (zh) * 2020-08-07 2020-12-25 国家电网有限公司 一种用于对电能表软件进行测试的方法及系统
CN113094266A (zh) * 2021-04-06 2021-07-09 中国工商银行股份有限公司 一种容器数据库的故障测试方法、平台及设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105137807A (zh) * 2015-08-12 2015-12-09 上海卫星工程研究所 通用全数字星务仿真平台

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102360329B (zh) * 2011-09-29 2014-11-05 西北工业大学 总线监控与调试控制装置及进行总线监控与总线调试的方法
GB2509849B (en) * 2011-09-29 2021-02-03 Intel Corp Method and apparatus for injecting errors into memory
CN104657247B (zh) * 2015-02-10 2017-12-15 上海创景计算机系统有限公司 基于jtag调试方式实现通用型故障注入系统和故障注入方法
US9983986B2 (en) * 2015-09-28 2018-05-29 International Business Machines Corporation Testing code response to injected processing errors
CN106897214B (zh) * 2017-01-04 2019-10-15 浙江大学 一种故障注入规则延迟加载的方法
CN107025171A (zh) * 2017-03-10 2017-08-08 深圳航天科技创新研究院 一种实现虚拟验证系统故障注入的方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105137807A (zh) * 2015-08-12 2015-12-09 上海卫星工程研究所 通用全数字星务仿真平台

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"FIFA: A Kernel-Level Fault Injection Framework for ARM-Based Embedded Linux System";Eunjin Jeong等;《2017 IEEE International Conference on Software Testing, Verification and Validation (ICST)》;20170518;第23-34页 *
"工业监控组态软件模糊测试方法研究";吴波 等;《电子产品可靠性与环境试验》;20160620;第34卷(第3期);第33-38页 *

Also Published As

Publication number Publication date
CN107729231A (zh) 2018-02-23

Similar Documents

Publication Publication Date Title
CN107729231B (zh) 一种基于操作系统的故障注入方法及装置
CN107423213B (zh) 一种文件描述符分配检测方法和装置
US11036507B2 (en) Processor testing using pairs of counter incrementing and branch instructions
US20110154299A1 (en) Apparatus and method for executing instrumentation code
CN109976998B (zh) 一种软件缺陷预测方法、装置和电子设备
CN108984389B (zh) 一种应用程序测试方法及终端设备
CN109388556B (zh) 一种测试过程的分析方法及装置
CN107480327B (zh) 一种仿真验证方法、装置和电子设备
CN104243590A (zh) 资源对象推荐方法和装置
CN109473121B (zh) 语音合成质量测试方法及装置
CN112597064B (zh) 对程序进行仿真的方法、电子设备及存储介质
CN108628734B (zh) 一种功能程序调试方法和终端
US9117018B2 (en) Method of debugging software and corresponding computer program product
CN113454607B (zh) 调试方法、装置及片上系统
CN111030837A (zh) 一种网络环境现状评估方法、装置、电子设备及存储介质
CN112486863A (zh) 软件虚拟仿真方法、装置和电子设备
CN104536884A (zh) 代码测试方法和装置
CN115656788B (zh) 一种芯片测试系统、方法、设备及存储介质
CN109960601B (zh) 一种业务数据的恢复方法、装置和电子设备
CN103810087A (zh) 测试应用程序性能的方法和装置
US10445218B2 (en) Execution of graphic workloads on a simulated hardware environment
CN115587026A (zh) 芯片测试方法、装置、存储介质及芯片
CN112631949B (zh) 一种调试方法、装置、计算机设备及存储介质
CN108763039B (zh) 一种业务故障模拟方法、装置及设备
CN108874696B (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
EE01 Entry into force of recordation of patent licensing contract
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20180223

Assignee: Kedong (Guangzhou) Software Technology Co., Ltd

Assignor: Beijing Dongtu Technology Co., Ltd.|Beijing keyin Jingcheng Technology Co., Ltd

Contract record no.: X2020980000255

Denomination of invention: Fault injection method and device based on operating system

License type: Exclusive License

Record date: 20200218

GR01 Patent grant
GR01 Patent grant