CN108874652A - 用于软件自测评估的方法、装置及电子设备 - Google Patents

用于软件自测评估的方法、装置及电子设备 Download PDF

Info

Publication number
CN108874652A
CN108874652A CN201710321894.8A CN201710321894A CN108874652A CN 108874652 A CN108874652 A CN 108874652A CN 201710321894 A CN201710321894 A CN 201710321894A CN 108874652 A CN108874652 A CN 108874652A
Authority
CN
China
Prior art keywords
software
code
disturbance degree
change element
degree 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.)
Granted
Application number
CN201710321894.8A
Other languages
English (en)
Other versions
CN108874652B (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.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information 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 Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201710321894.8A priority Critical patent/CN108874652B/zh
Publication of CN108874652A publication Critical patent/CN108874652A/zh
Application granted granted Critical
Publication of CN108874652B publication Critical patent/CN108874652B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/3684Test management for test design, e.g. generating new test cases

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)
  • Stored Programmes (AREA)

Abstract

本申请涉及用于软件自测评估的方法、装置及电子设备,方法包括:获取软件由旧版本到新版本的变更元素,所述变更元素包括有变更的代码和有变更影响的代码;根据所述软件的新版本中所述变更元素计算所述变更元素在所述软件的新版本中的影响度信息作为第一影响度信息,以及根据所述软件的旧版本中所述变更元素计算所述变更元素在所述软件的旧版本中的影响度信息作为第二影响度信息;根据所述第一影响度信息和所述第二影响度信息对所述软件的新版本和所述软件的旧版本的相似度进行打分;根据打分结果确定是否对所述软件进行自测。本申请的技术方案能减少测试人员对可自测的项目的介入,从而能减少测试人员的工作量。

Description

