一种面向程序升级的程序测试方法及系统技术方案

技术编号:37232131 阅读:46 留言:0更新日期:2023-04-20 23:14
本发明专利技术提供一种面向程序升级的程序测试方法及系统,方法包括:当程序升级后提交程序代码时,抓取被修改的函数,获取每一个被修改函数的调用关系链,以获取调用关系链中的所有函数;基于程序中每一个功能组件包含的函数,获取每一个被修改函数所属的功能组件;以程序的功能点为测试单元,对受影响的功能点进行测试。通过本发明专利技术,当程序升级时,获取其中被修改的函数,进而获取被修改的功能组件和被修改的功能点,对升级后的程序进行测试时,只需要对修改后的功能点进行测试,无需对整个程序的所有功能点进行测试,减小了测试的工作量。减小了测试的工作量。减小了测试的工作量。

【技术实现步骤摘要】
一种面向程序升级的程序测试方法及系统


[0001]本专利技术涉及计算机领域,更具体地,涉及一种面向程序升级的程序测试方法及系统。

技术介绍

[0002]对于程序代码来说,通常会对现有代码进行修改,比如,在已有程序代码的基础上,对程序代码进行升级,对程序代码修改后,如何保障修改后的程序代码功能的正确性,不出现bug是一个非常重要的问题。
[0003]现有方案则是,对于程序的任何修改,都需要完整的测试整个程序的所有功能点,这样程序中的有些功能没有任何改动也会进行测试,也有一些基础功能的修改涉及到所有范围,可能会存在遗漏了测试点,从而造成了消耗大量人力或者测试不完整的情况。

技术实现思路

