CN112380130A - 基于调用依赖关系的应用测试方法和装置 - Google Patents
基于调用依赖关系的应用测试方法和装置 Download PDFInfo
- Publication number
- CN112380130A CN112380130A CN202011301046.9A CN202011301046A CN112380130A CN 112380130 A CN112380130 A CN 112380130A CN 202011301046 A CN202011301046 A CN 202011301046A CN 112380130 A CN112380130 A CN 112380130A
- Authority
- CN
- China
- Prior art keywords
- node
- calling
- application code
- application
- determining
- 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.)
- Pending
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/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- 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/362—Software debugging
- G06F11/3624—Software debugging by performing operations on the source code, e.g. via a compiler
-
- 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/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
Abstract
本申请涉及研发管理中的测试流程改进领域,具体涉及一种基于调用依赖关系的应用测试方法和装置,通过获取应用测试请求,查找待测试应用代码;查找待测试应用代码对应的历史应用代码,对比待测试应用代码以及历史应用代码,确定改动节点;通过call trace确定改动节点对应的调用依赖关系节点;进而确定改动方法对应的调用热度,以及确定测试重点以及测试范围;对待测试应用代码进行测试。本申请从待测试应用代码的角度出发,通过代码中的改动节点以及调用依赖关系节点,来进行用户的热度数据分析,能更有效和精准地定位到软件版本更新中受影响的改动方法;从而能够更高效的对应用测试中的热点业务进行功能验证和有效检查问题,提高应用测试的效率。
Description
技术领域
本申请涉及计算机技术领域,具体提供一种基于调用依赖关系的应用测试方法、装置、计算机设备和存储介质。
背景技术
随着计算机技术与软件技术的发展,应用测试技术也在不断更新换代。应用测试过程中的范围判定在应用测试领域比较重要的一环,对于不同的项目特点也不同;对于重构类和三方库升级来说,测试范围非常广,几乎需要全回归。这样就会带来巨大的测试成本。
在测试过程中,快速高效的敏捷迭代代替了传统的瀑布模式;随着微服务的SOA(Service-Oriented Architecture,面向服务的架构)架构越来越普及,业务模块原子化,发布频率越来越多,单元测试,接口测试等自动化测试的持续集成领域也在飞速发展,但是由于微服务的网状依赖关系太过于复杂,还是会有一些重点的测试场景很难考虑到,导致服务不可用,从而降低了测试的效率。
发明内容
基于此,有必要针对上述技术问题,提供一种能够有效提高测试效率的应用测试方法、装置、计算机设备和存储介质。
一种基于调用依赖关系的应用测试方法,所述方法包括:
获取应用测试请求,根据所述应用测试请求查找待测试应用代码;
查找所述待测试应用代码对应的历史应用代码,对比所述待测试应用代码以及所述历史应用代码,确定改动节点;
通过call trace确定所述改动节点对应的调用依赖关系节点;
根据所述调用依赖关系节点确定改动方法对应的调用热度,根据所述调用热度确定测试重点以及测试范围,所述改动方法与所述改动节点相关联;
根据所述测试重点以及所述测试范围对所述待测试应用代码进行测试。
在其中一个实施例中,所述查找待测试应用代码对应的历史应用代码,对比待测试应用代码以及历史应用代码,确定改动节点包括:
通过git diff命令获取所述待测试应用代码与所述历史应用代码之间的差异数据;
根据所述差异数据定位改动节点。
在其中一个实施例中,所述通过call trace确定所述改动节点对应的调用依赖关系节点包括:
通过call trace,根据所述改动节点,反向查询所述改动节点对应的依赖关系中顶部接口方法,并确定所述顶部接口方法与所述改动节点之间的调用依赖关系节点。
在其中一个实施例中,所述通过call trace,根据所述改动节点,反向查询所述改动节点对应的依赖关系中顶部接口方法,并确定所述顶部接口方法与所述改动节点之间的调用依赖关系节点包括:
对所述待测试应用代码对应的工程进行打包编译处理,获取jar文件;
通过解析所述jar文件查找所述待测试应用代码中的类方法;
根据所述类方法确定所述改动节点对应的改动方法;
通过递归算法确定所述改动方法对应的调用依赖关系节点。
在其中一个实施例中,所述根据所述调用依赖关系节点确定改动方法对应的调用热度包括:
根据所述顶部接口方法的调用数据确定所述顶部接口方法下改动方法的调用量、调用占比以及调用平均耗时;
根据所述改动方法的调用量、调用占比以及调用平均耗时,确定所述改动方法对应的调用热度。
在其中一个实施例中,所述根据所述测试重点以及所述测试范围对所述待测试应用代码进行测试之后,还包括:
获取call trace对应的调用关系树以及历史测试用例数据;
确定所述调用关系树中树节点对应的节点分支流程;
根据所述节点分支流程以及所述历史测试用例数据生成补充测试用例。
一种基于调用依赖关系的应用测试装置,所述装置包括:
请求接收模块,用于获取应用测试请求,根据所述应用测试请求查找待测试应用代码;
改动节点查找模块,用于查找所述待测试应用代码对应的历史应用代码,对比所述待测试应用代码以及所述历史应用代码,确定改动节点;
依赖节点查找模块,用于通过call trace确定所述改动节点对应的调用依赖关系节点;
热度查询模块,用于根据所述调用依赖关系节点确定改动方法对应的调用热度,根据所述调用热度确定测试重点以及测试范围,所述改动方法与所述改动节点相关联;
应用测试模块,用于根据所述测试重点以及所述测试范围对所述待测试应用代码进行测试。
在其中一个实施例中,所述改动节点查找模块用于:通过git diff命令获取所述待测试应用代码与所述历史应用代码之间的差异数据;根据所述差异数据定位改动节点。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取应用测试请求,根据所述应用测试请求查找待测试应用代码;
查找所述待测试应用代码对应的历史应用代码,对比所述待测试应用代码以及所述历史应用代码,确定改动节点;
通过call trace确定所述改动节点对应的调用依赖关系节点;
根据所述调用依赖关系节点确定改动方法对应的调用热度,根据所述调用热度确定测试重点以及测试范围,所述改动方法与所述改动节点相关联;
根据所述测试重点以及所述测试范围对所述待测试应用代码进行测试。
一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取应用测试请求,根据所述应用测试请求查找待测试应用代码;
查找所述待测试应用代码对应的历史应用代码,对比所述待测试应用代码以及所述历史应用代码,确定改动节点;
通过call trace确定所述改动节点对应的调用依赖关系节点;
根据所述调用依赖关系节点确定改动方法对应的调用热度,根据所述调用热度确定测试重点以及测试范围,所述改动方法与所述改动节点相关联;
根据所述测试重点以及所述测试范围对所述待测试应用代码进行测试。
上述基于调用依赖关系的应用测试方法、装置、计算机设备、存储介质,通过获取应用测试请求,根据应用测试请求查找待测试应用代码;查找待测试应用代码对应的历史应用代码,对比待测试应用代码以及历史应用代码,确定改动节点;通过call trace确定改动节点对应的调用依赖关系节点;根据调用依赖关系节点确定改动方法对应的调用热度,根据调用热度确定测试重点以及测试范围;根据测试重点以及测试范围对待测试应用代码进行测试。本申请从待测试应用代码的角度出发,通过代码中的改动节点以及调用依赖关系节点,来进行用户的热度数据分析,能更有效和精准地定位到软件版本更新中受影响的改动方法;从而能够更高效的对应用测试中的热点业务进行功能验证和有效检查问题,提高应用测试的效率。
附图说明
图1为一个实施例中基于调用依赖关系的应用测试方法的应用场景图;
图2为一个实施例中基于调用依赖关系的应用测试方法的流程示意图;
图3为一个实施例中定位改动节点步骤的流程示意图;
图4为一个实施例中查找调用依赖关系节点步骤的流程示意图;
图5为一个实施例中确定调用热度步骤的流程示意图;
图6为一个实施例中生成补充测试用例步骤的流程示意图;
图7为一个实施例中基于调用依赖关系的应用测试装置的结构框图;
图8为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的基于调用依赖关系的应用测试方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与应用测试服务器104进行通信,测试的环境具体为Linux,待测试应用代码对应的待测试应用具体为Java应用。当应用测试人员需要对特定软件的代码进行应用测试时,可以通过终端102向应用测试服务器104提交相应的应用测试请求,来进行应用测试。具体地,应用测试人员可以通过终端102发送应用测试请求至应用测试服务器104。应用测试服务器104获获取应用测试请求,根据应用测试请求查找待测试应用代码;查找待测试应用代码对应的历史应用代码,对比待测试应用代码以及历史应用代码,确定改动节点;通过call trace确定改动节点对应的调用依赖关系节点;根据调用依赖关系节点确定改动方法对应的调用热度,根据调用热度确定测试重点以及测试范围,改动方法与改动节点相关联;根据测试重点以及测试范围对待测试应用代码进行测试。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种基于调用依赖关系的应用测试方法,以该方法应用于图1中的应用测试服务器104为例进行说明,包括以下步骤:
步骤201,获取应用测试请求,根据应用测试请求查找待测试应用代码。
其中,应用测试请求是指由测试人员通过终端向应用测试服务器104提交的任务请求,用于指定待测试的应用代码,以及请求应用测试服务器104开始一项测试进程。当应用测试服务器104接收到应用测试请求后,会查找相应的待测试应用代码开始一项测试流程。待测试应用代码为编写完成的应用程序代码,该应用程序代码包含多个历史版本,而应用测试请求是指对最新的应用程序代码进行测试。并着重测试在版本更新中存在修改的方法以及热点方法。
具体地,在进行一次应用测试时,测试工作人员需要先通过终端102向应用测试服务器104发起相应的应用测试请求,应用测试请求内携带有待测试应用代码的特征信息,如地址或者项目工程名称等。而应用测试服务器104会在接收到测试请求后,根据请求内包含的特征信息,对待测试应用代码进行查找,并获取这部分待测试应用代码,以进行后续的软件应用测试。
步骤203,查找待测试应用代码对应的历史应用代码,对比待测试应用代码以及历史应用代码,确定改动节点。
其中,历史应用代码是指待测试应用代码前面版本的代码,具体可以为待测试应用代码前一个版本的代码,可以通过对比两个版本的代码来确定哪些代码是修改过的,从而更有效地确定待测试应用代码中哪些内容是修改过的,而在版本迭代测试中,需要测试的是正是这部分存在改动的内容,即改动节点。
具体地,当确定待测试应用代码后,还可以基于待测试应用代码对应的特征信息,查找查找待测试应用代码对应的历史应用代码,进而对比待测试应用代码以及历史应用代码,来确定改动节点。而对于不存在历史应用代码的应用,则可以将所有的代码都作为改动节点,进行全量的应用测试。
步骤205,通过call trace确定改动节点对应的调用依赖关系节点。
其中,call trace用于确定方法的调用关系。在应用代码中,各个方法之间存在调用与被调用的调用链关系。通过call trace可以确定每个改动节点对应的所有调用依赖关系,调用依赖关系包括与改动节点的方法之间的直接调用关系,以及间接调用关系。通过明确所有的调用依赖关系节点就可以建立相应的调用关系树。而调用依赖关系节点是指与改动节点存在调用依赖关系的节点。
具体地,在确定待测试应用代码中的改动节点之后,可以通过call trace确定改动节点对应的调用依赖关系节点。具体地,call trace能把当前改动节点的函数调用栈打印出来。从而明确相应的调用依赖关系节点。
步骤207,根据调用依赖关系节点确定改动方法对应的调用热度,根据调用热度确定测试重点以及测试范围,改动方法与改动节点相关联。
步骤209,根据测试重点以及测试范围对待测试应用代码进行测试。
其中,改动节点是指存在改动的代码方法,而改动方法不仅仅包括改动节点,还包括与改动节点存在调用与被调关系的代码其他方法。调用热度具体是可以通过方法被调用的次数,有多少端口调用方法,调用占比以及调用平均耗时等来确定。通过热度可以确定哪些方法是需要重点测试的对象,从而确定测试的重点以及测试的范围,而后就可以根据热度信息确定的测试重点以及测试范围来进行测试,提高应用测试的效率。
具体地,当确定改动节点以及调用依赖关系节点后,就可以根据调用依赖关系节点来确定改动节点对应的改动方法的调用热度。具体地,改动方法对应调用链的调用依赖关系节点中的顶端接口可以被外部调用,可以基于顶端接口被外部调用的热度来确定改动方法对应的调用热度。进而通过不同改动方法间调用热度的对比,来确定哪些改动方法属于经常被调用的方法,可以将这些方法确定为测试重点,并以此划分测试范围,而后进行应用测试。
上述基于调用依赖关系的应用测试方法,通过获取应用测试请求,根据应用测试请求查找待测试应用代码;查找待测试应用代码对应的历史应用代码,对比待测试应用代码以及历史应用代码,确定改动节点;通过call trace确定改动节点对应的调用依赖关系节点;根据调用依赖关系节点确定改动方法对应的调用热度,根据调用热度确定测试重点以及测试范围;根据测试重点以及测试范围对待测试应用代码进行测试。本申请从待测试应用代码的角度出发,通过代码中的改动节点以及调用依赖关系节点,来进行用户的热度数据分析,能更有效和精准地定位到软件版本更新中受影响的改动方法;从而能够更高效的对应用测试中的热点业务进行功能验证和有效检查问题,提高应用测试的效率。
在其中一个实施例中,如图3所示,步骤203包括:
步骤302,通过git diff命令获取待测试应用代码与历史应用代码之间的差异数据。
步骤304,根据差异数据定位改动节点。
其中,git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。在本申请的方案中,具体可以通过git来对多版本的应用代码进行管理,而后当需要测试时,可以通过git的git diff指令获取待测试应用代码与历史应用代码之间的差异数据,并根据差异数据定位改动节点。而改动节点具体是指包含改动代码行的方法。
具体地,应用测试服务器104可以通过git diff命令获取两个版本间代码的差异数据,这部分差异数据具体包含了新旧版本代码的修改行号和文件列表。同时在克隆两个不同的版本文件同时,获取文件源码。在其中一个实施例中,可以解析diff文件中的新旧版本的改动行的偏移量,并使用加号和减号代表增加和删除的代码行。通过比较直观地展示增量改动的代码行,并定位完整的改动点。改动节点具体是指包含改动代码行的方法。具体可以在对比版本差异过程中,确定改动所在的代码行号,并进一步的确定包含改动行的方法的起始行和结束行。在本实施例中,通过git diff命令获取待测试应用代码与历史应用代码之间的差异数据,进而定位改动节点,可以有效提高改动节点的定位效率,从而提高应用测试的效率。
在其中一个实施例中,步骤205具体包括:通过call trace,根据改动节点,反向查询改动节点对应的依赖关系中顶部接口方法,并确定顶部接口方法与改动节点之间的调用依赖关系节点。
其中,顶部接口方法具体是指应用程序用于中外部数据交互的接口方法。因为程序内部的方法是无法展示具体地热度的,因此通过反向查找依赖关系中最顶部接口方法,通过最顶部接口方法,结合方法间的调用情况,来反推其他方法对应的热度。
具体地,可以根据代码改动节点,反向找到依赖关系中最顶部接口方法。而后通过线上离线计算微服务间的RPC(Remote Procedure Call,远程过程调用)调用情况,包括总调用量,调用占比,平均耗时。例如在其中一个实施例中,可以根据顶部的接口方法,找到与改动节点相关的改动方法最近一周的被调情况,而后基于被调情况确定热度状况。进而确定测试重点以及测试范围。具体地,在本实施例中,通过反向查询改动节点对应的依赖关系中顶部接口方法,可以更有效地查找到调用依赖关系节点,进而提高应用测试的效率。
在其中一个实施例中,如图4所示,步骤205具体包括:
步骤401,对待测试应用代码对应的工程进行打包编译处理,获取jar文件。
步骤403,通过解析jar文件查找待测试应用代码中的类方法。
步骤405,根据类方法确定改动节点对应的改动方法。
步骤407,通过递归算法确定改动方法对应的调用依赖关系节点。
其中jar文件(Java归档,英语:Java Archive)是一种软件包文件格式,通常用于聚合大量的Java类文件、相关的元数据和资源(文本、图片等)文件到一个文件,以便开发Java平台应用软件或库。
具体地,在其中一个实施例中,本申请的应用测试方法具体用于对Java类型的应用进行测试。在确定调用依赖关系节点时,可以先将待测试应用代码对应的工程打包编译,而后通过解析jar的二进制文件找到源码中的类方法,并确定改动方法。最后根据改动方法,通过递归算法分析工程中改动节点的方法对应的调用依赖关系节点。在其中一个实施例中,还可以检查源码和class二进制文件的方法是否相同,来排除重载的情况。在本实施例中,通过打包编译jar文件,而后通过解析jar文件来确定改动方法对应的调用依赖关系节点,可以有效提高调用依赖关系节点的确定效率,进而提高应用测试的效率。
在其中一个实施例中,如图5所示,步骤207包括:
步骤502,根据顶部接口方法的调用数据确定顶部接口方法下改动方法的调用量、调用占比以及调用平均耗时。
步骤504,根据改动方法的调用量、调用占比以及调用平均耗时,确定改动方法对应的调用热度。
具体地,当需要确定改动方法的调用热度时,可以通过改动方法对应的顶部接口方法的调用数据来进行确定,因为程序内部的方法是无法展示具体地热度的,因此通过反向查找依赖关系中最顶部接口方法,通过最顶部接口方法,结合方法间的调用情况,来反推其他方法对应的热度。在其中一个实施例中,还可以为调用量、调用占比以及调用平均耗时分配对应的热度权重,从而在确定调用热度的过程中,可以基于调用量、调用占比以及调用平均耗时对应的具体数值,结合调用权重来计算调用热度。提高调用热度计算的合理性,在另一个实施例中,当得到顶部的接口方法,顶部接口方法下的改动方法、以及各个改动方法对应的调用量,调用占比以及调用平均耗时后,可以根据这些数据建立相应的热点分布表,热点分布表的最顶级为接口方法,下一级为接口方法下的改动节点。而调用量,调用占比以及调用平均耗时为各个改动节点对应数据。同时可以在热点分布表中根据调用量,调用占比以及调用平均耗时等数据为改动方法进行排名,通过排名体现各个改动方法对应的热度。从而提高热度数据的可视性。本实施例中,通过顶部接口方法的调用数据来确定改动方法的调用数据,进而确定改动方法对应的调用热度。
在其中一个实施例中,如图6所示,步骤209之后,还包括:
步骤601,获取call trace对应的调用关系树以及历史测试用例数据。
步骤603,确定调用关系树中树节点对应的节点分支流程。
步骤605,根据节点分支流程以及历史测试用例数据生成补充测试用例。
具体地,在确定测试重点以及测试范围,并生成测试用例对应用进行测试之后,还包含用例追踪部分的内容,这一部分具体可以通过call trace获取的调用关系树来实现。具体地,在获取call trace的树形关系后,可以将改动方法作为树节点进行分析节点分支流程,并可以添加相应的标签序号,结合测试过程中已经使用过的历史测试用例数据,而后补充未覆盖的业务用例点。本实施例中,通过手工用例可以有效提高测试过程的测试覆盖率。
在其中一个实施例中,本申请还包括自动化生成测试用例的过程,具体地,首先获取调用关系的调用路由,并分析接口的方法入参数,补全参数不同组合的情况;而后建立被测代码和被测代码之间的关系。从而在下一次的改动代码行时,可以直接根据调用链路和接口自动化关系,触发自动化回归和结果反馈给测试。通过自动化用例可以有效提高生成测试用例的效率。
应该理解的是,虽然图2-6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-6中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图7所示,提供了一种基于调用依赖关系的应用测试装置,包括:
请求接收模块702,用于获取应用测试请求,根据应用测试请求查找待测试应用代码。
改动节点查找模块704,用于查找待测试应用代码对应的历史应用代码,对比待测试应用代码以及历史应用代码,确定改动节点。
依赖节点查找模块706,用于通过call trace确定改动节点对应的调用依赖关系节点。
热度查询模块708,用于根据调用依赖关系节点确定改动方法对应的调用热度,根据调用热度确定测试重点以及测试范围,改动方法与改动节点相关联。
应用测试模块710,用于根据测试重点以及测试范围对待测试应用代码进行测试。
在其中一个实施例中,改动节点查找模块704具体用于:通过git diff命令获取待测试应用代码与历史应用代码之间的差异数据;根据差异数据定位改动节点。
在其中一个实施例中,依赖节点查找模块706具体用于:通过call trace,根据改动节点,反向查询改动节点对应的依赖关系中顶部接口方法,并确定顶部接口方法与改动节点之间的调用依赖关系节点。
在其中一个实施例中,依赖节点查找模块706还用于:对待测试应用代码对应的工程进行打包编译处理,获取jar文件;通过解析jar文件查找待测试应用代码中的类方法;根据类方法确定改动节点对应的改动方法;通过递归算法确定改动方法对应的调用依赖关系节点。
在其中一个实施例中,热度查询模块708具体用于:根据顶部接口方法的调用数据确定顶部接口方法下改动方法的调用量、调用占比以及调用平均耗时;根据改动方法的调用量、调用占比以及调用平均耗时,确定改动方法对应的调用热度。
在其中一个实施例中,热度查询模块708具体用于:获取call trace对应的调用关系树以及历史测试用例数据;确定调用关系树中树节点对应的节点分支流程;根据节点分支流程以及历史测试用例数据生成补充测试用例。
在其中一个实施例中,还包括用例追踪模块,用于:获取call trace对应的调用关系树以及历史测试用例数据;确定调用关系树中树节点对应的节点分支流程;根据节点分支流程以及历史测试用例数据生成补充测试用例。
关于基于调用依赖关系的应用测试装置的具体限定可以参见上文中对于基于调用依赖关系的应用测试方法的限定,在此不再赘述。上述基于调用依赖关系的应用测试装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储基于分类回归的目标检测模型训练数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于调用依赖关系的应用测试方法。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
获取应用测试请求,根据应用测试请求查找待测试应用代码;
查找待测试应用代码对应的历史应用代码,对比待测试应用代码以及历史应用代码,确定改动节点;
通过call trace确定改动节点对应的调用依赖关系节点;
根据调用依赖关系节点确定改动方法对应的调用热度,根据调用热度确定测试重点以及测试范围,改动方法与改动节点相关联;
根据测试重点以及测试范围对待测试应用代码进行测试。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:通过git diff命令获取待测试应用代码与历史应用代码之间的差异数据;根据差异数据定位改动节点。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:通过call trace,根据改动节点,反向查询改动节点对应的依赖关系中顶部接口方法,并确定顶部接口方法与改动节点之间的调用依赖关系节点。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:对待测试应用代码对应的工程进行打包编译处理,获取jar文件;通过解析jar文件查找待测试应用代码中的类方法;根据类方法确定改动节点对应的改动方法;通过递归算法确定改动方法对应的调用依赖关系节点。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:根据顶部接口方法的调用数据确定顶部接口方法下改动方法的调用量、调用占比以及调用平均耗时;根据改动方法的调用量、调用占比以及调用平均耗时,确定改动方法对应的调用热度。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取call trace对应的调用关系树以及历史测试用例数据;确定调用关系树中树节点对应的节点分支流程;根据节点分支流程以及历史测试用例数据生成补充测试用例。
在一个实施例中,提供了一种计算机存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取应用测试请求,根据应用测试请求查找待测试应用代码;
查找待测试应用代码对应的历史应用代码,对比待测试应用代码以及历史应用代码,确定改动节点;
通过call trace确定改动节点对应的调用依赖关系节点;
根据调用依赖关系节点确定改动方法对应的调用热度,根据调用热度确定测试重点以及测试范围,改动方法与改动节点相关联;
根据测试重点以及测试范围对待测试应用代码进行测试。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:通过git diff命令获取待测试应用代码与历史应用代码之间的差异数据;根据差异数据定位改动节点。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:通过call trace,根据改动节点,反向查询改动节点对应的依赖关系中顶部接口方法,并确定顶部接口方法与改动节点之间的调用依赖关系节点。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:对待测试应用代码对应的工程进行打包编译处理,获取jar文件;通过解析jar文件查找待测试应用代码中的类方法;根据类方法确定改动节点对应的改动方法;通过递归算法确定改动方法对应的调用依赖关系节点。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:根据顶部接口方法的调用数据确定顶部接口方法下改动方法的调用量、调用占比以及调用平均耗时;根据改动方法的调用量、调用占比以及调用平均耗时,确定改动方法对应的调用热度。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取call trace对应的调用关系树以及历史测试用例数据;确定调用关系树中树节点对应的节点分支流程;根据节点分支流程以及历史测试用例数据生成补充测试用例。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种基于调用依赖关系的应用测试方法,所述方法包括:
获取应用测试请求,根据所述应用测试请求查找待测试应用代码;
查找所述待测试应用代码对应的历史应用代码,对比所述待测试应用代码以及所述历史应用代码,确定改动节点;
通过call trace确定所述改动节点对应的调用依赖关系节点;
根据所述调用依赖关系节点确定改动方法对应的调用热度,根据所述调用热度确定测试重点以及测试范围,所述改动方法与所述改动节点相关联;
根据所述测试重点以及所述测试范围对所述待测试应用代码进行测试。
2.根据权利要求1所述的方法,其特征在于,所述查找待测试应用代码对应的历史应用代码,对比待测试应用代码以及历史应用代码,确定改动节点包括:
通过git diff命令获取所述待测试应用代码与所述历史应用代码之间的差异数据;
根据所述差异数据定位改动节点。
3.根据权利要求1所述的方法,其特征在于,所述通过calltrace确定所述改动节点对应的调用依赖关系节点包括:
通过calltrace,根据所述改动节点,反向查询所述改动节点对应的依赖关系中顶部接口方法,并确定所述顶部接口方法与所述改动节点之间的调用依赖关系节点。
4.根据权利要求3所述的方法,其特征在于,所述通过call trace,根据所述改动节点,反向查询所述改动节点对应的依赖关系中顶部接口方法,并确定所述顶部接口方法与所述改动节点之间的调用依赖关系节点包括:
对所述待测试应用代码对应的工程进行打包编译处理,获取jar文件;
通过解析所述jar文件查找所述待测试应用代码中的类方法;
根据所述类方法确定所述改动节点对应的改动方法;
通过递归算法确定所述改动方法对应的调用依赖关系节点。
5.根据权利要求3所述的方法,其特征在于,所述根据所述调用依赖关系节点确定改动方法对应的调用热度包括:
根据所述顶部接口方法的调用数据确定所述顶部接口方法下改动方法的调用量、调用占比以及调用平均耗时;
根据所述改动方法的调用量、调用占比以及调用平均耗时,确定所述改动方法对应的调用热度。
6.根据权利要求1所述的方法,其特征在于,所述根据所述测试重点以及所述测试范围对所述待测试应用代码进行测试之后,还包括:
获取call trace对应的调用关系树以及历史测试用例数据;
确定所述调用关系树中树节点对应的节点分支流程;
根据所述节点分支流程以及所述历史测试用例数据生成补充测试用例。
7.一种基于调用依赖关系的应用测试装置,其特征在于,所述装置包括:
请求接收模块,用于获取应用测试请求,根据所述应用测试请求查找待测试应用代码;
改动节点查找模块,用于查找所述待测试应用代码对应的历史应用代码,对比所述待测试应用代码以及所述历史应用代码,确定改动节点;
依赖节点查找模块,用于通过call trace确定所述改动节点对应的调用依赖关系节点;
热度查询模块,用于根据所述调用依赖关系节点确定改动方法对应的调用热度,根据所述调用热度确定测试重点以及测试范围,所述改动方法与所述改动节点相关联;
应用测试模块,用于根据所述测试重点以及所述测试范围对所述待测试应用代码进行测试。
8.根据权利要求7所述的装置,其特征在于,所述改动节点查找模块用于通过git diff命令获取所述待测试应用代码与所述历史应用代码之间的差异数据;根据所述差异数据定位改动节点。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
10.一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011301046.9A CN112380130A (zh) | 2020-11-19 | 2020-11-19 | 基于调用依赖关系的应用测试方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011301046.9A CN112380130A (zh) | 2020-11-19 | 2020-11-19 | 基于调用依赖关系的应用测试方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112380130A true CN112380130A (zh) | 2021-02-19 |
Family
ID=74585238
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011301046.9A Pending CN112380130A (zh) | 2020-11-19 | 2020-11-19 | 基于调用依赖关系的应用测试方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112380130A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113138927A (zh) * | 2021-04-30 | 2021-07-20 | 北京沃东天骏信息技术有限公司 | 一种软件功能测试方法和装置 |
CN113190442A (zh) * | 2021-04-27 | 2021-07-30 | 上海安畅网络科技股份有限公司 | 一种测试范围度量及测试覆盖检查的方法及系统 |
CN113297076A (zh) * | 2021-05-21 | 2021-08-24 | 建信金融科技有限责任公司 | 基于调用链的服务变更识别方法及装置 |
CN113722228A (zh) * | 2021-09-03 | 2021-11-30 | 中国工商银行股份有限公司 | 软件系统测试方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170139815A1 (en) * | 2015-11-18 | 2017-05-18 | International Business Machines Corporation | Proactive and selective regression testing based on historic test results |
CN107085555A (zh) * | 2017-04-19 | 2017-08-22 | 广州视源电子科技股份有限公司 | 代码测试方法、装置、终端及存储介质 |
CN109656615A (zh) * | 2018-12-28 | 2019-04-19 | 四川新网银行股份有限公司 | 一种基于代码方法重要程度进行权限预警的方法 |
CN109783353A (zh) * | 2018-12-14 | 2019-05-21 | 平安普惠企业管理有限公司 | 一种程序分析方法及终端设备 |
-
2020
- 2020-11-19 CN CN202011301046.9A patent/CN112380130A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170139815A1 (en) * | 2015-11-18 | 2017-05-18 | International Business Machines Corporation | Proactive and selective regression testing based on historic test results |
CN107085555A (zh) * | 2017-04-19 | 2017-08-22 | 广州视源电子科技股份有限公司 | 代码测试方法、装置、终端及存储介质 |
CN109783353A (zh) * | 2018-12-14 | 2019-05-21 | 平安普惠企业管理有限公司 | 一种程序分析方法及终端设备 |
CN109656615A (zh) * | 2018-12-28 | 2019-04-19 | 四川新网银行股份有限公司 | 一种基于代码方法重要程度进行权限预警的方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113190442A (zh) * | 2021-04-27 | 2021-07-30 | 上海安畅网络科技股份有限公司 | 一种测试范围度量及测试覆盖检查的方法及系统 |
CN113138927A (zh) * | 2021-04-30 | 2021-07-20 | 北京沃东天骏信息技术有限公司 | 一种软件功能测试方法和装置 |
CN113138927B (zh) * | 2021-04-30 | 2024-04-16 | 北京沃东天骏信息技术有限公司 | 一种软件功能测试方法和装置 |
CN113297076A (zh) * | 2021-05-21 | 2021-08-24 | 建信金融科技有限责任公司 | 基于调用链的服务变更识别方法及装置 |
CN113297076B (zh) * | 2021-05-21 | 2023-06-23 | 建信金融科技有限责任公司 | 基于调用链图的服务变更识别方法及装置 |
CN113722228A (zh) * | 2021-09-03 | 2021-11-30 | 中国工商银行股份有限公司 | 软件系统测试方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112380130A (zh) | 基于调用依赖关系的应用测试方法和装置 | |
CN112286779B (zh) | 测试任务处理方法、装置、存储介质和计算机设备 | |
CN109814854B (zh) | 项目框架生成方法、装置、计算机设备和存储介质 | |
CN109032662B (zh) | 代码文件生成方法、装置、计算机设备和存储介质 | |
CN108804159B (zh) | javascript模块加载方法及其预处理方法、装置和计算机设备 | |
CN111310427A (zh) | 业务数据配置处理方法、装置、计算机设备和存储介质 | |
CN108874661B (zh) | 测试映射关系库生成方法、装置、计算机设备和存储介质 | |
CN109032631B (zh) | 应用程序补丁包获取方法、装置、计算机设备及存储介质 | |
CN110231994B (zh) | 内存分析方法、装置和计算机可读存储介质 | |
CN109726134B (zh) | 接口测试方法和系统 | |
CN109885299B (zh) | 模型开发中的模板处理方法、装置、计算机设备和存储介质 | |
CN110321284B (zh) | 测试数据录入方法、装置、计算机设备和存储介质 | |
CN110362479B (zh) | 系统升级测试方法和系统 | |
CN112395202B (zh) | 接口自动化测试方法、装置、计算机设备和存储介质 | |
CN108399125B (zh) | 自动化测试方法、装置、计算机设备和存储介质 | |
CN111026647A (zh) | 代码覆盖率的获取方法、装置、计算机设备和存储介质 | |
CN111932207A (zh) | 项目数据处理方法、装置、计算机设备和存储介质 | |
CN111083054B (zh) | 路由配置处理方法、装置、计算机设备和存储介质 | |
CN111124872A (zh) | 基于差异代码分析的分支检测方法、装置及存储介质 | |
CN115269399A (zh) | 设备稳定性测试方法、装置和计算机设备和存储介质 | |
CN113835713B (zh) | 源码包下载方法、装置、计算机设备和存储介质 | |
CN109542962B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN115757172A (zh) | 测试执行方法、装置、存储介质及计算机设备 | |
CN109800247A (zh) | 数据查找方法、装置、计算机设备以及存储介质 | |
CN114564385A (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 |