CN113127331A - 一种基于故障注入的测试方法、装置及计算机设备 - Google Patents

一种基于故障注入的测试方法、装置及计算机设备 Download PDF

Info

Publication number
CN113127331A
CN113127331A CN201911419393.9A CN201911419393A CN113127331A CN 113127331 A CN113127331 A CN 113127331A CN 201911419393 A CN201911419393 A CN 201911419393A CN 113127331 A CN113127331 A CN 113127331A
Authority
CN
China
Prior art keywords
fault
test
target program
target
factor
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
CN201911419393.9A
Other languages
English (en)
Other versions
CN113127331B (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.)
Aisino Corp
Original Assignee
Aisino Corp
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 Aisino Corp filed Critical Aisino Corp
Priority to CN201911419393.9A priority Critical patent/CN113127331B/zh
Publication of CN113127331A publication Critical patent/CN113127331A/zh
Application granted granted Critical
Publication of CN113127331B publication Critical patent/CN113127331B/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/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • 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/3692Test management for test results analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种基于故障注入的测试方法、装置及计算机设备,用于提高数据一致性测试的准确性。该方法具体包括:确定目标程序的测试故障类型和故障注入点,故障注入点为目标程序中与预定数据库进行交互的方法对应的程序起始位置处;根据测试故障类型,从测试用例集中确定出目标测试用例;根据目标测试用例,从测试用例和字节码的映射关系中确定出目标字节码,并在目标程序运行中,将目标字节码在故障注入点插入目标程序,以获得对目标程序的测试结果;将测试结果和预定数据集进行比对,以验证目标程序数据的一致性。

Description