用于软件自测评估的方法、装置及电子设备
技术领域
本申请涉及计算机软件技术领域,具体而言,涉及用于软件自测评估的方法、装置及电子设备。
背景技术
软件项目和产品在完成首轮开发上线后,通常都会进行大大小小的不计其数的更新和维护。传统公司的测试人员会负责若干个项目和产品的测试,且测试时间通常比较短,一般面临测试人员人少时间紧的问题。实际上,对于维护类项目和产品的代码维护,通常不易出现问题,如果测试人员测试通常也很难发现问题,一般可由开发人员进行自测。
相关技术中,通常对于维护项目和产品的功能需求变化部分进行手工测试,对于未改变部分进行自动化测试,因此仍然需要测试人员人工介入测试,自动化回归测试有时也需要进行维护更新,而且,自动化回归测试通常不能覆盖所有可能的输入条件,对于维护类需求的变更有时难于界定,需要测试人员对可自测的项目的进行人工介入,以致于测试人员的工作量较大。
发明内容
本申请公开用于软件自测评估的方法,使得测试人员对可自测的项目的介入减少,从而能减少测试人员的工作量。
本发明的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本发明的实践而习得。
根据本发明的一个方面,提供一种用于软件自测评估的方法,包括:
获取软件由旧版本到新版本的变更元素,所述变更元素包括有变更的代码和有变更影响的代码;
根据所述软件的新版本中所述变更元素计算所述变更元素在所述软件的新版本中的影响度信息作为第一影响度信息,以及根据所述软件的旧版本中所述变更元素计算所述变更元素在所述软件的旧版本中的影响度信息作为第二影响度信息;
根据所述第一影响度信息和所述第二影响度信息对所述软件的新版本和所述软件的旧版本的相似度进行打分;
根据打分结果确定是否对所述软件进行自测。
根据一些实施例,所述影响度信息包括所述变更元素所在方法的代码行数、提交代码的人数、循环条件个数、判断条件个数、异常处理个数、以及返回值代码位置个数中的至少一个。
根据一些实施例,获取软件由旧版本到新版本的变更元素包括:
通过版本控制工具获取所述软件的新旧两个版本;
对所述新旧两个版本的代码进行逐行比较获取有变更的代码,将所述有变更的代码中框架或类库中的代码剔除。
根据一些实施例,获取软件由旧版本到新版本的变更元素还包括:
对所述软件的新版本进行语法解析得到代码之间的引用关系,根据所述引用关系生成代码引用关系有向图,根据所述代码引用关系有向图将调用所述有变更的代码的代码作为所述有变更影响的代码。
根据一些实施例,所述方法还包括获取所述软件新旧两个版本上线阶段的新日志和旧日志;
根据所述软件的新版本中所述变更元素计算所述变更元素在所述软件的新版本中的影响度信息作为第一影响度信息还包括:
根据所述新日志和所述软件的新版本中所述变更元素计算所述变更元素在所述软件的新版本中的影响度信息作为第一影响度信息;
根据所述软件的旧版本中所述变更元素计算所述变更元素在所述软件的旧版本中的影响度信息作为第二影响度信息还包括:
根据所述旧日志和所述软件的旧版本中所述变更元素计算所述变更元素在所述软件的旧版本中的影响度信息作为第二影响度信息。
根据一些实施例,根据所述新日志和所述软件的新版本中所述变更元素计算所述变更元素在所述软件的新版本中的影响度信息作为第一影响度信息包括:
根据所述新日志得到所述软件所包含的入口业务占比和调用次数;
获取所述软件的顶层入口方法,根据所述顶层入口方法递归遍历所述新日志得到方法之间的调用关系;
根据所述调用关系、所述业务占比、调用次数、以及所述软件的新版本中所述变更元素计算所述变更元素在所述软件的新版本中的影响度信息作为第一影响度信息。
根据一些实施例,根据所述旧日志和所述软件的旧版本中所述变更元素计算所述变更元素在所述软件的旧版本中的影响度信息作为第二影响度信息包括:
根据所述旧日志得到所述软件所包含的入口业务占比和调用次数;
获取所述软件的顶层入口方法,根据所述顶层入口方法递归遍历所述旧日志得到方法之间的调用关系;
根据所述调用关系、所述业务占比、调用次数、以及所述软件的旧版本中所述变更元素计算所述变更元素在所述软件的旧版本中的影响度信息作为第二影响度信息。
根据一些实施例,所述影响度信息还包括所述变更元素所在方法的调用占比、以及调用次数中的至少一个。
根据一些实施例,所述日志为运维业务日志。
根据一些实施例,所述软件的旧版本为所述软件上一次上线成功时的代码,所述软件的新版本为当前变更的代码。
根据一些实施例,所述方法还包括在根据所述第一影响度信息和所述第二影响度信息对所述软件的新版本和所述软件的旧版本的相似度进行打分之后,根据打分结果对所述变更元素进行排序,根据排序结果对所述变更元素进行呈现。
根据本发明的另一方面,提供一种用于软件自测评估的装置,其包括:
变更元素确定单元,用于获取软件由旧版本到新版本的变更元素,所述变更元素包括有变更的代码和有变更影响的代码;
影响度计算单元,用于根据所述软件的新版本中所述变更元素计算所述变更元素在所述软件的新版本中的影响度信息作为第一影响度信息,以及根据所述软件的旧版本中所述变更元素计算所述变更元素在所述软件的旧版本中的影响度信息作为第二影响度信息;
相似度打分单元,用于根据所述第一影响度信息和所述第二影响度信息对所述软件的新版本和所述软件的旧版本的相似度进行打分;
自测评估单元,用于根据打分结果确定是否对所述软件进行自测。
根据一些实施例,所述影响度信息包括所述变更元素所在装置的代码行数、提交代码的人数、循环条件个数、判断条件个数、异常处理个数、以及返回值代码位置个数中的至少一个。
根据一些实施例,所述变更元素确定单元用于:
通过版本控制工具获取所述软件的新旧两个版本;
对所述新旧两个版本的代码进行逐行比较获取有变更的代码,将所述有变更的代码中框架或类库中的代码剔除。
根据一些实施例,所述变更元素确定单元还用于:对所述软件的新版本进行语法解析得到代码之间的引用关系,根据所述引用关系生成代码引用关系有向图,根据所述代码引用关系有向图将调用所述有变更的代码的代码作为所述有变更影响的代码。
根据一些实施例,所述装置还包括日志获取单元;
所述影响度计算单元用于:
根据所述新日志和所述软件的新版本中所述变更元素计算所述变更元素在所述软件的新版本中的影响度信息作为第一影响度信息;
根据所述旧日志和所述软件的旧版本中所述变更元素计算所述变更元素在所述软件的旧版本中的影响度信息作为第二影响度信息。
根据一些实施例,所述影响度计算单元用于:
根据所述新日志得到所述软件所包含的入口业务占比和调用次数;
获取所述软件的顶层入口装置,根据所述顶层入口装置递归遍历所述新日志得到装置之间的调用关系;
根据所述调用关系、所述业务占比、调用次数、以及所述软件的新版本中所述变更元素计算所述变更元素在所述软件的新版本中的影响度信息作为第一影响度信息。
根据一些实施例,所述影响度计算单元用于:
根据所述旧日志得到所述软件所包含的入口业务占比和调用次数;
获取所述软件的顶层入口装置,根据所述顶层入口装置递归遍历所述旧日志得到装置之间的调用关系;
根据所述调用关系、所述业务占比、调用次数、以及所述软件的旧版本中所述变更元素计算所述变更元素在所述软件的旧版本中的影响度信息作为第二影响度信息。
根据一些实施例,所述影响度信息还包括所述变更元素所在装置的调用占比、以及调用次数中的至少一个。
根据一些实施例,所述日志为运维业务日志。
根据一些实施例,所述软件的旧版本为所述软件上一次上线成功时的代码,所述软件的新版本为当前变更的代码。
根据一些实施例,所述装置还包括变更呈现单元,用于在根据所述第一影响度信息和所述第二影响度信息对所述软件的新版本和所述软件的旧版本的相似度进行打分之后,根据打分结果对所述变更元素进行排序,根据排序结果对所述变更元素进行呈现。
根据本发明的另一方面,提供一种电子设备,包括:处理器;存储器,存储用于处理器控制如上述第一方面所述操作的指令。
本申请的实施例提供的技术方案可以包括以下有益效果:
本申请的实施例提供的技术方案能减少测试人员对可自测的项目的介入,从而能减少测试人员的工作量。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本发明。
附图说明
通过参照附图详细描述其示例实施例,本发明的上述和其它特征及优点将变得更加明显。
图1示出了根据本发明一实施例的用于软件自测评估的方法;
图2示出了根据本发明另一实施例的用于软件自测评估的方法;
图3示出了根据本发明一示例所示的示例的引用关系有向图的示意图;
图4示出了根据本发明一示例所示的示例中在有向图中加入有影响的方法的示意图;
图5示出了根据本发明一示例所示的示例中在有向图中加入变更方法和变更影响的代码后的示意图;
图6示出了根据本发明一示例所示的示例中在有向图中删除受影响但未变更的结点后的示意图。
图7示出了根据本发明一实施例的用于软件自测评估的装置的框图;
图8示出了根据本发明一实施例的电子设备。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本发明将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
图1示出了根据本发明一实施例的用于软件自测评估的方法,本实施例可适用于确定是否对软件进行自测的情况,如图1所示,本实施例所述的用于软件自测评估的方法包括:
在步骤S110中,获取软件由旧版本到新版本的变更元素,所述变更元素包括有变更的代码和有变更影响的代码。
所述软件的旧版本可为所述软件上一次上线成功时的代码,所述软件的新版本可为当前变更的代码。软件由旧版本到新版本的变更元素可通过多种方法获取,本实施例对此不作限定。例如通过版本控制工具获取所述软件的新旧两个版本,对所述新旧两个版本的代码进行逐行比较获取有变更的代码,将所述有变更的代码中框架或类库中的代码剔除。或者对所述软件的新版本进行语法解析得到代码之间的引用关系,根据所述引用关系生成代码引用关系有向图,根据所述代码引用关系有向图将调用所述有变更的代码的代码作为所述有变更影响的代码。
所述影响度信息可以是所述变更元素所在方法的代码行数、提交代码的人数、循环条件个数、判断条件个数、异常处理个数、以及返回值代码位置个数等。
在步骤S120中,根据所述软件的新版本中所述变更元素计算所述变更元素在所述软件的新版本中的影响度信息作为第一影响度信息,以及根据所述软件的旧版本中所述变更元素计算所述变更元素在所述软件的旧版本中的影响度信息作为第二影响度信息。
在步骤S130中,根据所述第一影响度信息和所述第二影响度信息对所述软件的新版本和所述软件的旧版本的相似度进行打分。
在步骤S140中,根据打分结果确定是否对所述软件进行自测。
本实施例的技术方案通过分析软件的日志得到业务占比和所述软件所包含的多个方法之间的调用关系,根据所述调用关系分析结果确定是否对所述软件进行自测,能减少测试人员对可自测的项目的介入,从而能减少测试人员的工作量。
图2示出了根据本发明另一实施例的用于软件自测评估的方法,本实施例通过生成代码引用关系有向图,获得已变更代码,分析所述变更代码以获得所述变更代码所在的方法,根据以上两大步骤获得变更代码的影响代码,进一步得到是否需要开发人员自测的结论来说明本实施例的技术方案。如图2所示,本实施例所述的用于软件自测评估的方法包括:
在步骤S210中,获取所述软件新旧两个版本上线阶段的新日志和旧日志。
例如获得软件上线后的日志,例如运维业务日志,分析所述日志,得到软件的业务占比和软件所包含的方法之间的调用关系。
其中,所述业务占比可通过多种方法实现,例如,可根据用户行为的时间戳和日志内容得到各类入口业务占比。
得到顶层入口方法之后,递归遍历所述日志,进一步分析得到不同方法间的调用关系。顺序读取方法之间的调用关系,存入日志分析有向图中。
在步骤S220中,获取软件由旧版本到新版本的变更元素,所述变更元素包括有变更的代码和有变更影响的代码。
例如从版本控制工具中获得最新的代码,遍历代码目录得到源代码文件,对源代码文件进行语法解析,根据引用代码单元的关键字,解析源代码文件中的引用关系,如果引用的单元文件未在源代码文件中,则视为框架或类库中的代码,将该引用关系丢弃,解析完所有代码后,会形成代码引用关系的有向图。
例如A代码引用B代码和C代码文件,根据A代码、B代码、以及C代码之间的引用关系可建立代码引用关系有向图,其引用关系有向图的示意图如图3所示。图3中,每一个有向图均对应新、旧两个版本的代码,以下步骤生成的有向图均如此。
其中,生成变更代码影响有向图,可通过从版本控制工具中获得从上一次上线成功时的代码直到现在变更的代码。对于变更的文件逐行比较新、旧两个版本的文件的变化部分。对变化的部分结合最新代码进行语法和词法分析,例如可进行如下语法和词法分析:
如果该变更行为函数或成员方法的一部分,根据代码引用关系有向图,得到引用该代码单元文件的代码文件,并定位到调用该函数或成员方法的代码,再向上逐层遍历调用该函数或成员方法的代码,直到遍历到最顶层方法为止(最顶层方法为代码引用关系有向图中无入度的节点)。同时以同样方法计算旧版本未变更的代码调用。
如果该变更行为成员变量或变量,根据代码引用关系有向图,得到引用该代码单元文件的代码文件,并定位到调用该函数或成员方法的代码,再向上逐层遍历调用该函数或成员方法的代码,直到遍历到最顶层方法为止(最顶层方法为代码引用关系有向图中无入度的节点)。同时以同样方法计算旧版本未变更的代码调用。
将变更的代码,根据代码引用关系有向图,生成变更代码影响有向图的变更代码部分,同时变更代码所在的方法或变量对应的旧版本未变更代码也做同样的计算。需要说明的是,对于新增或删除的方法或变量,新、旧版本缺失的部分,以空值初始化所对应的有向图节点。
例如B代码中存在一个已变更方法,将影响的方法加入B代码所在节点中,其示意图如图4所示。
将变更的代码,根据代码引用关系有向图和已生成变更代码影响有向图的变更代码部分,生成含有变更代码和影响代码的有向图,同时变更代码所在方法或变量对应的旧版本未变更代码也做同样的计算。
例如B代码中存在一个已变更方法,将变更影响代码依次增加到对应代码节点中,其示意图如图5所示。
生成含有变更代码和影响代码的有向图后,对受影响和未变更的代码引用图节点进行删除操作,如将图5中将受影响但未变更的代码C删除,得到的结果如图6所示,删除受影响但未变更的代码之后,有向图中的所有节点均为变更代码和变更影响代码。
在步骤S230中,根据所述新日志和所述软件的新版本中所述变更元素计算所述变更元素在所述软件的新版本中的影响度信息作为第一影响度信息;根据所述旧日志和所述软件的旧版本中所述变更元素计算所述变更元素在所述软件的旧版本中的影响度信息作为第二影响度信息。
其中所述影响度信息包括所述变更元素所在方法的代码行数、提交代码的人数、循环条件个数、判断条件个数、异常处理个数、返回值代码位置个数、所述变更元素所在方法的调用占比、以及调用次数中的至少一个。
其中所述第一影响度信息可通过如下方式获取:根据所述新日志得到所述软件所包含的入口业务占比和调用次数;获取所述软件的顶层入口方法,根据所述顶层入口方法递归遍历所述新日志得到方法之间的调用关系;根据所述调用关系、所述业务占比、调用次数、以及所述软件的新版本中所述变更元素计算所述变更元素在所述软件的新版本中的影响度信息作为第一影响度信息。
同样地,其中所述第二影响度信息也可通过如下方式获取:根据所述旧日志得到所述软件所包含的入口业务占比和调用次数;获取所述软件的顶层入口方法,根据所述顶层入口方法递归遍历所述旧日志得到方法之间的调用关系;根据所述调用关系、所述业务占比、调用次数、以及所述软件的旧版本中所述变更元素计算所述变更元素在所述软件的旧版本中的影响度信息作为第二影响度信息。
例如,首先遍历已变更代码影响有向图中节点中的方法和变量,存放在一个变更影响线性表中,以相同方式遍历已变更代码对应的旧版本变更代码影响有向图中的节点中的方法和变量,存放在一个旧代码(原始代码)线性表中,需要保证两个线性表的长度相同,并且两个线性表的维度相同,维度顺序也相同。
然后遍历线性表,计算每个元素下子元素的维度值。
如果变更元素在日志分析有向图中,则其子元素的日志维度为设置常量,如未在该日志分析有向图中,则设定为1,否则设定为极小正数,则子元素的调用占比维度为日志调用占比,否则为极小正数。则子元素的调用次数维度的值为日志单位时间内调用次数/单位时间。该子维度新、旧版本为不同时间段下的计算结果。
其中所述影响度信息包括所述变更元素所在方法的代码行数、提交代码的人数、循环条件个数、判断条件个数、异常处理个数、返回值代码位置个数、所述变更元素所在方法的调用占比、以及调用次数中的至少一个。新、旧版本中变更元素所在方法的影响度信息可能相同也可能不同。上述影响度信息的数据获取,可通过多种方式,例如可计算有向图中该顶点下的所有的路径长度和作为调用次数。新、旧版本的调用次数可能不同。
在步骤S240中,根据所述第一影响度信息和所述第二影响度信息对所述软件的新版本和所述软件的旧版本的相似度进行打分。
分别获取所述软件的新版本与旧版本的一个或多个维度的影响度信息之后,根据所述第一影响度信息和所述第二影响度信息对所述软件的新版本和所述软件的旧版本的相似度进行打分。
具体打分方法可采用多种计算公式,例如根据所述第一影响度信息和所述第二影响度信息进行相似运算,乘法运算,加权相加运算等方式进行打分,将打分结果作为所述软件新、旧两个版本的相似度分数。
在步骤S250中,根据打分结果确定是否对所述软件进行自测。
例如如果相似度大于设置相似度阈值,则满足开发人员自测条件,返之,则须进行测试人员测试。
进一步地,所述方法还包括在根据所述第一影响度信息和所述第二影响度信息对所述软件的新版本和所述软件的旧版本的相似度进行打分之后,根据打分结果对所述变更元素进行排序,根据排序结果对所述变更元素进行呈现。
例如可根据日志调用次数和潜在调用影响次数计算变量元素影响的排序,总调用次数越大影响越大。给出排序中的设置的前N个变量元素的变更代码及影响代码,展示给相关用户。
图7示出了根据本发明一实施例的用于软件自测评估的装置的框图,如图7所示,本实施例所述的用于软件自测评估的装置包括变更元素确定单元710、影响度计算单元720、相似度打分单元730、以及自测评估单元740。该变更元素确定单元710被配置为,用于获取软件由旧版本到新版本的变更元素,所述变更元素包括有变更的代码和有变更影响的代码;
该影响度计算单元720被配置为,用于根据所述软件的新版本中所述变更元素计算所述变更元素在所述软件的新版本中的影响度信息作为第一影响度信息,以及根据所述软件的旧版本中所述变更元素计算所述变更元素在所述软件的旧版本中的影响度信息作为第二影响度信息;
该相似度打分单元730被配置为,用于根据所述第一影响度信息和所述第二影响度信息对所述软件的新版本和所述软件的旧版本的相似度进行打分;
该自测评估单元740被配置为,用于根据打分结果确定是否对所述软件进行自测。
根据本发明的一些实施例,所述影响度信息包括所述变更元素所在装置的代码行数、提交代码的人数、循环条件个数、判断条件个数、异常处理个数、以及返回值代码位置个数中的至少一个。
根据本发明的一些实施例,所述变更元素确定单元710用于:
通过版本控制工具获取所述软件的新旧两个版本;
对所述新旧两个版本的代码进行逐行比较获取有变更的代码,将所述有变更的代码中框架或类库中的代码剔除。
根据本发明的一些实施例,所述变更元素确定单元710还用于:对所述软件的新版本进行语法解析得到代码之间的引用关系,根据所述引用关系生成代码引用关系有向图,根据所述代码引用关系有向图将调用所述有变更的代码的代码作为所述有变更影响的代码。
根据本发明的一些实施例,所述装置还包括日志获取单元(图7中未示出);
所述影响度计算单元720用于:
根据所述新日志和所述软件的新版本中所述变更元素计算所述变更元素在所述软件的新版本中的影响度信息作为第一影响度信息;
根据所述旧日志和所述软件的旧版本中所述变更元素计算所述变更元素在所述软件的旧版本中的影响度信息作为第二影响度信息。
根据本发明的一些实施例,所述影响度计算单元720用于:
根据所述新日志得到所述软件所包含的入口业务占比和调用次数;
获取所述软件的顶层入口装置,根据所述顶层入口装置递归遍历所述新日志得到装置之间的调用关系;
根据所述调用关系、所述业务占比、调用次数、以及所述软件的新版本中所述变更元素计算所述变更元素在所述软件的新版本中的影响度信息作为第一影响度信息。
根据本发明的一些实施例,所述影响度计算单元720用于:
根据所述旧日志得到所述软件所包含的入口业务占比和调用次数;
获取所述软件的顶层入口装置,根据所述顶层入口装置递归遍历所述旧日志得到装置之间的调用关系;
根据所述调用关系、所述业务占比、调用次数、以及所述软件的旧版本中所述变更元素计算所述变更元素在所述软件的旧版本中的影响度信息作为第二影响度信息。
根据本发明的一些实施例,所述影响度信息还包括所述变更元素所在装置的调用占比、以及调用次数中的至少一个。
根据本发明的一些实施例,所述日志为运维业务日志。
根据本发明的一些实施例,所述软件的旧版本为所述软件上一次上线成功时的代码,所述软件的新版本为当前变更的代码。
根据本发明的一些实施例,所述装置还包括变更呈现单元(图7中未示出),用于在根据所述第一影响度信息和所述第二影响度信息对所述软件的新版本和所述软件的旧版本的相似度进行打分之后,根据打分结果对所述变更元素进行排序,根据排序结果对所述变更元素进行呈现。
关于上述实施例中的装置,其中各个单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本实施例提供的用于软件自测评估的装置可执行本发明上述方法实施例所提供的用于软件自测评估的方法,具备执行方法相应的功能模块和有益效果。
图8示出了根据本发明一实施例的电子设备,如图8所示,电子设备800可包括处理器810、存储器820、发射器830及接收器840。
存储器820可存储用于处理器810控制操作处理的指令。存储器820可包括易失性或非易失性存储器,如静态随机存取存储器(SRAM)、电可擦除可编程只读存储器(EEPROM)、可擦除可编程只读存储器(EPROM)、可编程只读存储器(PROM)、只读存储器(ROM)等,本发明对此没有限制。
处理器810可调用存储器820中存储的指令控制相关操作。根据一实施例,存储器820存储用于处理器810控制以下操作的指令:
获取软件由旧版本到新版本的变更元素,所述变更元素包括有变更的代码和有变更影响的代码;
根据所述软件的新版本中所述变更元素计算所述变更元素在所述软件的新版本中的影响度信息作为第一影响度信息,以及根据所述软件的旧版本中所述变更元素计算所述变更元素在所述软件的旧版本中的影响度信息作为第二影响度信息;
根据所述第一影响度信息和所述第二影响度信息对所述软件的新版本和所述软件的旧版本的相似度进行打分;
根据打分结果确定是否对所述软件进行自测。
易于理解,存储器820还可存储用于处理器810控制根据本发明实施例的其他操作的指令,这里不再赘述。
处理器810还可控制发射器830和接收器840进行信号收发等。
通过以上的详细描述,本领域的技术人员易于理解,根据本发明实施例的系统和方法具有以下优点中的一个或多个。
根据本发明的实施例,获取软件由旧版本到新版本的变更元素包括:通过版本控制工具获取所述软件的新旧两个版本;
对所述新旧两个版本的代码进行逐行比较获取有变更的代码,将所述有变更的代码中框架或类库中的代码剔除。
根据一些实施例,本发明还提供一种非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由装置的处理器执行以完成上述方法。例如,非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。当存储介质中的指令由终端的处理器执行时,使得终端能够执行下述方法:
获取软件由旧版本到新版本的变更元素,所述变更元素包括有变更的代码和有变更影响的代码;
根据所述软件的新版本中所述变更元素计算所述变更元素在所述软件的新版本中的影响度信息作为第一影响度信息,以及根据所述软件的旧版本中所述变更元素计算所述变更元素在所述软件的旧版本中的影响度信息作为第二影响度信息;
根据所述第一影响度信息和所述第二影响度信息对所述软件的新版本和所述软件的旧版本的相似度进行打分;
根据打分结果确定是否对所述软件进行自测。
本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的,因此不能用于限制本发明的保护范围。
本领域技术人员可以理解上述各模块可以按照实施例的描述分布于装置中,也可以进行相应变化唯一不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
以上具体地示出和描述了本发明的示例性实施例。应该理解,本发明不限于所公开的实施例,相反,本发明意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效布置。

