CN118113590A - 异常处理方法、装置及存储介质 - Google Patents

异常处理方法、装置及存储介质 Download PDF

Info

Publication number
CN118113590A
CN118113590A CN202211530024.9A CN202211530024A CN118113590A CN 118113590 A CN118113590 A CN 118113590A CN 202211530024 A CN202211530024 A CN 202211530024A CN 118113590 A CN118113590 A CN 118113590A
Authority
CN
China
Prior art keywords
code
target
scene
abnormal
preset
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
Application number
CN202211530024.9A
Other languages
English (en)
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.)
Douyin Vision Co Ltd
Original Assignee
Douyin Vision 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 Douyin Vision Co Ltd filed Critical Douyin Vision Co Ltd
Priority to CN202211530024.9A priority Critical patent/CN118113590A/zh
Publication of CN118113590A publication Critical patent/CN118113590A/zh
Pending legal-status Critical Current

Links

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/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请提供一种异常处理方法、装置及存储介质,该方法通过确定目标代码对应的方法调用链,进而,获得与目标代码中异常代码存在调用关系的目标方法,并确定与该目标方法对应的目标场景,从而,基于该目标方法和目标场景,对上述异常代码进行处理。即本申请实施例通过分析异常代码影响的因素,如与异常代码存在调用关系的方法,该方法对应的场景等,对发现的异常快速判断,准确评定出它的严重性与紧要性,提高代码异常定级的适用性和准确率,从而,能够在有限的时间里,修复较严重的问题,减少损失。

Description