一种基于故障注入的测试方法、装置及计算机设备
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于故障注入的测试方法、装置及计算机设备。
背景技术
故障注入是进行产品测试和系统验证的重要技术手段,通过有意识的向系统注入故障来加速测试过程。目前,主要采用物理层故障注入和服务层故障注入。物理层注入时,普遍采用断网、关电源、拨硬盘等人工方式进行注入,方式简单明确,易于操作。服务层注入时,通常采用关闭服务(Tomcat、Monitor)等方式进行注入。
随着云服务、微服务等技术的广泛应用,上述二种故障注入方法在针对微服务架构系统进行数据一致性验证测试时,可能会引入新的数据,从而导致测试的准确性较低。
发明内容
本发明实施例提供一种基于故障注入的方法、装置及计算机设备,用于提高数据一致性测试的准确性。
第一方面,提供一种基于故障注入的测试方法,所述方法包括:
确定所述目标程序的测试故障类型和故障注入点,其中,所述故障注入点为所述目标程序中与预定数据库进行交互的方法对应的程序起始位置处;
根据所述测试故障类型,从测试用例集中确定出目标测试用例,其中,所述测试用例集包括采用多种方法对所述目标程序进行测试的多个测试用例;
根据所述目标测试用例,从测试用例和字节码的映射关系中确定出目标字节码,并在所述目标程序运行中,将所述目标字节码在所述故障注入点插入所述目标程序,以获得对所述目标程序的测试结果;
将所述测试结果和预定数据集进行比对,以验证所述目标程序数据的一致性,其中,所述预定数据集用于表征所述目标程序中与预定数据库交互的方法对应的程序出现故障时的数据。
在一种可能的实施例中,确定所述目标程序的测试故障类型,包括:
从故障类型表中,根据第一预设规则确定针对所述目标程序进行测试的测试故障类型,所述第一预设规则为根据预设顺序或软硬件故障类型确定测试故障类型,其中,所述故障类型表中至少包括网络故障、电源故障、线程堵塞故障、线程丢失故障、Java虚拟机故障以及数据库故障。
在一种可能的实施例中,所述方法还包括:
构建所述目标程序与数据库进行交互的各个方法对应的各个方法名与所述故障类型表中各个故障类型的因子状态表,其中,所述因子状态表用于表征将所述各个方法名作为因子和将所述故障类型表中的各个故障类型作为状态构建的多个因子状态关系的集合;
根据第二预设规则,确定所述因子状态表中每个因子状态关系的权值,并根据所述多个因子状态关系和所述每个因子状态关系的权值生成因素分析表,所述因素分析表中用于表征因子状态关系和权值一一对应的关系;
确定与所述因子状态表匹配的正交表,并根据所述因素分析表和所述与所述因子状态表匹配的正交表,构造所述测试用例集,其中,所述与所述因子状态表匹配的正交表用于表征与所述因子状态表的因子和状态数目相匹配的正交设计表格。
在一种可能的实施例中,将所述测试结果和预定数据集进行比对,以验证所述目标程序数据的一致性,包括:
将所述目标程序运行的数据和预定数据集中的预设数据进行比对,若所述目标程序运行的数据和所述预设数据相同或所述目标程序运行的数据和所述预设数据的差值属于预定范围,则所述目标程序数据的一致性测试合格。
第二方面,提供一种基于故障注入的测试装置,所述装置包括:
第一确定模块,用于确定所述目标程序的测试故障类型和故障注入点,其中,所述故障注入点为所述目标程序中与预定数据库进行交互的方法对应的程序起始位置处;
第二确定模块,用于根据所述测试故障类型,从测试用例集中确定出目标测试用例,其中,所述测试用例集包括采用多种方法对所述目标程序进行测试的多个测试用例;
测试模块,用于根据所述目标测试用例,从测试用例和字节码的映射关系中确定出目标字节码,并在所述目标程序运行中,将所述目标字节码在所述故障注入点插入所述目标程序,以获得对所述目标程序的测试结果;
验证模块,用于将所述测试结果和预定数据集进行比对,以验证所述目标程序数据的一致性,其中,所述预定数据集用于表征所述目标程序中与预定数据库交互的方法对应的程序出现故障时的数据。
在一种可能的实施方式中,所述第一确定模块,具体用于:
从故障类型表中,根据第一预设规则确定针对所述目标程序进行测试的测试故障类型,所述第一预设规则为根据预设顺序或软硬件故障类型确定测试故障类型,其中,所述故障类型表中至少包括网络故障、电源故障、线程堵塞故障、线程丢失故障、Java虚拟机故障以及数据库故障。
在一种可能的实施方式中,所述装置还包括处理模块,所述处理模块具体用于:
构建所述目标程序与数据库进行交互的各个方法对应的各个方法名与所述故障类型表中各个故障类型的因子状态表,其中,所述因子状态表用于表征将所述各个方法名作为因子和将所述故障类型表中的各个故障类型作为状态构建的多个因子状态关系的集合;
根据第二预设规则,确定所述因子状态表中每个因子状态关系的权值,并根据所述多个因子状态关系和所述每个因子状态关系的权值生成因素分析表,所述因素分析表中用于表征因子状态关系和权值一一对应的关系;
确定与所述因子状态表匹配的正交表,并根据所述因素分析表和所述与所述因子状态表匹配的正交表,构造所述测试用例集,其中,所述与所述因子状态表匹配的正交表用于表征与所述因子状态表的因子和状态数目相匹配的正交设计表格。
在一种可能的实施方式中,所述验证模块具体用于:
将所述目标程序运行的数据和预定数据集中的预设数据进行比对,若所述目标程序运行的数据和所述预设数据相同或所述目标程序运行的数据和所述预设数据的差值属于预定范围,则所述目标程序数据的一致性测试合格。
第三方面,提供一种计算机设备,所述计算机设备包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行第一方面中的任一方法包括的步骤。
第四方面,提供一种存储介质,该存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行第一方面中的任一方法包括的步骤。
第五方面,提供一种计算机程序产品,当所述计算机程序产品在计算机设备上运行时,使得计算机设备能够执行第一方面中任一方法包括的步骤。
本发明的实施例提供的技术方案至少带来以下有益效果:
在本发明实施例中,可以确定目标程序的测试故障类型和故障注入点,然后根据测试故障类型,从测试用例集中确定出目标测试用例,进而可以根据目标测试用例,从测试用例和字节码的映射关系中确定出目标字节码。然后在目标程序运行中,将目标字节码在故障注入点插入目标程序,可以获得对目标程序的测试结果,从而将测试结果和预定数据集进行比对,以验证目标程序数据的一致性。
在本发明实施例中,通过对目测程序的分析,确定故障注入点,使用字节码注入的方式精准的控制故障发生时间和位置,实现快速验证故障模式下,验证数据的一致性问题,提高了测试用例有效性,极大的降低了测试所需的工时和费用。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或通过实施本而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例。
图1为本发明实施例中的基于故障注入的测试方法的流程图;
图2为本发明实施例中的构建测试用例集方法的流程图;
图3为本发明实施例中的基于故障注入的测试装置的结构框图;
图4为本发明实施例中的计算机设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互任意组合。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本发明的说明书和权利要求书及附图中的术语“包括”以及它们任何变形,意图在于覆盖不排他的保护。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
为便于理解本发明实施例提供的技术方案,这里先对本发明实施例使用的一些关键名词进行解释:
故障注入:是指按照选定的故障模型,用人工的方法有意识地产生故障并施加于特定的被测设备中,以加速该被测设备的错误和失效的发生,同时采集被测设备对所注入故障的反应信息,并对回收信息进行分析,从而提供有关结果的过程。
测试用例:为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。
正交表:一种特制的正交涉及表格,用Ln(mk)表示,L代表正交表,n代表试验次数或正交表的行数、K代表影响指标的因素个数或正交表的列数、m代表每个因素的水平数,利用正交表设计测试用例,得到测试用例数为n=k*(m-1)+1。
如前所述,现有技术中在进行产品测试时,使用的是物理层故障注入或者是服务层故障注入的方式,可能会引入新的测试数据,导致对数据的一致性验证时存在准确性较低的技术问题。
鉴于此,本发明提供一种基于故障注入的测试方法,通过该方法可以向正在运行的目标程序注入与故障类型相对应的测试用例对应的字节码,从而可以模拟该故障,监控目标程序中各个方法的运行结果,进而可以验证在故障发生时数据是否保持一致性,以实现提高验证数据的一致性的准确性。
在本发明实施例中,目标程序可以运行在自动化测试平台上,然后自动化测试平台可以对目标程序进行基于故障注入的测试,从而可以快速实现对目标程序的检测,具体的自动化测试平台安装于计算机设备上。
为进一步说明本发明实施例提供的技术方案,下面结合附图以及具体实施方式对此进行详细的说明。虽然本发明实施例提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在所述方法中可以包括更多或者更少的操作步骤。在逻辑上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本发明实施例提供的执行顺序。所述方法在实际的处理过程中或者装置执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行。
请参见图1,为本发明实施例提供的基于故障注入的测试方法,该方法可以应用于软件测试等应用场景中,具体可以有前述的安装有自动化测试平台的计算机设备执行该方法,下面对该方法的流程进行描述。
步骤101:确定目标程序的测试故障类型和故障注入点,其中,故障注入点为目标程序中与预定数据库进行交互的方法对应的程序起始位置处。
在本发明实施例中,可以预先构建故障类型表,即可以根据实际希望测试的故障类型构建故障类型表。在具体的实施过程中,可以将目标程序的故障类型按硬件发生故障和软件发生故障进行分类,进而构建成故障类型表。
在本发明实施例中,故障类型表中可以包括表1中所示的故障类型,即故障类型表中可以包括网络故障、电源故障、线程堵塞故障、线程丢失故障、Java虚拟机故障(JavaVirtual Machine Fault,JVM故障)以及数据库故障(Data base Fault,DB故障),当然,故障类型表也可以是包括网络故障、电源故障、线程堵塞故障、线程丢失故障以及DB故障的表,本发明实施例中不做限制。
Figure BDA0002351944210000071
表1
在本发明实施例中,当前述的故障类型表构建完成之后,可以存储在对应的数据库中。然后可以从故障类型表中,根据第一预设规则确定针对目标程序进行测试的测试故障类型。具体的,第一预设规则为根据预设顺序或软硬件故障类型确定测试故障类型。
在具体的实施过程中,前述的第一预设规则可以是从故障类型表中按照预先排列的第一顺序确定出测试故障类型,也可以是从故障类型表中先确定故障类型,然后在确定的故障类型中按照预设第二顺序确定测试故障类型,本发明实施例中不做限制。
例如,请继续参见表1,若第一顺序为按照表1中从第一行开始排序,则可以确定第一顺序依次为网络故障、网络故障、电源故障、线程堵塞故障、线程丢失故障、JVM故障以及DB故障,从而可以在实际测试中将网络故障作为测试故障类型,若网络故障的测试故障类型测试完成后,可以依次进行电源故障、线程堵塞故障、线程丢失故障、JVM故障以及DB故障的测试。
在本发明实施例中,还可以确定故障注入点,具体的,故障注入点是目标程序与预定数据库进行交互的方法对应的程序起始位置处。在具体的实施过程中,可以采用Javaagent探针技术跟踪确定类名、方法名,然后还可以采用Java agent探针技术确定与预定数据库进行交互的方法名,从而可以确定出本发明实施例中进行数据一致性测试的方法,进而可以将该方法对应的程序起始位置处作为故障注入点。
步骤102:根据测试故障类型,从测试用例集中确定出目标测试用例,其中,测试用例集包括采用多种方法对目标程序进行测试的多个测试用例。
在本发明实施例,当确定出故障注入点和测试故障类型之后,可以根据测试故障类型,从测试用例集中确定出目标测试用例,其中,测试用例集包括采用多种方法对目标程序进行测试的多个测试用例。
在本发明实施例中,可以采用正交实验设计的方式获得本发明实施例中的测试用例集,具体的,请参见图2,可以采用以下方式获得测试用例集:
步骤201:构建目标程序与数据库进行交互的各个方法对应的各个方法名与故障类型表中各个故障类型的因子状态表,其中,因子状态表用于表征将各个方法名作为因子和将故障类型表中的各个故障类型作为状态构建的多个因子状态关系的集合。
步骤202:根据第二预设规则,确定因子状态表中每个因子状态关系的权值,并根据多个因子状态关系和每个因子状态关系的权值生成因素分析表,因素分析表中用于表征因子状态关系和权值一一对应的关系。
步骤203:确定与因子状态表匹配的正交表,并根据因素分析表和与因子状态表匹配的正交表,构造测试用例集,其中,与因子状态表匹配的正交表用于表征与因子状态表的因子和状态数目相匹配的正交设计表格。
在具体的实施过程中,采用正交实验设计测试用例时,可以将需要输入的方法作为因子,将测试故障类型作为状态,从而可以构建因子状态表。也就是说,可以将本发明实施例中的目标程序中与数据库交互的方法均作为因子,然后将多个故障类型作为状态,从而可以构建因子状态表。
进一步地,在构建因子状态表之后,还可以匹配与因子状态表匹配的正交表,具体的,与因子状态表匹配的正交表用于表征因子状态表的因子和状态数目相匹配的正交设计表格。例如,若因子状态表中包括4个方法,3个测试故障类型,则可以确定与前述的因子状态表匹配的4因子3状态正交表。
在本发明实施例中,当构造因子状态表之后,还可以对因子与状态按照重要程度分别分析进行加权处理,即可以根据各因子的业务功能对应的重要程度等级以及出现的频率,确定各个因子的权值,从而可以获得因素分析表。进一步地,可以根据因素分析表和与因子状态表匹配的正交表,构造测试用例集,具体的,当构造测试用例集完成之后,可以将测试用例集存储在数据库中,然后可以根据确定的测试故障类型,从测试用例集中确定出目标测试用例。
步骤103:根据目标测试用例,从测试用例和字节码的映射关系中确定出目标字节码,并在目标程序运行中,将目标字节码在故障注入点插入目标程序,以获得对目标程序的测试结果。
步骤104:将测试结果和预定数据集进行比对,以验证目标程序数据的一致性,其中,预定数据集用于表征目标程序中与预定数据库交互的方法对应的程序出现故障时的数据。
在本发明实施例中,当确定出目标测试用例之后,可以从测试用例和字节码的映射关系中确定出目标字节码,然后在目标程序运行中,将目标字节码在故障注入点插入目标程序,从而可以获得对目标程序的测试结果。
在具体的实施过程中,可以将目标程序运行的数据和预定数据集中的预设数据进行比对,若目标程序运行的数据和预设数据相同或目标程序运行的数据和预设数据的差值属于预定范围,则目标程序数据的一致性测试合格。
在本发明实施例中,通过对目测程序的分析,确定故障注入点,使用字节码注入的方式精准的控制故障发生时间和位置,实现快速验证故障模式下,验证数据的一致性问题,提高了测试用例有效性,极大地降低了测试所需的工时和费用。
基于同一发明构思,本发明实施例提供了一种基于故障注入的测试装置,该基于故障注入的测试装置能够实现前述的基于故障注入的测试方法对应的功能。该基于故障注入的测试装置可以是硬件结构、软件模块、或硬件结构加软件模块。该基于故障注入的测试装置可以由芯片系统实现,芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。请参见图3所示,该基于故障注入的测试装置包括第一确定模块301、第二确定模块302、测试模块303以及校验模块304。其中:
第一确定模块,用于确定所述目标程序的测试故障类型和故障注入点,其中,所述故障注入点为所述目标程序中与预定数据库进行交互的方法对应的程序起始位置处;
第二确定模块,用于根据所述测试故障类型,从测试用例集中确定出目标测试用例,其中,所述测试用例集包括采用多种方法对所述目标程序进行测试的多个测试用例;
测试模块,用于根据所述目标测试用例,从测试用例和字节码的映射关系中确定出目标字节码,并在所述目标程序运行中,将所述目标字节码在所述故障注入点插入所述目标程序,以获得对所述目标程序的测试结果;
验证模块,用于将所述测试结果和预定数据集进行比对,以验证所述目标程序数据的一致性,其中,所述预定数据集用于表征所述目标程序中与预定数据库交互的方法对应的程序出现故障时的数据。
在一种可能的实施方式中,所述第一确定模块301,具体用于:
从故障类型表中,根据第一预设规则确定针对所述目标程序进行测试的测试故障类型,所述第一预设规则为根据预设顺序或软硬件故障类型确定测试故障类型,其中,所述故障类型表中至少包括网络故障、电源故障、线程堵塞故障、线程丢失故障、Java虚拟机故障以及数据库故障。
在一种可能的实施方式中,所述装置还包括处理模块,所述处理模块具体用于:
构建所述目标程序与数据库进行交互的各个方法对应的各个方法名与所述故障类型表中各个故障类型的因子状态表,其中,所述因子状态表用于表征将所述各个方法名作为因子和将所述故障类型表中的各个故障类型作为状态构建的多个因子状态关系的集合;
根据第二预设规则,确定所述因子状态表中每个因子状态关系的权值,并根据所述多个因子状态关系和所述每个因子状态关系的权值生成因素分析表,所述因素分析表中用于表征因子状态关系和权值一一对应的关系;
确定与所述因子状态表匹配的正交表,并根据所述因素分析表和所述与所述因子状态表匹配的正交表,构造所述测试用例集,其中,所述与所述因子状态表匹配的正交表用于表征与所述因子状态表的因子和状态数目相匹配的正交设计表格。
在一种可能的实施方式中,所述验证模块304具体用于:
将所述目标程序运行的数据和预定数据集中的预设数据进行比对,若所述目标程序运行的数据和所述预设数据相同或所述目标程序运行的数据和所述预设数据的差值属于预定范围,则所述目标程序数据的一致性测试合格。
前述的基于故障注入的测试方法的实施例涉及的各步骤的所有相关内容均可以援引到本发明实施例中的基于故障注入的测试装置所对应的功能模块的功能描述,在此不再赘述。
本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本发明各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
基于同一发明构思,本发明实施例提供一种计算机设备,请参见图4所示,该计算机设备包括至少一个处理器401,以及与至少一个处理器连接的存储器402,本发明实施例中不限定处理器401与存储器402之间的具体连接介质,图4中是以处理器401和存储器402之间通过总线400连接为例,总线400在图4中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线400可以分为地址总线、数据总线、控制总线等,为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在本发明实施例中,存储器402存储有可被至少一个处理器401执行的指令,至少一个处理器401通过执行存储器402存储的指令,可以执行前述的基于故障注入的测试方法中所包括的步骤。
其中,处理器401是计算机设备的控制中心,可以利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器402内的指令以及调用存储在存储器402内的数据,计算机设备的各种功能和处理数据,从而对计算机设备进行整体监控。
可选的,处理器401可包括一个或多个处理单元,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。在一些实施例中,处理器401和存储器402可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
处理器401可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本发明实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器402作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器402可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器402是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本发明实施例中的存储器402还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
通过对处理器401进行设计编程,可以将前述实施例中介绍的基于故障注入的测试方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行前述的基于故障注入的测试方法的步骤,如何对处理器401进行设计编程为本领域技术人员所公知的技术,这里不再赘述。
基于同一发明构思,本发明实施例还提供一种存储介质,该存储介质存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行如前述的基于故障注入的测试方法的步骤。
在一些可能的实施方式中,本发明提供的基于故障注入的测试方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在检测程序性能瓶颈的设备上运行时,所述程序代码用于使该检测程序性能瓶颈的设备执行本说明书上述描述的根据本发明各种示例性实施方式的基于故障注入的测试方法中的步骤。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种基于故障注入的测试方法,其特征在于,所述方法包括:
确定目标程序的测试故障类型和故障注入点,其中,所述故障注入点为所述目标程序中与预定数据库进行交互的方法对应的程序起始位置处;
根据所述测试故障类型,从测试用例集中确定出目标测试用例,其中,所述测试用例集包括采用多种方法对所述目标程序进行测试的多个测试用例;
根据所述目标测试用例,从测试用例和字节码的映射关系中确定出目标字节码,并在所述目标程序运行中,将所述目标字节码在所述故障注入点插入所述目标程序,以获得对所述目标程序的测试结果;
将所述测试结果和预定数据集进行比对,以验证所述目标程序数据的一致性,其中,所述预定数据集用于表征所述目标程序中与预定数据库交互的方法对应的程序出现故障时的数据。
2.如权利要求1所述的方法,其特征在于,确定所述目标程序的测试故障类型,包括:
从故障类型表中,根据第一预设规则确定针对所述目标程序进行测试的测试故障类型,所述第一预设规则为根据预设顺序或软硬件故障类型确定测试故障类型,其中,所述故障类型表中至少包括网络故障、电源故障、线程堵塞故障、线程丢失故障、Java虚拟机故障以及数据库故障。
3.如权利要求2所述的方法,其特征在于,所述方法还包括:
构建所述目标程序与数据库进行交互的各个方法对应的各个方法名与所述故障类型表中各个故障类型的因子状态表,其中,所述因子状态表用于表征将所述各个方法名作为因子和将所述故障类型表中的各个故障类型作为状态构建的多个因子状态关系的集合;
根据第二预设规则,确定所述因子状态表中每个因子状态关系的权值,并根据所述多个因子状态关系和所述每个因子状态关系的权值生成因素分析表,所述因素分析表中用于表征因子状态关系和权值一一对应的关系;
确定与所述因子状态表匹配的正交表,并根据所述因素分析表和所述与所述因子状态表匹配的正交表,构造所述测试用例集,其中,所述与所述因子状态表匹配的正交表用于表征与所述因子状态表的因子和状态数目相匹配的正交设计表格。
4.如权利要求1所述的方法,其特征在于,将所述测试结果和预定数据集进行比对,以验证所述目标程序数据的一致性,包括:
将所述目标程序运行的数据和预定数据集中的预设数据进行比对,若所述目标程序运行的数据和所述预设数据相同或所述目标程序运行的数据和所述预设数据的差值属于预定范围,则所述目标程序数据的一致性测试合格。
5.一种基于故障注入的测试装置,其特征在于,所述装置包括:
第一确定模块,用于确定所述目标程序的测试故障类型和故障注入点,其中,所述故障注入点为所述目标程序中与预定数据库进行交互的方法对应的程序起始位置处;
第二确定模块,用于根据所述测试故障类型,从测试用例集中确定出目标测试用例,其中,所述测试用例集包括采用多种方法对所述目标程序进行测试的多个测试用例;
测试模块,用于根据所述目标测试用例,从测试用例和字节码的映射关系中确定出目标字节码,并在所述目标程序运行中,将所述目标字节码在所述故障注入点插入所述目标程序,以获得对所述目标程序的测试结果;
验证模块,用于将所述测试结果和预定数据集进行比对,以验证所述目标程序数据的一致性,其中,所述预定数据集用于表征所述目标程序中与预定数据库交互的方法对应的程序出现故障时的数据。
6.如权利要求5所述的装置,其特征在于,所述第一确定模块,具体用于:
从故障类型表中,根据第一预设规则确定针对所述目标程序进行测试的测试故障类型,所述第一预设规则为根据预设顺序或软硬件故障类型确定测试故障类型,其中,所述故障类型表中至少包括网络故障、电源故障、线程堵塞故障、线程丢失故障、Java虚拟机故障以及数据库故障。
7.如权利要求5所述的装置,其特征在于,所述装置还包括处理模块,所述处理模块具体用于:
构建所述目标程序与数据库进行交互的各个方法对应的各个方法名与所述故障类型表中各个故障类型的因子状态表,其中,所述因子状态表用于表征将所述各个方法名作为因子和将所述故障类型表中的各个故障类型作为状态构建的多个因子状态关系的集合;
根据第二预设规则,确定所述因子状态表中每个因子状态关系的权值,并根据所述多个因子状态关系和所述每个因子状态关系的权值生成因素分析表,所述因素分析表中用于表征因子状态关系和权值一一对应的关系;
确定与所述因子状态表匹配的正交表,并根据所述因素分析表和所述与所述因子状态表匹配的正交表,构造所述测试用例集,其中,所述与所述因子状态表匹配的正交表用于表征与所述因子状态表的因子和状态数目相匹配的正交设计表格。
8.如权利要求5所述的装置,其特征在于,所述验证模块具体用于:
将所述目标程序运行的数据和预定数据集中的预设数据进行比对,若所述目标程序运行的数据和所述预设数据相同或所述目标程序运行的数据和所述预设数据的差值属于预定范围,则所述目标程序数据的一致性测试合格。
9.一种计算机设备,其特征在于,所述计算机设备包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行权利要求1-4任一所述的方法包括的步骤。
10.一种存储介质,其特征在于,所述存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行权利要求1-4任一所述的方法包括的步骤。
CN201911419393.9A 2019-12-31 2019-12-31 一种基于故障注入的测试方法、装置及计算机设备 Active CN113127331B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911419393.9A CN113127331B (zh) 2019-12-31 2019-12-31 一种基于故障注入的测试方法、装置及计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911419393.9A CN113127331B (zh) 2019-12-31 2019-12-31 一种基于故障注入的测试方法、装置及计算机设备