Claims (14)

1.一种用于软件自测评估的方法,其特征在于,包括:
获取软件由旧版本到新版本的变更元素,所述变更元素包括有变更的代码和有变更影响的代码;
根据所述软件的新版本中所述变更元素计算所述变更元素在所述软件的新版本中的影响度信息作为第一影响度信息,以及根据所述软件的旧版本中所述变更元素计算所述变更元素在所述软件的旧版本中的影响度信息作为第二影响度信息;
根据所述第一影响度信息和所述第二影响度信息对所述软件的新版本和所述软件的旧版本的相似度进行打分;
根据打分结果确定是否对所述软件进行自测。
2.如权利要求1所述的方法,其特征在于,所述影响度信息包括所述变更元素所在方法的代码行数、提交代码的人数、循环条件个数、判断条件个数、异常处理个数、以及返回值代码位置个数中的至少一个。
3.如权利要求1所述的方法,其特征在于,获取软件由旧版本到新版本的变更元素包括:
通过版本控制工具获取所述软件的新旧两个版本;
对所述新旧两个版本的代码进行逐行比较获取有变更的代码,将所述有变更的代码中框架或类库中的代码剔除。
4.如权利要求3所述的方法,其特征在于,获取软件由旧版本到新版本的变更元素还包括:
对所述软件的新版本进行语法解析得到代码之间的引用关系,根据所述引用关系生成代码引用关系有向图,根据所述代码引用关系有向图将调用所述有变更的代码的代码作为所述有变更影响的代码。
5.如权利要求1所述的方法,其特征在于,所述方法还包括获取所述软件新旧两个版本上线阶段的新日志和旧日志;
根据所述软件的新版本中所述变更元素计算所述变更元素在所述软件的新版本中的影响度信息作为第一影响度信息还包括:
根据所述新日志和所述软件的新版本中所述变更元素计算所述变更元素在所述软件的新版本中的影响度信息作为第一影响度信息;
根据所述软件的旧版本中所述变更元素计算所述变更元素在所述软件的旧版本中的影响度信息作为第二影响度信息还包括:
根据所述旧日志和所述软件的旧版本中所述变更元素计算所述变更元素在所述软件的旧版本中的影响度信息作为第二影响度信息。
6.如权利要求5所述的方法,其特征在于,根据所述新日志和所述软件的新版本中所述变更元素计算所述变更元素在所述软件的新版本中的影响度信息作为第一影响度信息包括:
根据所述新日志得到所述软件所包含的入口业务占比和调用次数;
获取所述软件的顶层入口方法,根据所述顶层入口方法递归遍历所述新日志得到方法之间的调用关系;
根据所述调用关系、所述业务占比、调用次数、以及所述软件的新版本中所述变更元素计算所述变更元素在所述软件的新版本中的影响度信息作为第一影响度信息。
7.如权利要求5所述的方法,其特征在于,根据所述旧日志和所述软件的旧版本中所述变更元素计算所述变更元素在所述软件的旧版本中的影响度信息作为第二影响度信息包括:
根据所述旧日志得到所述软件所包含的入口业务占比和调用次数;
获取所述软件的顶层入口方法,根据所述顶层入口方法递归遍历所述旧日志得到方法之间的调用关系;
根据所述调用关系、所述业务占比、调用次数、以及所述软件的旧版本中所述变更元素计算所述变更元素在所述软件的旧版本中的影响度信息作为第二影响度信息。
8.如权利要求6或7所述的方法,其特征在于,所述影响度信息还包括所述变更元素所在方法的调用占比、以及调用次数中的至少一个。
9.如权利要求1所述的方法,其特征在于,所述日志为运维业务日志。
10.如权利要求1所述的方法,其特征在于,所述软件的旧版本为所述软件上一次上线成功时的代码,所述软件的新版本为当前变更的代码。
11.如权利要求1所述的方法,其特征在于,所述方法还包括在根据所述第一影响度信息和所述第二影响度信息对所述软件的新版本和所述软件的旧版本的相似度进行打分之后,根据打分结果对所述变更元素进行排序,根据排序结果对所述变更元素进行呈现。
12.一种用于软件自测评估的装置,其特征在于,包括:
变更元素确定单元,用于获取软件由旧版本到新版本的变更元素,所述变更元素包括有变更的代码和有变更影响的代码;
影响度计算单元,用于根据所述软件的新版本中所述变更元素计算所述变更元素在所述软件的新版本中的影响度信息作为第一影响度信息,以及根据所述软件的旧版本中所述变更元素计算所述变更元素在所述软件的旧版本中的影响度信息作为第二影响度信息;
相似度打分单元,用于根据所述第一影响度信息和所述第二影响度信息对所述软件的新版本和所述软件的旧版本的相似度进行打分;
自测评估单元,用于根据打分结果确定是否对所述软件进行自测。
13.如权利要求12所述的装置,其特征在于,所述影响度信息包括所述变更元素所在装置的代码行数、提交代码的人数、循环条件个数、判断条件个数、异常处理个数、返回值代码位置个数、所述变更元素所在装置的调用占比、以及调用次数中的至少一个。
14.一种电子设备,其特征在于,包括:处理器;存储器,存储用于所述处理器控制如权利要求1-11任一项所述操作的指令。
CN201710321894.8A 2017-05-09 2017-05-09 用于软件自测评估的方法、装置及电子设备 Active CN108874652B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710321894.8A CN108874652B (zh) 2017-05-09 2017-05-09 用于软件自测评估的方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710321894.8A CN108874652B (zh) 2017-05-09 2017-05-09 用于软件自测评估的方法、装置及电子设备