异常处理方法、装置及存储介质
技术领域
本申请涉及软件测试技术领域,尤其涉及一种异常处理方法、装置及存储介质。
背景技术
随着软件技术的飞速发展以及软件快速迭代,软件的稳定性变得尤为重要,而软件测试作为保障软件稳定性的关键环节,目的就在于以耗费尽可能少的人力、物力在短时间内尽可能多的找出软件中的异常代码,以对软件进行修复。
相关技术中,在一些软件的开发过程中,通过软件测试找出的异常代码数量较多,需要对这些异常进行定级,从而决定在有限的时间里,应该最先修复哪些,保证问题能被快速修复。目前常见的异常定级方法是:根据线上受当前异常影响的用户数量决定优先级,如影响超过5k人,定为最高优先级,影响人数小于10人,定为最低优先级。
但是,现有的异常定级方法适用性较差,如在用户基数较小时,异常影响到的用户数量较少,现有异常定级方法并不适用。而且,基于受异常影响的用户数量决定优先级,准确性较低,可能导致一些较严重的异常优先级较低,从而,无法快速修复问题,造成一定损失。
发明内容
本申请提供一种异常处理方法、装置及存储介质,以解决现有异常定级方法适用性较差,且准确性较低的问题。
第一方面,本申请实施例提供一种异常处理方法,包括:
确定目标代码对应的方法调用链;
根据所述方法调用链,获得与所述目标代码中异常代码存在调用关系的目标方法;
确定与所述目标方法对应的目标场景;
根据所述目标方法和所述目标场景,对所述异常代码进行处理。
在一种可能的实现方式中,所述根据所述目标方法和所述目标场景,对所述异常代码进行处理,包括:
获取预设高热方法和预设高热场景,其中,所述预设高热方法为被调用次数大于预设被调用阈值的方法,所述预设高热场景为被访问次数大于预设被访问阈值的场景;
根据所述目标方法、所述目标场景、所述预设高热方法和所述预设高热场景,确定所述异常代码的处理等级;
基于所述异常代码的处理等级,对所述异常代码进行处理。
在一种可能的实现方式中,所述根据所述目标方法、所述目标场景、所述预设高热方法和所述预设高热场景,确定所述异常代码的处理等级,包括:
判断所述目标方法中是否有所述预设高热方法,获得第一判断结果,并判断所述目标场景中是否有所述预设高热场景,获得第二判断结果;
根据所述第一判断结果和/或第二判断结果,确定所述异常代码的处理等级。
在一种可能的实现方式中,所述目标方法为与所述异常代码存在预设次数内调用关系的方法,所述预设次数包括第一次数范围和第二次数范围,所述第二次数范围的下限值大于所述第一次数范围的上限值;
所述根据所述第一判断结果和/或第二判断结果,确定所述异常代码的处理等级,包括:
若所述目标方法的第一方法中有所述预设高热方法,和/或,所述目标场景的第一场景中有所述预设高热场景,则确定所述异常代码的处理等级为第一等级,其中,所述第一方法为与所述异常代码存在所述第一次数范围内调用关系的方法,所述第一场景为与所述第一方法对应的场景;
若所述目标方法的第二方法中有所述预设高热方法,和/或,所述目标场景的第二场景中有所述预设高热场景,则确定所述异常代码的处理等级为第二等级,其中,所述第二等级低于所述第一等级,所述第二方法为与所述异常代码存在所述第二次数范围内调用关系的方法,所述第二场景为与所述第二方法对应的场景。
在一种可能的实现方式中,所述方法还包括:
获取记录的所述目标代码生成过程中的每一次代码调整,以及每一次代码调整的用户;
所述基于所述异常代码的处理等级,对所述异常代码进行处理,包括:
基于所述异常代码的处理等级,所述每一次代码调整,以及所述每一次代码调整的用户,对所述异常代码进行处理。
在一种可能的实现方式中,所述基于所述异常代码的处理等级,所述每一次代码调整,以及所述每一次代码调整的用户,对所述异常代码进行处理,包括:
根据所述异常代码的处理等级,确定所述异常代码的处理优先级,并根据所述每一次代码调整、所述每一次代码调整的用户和所述方法调用链,确定所述异常代码对应的用户;
基于所述异常代码的处理优先级和所述异常代码对应的用户,对所述异常代码进行处理。
在一种可能的实现方式中,所述根据所述每一次代码调整、所述每一次代码调整的用户和所述方法调用链,确定所述异常代码对应的用户,包括:
根据所述方法调用链,在所述每一次代码调整中,获得与所述异常代码相关的代码调整;
基于与所述异常代码相关的代码调整,以及所述每一次代码调整的用户,确定所述异常代码对应的用户。
在一种可能的实现方式中,所述根据所述方法调用链,获得与所述目标代码中异常代码存在调用关系的目标方法,包括:
确定所述异常代码在所述目标代码中的位置;
根据所述位置和所述方法调用链,在所述目标代码中,获得与所述异常代码存在调用关系的目标方法。
在一种可能的实现方式中,所述确定与所述目标方法对应的目标场景,还包括:
获得所述目标代码中各个方法对应的场景;
基于所述目标代码中各个方法对应的场景,确定与所述目标方法对应的目标场景。
在一种可能的实现方式中,所述获取记录的所述目标代码生成过程中的每一次代码调整,以及每一次代码调整的用户,包括:
从记录的所述目标代码生成过程中的最后一次代码调整起,以时间倒序的方式,获取记录的所述目标代码生成过程中预设数量的代码调整,以及对应的每一次代码调整的用户。
第二方面,本申请实施例提供一种异常处理装置,包括:
调用链确定模块,用于确定目标代码对应的方法调用链;
方法获得模块,用于根据所述方法调用链,获得与所述目标代码中异常代码存在调用关系的目标方法;
场景确定模块,用于确定与所述目标方法对应的目标场景;
异常处理模块,用于根据所述目标方法和所述目标场景,对所述异常代码进行处理。
在一种可能的实现方式中,所述异常处理模块,具体用于:
获取预设高热方法和预设高热场景,其中,所述预设高热方法为被调用次数大于预设被调用阈值的方法,所述预设高热场景为被访问次数大于预设被访问阈值的场景;
根据所述目标方法、所述目标场景、所述预设高热方法和所述预设高热场景,确定所述异常代码的处理等级;
基于所述异常代码的处理等级,对所述异常代码进行处理。
在一种可能的实现方式中,所述异常处理模块,具体用于:
判断所述目标方法中是否有所述预设高热方法,获得第一判断结果,并判断所述目标场景中是否有所述预设高热场景,获得第二判断结果;
根据所述第一判断结果和/或第二判断结果,确定所述异常代码的处理等级。
在一种可能的实现方式中,所述目标方法为与所述异常代码存在预设次数内调用关系的方法,所述预设次数包括第一次数范围和第二次数范围,所述第二次数范围的下限值大于所述第一次数范围的上限值;
所述异常处理模块,具体用于:
若所述目标方法的第一方法中有所述预设高热方法,和/或,所述目标场景的第一场景中有所述预设高热场景,则确定所述异常代码的处理等级为第一等级,其中,所述第一方法为与所述异常代码存在所述第一次数范围内调用关系的方法,所述第一场景为与所述第一方法对应的场景;
若所述目标方法的第二方法中有所述预设高热方法,和/或,所述目标场景的第二场景中有所述预设高热场景,则确定所述异常代码的处理等级为第二等级,其中,所述第二等级低于所述第一等级,所述第二方法为与所述异常代码存在所述第二次数范围内调用关系的方法,所述第二场景为与所述第二方法对应的场景。
在一种可能的实现方式中,所述装置还包括:
调整获取模块,用于获取记录的所述目标代码生成过程中的每一次代码调整,以及每一次代码调整的用户;
所述异常处理模块,具体用于:
基于所述异常代码的处理等级,所述每一次代码调整,以及所述每一次代码调整的用户,对所述异常代码进行处理。
在一种可能的实现方式中,所述异常处理模块,具体用于:
根据所述异常代码的处理等级,确定所述异常代码的处理优先级,并根据所述每一次代码调整、所述每一次代码调整的用户和所述方法调用链,确定所述异常代码对应的用户;
基于所述异常代码的处理优先级和所述异常代码对应的用户,对所述异常代码进行处理。
在一种可能的实现方式中,所述异常处理模块,具体用于:
根据所述方法调用链,在所述每一次代码调整中,获得与所述异常代码相关的代码调整;
基于与所述异常代码相关的代码调整,以及所述每一次代码调整的用户,确定所述异常代码对应的用户。
在一种可能的实现方式中,所述方法获得模块,具体用于:
确定所述异常代码在所述目标代码中的位置;
根据所述位置和所述方法调用链,在所述目标代码中,获得与所述异常代码存在调用关系的目标方法。
在一种可能的实现方式中,所述场景确定模块,具体用于:
获得所述目标代码中各个方法对应的场景;
基于所述目标代码中各个方法对应的场景,确定与所述目标方法对应的目标场景。
在一种可能的实现方式中,所述调整获取模块,具体用于:
从记录的所述目标代码生成过程中的最后一次代码调整起,以时间倒序的方式,获取记录的所述目标代码生成过程中预设数量的代码调整,以及对应的每一次代码调整的用户。
第三方面,本申请实施例提供一种异常处理设备,包括:
处理器;
存储器;以及
计算机程序;
其中,所述计算机程序被存储在所述存储器中,并且被配置为由所述处理器执行,所述计算机程序包括用于执行如第一方面所述的方法的指令。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序使得服务器执行第一方面所述的方法。
第五方面,本申请实施例提供一种计算机程序产品,包括计算机指令,所述计算机指令被处理器执行第一方面所述的方法。
本申请实施例提供的异常处理方法、装置及存储介质,该方法通过确定目标代码对应的方法调用链,进而,获得与目标代码中异常代码存在调用关系的目标方法,并确定与该目标方法对应的目标场景,从而,基于该目标方法和目标场景,对上述异常代码进行处理。即本申请实施例通过分析异常代码影响的因素,如与异常代码存在调用关系的方法,该方法对应的场景等,对发现的异常快速判断,准确评定出它的严重性与紧要性,提高代码异常定级的适用性和准确率,从而,能够在有限的时间里,修复较严重的问题,减少损失。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的测试系统架构示意图;
图2为本申请实施例提供的一种异常处理方法的流程示意图;
图3为本申请实施例提供的一种方法调用链的示意图;
图4为本申请实施例提供的另一种异常处理方法的流程示意图;
图5为本申请实施例提供的一种确定异常代码对应的用户的流程示意图;
图6为本申请实施例提供的一种异常处理装置的结构示意图;
图7为本申请实施例提供的另一种异常处理装置的结构示意图;
图8A为本申请实施例提供的一种异常处理设备的基本硬件架构示意图;
图8B为本申请实施例提供的另一种异常处理设备的基本硬件架构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”及“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在软件开发过程中,有一个非常重要的环节:跟进处理捕获到的各种异常。但由于在一些软件的开发过程中,需要处理的异常数量较多,因此需要先对这些异常进行定级,从而决定在有限的时间里,应该最先修复哪些。目前常见的异常定级方法是:根据线上受当前异常影响的用户数量决定优先级,如影响超过5k人,定为最高优先级,影响人数小于10人,定为最低优先级。但是,在用户基数较小时,异常影响到的用户数量较少,现有异常定级方法并不适用。而且,基于受异常影响的用户数量决定优先级,准确性较低,可能导致一些较严重的异常优先级较低,从而,无法快速修复问题,造成一定损失。
因此,本申请实施例提出一种异常处理方法,通过分析异常代码影响的因素,如代码中与异常代码存在调用关系的方法,该方法对应的场景等,进而,基于上述方法和场景等,对发现的异常快速判断,准确评定出它的严重性与紧要性,提高代码异常定级的适用性和准确率,从而,能够在有限的时间里,修复较严重的问题,减少损失。
可选地,本申请实施例提供的异常处理方法可应用于新版本应用程序,(Application,app)上线前功能测试的场景,从而快速准确地对发现的异常进行判断,评定出它的严重性与紧要性,在有限的时间里,修复较严重的问题,避免上线后影响用户使用。另外,本申请实施例提供的异常处理方法的应用场景还有很多,例如终端或服务器中测试软件性能的场景等等,任何采用本申请异常处理方法的场景都在本申请的范围内。
示例性的,本申请实施例提供的异常处理方法可以应用于如图1所示的测试系统中。在图1中,该测试系统架构可以包括服务器101。
在具体实现过程中,服务器101上可以利用预先生成的测试用例,对目标代码进行测试,确定目标代码中的异常代码,然后,分析异常代码影响的因素,如目标代码中与异常代码存在调用关系的方法,该方法对应的场景等,从而,对发现的异常快速判断,准确评定出它的严重性与紧要性,在有限的时间里,修复较严重的问题,减少损失。
可选地,上述测试系统架构还可以包括终端102,服务器101与终端102可通过网络进行通信。此时,终端102可为部署有该目标代码的客户端。
其中,用户可以使用终端102通过网络与服务器101交互,以接收或发送消息等,例如用户使用终端102通过网络向服务器101发送目标代码,以使服务器101对目标代码进行测试,确定其中的异常代码,并分析异常代码影响的因素,基于该因素对发现的异常进行判断等。
另外,终端102也可以利用预先生成的测试用例,对目标代码进行测试,并基于测试得到的目标代码中的异常代码,分析异常代码影响的因素,进而,基于该因素对发现的异常快速准确地判断,评定出它的严重性与紧要性,解决现有异常定级方法适用性较差,且准确性较低的问题。
这里,终端可以是个人数字处理(personal digital assistant,PDA)设备、具有无线通信功能的手持设备(例如智能手机、平板电脑)、计算设备(例如个人电脑(personalcomputer,PC))、车载设备、可穿戴设备(例如智能手表、智能手环)、智能家居设备(例如智能显示设备)等,图1中以终端为智能手机为例。服务器可以是整体式服务器或是跨多计算机或计算机数据中心的分散式服务器。服务器还可以是各种类别的,例如但不限于网络服务器,应用服务器,或数据库服务器,或代理服务器。
需要进行说明的是,本申请实施例提供的测试方法,可以在同一设备上执行(如在上述服务器或终端上执行),也可以在不同设备上执行(如在上述服务器和终端上执行)。
下面以几个实施例为例对本申请的技术方案进行描述,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图2为本申请实施例提供的一种异常处理方法的流程示意图,本实施例的执行主体可以为图1中的服务器,具体执行主体可以根据实际应用场景确定,本申请实施例对此不做特别限制。如图2所示,本申请实施例提供的异常处理方法可以包括如下步骤:
S201:确定目标代码对应的方法调用链。
其中,上述目标代码可以根据实际情况确定,如需要上线发布的某新版本app的软件代码。上述服务器可以在上述目标代码发布前,对上述目标代码进行测试,并在测试过程中记录发现的异常代码,以及其相关的信息,该信息可以包括异常代码在上述目标代码中的位置。
这里,上述服务器在对上述目标代码中的异常代码进行处理之前,可以先获取上述目标代码中各个方法间的调用关系,进而,确定目标代码对应的方法调用链。示例性的,如图3所示,本实施例可以通过静态扫描配合查(CHA)等算法,获取代码层面所有方法间的调用关系,即上述方法调用链。其中,上述方法可以理解为代码中的一个有效单位,最后上线的代码是由一个一个方法互相拼接调用而成的。
S202:根据上述方法调用链,获得与上述目标代码中异常代码存在调用关系的目标方法。
在本申请实施例中,上述服务器在确定上述方法调用链后,可以确定上述异常代码在上述目标代码中的位置,进而,根据上述异常代码在上述目标代码中的位置和上述方法调用链,在上述目标代码中,获得与上述异常代码存在调用关系的目标方法。例如,上述服务器可以先根据上述异常代码在上述目标代码中的位置,确定上述异常代码所在的方法,进而,基于上述方法调用链,在上述目标代码中,确定与上述异常代码所在的方法存在调用关系的目标方法。
其中,上述目标方法可以为与上述异常代码存在预设次数内调用关系的方法,该预设次数可以根据实际情况确定,例如如图3所示,如上述异常代码所在的方法为方法3,上述预设次数可以为2,上述服务器可以基于上述方法调用链,在上述目标代码中,确定与上述方法3存在2次内调用关系的目标方法,即方法1、方法2、方法4、方法5、方法6和方法7。
S203:确定与上述目标方法对应的目标场景。
这里,在获得与上述异常代码存在调用关系的目标方法后,上述服务器进一步确定与上述目标方法对应的目标场景。示例性的,上述服务器可以获得上述目标代码中各个方法对应的场景,进而,基于各个方法对应的场景,确定与上述目标方法对应的目标场景。
示例性的,本实施例可以通过静态扫描等方法,获得上述目标代码中各个方法对应的场景,然后,基于该各个方法对应的场景,确定与上述目标方法对应的目标场景。
S204:根据上述目标方法和目标场景,对上述异常代码进行处理。
在本申请实施例中,上述服务器通过分析异常代码影响的因素,如代码中与异常代码存在调用关系的方法,该方法对应的场景,进而,基于该方法和场景,确定异常代码的处理等级,即对发现的异常进行定级,解决现有异常定级方法适用性较差,且准确性较低的问题。
这里,上述服务器在根据上述目标方法和目标场景,对上述异常代码进行处理时,可以先获取预设高热方法和预设高热场景,然后,根据上述目标方法、目标场景、预设高热方法和预设高热场景,确定上述异常代码的处理等级,最后,基于上述异常代码的处理等级,对上述异常代码进行处理。
其中,上述预设高热方法可以为被调用次数大于预设被调用阈值的方法,预设高热场景可以为被访问次数大于预设被访问阈值的场景。这里,上述预设被调用阈值和上述预设被访问阈值可以根据实际情况设置,例如上述预设被调用阈值设置为100,上述预设被访问阈值设置为100。
可选地,上述服务器在获取上述预设高热方法和预设高热场景时,可以通过线上打点等方式,确定线上真实用户在使用多个软件代码过程中的被调用次数大于预设被调用阈值的方法,以及被访问次数大于预设被访问阈值的场景,从而,将这些方法和场景作为上述预设高热方法和预设高热场景,使得后续能够更加准确地分析出异常代码影响的因素,提高异常代码定级结果的准性。
示例性的,本实施例在确定上述异常代码的处理等级时,可以先判断上述目标方法中是否有上述预设高热方法,获得第一判断结果,并判断上述目标场景中是否有上述预设高热场景,获得第二判断结果,进而,根据上述第一判断结果和/或第二判断结果,确定上述异常代码的处理等级。
例如,上述目标方法为与上述异常代码存在预设次数内调用关系的方法,这里以预设次数包括第一次数范围和第二次数范围为例进行说明,其中,第二次数范围的下限值大于第一次数范围的上限值。如果上述目标方法的第一方法中有上述预设高热方法,和/或,上述目标场景的第一场景中有上述预设高热场景,则上述服务器可以确定上述异常代码的处理等级为第一等级,其中,上述第一方法为与上述异常代码存在上述第一次数范围内调用关系的方法,上述第一场景为与上述第一方法对应的场景。如果上述目标方法的第二方法中有上述预设高热方法,和/或,上述目标场景的第二场景中有上述预设高热场景,则上述服务器可以确定上述异常代码的处理等级为第二等级,其中,上述第二等级低于上述第一等级,上述第二方法为与上述异常代码存在上述第二次数范围内调用关系的方法,上述第二场景为与上述第二方法对应的场景。
例如,以上述预设次数为4,上述第一次数范围为0-1,上述第二次数范围为2-4为例。如果上述目标方法的与上述异常代码存在0-1次调用关系的方法中有上述预设高热方法,和/或,与上述方法对应的场景中有上述预设高热场景,上述服务器确定上述异常代码的处理等级为第一等级。如果上述目标方法的与上述异常代码存在2-4次调用关系的方法中有上述预设高热方法,和/或,与上述方法对应的场景中有上述预设高热场景,上述服务器确定上述异常代码的处理等级为第二等级。
这里,上述服务器基于调用关系,分析异常代码影响的方法和场景,如果调用关系距离异常代码较近的方法中有上述预设高热方法,和/或,相应的场景中有上述预设高热场景,说明上述异常代码影响较大,需要尽快对其进行修复,因此将上述异常代码的处理等级设置为较高等级,以便在有限的时间里最先进行修复,保证问题能被快速修复,降低损失。而如果调用关系距离异常代码较远的方法中有上述预设高热方法,和/或,相应的场景中有上述预设高热场景,说明上述异常代码影响不大,可以晚些对其进行修复,因此将上述异常代码的处理等级设置为较低等级,以便在有限的时间里最先进行修复较严重的问题,满足实际应用需要。
在本实施例中,上述服务器可以根据上述异常代码的处理等级,确定上述异常代码的处理优先级,例如处理等级越高,处理优先级越高,处理等级越低,处理优先级越低,从而,基于该处理优先级,对上述异常代码进行处理,决定在有限的时间里,应该最先修复哪些,保证较严重的问题能被快速修复。
本申请实施例通过确定目标代码对应的方法调用链,进而,获得与目标代码中异常代码存在调用关系的目标方法,并确定与该目标方法对应的目标场景,从而,基于该目标方法和目标场景,对上述异常代码进行处理。即本申请实施例通过分析异常代码影响的因素,如与异常代码存在调用关系的方法,该方法对应的场景等,对发现的异常快速判断,准确评定出它的严重性与紧要性,提高代码异常定级的适用性和准确率,从而,能够在有限的时间里,修复较严重的问题,减少损失。
另外,在对这些异常进行定级,决定应该最先修复哪些后,还需要确定相应的用户进行修复。现有技术通常根据代码提交记录,找到异常发生处最后一次改动提交人,或者根据一些人为制定的规则进行责任人分配,如:将所有内存相关的问题分配给A,将所有无响应相关的异常分配给B等。但是第一种方式由于代码间复杂的调用关系,尤其是在大型软件中,异常发生处经常不是真正引发问题的地方,找到的责任人不一定准确。第二种方式完全依靠人工,耗费的人工成本较高。为了解决这些问题,本申请实施例获取记录的上述目标代码生成过程中的每一次代码调整,以及每一次代码调整的用户,从而,在确定上述异常代码的处理等级后,基于上述异常代码的处理等级,上述每一次代码调整,以及上述每一次代码调整的用户,对上述异常代码进行处理。这里,本申请实施例可以根据上述每一次代码调整、每一次代码调整的用户和上述方法调用链,找到准确的上述异常代码对应的用户,也减少了人力成本,进而,基于上述异常代码对应的用户和上述异常代码的处理等级,对上述异常代码进行处理。图4为本申请实施例提出的另一种异常处理方法的流程示意图。如图4所示,该方法包括:
S401:确定目标代码对应的方法调用链。
S402:根据上述方法调用链,获得与上述目标代码中异常代码存在调用关系的目标方法。
S403:确定与上述目标方法对应的目标场景。
其中,步骤S401-S403与上述步骤S201-S203的实现方式相同,此处不再赘述。
S404:获取预设高热方法和预设高热场景,其中,该预设高热方法为被调用次数大于预设被调用阈值的方法,该预设高热场景为被访问次数大于预设被访问阈值的场景。
S405:根据上述目标方法、目标场景、预设高热方法和预设高热场景,确定所述异常代码的处理等级。
S406:获取记录的上述目标代码生成过程中的每一次代码调整,以及每一次代码调整的用户。
这里,上述服务器在上述目标代码生成过程中记录每一次代码调整,以及每一次代码调整的用户。例如多人协作开发代码,上述服务器记录每一开发人员在完成自己的代码开发后,发起代码调整,如开发人员发起合并请求(Merge Request,MR),在经过其他人员的检查后,这次MR中的代码改动会被合入,完成一次代码调整,并记录发起代码调整的开发人员,作为该代码调整的用户。
S407:基于上述异常代码的处理等级,每一次代码调整,以及每一次代码调整的用户,对上述异常代码进行处理。
这里,如图5所示,上述服务器可以根据上述异常代码的处理等级,确定上述异常代码的处理优先级,并根据上述每一次代码调整、每一次代码调整的用户和上述方法调用链,确定上述异常代码对应的用户,从而,基于上述异常代码的处理优先级和上述异常代码对应的用户,对上述异常代码进行处理。
其中,图5示出上述服务器在根据上述每一次代码调整、每一次代码调整的用户和上述方法调用链,确定上述异常代码对应的用户时,可以先根据上述方法调用链,在上述每一次代码调整中,获得与上述异常代码相关的代码调整,然后,基于与上述异常代码相关的代码调整,以及上述每一次代码调整的用户,确定上述异常代码对应的用户。
示例性的,上述服务器可以根据上述方法调用链,从异常发生处出发,看预设次调用内,是否会触达哪些代码调整的区域,从而,确定与上述异常代码相关的代码调整,进而,基于每一次代码调整的用户,确定上述异常代码对应的用户。其中,上述预设次调用可以根据实际情况确定,例如以大型社交软件为例,上述预设次调用设为5次调用。
在本申请实施例中,如果上述服务器确定的上述异常代码对应的用户为多个,上述服务器还可以进一步从这多个用户中,确定最终的一个用户。例如上述服务器可以基于上述异常代码在上述目标代码中的位置,以及上述多个用户中每一个用户进行的代码调整,确认处理上述异常代码的用户,并将该用户作为上述最终的一个责任人。
另外,为了提高异常代码的处理速度,上述服务器在获取记录的上述目标代码生成过程中的每一次代码调整,以及每一次代码调整的用户时,可以从记录的上述目标代码生成过程中的最后一次代码调整起,以时间倒序的方式,获取记录的上述目标代码生成过程中预设数量的代码调整,以及对应的每一次代码调整的用户。即上述服务器获取距离代码异常发生时间最近的预设数量的代码调整做分析,快速确定上述异常代码对应的用户。而且,代码异常发生多与最近的代码调整有关,上述服务器基于最近的预设数量的代码调整做分析,使得找到的上述异常代码对应的用户更加准确。其中,上述预设数量可以根据实际情况确定,例如10-20。
本申请实施例通过获取记录的上述目标代码生成过程中的每一次代码调整,以及每一次代码调整的用户,从而,在确定上述异常代码的处理等级后,准确地确定出上述异常代码对应的用户,基于该用户和上述异常代码的处理等级,对上述异常代码进行处理,减少不必要的人力成本。另外,本申请实施例通过分析异常代码影响的因素,如与异常代码存在调用关系的方法,该方法对应的场景等,对发现的异常快速判断,准确评定出它的严重性与紧要性,提高代码异常定级的适用性和准确率,从而,能够在有限的时间里,修复较严重的问题,减少损失。
对应于上文实施例的异常处理方法,图6为本申请实施例提供的异常处理装置的结构示意图。为了便于说明,仅示出了与本申请实施例相关的部分。图6为本申请实施例提供的一种异常处理装置的结构示意图,该异常处理装置60包括:调用链确定模块601、方法获得模块602、场景确定模块603以及异常处理模块604。这里的异常处理装置可以是上述服务器本身,或者是实现服务器的功能的芯片或者集成电路。这里需要说明的是,调用链确定模块、方法获得模块、场景确定模块以及异常处理模块的划分只是一种逻辑功能的划分,物理上两者可以是集成的,也可以是独立的。
其中,调用链确定模块601,用于确定目标代码对应的方法调用链。
方法获得模块602,用于根据所述方法调用链,获得与所述目标代码中异常代码存在调用关系的目标方法。
场景确定模块603,用于确定与所述目标方法对应的目标场景。
异常处理模块604,用于根据所述目标方法和所述目标场景,对所述异常代码进行处理。
在一种可能的实现方式中,所述异常处理模块604,具体用于:
获取预设高热方法和预设高热场景,其中,所述预设高热方法为被调用次数大于预设被调用阈值的方法,所述预设高热场景为被访问次数大于预设被访问阈值的场景;
根据所述目标方法、所述目标场景、所述预设高热方法和所述预设高热场景,确定所述异常代码的处理等级;
基于所述异常代码的处理等级,对所述异常代码进行处理。
在一种可能的实现方式中,所述异常处理模块604,具体用于:
判断所述目标方法中是否有所述预设高热方法,获得第一判断结果,并判断所述目标场景中是否有所述预设高热场景,获得第二判断结果;
根据所述第一判断结果和/或第二判断结果,确定所述异常代码的处理等级。
在一种可能的实现方式中,所述目标方法为与所述异常代码存在预设次数内调用关系的方法,所述预设次数包括第一次数范围和第二次数范围,所述第二次数范围的下限值大于所述第一次数范围的上限值;
所述异常处理模块604,具体用于:
若所述目标方法的第一方法中有所述预设高热方法,和/或,所述目标场景的第一场景中有所述预设高热场景,则确定所述异常代码的处理等级为第一等级,其中,所述第一方法为与所述异常代码存在所述第一次数范围内调用关系的方法,所述第一场景为与所述第一方法对应的场景;
若所述目标方法的第二方法中有所述预设高热方法,和/或,所述目标场景的第二场景中有所述预设高热场景,则确定所述异常代码的处理等级为第二等级,其中,所述第二等级低于所述第一等级,所述第二方法为与所述异常代码存在所述第二次数范围内调用关系的方法,所述第二场景为与所述第二方法对应的场景。
在一种可能的实现方式中,所述方法获得模块602,具体用于:
确定所述异常代码在所述目标代码中的位置;
根据所述位置和所述方法调用链,在所述目标代码中,获得与所述异常代码存在调用关系的目标方法。
在一种可能的实现方式中,所述场景确定模块603,具体用于:
获得所述目标代码中各个方法对应的场景;
基于所述目标代码中各个方法对应的场景,确定与所述目标方法对应的目标场景。
本申请实施例提供的装置,可用于执行上述图2所述方法实施例的技术方案,其实现原理和技术效果类似,本申请实施例此处不再赘述。
图7为本申请实施例提供的另一种异常处理装置的结构示意图,上述异常处理装置60还包括:调整获取模块605。
其中,调整获取模块605,用于获取记录的所述目标代码生成过程中的每一次代码调整,以及每一次代码调整的用户。
所述异常处理模块604,具体用于:
基于所述异常代码的处理等级,所述每一次代码调整,以及所述每一次代码调整的用户,对所述异常代码进行处理。
在一种可能的实现方式中,所述异常处理模块604,具体用于:
根据所述异常代码的处理等级,确定所述异常代码的处理优先级,并根据所述每一次代码调整、所述每一次代码调整的用户和所述方法调用链,确定所述异常代码对应的用户;
基于所述异常代码的处理优先级和所述异常代码对应的用户,对所述异常代码进行处理。
在一种可能的实现方式中,所述异常处理模块604,具体用于:
根据所述方法调用链,在所述每一次代码调整中,获得与所述异常代码相关的代码调整;
基于与所述异常代码相关的代码调整,以及所述每一次代码调整的用户,确定所述异常代码对应的用户。
在一种可能的实现方式中,所述调整获取模块605,具体用于:
从记录的所述目标代码生成过程中的最后一次代码调整起,以时间倒序的方式,获取记录的所述目标代码生成过程中预设数量的代码调整,以及对应的每一次代码调整的用户。
本申请实施例提供的装置,可用于执行上述图4所述方法实施例的技术方案,其实现原理和技术效果类似,本申请实施例此处不再赘述。
可选地,图8A和8B示意性地提供本申请所述异常处理设备的一种可能的基本硬件架构示意图。
参见图8A和8B,异常处理设备800包括至少一个处理器801以及通信接口803。进一步可选的,还可以包括存储器802和总线804。
其中,异常处理设备800中,处理器801的数量可以是一个或多个,图8A和8B仅示意了其中一个处理器801。可选地,处理器801,可以是中央处理器(central processingunit,CPU)、图形处理器(graphics processing unit,GPU)或者数字信号处理器(digitalsignal processor,DSP)。如果异常处理设备800具有多个处理器801,多个处理器801的类型可以不同,或者可以相同。可选地,异常处理设备800的多个处理器801还可以集成为多核处理器。
存储器802存储计算机指令和数据;存储器802可以存储实现本申请提供的上述异常处理方法所需的计算机指令和数据,例如,存储器802存储用于实现上述异常处理方法的步骤的指令。存储器802可以是以下存储介质的任一种或任一种组合:非易失性存储器(例如只读存储器(ROM)、固态硬盘(SSD)、硬盘(HDD)、光盘),易失性存储器。
通信接口803可以为所述至少一个处理器提供信息输入/输出。也可以包括以下器件的任一种或任一种组合:网络接口(例如以太网接口)、无线网卡等具有网络接入功能的器件。
可选的,通信接口803还可以用于异常处理设备800与其它计算设备或者异常处理设备进行数据通信。
进一步可选的,图8A和8B用一条粗线表示总线804。总线804可以将处理器801与存储器802和通信接口803连接。这样,通过总线804,处理器801可以访问存储器802,还可以利用通信接口803与其它计算设备或者异常处理设备进行数据交互。
在本申请中,异常处理设备800执行存储器802中的计算机指令,使得异常处理设备800实现本申请提供的上述异常处理方法,或者使得异常处理设备800部署上述的异常处理装置。
从逻辑功能划分来看,示例性的,如图8A和8B所示,存储器802中可以包括调用链确定模块601、方法获得模块602、场景确定模块603以及异常处理模块604。这里的包括仅仅涉及存储器中所存储的指令被执行时可以分别实现调用链确定模块、方法获得模块、场景确定模块以及异常处理模块的功能,而不限定是物理上的结构。
示例性的,如图8B所示,存储器802中还可以包括调整获取模块605。这里的包括仅仅涉及存储器中所存储的指令被执行时还可以实现调整获取模块的功能,而不限定是物理上的结构。
另外,上述的异常处理设备除了可以像上述图8A和8B通过软件实现外,也可以作为硬件模块,或者作为电路单元,通过硬件实现。
本申请提供一种计算机可读存储介质,所述计算机程序产品包括计算机指令,所述计算机指令指示计算设备执行本申请提供的上述异常处理方法。
本申请提供一种计算机程序产品,包括计算机指令,所述计算机指令被处理器执行上述异常处理方法。
本申请提供一种芯片,包括至少一个处理器和通信接口,所述通信接口为所述至少一个处理器提供信息输入和/或输出。进一步,所述芯片还可以包含至少一个存储器,所述存储器用于存储计算机指令。所述至少一个处理器用于调用并运行该计算机指令,以执行本申请提供的上述异常处理方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