Publications (2)

Publication Number Publication Date
CN113127331A true CN113127331A (zh) 2021-07-16
CN113127331B CN113127331B (zh) 2024-01-05

Family

ID=76769474

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911419393.9A Active CN113127331B (zh) 2019-12-31 2019-12-31 一种基于故障注入的测试方法、装置及计算机设备

Country Status (1)

Country Link
CN (1) CN113127331B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117130945A (zh) * 2023-10-26 2023-11-28 中国证券登记结算有限责任公司 一种测试方法和装置
WO2023230883A1 (zh) * 2022-05-31 2023-12-07 华为技术有限公司 一种测试方法、系统及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011044111A (ja) * 2009-08-24 2011-03-03 Fujitsu Semiconductor Ltd ソフトウェアのテスト方法及びプログラム
US20120084759A1 (en) * 2010-10-01 2012-04-05 George Candea System and method for in-vivo multi-path analysis of binary software
CN107368408A (zh) * 2017-05-31 2017-11-21 中国船舶工业综合技术经济研究院 一种面向接口的软件故障注入自动化测试方法
CN110008113A (zh) * 2019-02-20 2019-07-12 北京三快在线科技有限公司 一种测试方法、装置、电子设备
CN110581785A (zh) * 2018-06-11 2019-12-17 中国移动通信集团浙江有限公司 一种可靠性评估方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011044111A (ja) * 2009-08-24 2011-03-03 Fujitsu Semiconductor Ltd ソフトウェアのテスト方法及びプログラム
US20120084759A1 (en) * 2010-10-01 2012-04-05 George Candea System and method for in-vivo multi-path analysis of binary software
CN107368408A (zh) * 2017-05-31 2017-11-21 中国船舶工业综合技术经济研究院 一种面向接口的软件故障注入自动化测试方法
CN110581785A (zh) * 2018-06-11 2019-12-17 中国移动通信集团浙江有限公司 一种可靠性评估方法和装置
CN110008113A (zh) * 2019-02-20 2019-07-12 北京三快在线科技有限公司 一种测试方法、装置、电子设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
余波: "基于Java平台的单元测试技术研究", 《中国优秀硕士论文 信息科技》 *
汤红霞;方木云;刘明;秦飞;: "基于正交法的软件测试用例生成", 计算机工程与设计, no. 14 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023230883A1 (zh) * 2022-05-31 2023-12-07 华为技术有限公司 一种测试方法、系统及装置
CN117130945A (zh) * 2023-10-26 2023-11-28 中国证券登记结算有限责任公司 一种测试方法和装置
CN117130945B (zh) * 2023-10-26 2024-02-09 中国证券登记结算有限责任公司 一种测试方法和装置

