CN113326184B - 接口测试方法、装置、存储介质及电子设备 - Google Patents
接口测试方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN113326184B CN113326184B CN202110513534.4A CN202110513534A CN113326184B CN 113326184 B CN113326184 B CN 113326184B CN 202110513534 A CN202110513534 A CN 202110513534A CN 113326184 B CN113326184 B CN 113326184B
- Authority
- CN
- China
- Prior art keywords
- target
- interface
- calling
- call
- test
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
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)
- Debugging And Monitoring (AREA)
Abstract
本公开涉及一种接口测试方法、装置、存储介质及电子设备,以提升测试效率。所述方法包括:根据目标应用的源代码文件,生成与目标接口对应的目标调用链,目标接口为目标应用的对外接口,目标调用链的根节点为目标接口,目标调用链的其余节点为能够通过目标接口调用的方法;对目标调用链包含的方法进行字节码增强,获得目标代码文件;生成与目标接口对应的调用流程图,调用流程图包含根节点、用于表征各个被增强的方法的节点以及各个节点之间的调用关系;响应于接收到针对目标接口的测试指令,显示调用流程图;获取用户针对调用流程图输入的测试配置信息;根据测试配置信息,基于目标代码文件对目标接口进行测试。
Description
技术领域
本公开涉及计算机技术领域,具体地,涉及一种接口测试方法、装置、存储介质及电子设备。
背景技术
软件工程的目标在于,充分利用有限的人力和物力资源,高效率、高质量地完成软件开发项目,其中,软件测试是保证软件质量、提高软件可靠性的关键。在软件测试中,通常涉及到针对应用接口的测试。相关技术中,在对应用程序的接口进行测试的过程中,通常需要由测试人员编写测试代码,之后基于编写的测试代码进行测试,这就导致接口测试对测试人员的代码技能要求很高,同时,代码编写也需要花费一定的时间。因此,目前的测试存在实现复杂、测试效率低的缺点,无法保证接口测试的效率。
发明内容
本公开的目的是提供一种接口测试方法、装置、存储介质及电子设备,以提升测试效率。
为了实现上述目的,根据本公开的第一方面,提供一种接口测试方法,所述方法包括:
根据目标应用的源代码文件,生成与目标接口对应的目标调用链,所述目标接口为所述目标应用的对外接口,所述目标调用链的根节点为所述目标接口,所述目标调用链的其余节点为能够通过所述目标接口调用的方法;
对所述目标调用链包含的方法进行字节码增强,获得目标代码文件;
生成与所述目标接口对应的调用流程图,所述调用流程图包含所述根节点、用于表征各个被增强的方法的节点以及各个节点之间的调用关系;
响应于接收到针对所述目标接口的测试指令,显示所述调用流程图;
获取用户针对所述调用流程图输入的测试配置信息;
根据所述测试配置信息,基于目标代码文件对所述目标接口进行测试。
可选地,所述根据目标应用的源代码文件,生成与目标接口对应的目标调用链,包括:
对所述源代码文件进行编译,获得所述源代码文件对应的字节码文件;
扫描所述字节码文件,以获取所述目标接口的实现类包含的方法和所述实现类的继承关系;
根据所述目标接口的实现类包含的方法和所述实现类的继承关系,生成所述目标调用链。
可选地,所述根据所述目标接口的实现类包含的方法和所述实现类的继承关系,生成所述目标调用链,包括:
识别所述目标接口的实现类的方法中的方法调用指令;
根据识别出的各个方法调用指令的上下文和调用逻辑,以及所述继承关系,对各个方法进行桥接,以生成所述目标调用链。
可选地,所述对所述目标调用链包含的方法进行字节码增强,获得目标代码文件,包括:
针对所述目标调用链包含的每个方法,在该方法的函数前加入增强代码,以对该方法进行字节码增强,其中,所述增强代码用于设置执行该方法原本的函数代码或为该方法返回指定数据。
可选地,在显示所述调用流程图的步骤之后,所述方法还包括:
若接收到针对目标节点的触发指令,显示与所述目标节点对应的配置选项,其中,所述配置选项包括执行所述目标节点的方法原本的函数代码的第一选项和为所述目标节点的方法返回指定数据的第二选项;
接收并保存用户针对所述配置选项的选择指令。
可选地,所述测试配置信息包括本次测试所调用的待测试节点以及用户对每一所述待测试节点输入的选择指令。
可选地,所述根据所述测试配置信息,基于目标代码文件对所述目标接口进行测试,包括:
获取所述测试配置信息所调用的各个待测试节点之间的调用关系;
根据各个待测试节点之间的调用关系,逐个对所述待测试节点进行调用,其中,对于每个待测试节点的调用遵循针对每个测试节点自身的选择指令。
根据本公开的第二方面,提供一种接口测试装置,所述装置包括:
第一生成模块,用于根据目标应用的源代码文件,生成与目标接口对应的目标调用链,所述目标接口为所述目标应用的对外接口,所述目标调用链的根节点为所述目标接口,所述目标调用链的其余节点为能够通过所述目标接口调用的方法;
处理模块,用于对所述目标调用链包含的方法进行字节码增强,获得目标代码文件;
第二生成模块,用于生成与所述目标接口对应的调用流程图,所述调用流程图包含所述根节点、用于表征各个被增强的方法的节点以及各个节点之间的调用关系;
第一显示模块,用于响应于接收到针对所述目标接口的测试指令,显示所述调用流程图;
获取模块,用于获取用户针对所述调用流程图输入的测试配置信息;
测试模块,用于根据所述测试配置信息,基于目标代码文件对所述目标接口进行测试。
可选地,所述第一生成模块,包括:
编译子模块,用于对所述源代码文件进行编译,获得所述源代码文件对应的字节码文件;
扫描子模块,用于扫描所述字节码文件,以获取所述目标接口的实现类包含的方法和所述实现类的继承关系;
生成子模块,用于根据所述目标接口的实现类包含的方法和所述实现类的继承关系,生成所述目标调用链。
可选地,所述生成子模块,包括:
识别子模块,用于识别所述目标接口的实现类的方法中的方法调用指令;
桥接子模块,用于根据识别出的各个方法调用指令的上下文和调用逻辑,以及所述继承关系,对各个方法进行桥接,以生成所述目标调用链。
可选地,所述处理模块用于针对所述目标调用链包含的每个方法,在该方法的函数前加入增强代码,以对该方法进行字节码增强,其中,所述增强代码用于设置执行该方法原本的函数代码或为该方法返回指定数据。
可选地,所述装置还包括:
第二显示模块,用于在第一显示模块显示所述调用流程图之后,若接收到针对目标节点的触发指令,显示与所述目标节点对应的配置选项,其中,所述配置选项包括执行所述目标节点的方法原本的函数代码的第一选项和为所述目标节点的方法返回指定数据的第二选项;
指令接收模块,用于接收并保存用户针对所述配置选项的选择指令。
可选地,所述测试配置信息包括本次测试所调用的待测试节点以及用户对每一所述待测试节点输入的选择指令。
可选地,所述测试模块,包括:
获取子模块,用于获取所述测试配置信息所调用的各个待测试节点之间的调用关系;
测试子模块,用于根据各个待测试节点之间的调用关系,逐个对所述待测试节点进行调用,其中,对于每个待测试节点的调用遵循针对每个测试节点自身的选择指令。
根据本公开的第三方面,一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本公开第一方面所述方法的步骤。
根据本公开的第四方面,提供一种电子设备,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现本公开第一方面所述方法的步骤。
通过上述技术方案,根据目标应用的源代码文件,生成与目标接口对应的目标调用链,对目标调用链包含的方法进行字节码增强,以获得目标代码文件,并且,生成与目标接口对应的调用流程图,之后,响应于接收到针对目标接口的测试指令,显示与目标接口对应的调用流程图,再获取用户针对调用流程图输入的测试配置信息,从而,根据该测试配置信息,基于目标代码文件对目标接口进行测试。由此,通过目标应用对外暴露的接口,可视化展示其调用流程图,同时,可以由用户对调用流程图中的每个节点进行灵活的配置,这样,无需编写任何代码,仅通过简单的配置操作就可以完成针对接口的测试,降低了对测试人员的要求,同时能提高测试效率。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是根据本公开的一种实施方式提供的接口测试方法的流程图;
图2是根据本公开提供的接口测试方法中,生成目标调用链的一种示例性的流程图;
图3是根据本公开的一种实施方式提供的接口测试装置的框图;
图4是根据一示例性实施例示出的一种电子设备的框图;
图5是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
图1是根据本公开的一种实施方式提供的接口测试方法的流程图。如图1所示,该方法可以包括步骤11~步骤16。
在步骤11中,根据目标应用的源代码文件,生成与目标接口对应的目标调用链。
其中,目标接口为目标应用的对外接口。目标调用链的根节点为目标接口,目标调用链的其余节点为能够通过目标接口调用的方法。
首先需要说明的是,目标应用通常设置有多个对外暴露的接口,其中每个对外暴露的接口均可作为目标接口进行步骤11~步骤16的处理,从而,可以实现目标应用的每个接口调用流程图的可视化展示,帮助测试人员实现对每个接口的测试。因此,在后续以目标接口为处理对象的描述可以适用于目标应用的任何一个接口。
在本公开中,目标应用对外暴露的每个接口都可以认为是调用链的根节点,从一个根节点遍历可达的所有节点,就是对应于这一根节点的调用链。
在一种可能的实施方式中,步骤11可以包括以下步骤21~步骤23,如图2所示。
在步骤21中,对源代码文件进行编译,获得源代码文件对应的字节码文件。
例如,对Java文件进行编译,即可获得对应的class文件。
在步骤22中,扫描字节码文件,以获取目标接口的实现类包含的方法和实现类的继承关系。
对编译后获得的字节码文件进行扫描,能够扫描到对应于目标应用的每个接口的实现类以及每个实现类包含的方法,同时能够获取到每个实现类的继承关系。其中,实现类的继承关系可以包括该实现类的父类及子类。基于上述扫描结果,可以直接获得目标接口的实现类包含的方法和目标接口个实现类的继承关系。
举例来说,针对基于Java开发的目标应用,编译后获得class文件,扫描class文件,能够获取到所有Springboot的rest接口实现类(后续将作为调用链的根节点),还能够获取到上述类的每个rest方法,同时,接口与接口实现类的对应关系可知,实现类的继承关系可知。从上述结果中筛选出与目标接口对应的实现类,并获取其继承关系和其中包含的方法即可。
在步骤23中,根据目标接口的实现类包含的方法和实现类的继承关系,生成目标调用链。
在一种可能的实施方式中,步骤23可以包括以下步骤:
识别目标接口的实现类的方法中的方法调用指令;
根据识别出的各个方法调用指令的上下文和调用逻辑,以及继承关系,对各个方法进行桥接,以生成目标调用链。
在编写代码期间,通常会在方法体中根据实际的需求使用合适的方法调用指令,以实现不同的调用目的。方法调用指令可以有多种,且每一种方法调用指令具有不同的调用逻辑。因此,为了生成能够表明方法间调用关系的目标调用链,首先需要识别出方法调用指令,再根据识别出的方法调用指令所在段落的上下文以及方法调用指令本身的调用逻辑,同时结合类与类之间的继承关系,对涉及到的各个方法进行桥接,以生成能够表明方法间调用关系的调用链,即目标接口对应的目标调用链。
示例地,方法调用指令可以为invoke指令。invoke指令本身包含多种类型,如invokestatic、invokespecial、invokeinterface、invokevirtual、invokedynamic这五种。下面将以方法调用指令为invoke指令为例,对上述步骤进行举例说明:
invokestatic指令用于调用类方法,因此,当扫描到invokestatic指令时就能够得到调用类的方法;
invokespecial指令用于调用需特殊处理的实例方法,包括实例初始化方法、私有方法和父类方法,因此,当扫描到invokespecial指令既能够得到相关的方法;
invokevirtual指令用于调用对象的实例方法,根据对象的实际类型执行,举例来说,如果一个类只有一个子类,则可以判定由这个子类执行,从而可以对这个类和子类进行桥接;
invokeinterface指令用于调用接口,不过,实际上真正执行的是接口的实现类代码,因此,如果接口只有一个实现类,那么就可以判定执行的是这个实现类,从而可以对该接口和该实现类进行桥接;
invokedynamic指令单纯按照字节码指令指向的是一个引导方法(BootstrapMethod),因此,需要判定真正执行的方法,以获得真正的调用关系;
另外,匿名内部类编译过程中会生成一个类似A$1的class文件,根据字节码文件中的EnclosingMethod字段可以判定上层调用方的类名和方法名,从而,可以完成方法和匿名内部类方法的桥接。
在步骤12中,对目标调用链包含的方法进行字节码增强,获得目标代码文件。
在一种可能的实施方式中,步骤12可以包括以下步骤:
针对目标调用链包含的每个方法,在该方法的函数前加入增强代码,以对该方法进行字节码增强。
其中,上述增强代码用于设置执行该方法原本的函数代码或为该方法返回指定数据。也就是说,在方法函数前加入一段增强代码,该增强代码能够在该方法在被调用前就被触发,以执行该方法原本的函数代码或者为该方法返回指定数据。其中,上述指定数据可以由用户在测试过程中实时配置。
Java Agent是Java提供的机制,该机制可以允许在软件系统启动前期或运行中加载自定义的字节码转换器,Javassist是Java中比较通用的字节码增强技术,具有功能强大、速度快的特点。示例地,以Java代码为例,在启动脚本中可以使用Java提供的Agent机制加载字节码转换器,从而,在类加载过程中能够调用字节码转换器,在字节码转换器中使用Javassist在函数前织入增强代码进行字节码增强,也就是在函数前织入增强代码作为前置增强,且前置增强代码的逻辑用于设置执行原函数代码或返回用户配置的模拟数据。
在步骤13中,生成与目标接口对应的调用流程图。
其中,调用流程图包含根节点、用于表征各个被增强的方法的节点以及各个节点之间的调用关系。各个节点之间的调用关系就是目标调用链中记载的各方法之间的调用关系。
在得到目标接口对应的调用流程图后,可以将其保存到数据库中,并且,可以与目标接口相关联。
在步骤14中,响应于接收到针对目标接口的测试指令,显示调用流程图。
在实际的测试过程中,可以提供可视化展示页面,用户(测试人员)可以通过该可视化展示页面进行操作,以触发针对目标接口的测试。
在接收到针对目标接口的测试指令后,响应于该测试指令,可以从数据库中调用与目标接口对应的调用流程图,并将其显示在可视化展示页面上。示例地,调用流程图可以展示为树形,以目标接口为根节点,根据调用流程图所记载的调用关系进行绘制,如A节点调用的B节点展示为B为A的叶子节点。
可选地,在步骤14之后,本公开提供的方法还可以包括以下步骤:
若接收到针对目标节点的触发指令,显示与目标节点对应的配置选项;
接收并保存用户针对配置选项的选择指令。
如前文所述,在进行字节码增强时,前置代码用于设置执行方法原本的函数代码或为该方法返回指定数据,因此,在显示调用流程图之后,响应于用户对某个节点的触发,可以提供针对该节点的配置选项。其中,配置选项可以包括执行目标节点的方法原本的函数代码的第一选项和为目标节点的方法返回指定数据的第二选项。也就是说,用户可以自主地选择测试过程中是执行目标节点原本的方法函数代码还是为目标节点指定返回数据。示例地,针对目标节点的触发指令可以由用户点击目标节点而生成。
相应地,若用户选择了第一选项,在实际测试过程中,目标节点的执行会依赖于测试过程中实际传入的参数,执行目标节点的方法函数代码,并返回实际的执行结果。若用户选择了第二选项,在实际测试过程中,当执行到目标节点时,无需实际执行方法函数,而会直接返回指定数据。其中,指定数据可以在字节码增强过程中预先设置,或者,可以由用户在选择第二选项的同时进行设置。
基于上述步骤,用户可以将调用流程图中的每个需要测试的节点作为目标节点,并按照上述方法进行配置,用户未配置的节点就是本次测试不需要测试的部分。通过用户对调用流程图中各个节点的不同配置,可以生成多种多样的测试用例。
在步骤15中,获取用户针对调用流程图输入的测试配置信息。
如前文中所描述的,测试配置信息可以包括本次测试所调用的待测试节点以及用户对每一待测试节点输入的选择指令。
用户在对本次测试配置完成后,可以保存此次配置,也就是保存了用户本次测试针对调用流程图输入的测试配置信息。在进行测试时,获取该测试配置信息,用于实际的测试。
在步骤16中,根据测试配置信息,基于目标代码文件对目标接口进行测试。
示例地,可以通过如下方式进行测试:
获取测试配置信息所调用的各个待测试节点之间的调用关系;
根据各个待测试节点之间的调用关系,逐个对待测试节点进行调用。
其中,对于每个待测试节点的调用遵循针对每个测试节点自身的选择指令。
测试系统会记录用户对整个调用流程图的每个节点的配置信息(测试配置信息),当执行测试时,根据各个待测试节点之间的调用关系执行测试,并且,由于每个待测试节点对应的函数均进行过字节码增强,从而,待测试节点对应方法的函数会获取对应节点上的测试配置数据,用于确定是执方法原本的函数代码还是直接获取指定数据,以进行相应的处理。执行测试后,可以检查各个待测试节点的结果是否符合预期,以获得测试结果。
通过上述技术方案,根据目标应用的源代码文件,生成与目标接口对应的目标调用链,对目标调用链包含的方法进行字节码增强,以获得目标代码文件,并且,生成与目标接口对应的调用流程图,之后,响应于接收到针对目标接口的测试指令,显示与目标接口对应的调用流程图,再获取用户针对调用流程图输入的测试配置信息,从而,根据该测试配置信息,基于目标代码文件对目标接口进行测试。由此,通过目标应用对外暴露的接口,可视化展示其调用流程图,同时,可以由用户对调用流程图中的每个节点进行灵活的配置,这样,无需编写任何代码,仅通过简单的配置操作就可以完成针对接口的测试,降低了对测试人员的要求,同时能提高测试效率。
图3是根据本公开的一种实施方式提供的接口测试装置的框图。如图3所示,所述装置30包括:
第一生成模块31,用于根据目标应用的源代码文件,生成与目标接口对应的目标调用链,所述目标接口为所述目标应用的对外接口,所述目标调用链的根节点为所述目标接口,所述目标调用链的其余节点为能够通过所述目标接口调用的方法;
处理模块32,用于对所述目标调用链包含的方法进行字节码增强,获得目标代码文件;
第二生成模块33,用于生成与所述目标接口对应的调用流程图,所述调用流程图包含所述根节点、用于表征各个被增强的方法的节点以及各个节点之间的调用关系;
第一显示模块34,用于响应于接收到针对所述目标接口的测试指令,显示所述调用流程图;
获取模块35,用于获取用户针对所述调用流程图输入的测试配置信息;
测试模块36,用于根据所述测试配置信息,基于目标代码文件对所述目标接口进行测试。
可选地,所述第一生成模块31,包括:
编译子模块,用于对所述源代码文件进行编译,获得所述源代码文件对应的字节码文件;
扫描子模块,用于扫描所述字节码文件,以获取所述目标接口的实现类包含的方法和所述实现类的继承关系;
生成子模块,用于根据所述目标接口的实现类包含的方法和所述实现类的继承关系,生成所述目标调用链。
可选地,所述生成子模块,包括:
识别子模块,用于识别所述目标接口的实现类的方法中的方法调用指令;
桥接子模块,用于根据识别出的各个方法调用指令的上下文和调用逻辑,以及所述继承关系,对各个方法进行桥接,以生成所述目标调用链。
可选地,所述处理模块32用于针对所述目标调用链包含的每个方法,在该方法的函数前加入增强代码,以对该方法进行字节码增强,其中,所述增强代码用于设置执行该方法原本的函数代码或为该方法返回指定数据。
可选地,所述装置30还包括:
第二显示模块,用于在第一显示模块显示所述调用流程图之后,若接收到针对目标节点的触发指令,显示与所述目标节点对应的配置选项,其中,所述配置选项包括执行所述目标节点的方法原本的函数代码的第一选项和为所述目标节点的方法返回指定数据的第二选项;
指令接收模块,用于接收并保存用户针对所述配置选项的选择指令。
可选地,所述测试配置信息包括本次测试所调用的待测试节点以及用户对每一所述待测试节点输入的选择指令。
可选地,所述测试模块36,包括:
获取子模块,用于获取所述测试配置信息所调用的各个待测试节点之间的调用关系;
测试子模块,用于根据各个待测试节点之间的调用关系,逐个对所述待测试节点进行调用,其中,对于每个待测试节点的调用遵循针对每个测试节点自身的选择指令。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图4是根据一示例性实施例示出的一种电子设备700的框图。如图4所示,该电子设备700可以包括:处理器701,存储器702。该电子设备700还可以包括多媒体组件703,输入/输出(I/O)接口704,以及通信组件705中的一者或多者。
其中,处理器701用于控制该电子设备700的整体操作,以完成上述的接口测试方法中的全部或部分步骤。存储器702用于存储各种类型的数据以支持在该电子设备700的操作,这些数据例如可以包括用于在该电子设备700上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器702可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件703可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器702或通过通信组件705发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口704为处理器701和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件705用于该电子设备700与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near FieldCommunication,简称NFC),2G、3G、4G、NB-IOT、eMTC、或其他5G等等,或它们中的一种或几种的组合,在此不做限定。因此相应的该通信组件705可以包括:Wi-Fi模块,蓝牙模块,NFC模块等等。
在一示例性实施例中,电子设备700可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的接口测试方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的接口测试方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器702,上述程序指令可由电子设备700的处理器701执行以完成上述的接口测试方法。
图5是根据一示例性实施例示出的一种电子设备1900的框图。例如,电子设备1900可以被提供为一服务器。参照图5,电子设备1900包括处理器1922,其数量可以为一个或多个,以及存储器1932,用于存储可由处理器1922执行的计算机程序。存储器1932中存储的计算机程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理器1922可以被配置为执行该计算机程序,以执行上述的接口测试方法。
另外,电子设备1900还可以包括电源组件1926和通信组件1950,该电源组件1926可以被配置为执行电子设备1900的电源管理,该通信组件1950可以被配置为实现电子设备1900的通信,例如,有线或无线通信。此外,该电子设备1900还可以包括输入/输出(I/O)接口1958。电子设备1900可以操作基于存储在存储器1932的操作系统,例如WindowsServerTM,Mac OS XTM,UnixTM,LinuxTM等等。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的接口测试方法的步骤。例如,该非临时性计算机可读存储介质可以为上述包括程序指令的存储器1932,上述程序指令可由电子设备1900的处理器1922执行以完成上述的接口测试方法。
在另一示例性实施例中,还提供一种计算机程序产品,该计算机程序产品包含能够由可编程的装置执行的计算机程序,该计算机程序具有当由该可编程的装置执行时用于执行上述的接口测试方法的代码部分。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。
Claims (9)
1.一种接口测试方法,其特征在于,所述方法包括:
根据目标应用的源代码文件,生成与目标接口对应的目标调用链,所述目标接口为所述目标应用的对外接口,所述目标调用链的根节点为所述目标接口,所述目标调用链的其余节点为能够通过所述目标接口调用的方法;
对所述目标调用链包含的方法进行字节码增强,获得目标代码文件;
生成与所述目标接口对应的调用流程图,所述调用流程图包含所述根节点、用于表征各个被增强的方法的节点以及各个节点之间的调用关系;
响应于接收到针对所述目标接口的测试指令,显示所述调用流程图;
获取用户针对所述调用流程图输入的测试配置信息,其中,在所述用户对本次测试配置完成后,保存所述用户本次测试输入的所述测试配置信息;
根据所述测试配置信息,基于目标代码文件对所述目标接口进行测试;
所述对所述目标调用链包含的方法进行字节码增强,获得目标代码文件,包括:
针对所述目标调用链包含的每个方法,在该方法的函数前加入增强代码,以对该方法进行字节码增强,其中,所述增强代码用于设置执行该方法原本的函数代码或为该方法返回指定数据。
2.根据权利要求1所述的方法,其特征在于,所述根据目标应用的源代码文件,生成与目标接口对应的目标调用链,包括:
对所述源代码文件进行编译,获得所述源代码文件对应的字节码文件;
扫描所述字节码文件,以获取所述目标接口的实现类包含的方法和所述实现类的继承关系;
根据所述目标接口的实现类包含的方法和所述实现类的继承关系,生成所述目标调用链。
3.根据权利要求2所述的方法,其特征在于,所述根据所述目标接口的实现类包含的方法和所述实现类的继承关系,生成所述目标调用链,包括:
识别所述目标接口的实现类的方法中的方法调用指令;
根据识别出的各个方法调用指令的上下文和调用逻辑,以及所述继承关系,对各个方法进行桥接,以生成所述目标调用链。
4.根据权利要求1所述的方法,其特征在于,在显示所述调用流程图的步骤之后,所述方法还包括:
若接收到针对目标节点的触发指令,显示与所述目标节点对应的配置选项,其中,所述配置选项包括执行所述目标节点的方法原本的函数代码的第一选项和为所述目标节点的方法返回指定数据的第二选项;
接收并保存用户针对所述配置选项的选择指令。
5.根据权利要求4所述的方法,其特征在于,所述测试配置信息包括本次测试所调用的待测试节点以及用户对每一所述待测试节点输入的选择指令。
6.根据权利要求5所述的方法,其特征在于,所述根据所述测试配置信息,基于目标代码文件对所述目标接口进行测试,包括:
获取所述测试配置信息所调用的各个待测试节点之间的调用关系;
根据各个待测试节点之间的调用关系,逐个对所述待测试节点进行调用,其中,对于每个待测试节点的调用遵循针对每个测试节点自身的选择指令。
7.一种接口测试装置,其特征在于,所述装置包括:
第一生成模块,用于根据目标应用的源代码文件,生成与目标接口对应的目标调用链,所述目标接口为所述目标应用的对外接口,所述目标调用链的根节点为所述目标接口,所述目标调用链的其余节点为能够通过所述目标接口调用的方法;
处理模块,用于对所述目标调用链包含的方法进行字节码增强,获得目标代码文件;
第二生成模块,用于生成与所述目标接口对应的调用流程图,所述调用流程图包含所述根节点、用于表征各个被增强的方法的节点以及各个节点之间的调用关系;
第一显示模块,用于响应于接收到针对所述目标接口的测试指令,显示所述调用流程图;
获取模块,用于获取用户针对所述调用流程图输入的测试配置信息,其中,在所述用户对本次测试配置完成后,保存所述用户本次测试输入的所述测试配置信息;
测试模块,用于根据所述测试配置信息,基于目标代码文件对所述目标接口进行测试;
所述处理模块用于针对所述目标调用链包含的每个方法,在该方法的函数前加入增强代码,以对该方法进行字节码增强,其中,所述增强代码用于设置执行该方法原本的函数代码或为该方法返回指定数据。
8.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-6中任一项所述方法的步骤。
9.一种电子设备,其特征在于,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现权利要求1-6中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110513534.4A CN113326184B (zh) | 2021-05-11 | 2021-05-11 | 接口测试方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110513534.4A CN113326184B (zh) | 2021-05-11 | 2021-05-11 | 接口测试方法、装置、存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113326184A CN113326184A (zh) | 2021-08-31 |
CN113326184B true CN113326184B (zh) | 2022-05-17 |
Family
ID=77415356
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110513534.4A Active CN113326184B (zh) | 2021-05-11 | 2021-05-11 | 接口测试方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113326184B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109857667A (zh) * | 2019-02-03 | 2019-06-07 | 苏州市龙测智能科技有限公司 | 接口自动化测试方法、测试装置、测试设备及存储介质 |
CN110008113A (zh) * | 2019-02-20 | 2019-07-12 | 北京三快在线科技有限公司 | 一种测试方法、装置、电子设备 |
CN111008022A (zh) * | 2019-12-04 | 2020-04-14 | 浙江大搜车软件技术有限公司 | 关系图生成方法、装置、计算机设备和存储介质 |
CN111045942A (zh) * | 2019-12-12 | 2020-04-21 | 同盾控股有限公司 | 应用测试方法、系统、存储介质及电子设备 |
CN111045724A (zh) * | 2019-12-11 | 2020-04-21 | 广州品唯软件有限公司 | 调用链信息的查询方法、装置和可读存储介质 |
CN111443902A (zh) * | 2020-03-20 | 2020-07-24 | 杭州有赞科技有限公司 | 函数调用树生成方法、系统、计算机设备及可读存储介质 |
CN111797020A (zh) * | 2020-07-03 | 2020-10-20 | 北京每日优鲜电子商务有限公司 | 基于动态字节码的mock数据方法及装置 |
CN112115041A (zh) * | 2020-08-06 | 2020-12-22 | 北京健康之家科技有限公司 | 应用程序的动态埋点方法、装置、存储介质及计算机设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140282415A1 (en) * | 2013-03-14 | 2014-09-18 | Cadence Design Systems, Inc. | Method and system for debugging a program |
CN110083436A (zh) * | 2019-05-14 | 2019-08-02 | 上海理想信息产业(集团)有限公司 | 一种基于Java字节码增强技术的业务数据实时监控系统及方法 |
CN111679984B (zh) * | 2020-06-08 | 2023-09-19 | 中国银行股份有限公司 | 一种性能分析方法和装置 |
CN112612697A (zh) * | 2020-12-17 | 2021-04-06 | 航天信息股份有限公司 | 一种基于字节码技术的软件缺陷测试定位方法及系统 |
-
2021
- 2021-05-11 CN CN202110513534.4A patent/CN113326184B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109857667A (zh) * | 2019-02-03 | 2019-06-07 | 苏州市龙测智能科技有限公司 | 接口自动化测试方法、测试装置、测试设备及存储介质 |
CN110008113A (zh) * | 2019-02-20 | 2019-07-12 | 北京三快在线科技有限公司 | 一种测试方法、装置、电子设备 |
CN111008022A (zh) * | 2019-12-04 | 2020-04-14 | 浙江大搜车软件技术有限公司 | 关系图生成方法、装置、计算机设备和存储介质 |
CN111045724A (zh) * | 2019-12-11 | 2020-04-21 | 广州品唯软件有限公司 | 调用链信息的查询方法、装置和可读存储介质 |
CN111045942A (zh) * | 2019-12-12 | 2020-04-21 | 同盾控股有限公司 | 应用测试方法、系统、存储介质及电子设备 |
CN111443902A (zh) * | 2020-03-20 | 2020-07-24 | 杭州有赞科技有限公司 | 函数调用树生成方法、系统、计算机设备及可读存储介质 |
CN111797020A (zh) * | 2020-07-03 | 2020-10-20 | 北京每日优鲜电子商务有限公司 | 基于动态字节码的mock数据方法及装置 |
CN112115041A (zh) * | 2020-08-06 | 2020-12-22 | 北京健康之家科技有限公司 | 应用程序的动态埋点方法、装置、存储介质及计算机设备 |
Non-Patent Citations (1)
Title |
---|
字节码增强技术实践;破解孤独;《https://www.cnblogs.com/L-Test/p/12447974.html》;20200309;全文第1-5页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113326184A (zh) | 2021-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107979508B (zh) | 微服务测试方法及装置 | |
CN111026645B (zh) | 用户界面自动化测试方法、装置、存储介质及电子设备 | |
US20150339215A1 (en) | Systems and Methods for Testing Terminal Applications | |
CN109308263B (zh) | 一种小程序测试方法、装置及设备 | |
CN112765023B (zh) | 测试用例生成方法、装置 | |
CN112416318B (zh) | 微服务开发方法、装置、存储介质及电子设备 | |
CN105573755A (zh) | 一种应用Activity渲染时间获取方法和装置 | |
CN110320378B (zh) | 质控测试申请方法、装置、设备及计算机可读存储介质 | |
CN111399840A (zh) | 一种模块开发方法及装置 | |
CN111638906A (zh) | 一种软件开发工具包sdk接入方法、装置和系统 | |
CN112506793A (zh) | 嵌入式软件单元测试方法、系统、可读介质及电子设备 | |
CN113986270B (zh) | 分布式应用部署方法、装置、存储介质及电子设备 | |
CN114168463A (zh) | 切换项目环境的方法、装置、存储介质及电子设备 | |
CN109086198B (zh) | 数据库的测试方法、装置及存储介质 | |
CN113742224A (zh) | 测试系统、方法、装置、计算机设备和存储介质 | |
CN110851370B (zh) | 程序测试方法及装置、存储介质 | |
CN113806209A (zh) | 接口测试方法、框架、计算机设备和存储介质 | |
CN113326184B (zh) | 接口测试方法、装置、存储介质及电子设备 | |
CN113032004B (zh) | 在开发环境中管理开发作业的方法、设备和程序产品 | |
CN112486492A (zh) | 页面生成方法、装置、存储介质及电子设备 | |
CN108563578B (zh) | Sdk兼容性检测方法、装置、设备及可读存储介质 | |
CN112748905A (zh) | 基础库的初始化调用方法、装置、电子设备及存储介质 | |
CN111858302B (zh) | 小程序的测试方法、装置、电子设备及存储介质 | |
CN106844186B (zh) | 应用的脱机测试方法及终端设备 | |
CN112214404A (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 |