本技术涉及计算机,特别是涉及一种应用程序的回归测试方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术:
1、在软件生命周期中的任何一个阶段,只要软件发生改变,就可能给该软件带来问题。而回归测试用于在软件发生更新、变更之后,对其进行重新测试,以确保所实施的更改不会对现有代码产生不利的影响。
2、回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作比重,软件开发的各个阶段都会进行多次回归测试。而现有的自动化回归测试中,由于无法准确确定回归测试的测试范围,因此每天都需要对全部源代码进行回归测试,随着时间和版本不断迭代,回归测试的工作量积累得越来越多,导致每天的执行时间越来越长,无法高效进行回归测试。
3、因此,相关技术中,存在着回归测试效率低下的问题。
技术实现思路
1、基于此,有必要针对上述技术问题,提供一种能够提高回归测试效率的应用程序的回归测试方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
2、第一方面,本技术提供了一种应用程序的回归测试方法。所述方法包括:
3、在检测到待测应用程序对应的程序代码发生变更的情况下,获取所述待测应用程序对应的变更后程序代码;
4、根据所述变更后程序代码中各代码元素的层级嵌套关系,确定所述变更后程序代码中的程序代码变更范围关联的目标方法,以及所述目标方法对应的方法调用链;所述方法调用链包括与所述目标方法存在方法调用关系的方法对应的方法标识,以及所述目标方法对应的方法标识;
5、确定所述方法调用链中的各方法标识表征的方法所属的接口,作为待测接口;
6、根据各所述待测接口对应的测试用例,对所述待测应用程序进行回归测试,得到所述待测应用程序的回归测试结果。
7、在其中一个实施例中,所述根据所述变更后程序代码中各代码元素的层级嵌套关系,确定所述变更后程序代码中的程序代码变更范围关联的目标方法,以及所述目标方法对应的方法调用链,包括:
8、解析所述变更后程序代码的语法结构,得到所述变更后程序代码中各代码元素的层级嵌套关系;
9、根据各所述代码元素的层级嵌套关系,确定所述程序代码变更范围对应的程序代码所属的方法,得到所述程序代码变更范围关联的目标方法;
10、以及,根据各所述代码元素的层级嵌套关系,对所述目标方法的关联关系进行追踪,得到所述目标方法对应的方法调用链。
11、在其中一个实施例中,所述解析所述变更后程序代码的语法结构,得到所述变更后程序代码中各代码元素的层级嵌套关系,包括:
12、扫描所述变更后程序代码,并对所述变更后程序代码进行词法分析,得到所述变更后程序代码对应的词法分析结果;
13、通过对所述词法分析结果进行语法分析,将所述词法分析结果转换为由所述变更后程序代码中的各所述代码元素的层级嵌套关系组成的抽象语法树;所述抽象语法树用于表征所述变更后程序代码的语法结构。
14、在其中一个实施例中,所述根据各所述代码元素的层级嵌套关系,确定所述程序代码变更范围对应的程序代码所属的方法,得到所述程序代码变更范围关联的目标方法,包括:
15、确定所述程序代码变更范围在所述抽象语法树中对应的位置;
16、根据所述位置在所述抽象语法树中对应的代码元素,确定所述程序代码变更范围对应的程序代码所属的方法,得到所述程序代码变更范围关联的目标方法。
17、在其中一个实施例中,所述根据各所述代码元素的层级嵌套关系,对所述目标方法的关联关系进行追踪,得到所述目标方法对应的方法调用链,包括:
18、遍历所述变更后程序代码对应的抽象语法树,对所述抽象语法树进行语义分析,得到所述变更后程序代码对应的字节码文件;
19、对所述字节码文件进行静态分析,得到所述目标方法对应的方法调用链。
20、在其中一个实施例中,所述方法调用关系包括调用关系和被调用关系;所述对所述字节码文件进行静态分析,得到所述目标方法对应的方法调用链,包括:
21、在所述字节码文件中对所述目标方法对应的方法标识进行追踪,确定所述目标方法调用的方法对应的方法标识,得到所述目标方法的调用关系,以及,确定调用所述目标方法的方法对应的方法标识,作为所述目标方法对应的父调用方法标识;
22、将所述父调用方法标识表征的方法作为所述目标方法,返回所述在所述字节码文件中对所述目标方法对应的方法标识进行追踪,确定调用所述目标方法的方法对应的方法标识的步骤,直到所述字节码文件中不存在调用所述目标方法的方法对应的方法标识,得到所述目标方法的被调用关系;
23、根据所述目标方法的调用关系和所述目标方法的被调用关系,确定所述目标方法对应的方法调用链。
24、在其中一个实施例中,所述根据各所述待测接口对应的测试用例,对所述待测应用程序进行回归测试,得到所述待测应用程序的回归测试结果,包括:
25、根据接口标识与测试用例之间的映射关系,确定表征各所述待测接口的接口标识对应的测试用例,作为各目标测试用例;
26、根据测试用例与测试脚本之间的映射关系,确定各所述目标测试用例对应的测试脚本,作为各所述待测接口对应的测试脚本;
27、通过执行各所述待测接口对应的测试脚本,对所述待测应用程序进行回归测试,得到所述待测应用程序的回归测试结果。
28、第二方面,本技术还提供了一种应用程序的回归测试装置。所述装置包括:
29、获取模块,用于在检测到待测应用程序对应的程序代码发生变更的情况下,获取所述待测应用程序对应的变更后程序代码;
30、方法确定模块,用于根据所述变更后程序代码中各代码元素的层级嵌套关系,确定所述变更后程序代码中的程序代码变更范围关联的目标方法,以及所述目标方法对应的方法调用链;所述方法调用链包括与所述目标方法存在方法调用关系的方法对应的方法标识,以及所述目标方法对应的方法标识;
31、接口确定模块,用于确定所述方法调用链中的各方法标识表征的方法所属的接口,作为待测接口;
32、测试模块,用于根据各所述待测接口对应的测试用例,对所述待测应用程序进行回归测试,得到所述待测应用程序的回归测试结果。
33、第三方面,本技术还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
34、在检测到待测应用程序对应的程序代码发生变更的情况下,获取所述待测应用程序对应的变更后程序代码;
35、根据所述变更后程序代码中各代码元素的层级嵌套关系,确定所述变更后程序代码中的程序代码变更范围关联的目标方法,以及所述目标方法对应的方法调用链;所述方法调用链包括与所述目标方法存在方法调用关系的方法对应的方法标识,以及所述目标方法对应的方法标识;
36、确定所述方法调用链中的各方法标识表征的方法所属的接口,作为待测接口;
37、根据各所述待测接口对应的测试用例,对所述待测应用程序进行回归测试,得到所述待测应用程序的回归测试结果。
38、第四方面,本技术还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
39、在检测到待测应用程序对应的程序代码发生变更的情况下,获取所述待测应用程序对应的变更后程序代码;
40、根据所述变更后程序代码中各代码元素的层级嵌套关系,确定所述变更后程序代码中的程序代码变更范围关联的目标方法,以及所述目标方法对应的方法调用链;所述方法调用链包括与所述目标方法存在方法调用关系的方法对应的方法标识,以及所述目标方法对应的方法标识;
41、确定所述方法调用链中的各方法标识表征的方法所属的接口,作为待测接口;
42、根据各所述待测接口对应的测试用例,对所述待测应用程序进行回归测试,得到所述待测应用程序的回归测试结果。
43、第五方面,本技术还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
44、在检测到待测应用程序对应的程序代码发生变更的情况下,获取所述待测应用程序对应的变更后程序代码;
45、根据所述变更后程序代码中各代码元素的层级嵌套关系,确定所述变更后程序代码中的程序代码变更范围关联的目标方法,以及所述目标方法对应的方法调用链;所述方法调用链包括与所述目标方法存在方法调用关系的方法对应的方法标识,以及所述目标方法对应的方法标识;
46、确定所述方法调用链中的各方法标识表征的方法所属的接口,作为待测接口;
47、根据各所述待测接口对应的测试用例,对所述待测应用程序进行回归测试,得到所述待测应用程序的回归测试结果。
48、上述应用程序的回归测试方法、装置、计算机设备、存储介质和计算机程序产品,通过在检测到待测应用程序对应的程序代码发生变更的情况下,获取待测应用程序对应的变更后程序代码;根据变更后程序代码中各代码元素的层级嵌套关系,确定变更后程序代码中的程序代码变更范围关联的目标方法,以及目标方法对应的方法调用链;方法调用链包括与目标方法存在方法调用关系的方法对应的方法标识,以及目标方法对应的方法标识;确定方法调用链中的各方法标识表征的方法所属的接口,作为待测接口;根据各待测接口对应的测试用例,对待测应用程序进行回归测试,得到待测应用程序的回归测试结果。如此,通过待测应用程序对应的变更后程序代码中各代码元素的层级嵌套关系,可以精准确定所述变更后程序代码中的程序代码变更范围关联的目标方法,以及与目标方法存在方法调用关系的方法,准确得到待测应用程序对应的程序代码发生变更时,用于表征受到代码变更影响的方法的方法调用链,从而可以根据方法调用链中的各方法标识表征的方法所属的接口对应的测试用例,即根据受到代码变更影响的接口对应的测试用例,对待测应用程序进行回归测试,避免使用全部的测试用例,减少了用来回归测试的测试用例的数量,进而减少了回归测试的时间,有效提高了回归测试的效率。