一种自动定位问题代码的方法及设备与流程
未命名
08-15
阅读:179
评论:0
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.图1示出根据本技术的一个方面提供的一种自动定位问题代码的方法流程示意图;
33.图2示出本技术一实施例中测试对象产品的版本包构建树图例;
34.图3示出本技术一实施例中一种自动定位产品版本及引入代码的方法流程示意图;
35.图4示出本技术一实施例中一种自动定位问题代码的框架示意图。
36.附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
37.下面结合附图对本技术作进一步详细描述。
38.在本技术一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(例如中央处理器(central processing unit,cpu))、输入/输出接口、网络接口和内存。
39.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(random access memory,ram)和/或非易失性内存等形式,如只读存储器(read only memory,rom)或闪存(flash ram)。内存是计算机可读介质的示例。
40.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(phase-change ram,pram)、静态随机存取存储器(static random access memory,sram)、动态随机存取存储器(dynamic random access memory,dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(compact disc read-only memory,cd-rom)、数字多功能光盘(digital versatile disk,dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
41.图1示出根据本技术的一个方面提供的一种自动定位问题代码的方法流程示意图,该方法包括:步骤s11~步骤s14,其中,
42.步骤s11,当自动测试化用例失败后自动定位到发生问题的产品版本;在此,自动测试化用例失败后触发,进行自动定位,定位到发生问题的产品版本,比如版本1.1.1,版本1.1.2是正常版本,版本1.1.3是问题版本。通过对比各构建版本的自动化测试结果定位出现问题的最初版本。
43.步骤s12,连接代码仓库,根据定位到的发生问题的产品版本自动拉取该产品版本合入的所有代码提交记录;在此,代码仓库中存储和管理各产品版本提交的代码,定位到发生问题的产品版本后,根据版本标识号可以获取该版本合入的代码,从代码仓库中拉取到发生问题的产品版本合入提交到代码仓库的所有提交记录,如产品版本1.1.3提交的代码记录有3条,则将这3条记录都拉取到。
44.步骤s13,对所述所有代码提交记录进行排序,根据排序后的代码提交记录为每次提交记录构建对应的产品版本包;在此,按提交时间升序排序拉取到的所有的代码提交记录,按照排序后的代码提交记录,为每次提交进行构建一个产品版本包。
45.步骤s14,使用构建的产品版本包部署环境,并执行失败的自动测试化用例,得到执行结果,根据所述执行结果定位出问题代码。在此,按代码提交顺序分层构建产品版本包,进行执行此前失败的自动化测试用例时,需要部署测试的环境,利用上述构建的产品版本包部署出需要的环境,进而执行此前失败的自动化测试用例对比测试结果,从而定位到引入问题的代码;不需要人工参与,从而节约了查看、分析自动化测试失败原因的人力成本,也避免了研发人员参与分析定位引入问题代码带来的时间开销,使版本发布流程中测试并分析问题环节的人力和时间成本降低,提升了产品发布流程中测试的效率及稳定性。
46.在本技术一实施例中,在步骤s11中,当自动测试化用例失败后,在数据库中自动
回溯上一次结果为测试通过的版本,根据回溯到的版本定位到发生问题的产品版本。在此,比如某用例测试结果数据:版本号分别为1,2,3,4,5,6这六个版本,对应的测试结果为通过、通过、通过、失败、失败、失败。按照结果排序,版本4、5、6结果为失败,版本1、2、3结果为成功,则最后一次测试通过的版本为3,且3之前的版本测试结果均未通过,根据回溯到的最后一次的结果为测试通过的版本3,定位到发生问题的产品版本为版本4。
47.具体地,在数据库中自动查询测试结果数据,对所述测试结果数据进行分类处理,其中,分类包括所有测试版本、测试失败的版本以及测试通过的版本;按照时间顺序对分类后的测试结果数据进行排序,回溯到测试失败前的最后一个测试通过的版本。在此,定位分析系统从数据库查询到测试结果数据,进行排序、分类处理,数据结构中会分成所有版本、失败版本合通过版本三类,按照时间顺序排列;例如版本4、5、6失败,版本1、2、3通过,这些版本总体的时间排序是1、2、3、4、5、6,即可得到版本3是最后一个测试通过的版本,为测试失败前最后一个通过的版本,其下一个版本即版本4为最早失败的版本。
48.在本技术一实施例中,在步骤s12中,获取定位到的发生问题的产品版本的版本标识信息和构建信息;根据所述版本标识信息和构建信息通过代码仓库提供的接口查询该产品版本合入的所有代码提交记录,自动拉取所查询到的所有代码提交记录。在此,定位分析系统在分析得出问题的版本后,由定位分析系统连接代码仓库,通过发生问题产品版本的版本标识号和构建信息自动拉取该版本中合入的所有代码提交记录,比如版本4中的代码提交合集为pr4,包含了代码commit7和commit8。进行拉取代码提交记录时,通过代码仓库(gitlab)提供的接口查询。
49.接上述实施例,所述构建信息包括版本标识信息、代码分支及基准操作系统,在步骤s13中,根据排序后的代码提交记录依次下载基准操作系统;在安装所述基准操作系统的虚拟机中下载代码仓库;切换至对应代码分支,根据所述代码分支和版本标识信息编译打包产品后封装成镜像,构建出对应的产品版本包。在此,如图2所示的,测试对象产品的版本包构建树图例,构建信息包括版本标识号、代码分支以及基准操作系统,在版本包中还包括了对应的代码提交记录;构建系统获取到构建信息后,首先下载基准操作系统,在安装操作系统的虚拟机中下载代码库,切换到对应代码分支,编译打包产品后封装镜像,该镜像即作为产品包输出,产品版本包括新的版本标识号。
50.在本技术一实施例中,在步骤s14中,向持续构建集成部署的开源软件发起请求,创建任务执行部署环境脚本,其中,脚本内容包括:在测试平台上下载产品版本包镜像、用产品版本包镜像创建云主机及在云主机中下载测试用例代码。在此,定位分析系统会向持续构建集成部署的开源软件(如jenkins)发起请求来创建任务执行部署环境脚本,脚本的内容由开发人员自主编写,对应的脚步内容为:在测试平台上下载产品包镜像、用产品包镜像创建云主机以及在云主机中下载测试用例代码,部署脚本后,执行测试用例,即执行前面测试失败的用例。
51.在本技术一实施例中,在步骤s14中,统计执行结果中测试结果为失败的构建包;定位失败的构建包对应的代码提交,得到问题代码。在此,不同版本包部署环境执行测试用例,返回结果,定位分析系统进行统计,比如版本4.1、4.2和4.3,如果测试用例在4.1上通过,4.2上失败,4.3上失败,则4.2版本包为最早出现问题的版本,该版本对应的代码提交包含了commit7和commit8两次代码提交,对应的构建包为2个,使用commit7对应的构建包执
行的测试用例,测试结果为通过,commit8对应的测试结果为失败,则commit8的构建包对应的代码为引入问题代码。
52.本技术通过程序自动对比各构建版本的自动化测试结果,从而自动定位出现问题的最初版本,再根据版本标识号获取该版本合入的代码,按照代码提交顺序分层构建产品包并执行此前失败的自动化测试用例。具体过程如图3所示,自动化用例失败后触发,在数据库中自动回溯上一次结果为测试通过的版本,由此定位到用例失败的最早版本为发生问题的产品版本;连接代码仓库,通过发生问题产品版本的版本标识号和构建信息自动拉取该版本中合入的所有代码提交记录,按提交时间升序排序;根据排序后的代码提交记录,为每次提交进行构建一个产品版本包;使用上一步中构建的所有产品版本包部署环境并执行此前失败的自动化测试用例,统计所有测试结果为失败的构建包;所有自动化测试用例结果为失败的构建包中,其对应的代码提交记录时间最早的即可定位为最早出现问题的构建包,其对应的代码提交即可定位为引入问题的代码。从而通过持续集成构建和持续部署,实现了连接代码仓库、精准构建部署环境和调度测试任务,对比测试结果和定位问题版本的能力。
53.在本技术一优选实施例中,如图4所示,在数据库中某用例测试结果数据,定位分析系统对从数据库中拉取到的测试结果数据进行排序和分类,版本4、5、6结果为失败,版本1、2、3结果为成功,进行存储成数据结构,该数据结构中包括所有版本、失败版本以及通过版本三类,进而对该数据结构进行分析,得到最后一次测试通过的版本为:3,且版本3之前的版本测试结果均为通过,则版本4为最早发生问题的版本;定位分析系统连接代码仓库,查询版本3和4之间提交的代码,比如代码仓库中版本1提交的代码合集为pr1(包括commit1、commit2和commit3),版本2提交的代码合集为pr2(包括commit3、commit4和commit5),版本3提交的代码为pr3(包括commit6),版本4提交的合集为pr4(包括commit7和commit8);定位分析系统向构建系统发送版本信息、用例信息和提交代码信息,构建系统利用收到的信息进行分层构建版本包,返回生成的版本包;自动化测试系统利用不同版本包部署环境并执行测试用例,返回结果,返回的结果存储成数据结构;定位分析系统分析出版本4,包含了commit7和commit8,commit7对应的测试结果为通过,commit8对应的测试结果为失败,则commit8对应代码即为引入问题代码。使用本技术所述的方法实现了在后段研发提交代码出现问题时,首先通过对比各构建版本的自动化测试结果来定位出现问题的最初版本。再根据版本标识号获取该版本合入的代码,按代码提交顺序分层构建产品包并执行此前失败的自动化测试用例对比测试结果,从而定位到引入问题的代码。避免了人工定位出现问题版本和引入问题代码的人力支出,并避免了人工介入可能导致的版本发布延期的风险,提升了产品发布流程中测试的效率及稳定性。
54.此外,本技术实施例还提供了一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现前述一种自动定位问题代码的方法。
55.与上文所述的方法相对应的,本技术还提供一种终端,其包括能够执行上述图1或图2或图3或图4或各个实施例所述的方法步骤的模块或单元,这些模块或单元可以通过硬件、软件或软硬结合的方式来实现,本技术并不限定。例如,在本技术一实施例中,还提供了一种自动定位问题代码的设备,所述设备包括:
56.一个或多个处理器;以及
57.存储有计算机可读指令的存储器,所述计算机可读指令在被执行时使所述处理器执行如前述所述方法的操作。
58.例如,计算机可读指令在被执行时使所述一个或多个处理器:
59.当自动测试化用例失败后自动定位到发生问题的产品版本;
60.连接代码仓库,根据定位到的发生问题的产品版本自动拉取该产品版本合入的所有代码提交记录;
61.对所述所有代码提交记录进行排序,根据排序后的代码提交记录为每次提交记录构建对应的产品版本包;
62.使用构建的产品版本包部署环境,并执行失败的自动测试化用例,得到执行结果,根据所述执行结果定位出问题代码。
63.显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
64.需要注意的是,本技术可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(asic)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本技术的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本技术的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,ram存储器,磁或光驱动器或软磁盘及类似设备。另外,本技术的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
65.另外,本技术的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本技术的方法和/或技术方案。而调用本技术的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本技术的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本技术的多个实施例的方法和/或技术方案。
66.对于本领域技术人员而言,显然本技术不限于上述示范性实施例的细节,而且在不背离本技术的精神或基本特征的情况下,能够以其他的具体形式实现本技术。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本技术的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本技术内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
技术特征:
1.一种自动定位问题代码的方法,其特征在于,所述方法包括:当自动测试化用例失败后自动定位到发生问题的产品版本;连接代码仓库,根据定位到的发生问题的产品版本自动拉取该产品版本合入的所有代码提交记录;对所述所有代码提交记录进行排序,根据排序后的代码提交记录为每次提交记录构建对应的产品版本包;使用构建的产品版本包部署环境,并执行失败的自动测试化用例,得到执行结果,根据所述执行结果定位出问题代码。2.根据权利要求1所述的方法,其特征在于,当自动测试化用例失败后自动定位到发生问题的产品版本,包括:当自动测试化用例失败后,在数据库中自动回溯上一次结果为测试通过的版本,根据回溯到的版本定位到发生问题的产品版本。3.根据权利要求1所述的方法,其特征在于,根据定位到的发生问题的产品版本自动拉取该产品版本合入的所有代码提交记录,包括:获取定位到的发生问题的产品版本的版本标识信息和构建信息;根据所述版本标识信息和构建信息通过代码仓库提供的接口查询该产品版本合入的所有代码提交记录,自动拉取所查询到的所有代码提交记录。4.根据权利要求3所述的方法,其特征在于,所述构建信息包括版本标识信息、代码分支及基准操作系统,根据排序后的代码提交记录为每次提交记录构建对应的产品版本包,包括:根据排序后的代码提交记录依次下载基准操作系统;在安装所述基准操作系统的虚拟机中下载代码仓库;切换至对应代码分支,根据所述代码分支和版本标识信息编译打包产品后封装成镜像,构建出对应的产品版本包。5.根据权利要求4所述的方法,使用构建的产品版本包部署环境,包括:向持续构建集成部署的开源软件发起请求,创建任务执行部署环境脚本,其中,脚本内容包括:在测试平台上下载产品版本包镜像、用产品版本包镜像创建云主机及在云主机中下载测试用例代码。6.根据权利要求2所述的方法,其特征在于,在数据库中自动回溯上一次结果为测试通过的版本,包括:在数据库中自动查询测试结果数据,对所述测试结果数据进行分类处理,其中,分类包括所有测试版本、测试失败的版本以及测试通过的版本;按照时间顺序对分类后的测试结果数据进行排序,回溯到测试失败前的最后一个测试通过的版本。7.根据权利要求1所述的方法,其特征在于,根据所述执行结果定位出问题代码,包括:统计执行结果中测试结果为失败的构建包;定位失败的构建包对应的代码提交,得到问题代码。8.一种自动定位问题代码的设备,其特征在于,所述设备包括:一个或多个处理器;以及
存储有计算机可读指令的存储器,所述计算机可读指令在被执行时使所述处理器执行如权利要求1至7中任一项所述方法的操作。9.一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现如权利要求1至7中任一项所述的方法。
技术总结
本申请的目的是提供一种自动定位问题代码的方法及设备,本申请通过当自动测试化用例失败后自动定位到发生问题的产品版本;连接代码仓库,根据定位到的发生问题的产品版本自动拉取该产品版本合入的所有代码提交记录;对所述所有代码提交记录进行排序,根据排序后的代码提交记录为每次提交记录构建对应的产品版本包;使用构建的产品版本包部署环境,并执行失败的自动测试化用例,得到执行结果,根据所述执行结果定位出问题代码。从而定位到引入问题的代码;不需要人工参与,避免了研发人员参与分析定位引入问题代码带来的时间开销,降低人力和时间成本,提升了产品发布流程中测试的效率及稳定性。效率及稳定性。效率及稳定性。
技术研发人员:徐忱媛 陈昭浩
受保护的技术使用者:上海云轴信息科技有限公司
技术研发日:2023.05.24
技术公布日:2023/8/14
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
