一种测试页面确定方法、装置和设备与流程
未命名
10-21
阅读:61
评论:0
1.本技术涉及测试技术领域,尤其涉及一种测试页面确定方法、装置和设备。
背景技术:
2.随着计算机技术的不断成熟,众多的开发者为了开发的便捷性,会包装好应用程序接口api(application programming interface,简称api),方便直接调用。同样的,这也会导致服务端提供给客户端的api会在客户端的多个客户端页面进行调用。由于每个客户端页面的业务场景不同,每次服务端代码变更时,需要人工梳理受影响的客户端页面,进而将梳理出的客户端页面作为测试页面进行测试。这样,由于是人工梳理,准确性较低,会增加上线风险。
技术实现要素:
3.有鉴于此,本技术提供一种测试页面确定方法、装置和设备,用于在服务端代码变更时,准确的确定客户端侧需要测试的测试页面,进而降低上线风险。
4.具体地,本技术是通过如下技术方案实现的:本技术第一方面提供一种测试页面确定方法,所述方法包括:
5.在检测到服务端代码变更时,确定与本次变更所涉及的变更范围关联的目标api;
6.针对运行所述服务端代码的服务器提供给客户端的每个api,建立api和所述客户端的客户端页面之间的对应关系;
7.从所述对应关系中,查找所述目标api对应的目标客户端页面;
8.将所述目标客户端页面确定为测试页面。
9.本技术第二方面提供一种测试页面确定装置,所述装置包括确定模块、构建模块和查找模块,其中,
10.所述确定模块,用于在检测到服务端代码变更时,确定与本次变更所涉及的变更范围关联的目标api;
11.所述构建模块,用于针对运行所述服务端代码的服务器提供给客户端的每个api,建立api和所述客户端的客户端页面之间的对应关系;
12.所述查找模块,用于从所述对应关系中,查找所述目标api对应的目标客户端页面;
13.所述确定模块,还用于将所述目标客户端页面确定为客户端测试页面。
14.本技术第三方面提供一种测试页面确定设备,包括存储器、处理器及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现本技术第一方面提供的任一项所述方法的步骤。
15.本技术第四方面提供一种存储介质,其上存储有程序,所述程序被处理器执行时实现本技术第一方面提供的任一项所述方法的步骤。
16.本技术提供的测试页面确定方法、装置和设备,在检测到服务端代码变更时,通过
获取与本次变更所涉及的变更范围关联的目标api,进而针对运行所述服务端代码的服务器提供给客户端的每个api,建立api和所述客户端的客户端页面之间的对应关系,并从所述对应关系中,查找所述目标api对应的目标客户端页面,从而将所述目标客户端页面确定为测试页面。这样,通过建立api和客户端页面之间的对应关系,并在服务端代码变更时,获取与本次变更所涉及的变更范围关联的目标api,进而基于对应关系查找得到目标客户端页面,相比于人工梳理,可在服务端代码变更时,准确的找到受影响的客户端页面,进而将该客户端页面作为测试页面进行测试,可避免上线风险。
附图说明
17.图1为本技术提供的测试页面确定方法实施例一的流程图;
18.图2为本技术提供的测试页面确定方法实施例二的流程图;
19.图3为本技术提供的测试页面确定方法实施例三的流程图;
20.图4为本技术一示例性实施例示出的一种调用关系图;
21.图5为本技术提供的测试页面确定方法实施例四的流程图;
22.图6为本技术提供的测试页面确定方法实施例五的流程图;
23.图7为本技术提供的测试页面确定方法实施例六的流程图;
24.图8为本技术测试页面确定装置所在测试页面确定设备的一种硬件结构图;
25.图9为本技术提供的一种测试页面确定装置实施例一的结构示意图;
26.图10为本技术提供的一种测试页面确定装置实施例二的结构示意图;
27.图11为本技术提供的一种测试页面确定装置实施例三的结构示意图。
具体实施方式
28.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。
29.在本技术使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术。在本技术和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
30.应当理解,尽管在本技术可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本技术范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
31.本技术提供一种测试页面确定方法、装置和设备,用于在服务端代码变更时,准确的确定客户端侧的测试页面,进而降低上线风险。
32.本技术提供的测试页面确定方法、装置和设备,在检测到服务端代码变更时,通过获取与本次变更所涉及的变更范围关联的目标api,进而针对运行所述服务端代码的服务
器提供给客户端的每个api,建立api和所述客户端的客户端页面之间的对应关系,并从所述对应关系中,查找所述目标api对应的目标客户端页面,从而将所述目标客户端页面确定为客户端测试页面。这样,通过建立api和客户端页面之间的对应关系,并在服务端代码变更时,获取与本次变更所涉及的变更范围关联的目标api,进而基于对应关系查找得到目标客户端页面,相比于人工梳理,可在服务端代码变更时,准确的找到受影响的客户端页面,进而将该客户端页面作为测试页面进行测试,可避免上线风险。
33.下面给出具体的实施例,用以详细介绍本技术的技术方案。
34.图1为本技术提供的测试页面确定方法实施例一的流程图。请参照图1,本实施例提供的方法,可以包括:
35.s101、在检测到服务端代码变更时,确定与本次变更所涉及的变更范围关联的目标api。
36.需要说明的,本实施例提供的方法,可以应用于测试页面确定设备,该设备可以是服务器,或者是其他设备,本实施例中以该设备为服务器为例进行说明。
37.具体实现时,可以基于本次变更所涉及的变更范围,先确定变更范围所涉及的方法,进而确定与该方法关联的api,最后将与该方法关联的api确定为目标api。
38.例如,一实施例中,运行所述服务端代码的服务器提供给客户端的api包括:api1、api2、api3、api4、api5、api6,与本次变更所涉及的变更范围关联的目标api为api4和api5。
39.s102、针对运行所述服务端代码的服务器提供给客户端的每个api,建立api和所述客户端的客户端页面之间的对应关系。
40.具体的,若某个api在某个客户端页面进行调用,则该api和该客户端页面对应。
41.例如,表1为本技术一示例性实施例示出的一种api和客户端页面之间的对应关系:
42.表1api和客户端页面之间的对应关系
43.api客户端页面api1页面1、页面3api2页面2、页面5、页面8api3页面4、页面7api4页面1、页面7、页面9api5页面6、页面8api6页面2、页面7
44.参照表1,在表1所示示例中,运行所述服务端代码的服务器提供给客户端的api包括:api1、api2、api3、api4
、
api5、api6,客户端的客户端页面包括:页面1、页面2、页面3
……
、页面6、页面7、页面8、页面9,其中,api1在页面1和页面3进行调用,api1与页面1、页面3对应;类似的,api2在页面2、页面5和页面8进行调用,api2与页面2、页面5、页面8对应;api3在页面4和页面7进行调用,api3与页面4、页面7对应,
……
,api6在页面2和页面7进行调用,api6与页面2、页面7对应。
45.有关api和客户端页面之间的对应关系的构建方法将在下面的实施例详细解释,此处不再赘述。
46.s103、从所述对应关系中,查找所述目标api对应的目标客户端页面。
47.结合上面的例子,目标api为api4和api5,就从对应关系中查找api4和api5对应的目标客户端页面。
48.结合表1,在对应关系如表1所示时,此时,查找到api4对应的目标客户端页面有:页面1、页面7、页面9。类似的,查找到api 5对应的目标客户端页面有:页面6和页面8。
49.s104、将所述目标客户端页面确定为测试页面。
50.结合上面的例子,本步骤中,就将页面1、页面6、页面7、页面8、和页面9确定为测试页面。
51.本实施例提供的测试页面确定方法,在检测到服务端代码变更时,通过获取与本次变更所涉及的变更范围关联的目标api,进而针对运行所述服务端代码的服务器提供给客户端的每个api,建立api和所述客户端的客户端页面之间的对应关系,并从所述对应关系中,查找所述目标api对应的目标客户端页面,从而将所述目标客户端页面确定为测试页面。这样,通过建立api和客户端页面之间的对应关系,并在服务端代码变更时,获取与本次变更所涉及的变更范围关联的目标api,进而基于对应关系查找得到目标客户端页面,相比于人工梳理,可在服务端代码变更时,准确的找到受影响的客户端页面,进而将该客户端页面作为测试页面进行测试,可避免上线风险。
52.图2为本技术提供的测试页面确定方法实施例二的流程图。本实施例主要用于说明如何建立api和客户端页面之间的对应关系。请参照图2,本实施例提供的方法,在上述实施例的基础上,建立api和所述客户端的客户端页面之间的对应关系的过程,可以包括以下步骤:
53.s201、获取所述客户端的各个客户端页面的页面信息;其中,每个客户端页面的页面信息是所述客户端对客户端页面进行遍历后采集并发送给本设备的。
54.具体的,每个客户端页面的页面信息是客户端对客户端页面进行遍历后采集并发送给本设备的。客户端可以通过采集工具采集每个客户端页面的页面信息。例如,一实施例中,客户端上嵌入有fastbot工具,客户端可基于该fastbot工具对客户端页面进行遍历,进而在遍历的过程中采集每个客户端页面的页面信息。
55.需要说明的,fastbot是一个自动化测试工具,该工具可以模拟用户在客户端页面上的操作(例如,点击、输入等操作),并采集客户端页面的页面数据。
56.具体实现时,可以先在客户端上嵌入该fastbot工具,进一步的,通过运行该fastbot工具来模拟用户在客户端页面上的操作,进而提取相关的数据。
57.需要说明的是,每个客户端页面的页面信息可以包括有该客户端页面的截图、该客户端页面的起始时间、该客户端页面上的操作行为以及该客户端页面跳转到下一个客户端页面的时间等信息。
58.s202、获取所述服务器在所述客户端对客户端页面进行遍历时所生成的api请求日志数据。
59.参见前面的描述,在客户端对客户端页面进行遍历时,客户端会基于用户的操作(fastbot工具模拟用户在客户端页面上的操作)触发api请求,并将api请求发送给服务器,相应的,服务器会响应该api请求,向客户端返回响应数据,客户端通过响应该响应数据,实现页面跳转等功能。
60.需要说明的是,服务器在响应api请求时,会生成api请求日志数据,一条api请求
日志数据可以包括api标识、请求时间、请求方法、响应体等信息。
61.具体的,可通过elk获取api请求日志数据,elk是由elasticsearch、logstash和kibana组成的日志管理和分析解决方案。具体实现时,可通过日志收集器来收集api请求对应的api请求日志数据,进而通过创建索引来存储收集到的api请求日志数据。
62.具体实现时,可根据客户端对客户端页面进行遍历时的开始时刻和结束时刻,查找请求时间处于这一时间范围内的api请求日志数据,查找到的所有api请求日志数据便是服务器在客户端对客户端页面进行遍历时所生成的api请求日志数据。
63.s203、基于所述api请求日志数据和每个客户端页面的页面信息,建立所述对应关系。
64.具体实现时,针对每个客户端页面,可根据该客户端页面的页面信息中的起始时间、以及该客户端页面跳转到下一个客户端页面的时间,从获取到的api请求日志数据中查找请求时间处于这一时间范围内的目标api请求日志数据,进而将查找到的目标api请求日志数据代表的api(携带的api标识所代表的api)确定为该客户端页面对应的api。
65.例如,针对客户端页面1,该客户端页面1的页面信息包括:该客户端页面的起始时间为a,该客户端页面跳转到下一个客户端页面的时间为b,本步骤中,就基于每条api请求日志数据的请求时间,从获取到的所有api请求日志数据中查找请求时间处于a到b的目标api请求日志数据。例如,一实施例中,查找到的目标api请求日志数据为api请求日志数据5和api请求日志数据6,其中,api请求日志数据5携带的api标识为api1,api请求日志数据6携带的api标识为api4,此时,就确定客户端页面1与api1、api4对应。
66.本实施例提供的测试页面确定方法,通过获取客户端的各个客户端页面的页面信息,并获取所述服务器在所述客户端对客户端页面进行遍历时所产生的api请求日志数据,从而基于所述api请求日志数据和每个客户端页面的页面信息,建立所述对应关系。这样,提供了一种建立对应关系的方法,通过该方法,可建立api和客户端页面的对应关系,进而可在服务端变更的时候,根据该对应关系准确的找到受影响的客户端页面,并将该客户端页面作为测试页面进行测试,可避免上线风险。相比于人工梳理,准确度较高,且节省时间,成本较低。
67.图3为本技术提供的测试页面确定方法实施例三的流程图。请参照图3,本实施例提供的方法,在上述实施例的基础上,所述获取与本次变更所涉及的变更范围关联的目标api,可以包括:
68.s301、确定本次变更所涉及的变更范围,并查找所述变更范围所涉及的目标方法。
69.具体的,一实施例中,可以通过diff算法确定本次变更所涉及的变更范围。有关diff算法的具体实现原理可以参照相关技术中的描述,本实施例中不做具体解释。
70.变更范围可以是文件级别的变更范围或行级别的变更范围等。本实施例中,确定出的变更范围为行级别的变更范围。例如,一实施例中,服务端代码变更时,此时,通过diff算法确定第50行代码发生了变更,进一步的,确定第50行代码是哪个方法中的代码,则第50行所在的方法就是目标方法。
71.s302、构建所述服务端代码对应的调用关系图。
72.需要说明的是,调用关系图表征该服务端代码所涉及的方法和各个方法之间的调用关系;该调用关系图包括节点和节点之间的有向连线,节点表示服务端代码所涉及的方
法,两个节点之间的有向连线表示这两个节点对应的方法之间的调用关系。例如,图4为本技术一示例性实施例示出的一种调用关系图。请参照图4,在图4所示示例中,服务端代码所涉及的方法包括:方法a、方法b、方法c、方法d、方法e和方法f。其中,方法a调用了方法b,方法b调用了方法c和方法d,方法d调用了方法e和方法f。
73.例如,一实施例中,可以通过静态分析方法获取所述服务端代码所涉及的方法和各个方法之间的调用关系,进而基于获取到方法和各个方法之间的调用关系构建调用关系图。
74.有关通过静态分析方法获取所述服务端代码所涉及的方法和各个方法之间的调用关系的具体实现原理将在下文详细解释,此处不再赘述。
75.s303、针对每个目标方法,从所述调用关系图中查找所述目标方法所在的目标节点以及所述目标节点的根节点,并将与所述目标节点和所述根节点关联的api确定为所述目标api。
76.例如,一实施例中,当变更范围所涉及的目标方法为方法e时,结合图4,从图4所示的调用关系图中,查找到方法a为方法e的根节点,本步骤中,就将与方法a和方法e关联的api确定为目标api。
77.本实施例提供的测试页面确定方法,通过确定代码变更所涉及的变更范围,并查找所述变更范围所涉及的目标方法,进而构建所述服务端代码对应的调用关系图,从而针对每个目标方法,从所述调用关系图中查找所述目标方法所在的目标节点以及所述目标节点的根节点,并将与所述目标节点和所述根节点关联的api确定为所述目标api。这样,可以基于调用关系图准确的确定出目标api。
78.图5为本技术提供的测试页面确定方法实施例四的流程图。请参照图5,本实施例提供的方法,在上述实施例的基础上,构建服务端代码对应的调用关系图的过程,可以包括:
79.s501、通过动态分析方法获取所述服务端代码所涉及的方法和各个方法之间的调用关系,得到第一数据。
80.具体的,一实施例中,动态分析方法可以为字节码增强技术。例如,可以是asm字节码增强技术。
81.具体实现时,可以采用asm字节码增强技术,在方法的开始位置和结束位置插入桩点,实现收集方法和方法之间的调用关系的目的。
82.s502、通过静态分析方法获取所述服务端代码所涉及的方法和各个方法之间的调用关系,得到第二数据。
83.具体的,可通过字节码静态分析方法获取服务端代码所涉及的方法和各个方法之间的调用关系,得到第二数据。
84.图6为本技术提供的测试页面确定方法实施例五的流程图。本实施例主要用于解释如何通过静态分析方法获取服务端代码所涉及的方法和各个方法之间的调用关系。请参照图6,本实施例提供的方法,在上述实施例的基础上,通过静态分析方法获取服务端代码所涉及的方法和各个方法之间的调用关系,可以包括:
85.s601、对所述服务端代码的字节码文件集合进行类解析,得到每个类的属性信息;其中,每个类的属性信息包括该类中定义的方法和该方法的方法信息。
86.需要说明的,服务端代码的字节码文件指的是对服务端代码进行编译后生成的二进制文件,其中包含了以字节码形式表示的可执行指令。类解析指的是对字节码文件中的类进行解析和分析,以获取类的属性信息。
87.具体的,通过类解析,可以得到每个类的属性信息,其中,每个类的属性信息可以包括类名、父类名、接口信息、类中定义的方法和该方法的方法信息等。此外,方法的方法信息可以包括方法的名称、参数列表、返回类型、访问修饰符、注释信息等信息。
88.s602、针对每个方法,在该方法的方法信息表征该方法为api的根节点时,在该方法的方法信息中添加根节点标记。
89.具体的,针对每个方法,可根据该方法的方法信息中的注释信息来判断该方法是否为根节点。
90.s603、记录各个方法的方法信息。
91.s604、获取各个方法之间的调用关系。
92.具体的,获取各个方法之间的调用关系的步骤,可以包括:
93.(1)针对每个方法,对该方法进行解析,得到该方法的指令序列。
94.(2)遍历指令序列中的每个指令,判断该指令是否为方法调用指令。
95.具体实现时,对于每个指令,可以根据该指令的操作码判断该指令是否为方法调用指令。
96.(3)若是,获取所调用的目标方法,并记录该方法与所述目标方法之间的调用关系。
97.(4)若否,继续遍历下一个指令,直至遍历完所述指令序列中的每个指令。
98.s605、将所述各个方法的方法信息和所述调用关系确定为所述第二数据。
99.本实施例提供的方法,给出了一种通过静态分析方法获取服务端代码所涉及的方法和各个方法之间的调用关系的方案,通过该方法,可准确的获取服务端代码所涉及的方法和各个方法之间的调用关系,为构建调用关系图做准备。
100.s503、基于所述第一数据和所述第二数据构建调用关系图。
101.需要说明的,获取的第一数据和第二数据之间可能会有重复的数据,此时需要对获得的第一数据和第二数据进行去重操作,以去除重复的数据对构建调用关系造成的影响。
102.进一步的,构建调用关系的过程,可以包括:(1)将各个方法作为节点;(2)根据各个方法之间的调用关系,在某两个方法之间存在调用关系时,在这两个方法对应的节点之间设置有向线段(该有向线段从调用者指向被调用者),以通过该有向线段表征这两个方法之间的调用关系。
103.本实施例提供的测试页面确定方法,通过动态分析方法获取所述服务端代码所涉及的方法和各个方法之间的调用关系,得到第一数据,并通过静态分析方法获取所述服务端代码所涉及的方法和各个方法之间的调用关系,得到第二数据,进而基于所述第一数据和所述第二数据构建调用关系图,这样,可准确、全面的构建调用关系图,进而在服务端代码变更时,基于该调用关系图,准确的找到受影响的客户端页面。
104.图7为本技术提供的测试页面确定方法实施例六的流程图。请参照图7,本实施例提供的方法,可以包括:
105.s701、在检测到服务端代码变更时,建立所述服务端代码对应的调用关系图。
106.s702、针对运行所述服务端代码的服务器提供给客户端的每个api,建立api和所述客户端的客户端页面之间的对应关系。
107.s703、确定本次变更所涉及的变更范围,并查找所述变更范围所涉及的目标方法。
108.s704、针对每个目标方法,从所述调用关系图中查找所述目标方法所在的目标节点以及所述目标节点的根节点,并将与所述目标节点和所述根节点关联的api确定为目标api。
109.s705、从所述对应关系中,查找所述目标api对应的目标客户端页面。
110.s706、将所述目标客户端页面确定为测试页面。
111.具体的,有关步骤s701至s706的具体实现原理和实现过程可以参见前面实施例中的描述,此处不再赘述。
112.本实施例提供的测试页面确定方法,相比于人工梳理,可在服务端代码变更时,准确的找到受影响的客户端页面,进而将该客户端页面作为测试页面进行测试,可避免上线风险。
113.与前述一种测试页面确定方法的实施例相对应,本技术还提供了一种测试页面确定装置的实施例。
114.本技术提供的一种测试页面确定装置的实施例可以应用在测试页面确定设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在测试页面确定设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图8所示,为本技术测试页面确定装置所在测试页面确定设备的一种硬件结构图,除了图8所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的测试页面确定设备通常根据该测试页面确定装置的实际功能,还可以包括其他硬件,对此不再赘述。
115.图9为本技术提供的一种测试页面确定装置实施例一的结构示意图。请参考图9,本实施例提供的装置,可以包括确定模块910、构建模块920和查找模块930,其中,
116.所述确定模块910,用于在检测到服务端代码变更时,确定与本次变更所涉及的变更范围关联的目标api;
117.所述构建模块920,用于针对运行所述服务端代码的服务器提供给客户端的每个api,建立api和所述客户端的客户端页面之间的对应关系;
118.所述查找模块930,用于从所述对应关系中,查找所述目标api对应的目标客户端页面;
119.所述确定模块910,还用于将所述目标客户端页面确定为客户端测试页面。
120.本实施例提供的装置,可用于执行图1所示方法的步骤,其实现原理和实现过程与前文所述类似,此处不再赘述。
121.可选的,图10为本技术提供的一种测试页面确定装置实施例二的结构示意图。请参照图10,在上述实施例的基础上,本实施例提供的装置,所述构建模块920包括获取单元9201和构建单元9202;其中,
122.所述获取单元9201,用于获取所述客户端的各个客户端页面的页面信息;其中,每个客户端页面的页面信息是所述客户端对客户端页面进行遍历后采集并发送给本设备的;
123.所述获取单元9201,还用于获取所述服务器在所述客户端对客户端页面进行遍历时所产生的api请求日志数据;
124.所述构建单元9202,用于基于所述api请求日志数据和每个客户端页面的页面信息,建立所述对应关系。
125.可选的,图11为本技术提供的一种测试页面确定装置实施例三的结构示意图。请参照图11,在上述实施例的基础上,本实施例提供的装置,所述确定模块910包括确定单元9101和处理单元9102;其中,
126.所述确定单元9101,用于确定本次变更所涉及的变更范围,并查找所述变更范围所涉及的目标方法;
127.所述处理单元9102,用于构建所述服务端代码对应的调用关系图。
128.所述处理单元9102,还用于针对每个目标方法,从所述调用关系图中查找所述目标方法所在的目标节点以及所述目标节点的根节点,并将与所述目标节点和所述根节点关联的api确定为所述目标api。
129.可选的,所述处理单元9102,具体用于通过动态分析方法获取所述服务端代码所涉及的方法和各个方法之间的调用关系,得到第一数据;
130.所述处理单元9102,具体还用于通过静态分析方法获取所述服务端代码所涉及的方法和各个方法之间的调用关系,得到第二数据;
131.所述处理单元9102,具体还用于基于所述第一数据和所述第二数据构建调用关系图。
132.可选的,所述处理单元9102,还用于对所述服务端代码的字节码文件集合进行类解析,得到每个类的属性信息;其中,每个类的属性信息包括该类中定义的方法和该方法的方法信息;
133.所述处理单元9102,还用于针对每个方法,在该方法的方法信息表征该方法为api的根节点时,在该方法的方法信息中添加根节点标记;
134.所述处理单元9102,还用于记录各个方法的方法信息,并获取各个方法之间的调用关系,以及将所述各个方法的方法信息和所述调用关系确定为所述第二数据。
135.可选的,所述处理单元9102,具体还用于针对每个方法,对该方法进行解析,得到该方法的指令序列;
136.所述处理单元9102,具体还用于遍历指令序列中的每个指令,判断该指令是否为方法调用指令,并在该指令为方法调用指令时,获取所调用的目标方法,并记录该方法与所述目标方法之间的调用关系,以及在该指令不是方法调用指令时,继续遍历下一个指令,直至遍历完所述指令序列中的每个指令。
137.请继续参照图8,本技术还提供一种测试页面确定设备,包括存储器、处理器及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现本技术第一方面提供的任一项所述方法的步骤。
138.本技术还提供一种存储介质,其上存储有程序,所述程序被处理器执行时实现本技术提供的任一项所述方法的步骤。
139.上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
140.对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本技术方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
141.以上所述仅为本技术的较佳实施例而已,并不用以限制本技术,凡在本技术的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本技术保护的范围之内。
技术特征:
1.一种测试页面确定方法,其特征在于,所述方法包括:在检测到服务端代码变更时,确定与本次变更所涉及的变更范围关联的目标api;针对运行所述服务端代码的服务器提供给客户端的每个api,建立api和所述客户端的客户端页面之间的对应关系;从所述对应关系中,查找所述目标api对应的目标客户端页面;将所述目标客户端页面确定为测试页面。2.根据权利要求1所述的方法,其特征在于,建立api和所述客户端的客户端页面之间的对应关系,包括:获取所述客户端的各个客户端页面的页面信息;其中,每个客户端页面的页面信息是所述客户端对客户端页面进行遍历后采集并发送给本设备的;获取所述服务器在所述客户端对客户端页面进行遍历时所生成的api请求日志数据;基于所述api请求日志数据和每个客户端页面的页面信息,建立所述对应关系。3.根据权利要求1所述的方法,其特征在于,所述确定与本次变更所涉及的变更范围关联的目标api,包括:确定本次变更所涉及的变更范围,并查找所述变更范围所涉及的目标方法;构建所述服务端代码对应的调用关系图;针对每个目标方法,从所述调用关系图中查找所述目标方法所在的目标节点以及所述目标节点的根节点,并将与所述目标节点和所述根节点关联的api确定为所述目标api。4.根据权利要求3所述的方法,其特征在于,所述构建所述服务端代码对应的调用关系图,包括:通过动态分析方法获取所述服务端代码所涉及的方法和各个方法之间的调用关系,得到第一数据;通过静态分析方法获取所述服务端代码所涉及的方法和各个方法之间的调用关系,得到第二数据;基于所述第一数据和所述第二数据构建调用关系图。5.根据权利要求4所述的方法,其特征在于,通过静态分析方法获取所述服务端代码所涉及的方法和各个方法之间的调用关系,得到第二数据,包括:对所述服务端代码的字节码文件集合进行类解析,得到每个类的属性信息;其中,每个类的属性信息包括该类中定义的方法和该方法的方法信息;针对每个方法,在该方法的方法信息表征该方法为api的根节点时,在该方法的方法信息中添加根节点标记;记录各个方法的方法信息;获取各个方法之间的调用关系;将所述各个方法的方法信息和所述调用关系确定为所述第二数据。6.根据权利要求5所述的方法,其特征在于,所述获取各个方法之间的调用关系,包括:针对每个方法,对该方法进行解析,得到该方法的指令序列;遍历指令序列中的每个指令,判断该指令是否为方法调用指令;若是,获取所调用的目标方法,并记录该方法与所述目标方法之间的调用关系;若否,继续遍历下一个指令,直至遍历完所述指令序列中的每个指令。
7.一种测试页面确定装置,其特征在于,所述装置包括确定模块、构建模块和查找模块,其中,所述确定模块,用于在检测到服务端代码变更时,确定与本次变更所涉及的变更范围关联的目标api;所述构建模块,用于针对运行所述服务端代码的服务器提供给客户端的每个api,建立api和所述客户端的客户端页面之间的对应关系;所述查找模块,用于从所述对应关系中,查找所述目标api对应的目标客户端页面;所述确定模块,还用于将所述目标客户端页面确定为客户端测试页面。8.根据权利要求7所述的装置,其特征在于,所述构建模块包括获取单元和构建单元;其中,所述获取单元,用于获取所述客户端的各个客户端页面的页面信息;其中,每个客户端页面的页面信息是所述客户端对客户端页面进行遍历后采集并发送给本设备的;所述获取单元,还用于获取所述服务器在所述客户端对客户端页面进行遍历时所产生的api请求日志数据;所述构建单元,用于基于所述api请求日志数据和每个客户端页面的页面信息,建立所述对应关系。9.一种测试页面确定设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1-6任一项所述方法的步骤。10.一种存储介质,其上存储有程序,其特征在于,所述程序被处理器执行时实现权利要求1-6任一项所述方法的步骤。
技术总结
本申请提供一种测试页面确定方法、装置和设备。本申请提供的测试页面确定方法,包括:在检测到服务端代码变更时,确定与本次变更所涉及的变更范围关联的目标API;针对运行所述服务端代码的服务器提供给客户端的每个API,建立API和所述客户端的客户端页面之间的对应关系;从所述对应关系中,查找所述目标API对应的目标客户端页面;将所述目标客户端页面确定为测试页面。本申请提供的测试页面确定方法、装置和设备,可在服务端代码变更时,准确的找到受影响的客户端页面,进而将该客户端页面作为测试页面进行测试,可避免上线风险。可避免上线风险。
技术研发人员:安文雅 曾江君
受保护的技术使用者:北京陌陌信息技术有限公司
技术研发日:2023.07.12
技术公布日:2023/10/19
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/