Claims (14)

1.一种异常处理方法,其特征在于,包括:
确定目标代码对应的方法调用链;
根据所述方法调用链,获得与所述目标代码中异常代码存在调用关系的目标方法;
确定与所述目标方法对应的目标场景;
根据所述目标方法和所述目标场景,对所述异常代码进行处理。
2.根据权利要求1所述的方法,其特征在于,所述根据所述目标方法和所述目标场景,对所述异常代码进行处理,包括:
获取预设高热方法和预设高热场景,其中,所述预设高热方法为被调用次数大于预设被调用阈值的方法,所述预设高热场景为被访问次数大于预设被访问阈值的场景;
根据所述目标方法、所述目标场景、所述预设高热方法和所述预设高热场景,确定所述异常代码的处理等级;
基于所述异常代码的处理等级,对所述异常代码进行处理。
3.根据权利要求2所述的方法,其特征在于,所述根据所述目标方法、所述目标场景、所述预设高热方法和所述预设高热场景,确定所述异常代码的处理等级,包括:
判断所述目标方法中是否有所述预设高热方法,获得第一判断结果,并判断所述目标场景中是否有所述预设高热场景,获得第二判断结果;
根据所述第一判断结果和/或第二判断结果,确定所述异常代码的处理等级。
4.根据权利要求3所述的方法,其特征在于,所述目标方法为与所述异常代码存在预设次数内调用关系的方法,所述预设次数包括第一次数范围和第二次数范围,所述第二次数范围的下限值大于所述第一次数范围的上限值;
所述根据所述第一判断结果和/或第二判断结果,确定所述异常代码的处理等级,包括:
若所述目标方法的第一方法中有所述预设高热方法,和/或,所述目标场景的第一场景中有所述预设高热场景,则确定所述异常代码的处理等级为第一等级,其中,所述第一方法为与所述异常代码存在所述第一次数范围内调用关系的方法,所述第一场景为与所述第一方法对应的场景;
若所述目标方法的第二方法中有所述预设高热方法,和/或,所述目标场景的第二场景中有所述预设高热场景,则确定所述异常代码的处理等级为第二等级,其中,所述第二等级低于所述第一等级,所述第二方法为与所述异常代码存在所述第二次数范围内调用关系的方法,所述第二场景为与所述第二方法对应的场景。
5.根据权利要求2至4中任一项所述的方法,其特征在于,还包括:
获取记录的所述目标代码生成过程中的每一次代码调整,以及每一次代码调整的用户;
所述基于所述异常代码的处理等级,对所述异常代码进行处理,包括:
基于所述异常代码的处理等级,所述每一次代码调整,以及所述每一次代码调整的用户,对所述异常代码进行处理。
6.根据权利要求5所述的方法,其特征在于,所述基于所述异常代码的处理等级,所述每一次代码调整,以及所述每一次代码调整的用户,对所述异常代码进行处理,包括:
根据所述异常代码的处理等级,确定所述异常代码的处理优先级,并根据所述每一次代码调整、所述每一次代码调整的用户和所述方法调用链,确定所述异常代码对应的用户;
基于所述异常代码的处理优先级和所述异常代码对应的用户,对所述异常代码进行处理。
7.根据权利要求6所述的方法,其特征在于,所述根据所述每一次代码调整、所述每一次代码调整的用户和所述方法调用链,确定所述异常代码对应的用户,包括:
根据所述方法调用链,在所述每一次代码调整中,获得与所述异常代码相关的代码调整;
基于与所述异常代码相关的代码调整,以及所述每一次代码调整的用户,确定所述异常代码对应的用户。
8.根据权利要求1至4中任一项所述的方法,其特征在于,所述根据所述方法调用链,获得与所述目标代码中异常代码存在调用关系的目标方法,包括:
确定所述异常代码在所述目标代码中的位置;
根据所述位置和所述方法调用链,在所述目标代码中,获得与所述异常代码存在调用关系的目标方法。
9.根据权利要求1至4任一项所述的方法,其特征在于,所述确定与所述目标方法对应的目标场景,包括:
获得所述目标代码中各个方法对应的场景;
基于所述目标代码中各个方法对应的场景,确定与所述目标方法对应的目标场景。
10.根据权利要求5所述的方法,其特征在于,所述获取记录的所述目标代码生成过程中的每一次代码调整,以及每一次代码调整的用户,包括:
从记录的所述目标代码生成过程中的最后一次代码调整起,以时间倒序的方式,获取记录的所述目标代码生成过程中预设数量的代码调整,以及对应的每一次代码调整的用户。
11.一种异常处理装置,其特征在于,包括:
调用链确定模块,用于确定目标代码对应的方法调用链;
方法获得模块,用于根据所述方法调用链,获得与所述目标代码中异常代码存在调用关系的目标方法;
场景确定模块,用于确定与所述目标方法对应的目标场景;
异常处理模块,用于根据所述目标方法和所述目标场景,对所述异常代码进行处理。
12.一种异常处理设备,其特征在于,包括:
处理器;
存储器;以及
计算机程序;
其中,所述计算机程序被存储在所述存储器中,并且被配置为由所述处理器执行,所述计算机程序包括用于执行如权利要求1-10任一项所述的方法的指令。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序使得服务器执行权利要求1-10任一项所述的方法。
14.一种计算机程序产品,其特征在于,包括计算机指令,所述计算机指令被处理器执行权利要求1-10任一项所述的方法。
CN202211530024.9A 2022-11-30 2022-11-30 异常处理方法、装置及存储介质 Pending CN118113590A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211530024.9A CN118113590A (zh) 2022-11-30 2022-11-30 异常处理方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211530024.9A CN118113590A (zh) 2022-11-30 2022-11-30 异常处理方法、装置及存储介质