Also Published As

Publication number Publication date
CN113127331B (zh) 2024-01-05

Similar Documents

Publication Publication Date Title
US11036507B2 (en) Processor testing using pairs of counter incrementing and branch instructions
CN110704304B (zh) 一种应用程序测试方法、装置、存储介质和服务器
CN112286828B (zh) 一种区块链智能合约的测试方法和系统
CN112035314B (zh) 内存泄漏的监控方法、装置及电子设备
US20100031239A1 (en) Systems, Methods, and Media for Testing Software Patches
CN104731698A (zh) 基于自动化测试的异常测试用例自动生成处理方法及装置
CN113127331B (zh) 一种基于故障注入的测试方法、装置及计算机设备
CN107850641A (zh) 片上系统(SoC)的系统级验证
CN111723020A (zh) 一种电能表测试软件的测试方法、装置及其设备
CN115686961A (zh) 处理器测试方法、装置及电子设备
CN109902001B (zh) 对未初始化变量的检测方法及终端设备
CN114996076B (zh) 一种用于芯片仿真的遍历型用例验证方法、系统及电子设备
CN115470141A (zh) 一种故障模拟方法、装置及相关设备
CN115373929A (zh) 测试方法、装置、设备、可读存储介质及程序产品
CN108763039B (zh) 一种业务故障模拟方法、装置及设备
US7133818B2 (en) Method and apparatus for accelerated post-silicon testing and random number generation
CN111367816B (zh) 移动测试方法、装置、计算机设备及存储介质
US11868241B1 (en) Method and system for optimizing a verification test regression
CN113407394B (zh) 一种服务器ras功能测试的方法、装置、设备和介质
CN114328228A (zh) 基于测试用例扩展的软件错误验证方法、装置及系统
CN115576821A (zh) 一种验证方法、装置,电子设备及存储介质
CN115878460A (zh) 回归测试方法、装置、计算机设备及存储介质
CN117453567A (zh) 混沌测试方法、装置及设备
CN107102938A (zh) 测试脚本的更新方法及装置
CN116166521A (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