[0004]本专利技术针对现有技术中存在的技术问题,提供一种面向程序升级的程序测试方法及系统,能够克服现有的程序升级时,需要重新对整个程序的所有功能点测试的工作量繁重的问题。
[0005]根据本专利技术的第一方面,提供了一种面向程序升级的程序测试方法,包括:当程序升级后提交程序代码时,抓取被修改的代码和被修改的数据;获取所述被修改的代码和被修改的数据涉及的函数,形成被修改函数列表;获取被修改函数列表中的每一个被修改函数的调用关系链,以获取所述调用关系链中的所有函数;将所述调用关系链中的所有函数添加至被修改函数列表中,以更新所述被修改函数列表;基于程序中每一个功能组件包含的函数,获取更新后的所述被修改函数列表中的每一个被修改函数所属的功能组件;以程序的功能点为测试单元,对受影响的功能点进行测试,其中,每一个功能点包括多个功能组件,每一个功能组件包括多个函数。
[0006]在上述技术方案的基础上,本专利技术还可以作出如下改进。
[0007]可选的,所述获取所述被修改的代码和被修改的数据涉及的函数,形成被修改函数列表,包括:获取被修改的代码所属的函数,形成第一被修改函数列表,且以动态数组存储所述第一被修改函数列表;获取直接应用了被修改的数据的函数,形成第二被修改函数列表,且以动态数组存储所述第二被修改函数列表;其中,第一被修改函数列表和所述第二被修改函数列表组合形成被修改函数列表。
[0008]可选的,所述获取被修改函数列表中的每一个被修改函数的调用关系链,以获取所述调用关系链中的所有函数,包括:基于反编译软件IDAPro编写脚本语言,通过其提供的插件功能,开发一个获取函数调用链的插件来获取被修改函数列表中的每一个被修改函数的调用关系链;或者,基于LLVM编译器对被修改函数列表中的每一个被修改函数的调用链进行语法解析来得到函数的调用链;或者,通过解析程序源码提取被修改函数列表中的每一个被修改函数的调用关系链。
[0009]可选的,所述基于程序中每一个功能组件包含的函数,获取更新后的所述被修改函数列表中的每一个被修改函数所属的功能组件,之前包括:对程序升级后提交的程序代码按照功能组件进行划分;对于每一个功能组件,扫描每一个功能组件内的所有函数,建立每一个功能组件与其内部所有函数的对应函数关系列表,且以动态数组的形式存储所述函数关系列表,其中,一个动态数组存储一个功能组件的函数关系列表,以map键值对来存储功能组件和动态数组之间的对应关系。
[0010]可选的,所述基于程序中每一个功能组件包含的函数,获取更新后的所述被修改函数列表中的每一个被修改函数所属的功能组件,包括:根据每一个功能组件与其内部所有函数的对应函数关系列表,基于更新后的所述被修改函数列表中的每一个被修改函数,到所述对应函数关系列表中查找,以获取每一个被修改函数所属的功能组件,进而得到每一个功能组件中被修改的函数。
[0011]可选的,所述得到每一个功能组件中被修改的函数,之后还包括:
[0012]基于任一个功能组件中被修改的函数的数量以及每一个被修改的函数的比例系数,计算所述任一个功能组件的改动影响因子,所述改动影响因子为:改动影响因子=函数个数*比例系数;其中,函数个数是指功能组件中被修改的函数的数量,比例系数为功能组件中每一个被修改函数被改动的比例系数。
[0013]可选的,通过如下方法获取每一个被修改函数的比例系数:对于被修改的代码相关的被修改函数,以所述被修改函数中修改的代码行数与总代码行数的比例作为所述被修改函数的比例系数;对于被修改数据相关的被修改函数,其比例系数赋值为1。
[0014]可选的,所述得到每一个功能组件中被修改的函数,之后还包括:对于任一个功能组件中被修改的函数,统计所述任一个功能组件中的内部修改函数和外部修改函数,所述内部修改函数只能被同一功能组件的函数调用,所述外部修改函数只能被其它功能组件的函数调用;基于所述外部修改函数,为所述任一个功能组件建立一个依赖列表,所述依赖列表中保存有所述任一个功能组件与其它功能组件之间的依赖关系。
[0015]可选的,所述以程序的功能点为测试单元,对受影响的功能点进行测试,包括:根据每一个功能点所包含的功能组件以及每一个功能组件改动影响因子,确定每一个功能点的重要程度;基于每一个功能点的重要程度,确定每一个功能点的测试时间比重。
[0016]根据本专利技术的第二方面,提供一种面向程序升级的程序测试系统,包括:抓取模块,用于当程序升级后提交程序代码时,抓取被修改的代码和被修改的数据;获取模块,用于获取所述被修改的代码和被修改的数据涉及的函数,形成被修改函数列表;以及获取被修改函数列表中的每一个被修改函数的调用关系链,以获取所述调用关系链中的所有函数;以及还用于基于程序中每一个功能组件包含的函数,获取更新后的所述被修改函数列表中的每一个被修改函数所属的功能组件;更新模块,用于将所述调用关系链中的所有函数添加至被修改函数列表中,以更新所述被修改函数列表;测试模块,用于以程序的功能点为测试单元,对受影响的功能点进行测试,其中,每一个功能点包括多个功能组件,每一个功能组件包括多个函数。
[0017]根据本专利技术的第三方面,提供了一种电子设备,包括存储器、处理器,所述处理器用于执行存储器中存储的计算机管理类程序时实现面向程序升级的程序测试方法的步骤。
[0018]根据本专利技术的第四方面,提供了一种计算机可读存储介质,其上存储有计算机管
理类程序,所述计算机管理类程序被处理器执行时实现面向程序升级的程序测试方法的步骤。
[0019]本专利技术提供的一种面向程序升级的程序测试方法及系统,当程序升级时,获取其中被修改的函数,进而获取被修改的功能组件和被修改的功能点,对升级后的程序进行测试时,只需要对修改后的功能点进行测试,无需对整个程序的所有功能点进行测试,减小了测试的工作量。
附图说明
[0020]图1为本专利技术提供的一种面向程序升级的程序测试方法流程图;
[0021]图2为本专利技术提供的一种面向程序升级的程序测试系统的结构示意图;
[0022]图3为本专利技术提供的一种可能的电子设备的硬件结构示意图;
[0023]图4为本专利技术提供的一种可能的计算机可读存储介质的硬件结构示意图。
具体实施方式
[0本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种面向程序升级的程序测试方法,其特征在于,包括:当程序升级后提交程序代码时,抓取被修改的代码和被修改的数据;获取所述被修改的代码和被修改的数据涉及的函数,形成被修改函数列表;获取被修改函数列表中的每一个被修改函数的调用关系链,以获取所述调用关系链中的所有函数;将所述调用关系链中的所有函数添加至被修改函数列表中,以更新所述被修改函数列表;基于程序中每一个功能组件包含的函数,获取更新后的所述被修改函数列表中的每一个被修改函数所属的功能组件;以程序的功能点为测试单元,对受影响的功能点进行测试,其中,每一个功能点包括多个功能组件,每一个功能组件包括多个函数。2.根据权利要求1所述的程序测试方法,其特征在于,所述获取所述被修改的代码和被修改的数据涉及的函数,形成被修改函数列表,包括:获取被修改的代码所属的函数,形成第一被修改函数列表,且以动态数组存储所述第一被修改函数列表;获取直接应用了被修改的数据的函数,形成第二被修改函数列表,且以动态数组存储所述第二被修改函数列表;其中,第一被修改函数列表和所述第二被修改函数列表组合形成被修改函数列表。3.根据权利要求1所述的程序测试方法,其特征在于,所述获取被修改函数列表中的每一个被修改函数的调用关系链,以获取所述调用关系链中的所有函数,包括:基于反编译软件IDAPro编写脚本语言,通过其提供的插件功能,开发一个获取函数调用链的插件来获取被修改函数列表中的每一个被修改函数的调用关系链;或者,基于LLVM编译器对被修改函数列表中的每一个被修改函数的调用链进行语法解析来得到函数的调用链;或者,通过解析程序源码提取被修改函数列表中的每一个被修改函数的调用关系链。4.根据权利要求1所述的程序测试方法,其特征在于,所述基于程序中每一个功能组件包含的函数,获取更新后的所述被修改函数列表中的每一个被修改函数所属的功能组件,之前包括:对程序升级后提交的程序代码按照功能组件进行划分;对于每一个功能组件,扫描每一个功能组件内的所有函数,建立每一个功能组件与其内部所有函数的对应函数关系列表,且以动态数组的形式存储所述函数关系列表,其中,一个动态数组存储一个功能组件的函数关系列表,以map键值对来存储功能组件和动态数组之间的对应关系。5.根据权利要求4所述的程序测试方法,其特征在于,所述基于程序中每一个功能组件包含的函数,获取更新后的所述被修改函数列表中的每一个被修改函数所属的功能组件,包括:根据每一个功能组件与其内部所有函数的对应函数关系列表,基于更新后的...

【专利技术属性】
技术研发人员:周志刚
申请(专利权)人:武汉斗鱼网络科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1