Publications (1)

Publication Number Publication Date
CN118113590A true CN118113590A (zh) 2024-05-31

Family

ID=91209411

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211530024.9A Pending CN118113590A (zh) 2022-11-30 2022-11-30 异常处理方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN118113590A (zh)

Similar Documents

Publication Publication Date Title
CN111522728A (zh) 自动化测试用例的生成方法、电子设备及可读存储介质
CN109309596A (zh) 一种压力测试方法、装置及服务器
CN107621963B (zh) 一种软件部署方法、软件部署系统及电子设备
CN112650689A (zh) 测试方法、装置、电子设备及存储介质
CN108228611B (zh) 单据信息抄写方法和装置
CN111597093B (zh) 一种异常处理方法、装置及其设备
CN115022201B (zh) 一种数据处理功能测试方法、装置、设备及存储介质
CN115052037B (zh) 客户端检测方法、装置、存储介质和设备
CN115587048A (zh) 回归测试方法、终端设备及计算机可读存储介质
CN111949510A (zh) 测试处理方法、装置、电子设备及可读存储介质
CN113342664B (zh) 拨测方法、装置、存储介质及计算机设备
CN115687129A (zh) 一种覆盖率报告生成方法、装置、存储介质和计算机设备
CN113392010B (zh) 公共组件测试方法、装置、电子设备及存储介质
CN118113590A (zh) 异常处理方法、装置及存储介质
CN111737129B (zh) 服务控制方法、装置、计算机可读介质及电子设备
CN115203050A (zh) 一种服务的依赖关系的确定方法及装置
CN115080417A (zh) 一种测试用例自动化生成方法、电子设备及存储介质
CN113704114A (zh) 功能接口的自动化测试方法、装置、设备及介质
CN113641628A (zh) 数据质量检测方法、装置、设备及存储介质
CN108628750B (zh) 一种测试代码处理方法及装置
CN112631905A (zh) 执行过程数据管理方法、装置、计算机设备及存储介质
CN111225075A (zh) 物联网定向访问业务的配置方法及装置
CN112650679B (zh) 一种测试校验方法、装置及计算机系统
CN117313856B (zh) 一种可靠性测试规划系统及方法
CN115344855A (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