Publications (2)

Publication Number Publication Date
CN108874652A true CN108874652A (zh) 2018-11-23
CN108874652B CN108874652B (zh) 2022-06-07

Family

ID=64287091

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710321894.8A Active CN108874652B (zh) 2017-05-09 2017-05-09 用于软件自测评估的方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN108874652B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111258876A (zh) * 2018-11-30 2020-06-09 中国移动通信集团浙江有限公司 一种微服务架构下的精确回归测试方法及装置
CN112540930A (zh) * 2020-12-28 2021-03-23 北京百家科技集团有限公司 一种针对软件更新的评测方法、装置以及电子设备
CN113297076A (zh) * 2021-05-21 2021-08-24 建信金融科技有限责任公司 基于调用链的服务变更识别方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102096632A (zh) * 2009-12-10 2011-06-15 Sap股份公司 代码变化与测试之间的桥接
CN103902255A (zh) * 2012-12-24 2014-07-02 腾讯科技(深圳)有限公司 一种函数关系调用树的生成方法及系统
CN106021103A (zh) * 2016-05-16 2016-10-12 南京大学 一种基于代码变更的移动应用测试脚本自动维护方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102096632A (zh) * 2009-12-10 2011-06-15 Sap股份公司 代码变化与测试之间的桥接
CN103902255A (zh) * 2012-12-24 2014-07-02 腾讯科技(深圳)有限公司 一种函数关系调用树的生成方法及系统
CN106021103A (zh) * 2016-05-16 2016-10-12 南京大学 一种基于代码变更的移动应用测试脚本自动维护方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111258876A (zh) * 2018-11-30 2020-06-09 中国移动通信集团浙江有限公司 一种微服务架构下的精确回归测试方法及装置
CN112540930A (zh) * 2020-12-28 2021-03-23 北京百家科技集团有限公司 一种针对软件更新的评测方法、装置以及电子设备
CN113297076A (zh) * 2021-05-21 2021-08-24 建信金融科技有限责任公司 基于调用链的服务变更识别方法及装置

Also Published As

Publication number Publication date
CN108874652B (zh) 2022-06-07

Similar Documents

Publication Publication Date Title
US10860312B1 (en) Defect ownership assignment system and predictive analysis for codebases
EP2937779B1 (en) Source code violation matching and attribution
US9594797B2 (en) Data quality assessment
DE112016002120T5 (de) Entwicklungs- und Vetriebsplattform für Software
CN107533504A (zh) 用于软件分发的异常分析
US10810009B2 (en) Visualizations of software project and contributor activity
CN109783346B (zh) 基于关键字驱动的自动化测试方法、装置及终端设备
CN107798245B (zh) 一种基于组件依赖图的软件安全漏洞预测方法
EP3674918A2 (en) Column lineage and metadata propagation
AU2019253836A1 (en) Processing data utilizing a corpus
US10956153B2 (en) Violation match sets
US10346294B2 (en) Comparing software projects having been analyzed using different criteria
CN108874652A (zh) 用于软件自测评估的方法、装置及电子设备
Saifullah et al. Learning from examples to find fully qualified names of api elements in code snippets
Devine et al. Assessment and cross-product prediction of software product line quality: accounting for reuse across products, over multiple releases
US20210286706A1 (en) Graph-based method for inductive bug localization
CN117632710A (zh) 测试代码的生成方法、装置、设备及存储介质
Gangwar et al. Concept Drift in Software Defect Prediction: A Method for Detecting and Handling the Drift
Kirinuki et al. Splitting commits via past code changes
Omori et al. Comparing concept drift detection with process mining tools
Tarvo et al. Predicting risk of pre-release code changes with checkinmentor
Zhang et al. Predicting consistent clone change
Lavoie et al. A case study of TTCN-3 test scripts clone analysis in an industrial telecommunication setting
US11119761B2 (en) Identifying implicit dependencies between code artifacts
US20040015742A1 (en) Method and system for allowing customization of remote data collection in the event of a system error

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