CN115129574A - 一种代码测试方法和装置 - Google Patents
一种代码测试方法和装置 Download PDFInfo
- Publication number
- CN115129574A CN115129574A CN202110313760.8A CN202110313760A CN115129574A CN 115129574 A CN115129574 A CN 115129574A CN 202110313760 A CN202110313760 A CN 202110313760A CN 115129574 A CN115129574 A CN 115129574A
- Authority
- CN
- China
- Prior art keywords
- code
- test
- difference information
- update
- target
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/368—Test management for test version control, e.g. updating test cases to a new software version
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例公开了一种代码测试方法和装置,涉及通信技术领域。通过接收测试指令,根据测试指令从本地获取预存的第一代码以及获取第二代码,对比第一代码和第二代码之间的差异,得到第一代码和第二代码之间的差异信息,并将差异信息上传至目标存储位置,最后,向测试服务器发送测试请求,以通过测试请求触发测试服务器从目标存储地址指示的目标存储位置获取差异信息,以及从存储地址指示的远程数据库中获取第二代码,并根据第二代码、差异信息和测试配置信息对第一代码进行测试,可以实现不需要将本地代码提交至远程仓库,即可对本地代码进行测试,提高测试代码的效率。
Description
技术领域
本申请涉及通信技术领域,具体涉及一种代码测试方法和装置。
背景技术
持续集成是指在和向远程仓库提交代码后,在本地提交的代码合并入主分支前进行一系列测试,构建等流程,通常是通过对远程仓库进行监控,当检测到远程仓库有代码提交时,对提交的代码进行测试;或者是定时触发对远程仓库中更新的代码进行测试。
本申请的发明人发现监控远程仓库触发测试或者定时触发测试,都要先将代码提交至远程仓库才能触发自动测试流程,提交至远程仓库的代码还未经过测试,不能保证保存至远程仓库的代码的正确性,且测试效率低。
发明内容
本申请实施例提供一种代码测试方法和装置,可以在不需要配置本地测试环境的情况下,实现不需要将本地代码提交至远程仓库,即可对本地代码进行测试,提高测试代码的效率。
本申请实施例提供的一种代码测试方法,包括:
接收测试指令,根据所述测试指令从本地获取预存的第一代码以及获取第二代码,所述第一代码为基于对第二代码更新得到的新版本代码,所述测试指令携带目标地址;
对比所述第一代码和所述第二代码之间的差异,得到所述第一代码和所述第二代码之间的差异信息,并将所述差异信息上传至所述目标地址指示的目标存储位置;
向所述测试服务器发送测试请求,所述测试请求携带所述第二代码的存储地址、所述目标地址和测试配置信息,所述测试请求用于触发所述测试服务器从所述目标地址指示的目标存储位置获取所述差异信息,以及从所述存储地址指示的远程数据库中获取所述第二代码,并根据所述第二代码、所述差异信息和所述测试配置信息对所述第一代码进行测试。
本申请实施例提供的一种代码测试方法,应用于测试服务器,包括:
接收对第一代码进行测试的测试请求,所述测试请求携带第二代码在远程数据库中的存储地址、差异信息的目标地址和测试配置信息,所述第一代码为基于对所述第二代码更新得到的新版本代码,所述远程数据库用于管理代码,所述差异信息为所述第一代码和所述第二代码之间的差异信息;
根据所述测试请求从所述目标地址指示的目标存储位置获取所述差异信息,以及从所述存储地址指示的所述远程数据库中获取所述第二代码;
根据所述第二代码和所述差异信息生成所述第一代码;
根据所述测试配置信息构建测试环境,在所述测试环境下对所述第一代码进行测试。
相应的,本申请实施例还提供的一种代码测试装置,包括:
接收单元:用于接收测试指令,根据所述测试指令从本地获取预存的第一代码以及获取第二代码,所述第一代码为基于对第二代码更新得到的新版本代码,所述测试指令携带目标地址;
对比单元:用于对比所述第一代码和所述第二代码之间的差异,得到所述第一代码和所述第二代码之间的差异信息,并将所述差异信息上传至所述目标地址指示的目标存储位置;
发送单元:用于向所述测试服务器发送测试请求,所述测试请求携带所述第二代码的存储地址、所述目标地址和测试配置信息,所述测试请求用于触发所述测试服务器从所述目标地址指示的目标存储位置获取所述差异信息,以及从所述存储地址指示的远程数据库中获取所述第二代码,并根据所述第二代码、所述差异信息和所述测试配置信息对所述第一代码进行测试。
相应的,本申请实施例还提供的一种代码测试装置,应用于测试服务器,包括:
指令接收单元:用于接收对第一代码进行测试的测试请求,所述测试请求携带第二代码在远程数据库中的存储地址、差异信息的目标地址和测试配置信息,所述第一代码为基于对所述第二代码更新得到的新版本代码,所述远程数据库用于管理代码,所述差异信息为所述第一代码和所述第二代码之间的差异信息;
获取单元:用于根据所述测试请求从所述目标地址指示的目标存储位置获取所述差异信息,以及从所述存储地址指示的所述远程数据库中获取所述第二代码;
生成单元:用于根据所述第二代码和所述差异信息生成所述第一代码;
测试单元:用于根据所述测试配置信息构建测试环境,在所述测试环境下对所述第一代码进行测试。
相应的,本申请实施例还提供的一种计算机设备,包括存储器和处理器;所述存储器存储有计算机程序,所述处理器用于运行所述存储器内的计算机程序,以执行本申请实施例提供的任一种代码测试方法。
相应的,本申请实施例还提供一种存储介质,所述存储介质用于存储计算机程序,所述计算机程序被处理器加载以执行本申请实施例提供的任一种代码测试方法。
由上可知,本申请实施例通过接收测试指令,根据测试指令从本地获取预存的第一代码以及获取第二代码,然后,对比第一代码和第二代码之间的差异,得到第一代码和第二代码之间的差异信息,并将差异信息上传至目标地址指示的目标存储位置,最后,向测试服务器发送测试请求,以通过测试请求触发测试服务器构从目标存储地址指示的目标存储位置获取差异信息,以及从存储地址指示的远程数据库中获取第二代码,并根据第二代码、差异信息和测试配置信息对第一代码进行测试。该方案通过对比得到第一代码和第二代码之间的差异信息,使得远程服务器可以根据差异信息以及远程数据库中的第二代码得到第一代码,并对第一代码进行测试,可以实现不需要将本地代码(即第一代码) 提交至远程仓库,即可对本地代码进行测试,提高测试代码的效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的代码测试方法的场景示意图;
图2是本申请实施例提供的代码测试方法的流程图;
图3是本申请实施例提供的代码测试方法的另一流程图;
图4是本申请实施例提供的代码测试方法的又一流程图;
图5是本申请实施例提供的代码测试装置示意图;
图6是本申请实施例提供的代码测试的框架结构示意图;
图7是本申请实施例提供的代码测试装置的另一示意图;
图8是本申请实施例提供的计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供一种基于区块链的案件比查询方法、装置、计算机设备和存储介质。该案件比查询装置可以集成在计算机设备中,该计算机设备可以是服务器,也可以是终端等设备。其中,该终端可以包括手机、穿戴式智能设备、平板电脑、笔记本电脑、个人计算(PC,Personal Computer)、以及车载计算机等;该服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
例如,如图1所示,计算机设备通过接收测试指令,根据测试指令从本地获取预存的第一代码以及获取第二代码,对比第一代码和第二代码之间的差异,得到第一代码和第二代码之间的差异信息,并将差异信息上传至目标存储位置,最后,向测试服务器发送测试请求,以通过测试请求触发测试服务器从目标存储地址指示的目标存储位置获取差异信息,以及从存储地址指示的远程数据库中获取第二代码,并根据第二代码、差异信息和测试配置信息对第一代码进行测试,。该方案通过对比得到第一代码和第二代码之间的差异信息,使得远程服务器可以根据差异信息以及远程数据库中的第二代码得到第一代码,并对第一代码进行测试,可以实现不需要将本地代码提交至远程仓库,即可对本地代码进行测试,提高测试代码的效率。
以下分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
本实施例将从图像处理装置的角度进行描述,该图像处理装置具体可以集成在计算机设备中,该计算机设备可以是服务器,也可以是终端等设备。
本申请实施例提供的一种代码测试方法,该方法可以由计算机设备的处理器执行,如图2所示,该代码测试方法的具体流程可以如下:
101、接收测试指令,根据测试指令从本地获取预存的第一代码以及获取第二代码,第一代码为基于对第二代码更新得到的新版本代码,测试指令携带目标地址。
其中,测试指令可以是用户通过终端输入的指示计算机设备执行特定操作的代码,也可以是终端响应用户在终端显示的显示页面上的操作行为生成的代码。
其中,第二代码可以是以某种编程语言编写的实现某一功能或者提供某一服务的应用程序,第二代码可以是由用户从远程数据库拉取至本地数据库中。
其中,远程数据库可以是指运行在同一网络中其他计算机上的数据库,例如可以是代码托管平台Github的Git仓库,远程数据库也可以是版本控制*** SVN的svn仓库,用户可以从Github或者SVN将远程数据库中的内容完整地克隆至本地,远程数据库也可以称为远程仓库。
其中,第一代码可以是用户在终端创建分支,对第二代码进行修改得到的新版本代码,第一代码可以是通过修复了第二代码存在的代码漏洞和代码错误得到的新的代码,还可以是在第二代码的基础上增加了一些功能和服务后得到的新的代码。第一代码可以存储在计算机设备的存储介质中,比如可以是终端的存储介质中,或者是服务器的数据库中,还可以存储在第三方(可以不是远端)提供的数据库(也可成为第三方数据库)中。
比如,具体可以是接收用户通过终端输入的测试指令后,从终端的存储介质获取第一代码和第二代码。
在一实施例中,测试指令可以携带第一代码的第一存储地址和第二代码的第二存储地址,接收到用户输入的测试指令后,根据第一存储地址获取第一代码,比如第一存储地址指示终端的存储介质,则从存储介质中获取第一代码,若第一存储地址指示第三方的数据库,则从第三方数据库中获取第一代码;根据第二存储地址获取第二代码,比如第二存储地址为远程数据库地址,则从远程数据库拉去第二代码,若第二存储地址为终端的存储介质,则从存储介质中获取第二代码;其他存储情况参考以上获取代码的方式进行获取。
可选的,第一存储地址和第二存储地址可以是用户预先设置的,当用户输入测试指令时,终端获取预先设置的第一存储地址和第二存储地址,并根据第一存储地址获取第一代码,以及根据第二存储地址获取第二代码。或者中终端获取第一存储地址和第二存储地址后,将第一存储地址、第二存储地址、和测试指令发送给服务器,由服务器分别根据第一存储地址和第二存储弟子获取第一代码和第二代码。
第一存储地址和第二存储地址还可以包括在用户输入的测试指令中,即用户输入的测试指令中包括了第一存储地址和第二存储地址。
除此之外,目标地址也可以是用户预先设置的,或者包括在用户输入的测试指令中。
102、对比第一代码和第二代码之间的差异,得到第一代码和第二代码之间的差异信息,并将差异信息上传至目标地址指示的目标存储位置。
其中,差异信息可以包括在第二代码的基础上,第一代码更新的代码。
其中,目标地址可以指示将差异信息进行存储的存储位置,比如可以是终端存储介质的地址,也可以是第三方(可以不是远端)提供的数据库地址,用户可以根据实际的存储差异信息的位置设置目标地址。
比如,具体可以是对比第一代码和第二代码的每行代码,确定开发人员对第二代码所做的修改,比如删除的代码和新增的代码,即确定第一代码的更新内容,得到第一代码和第二代码之间的差异信息,并将该差异信息发送至测试指令携带的目标地址指示的目标存储位置上。
具体地,可以对比第一代码和第二代码的代码,确定第一代码相比于第二代码进行更新的代码、代码的更新类型和代码在第二代码中的对应位置,即在一实施例中,步骤“对比第一代码和第二代码之间的差异,得到第一代码和第二代码之间的差异信息”,具体可以是:
将第一代码和第二代码进行代码比对,得到第一代码相对于第二代码进行更新的更新代码、更新代码的更新类型以及更新代码在第二代码中对应的更新位置;
根据更新代码、更新类型以及更新代码在第二代码中对应的更新位置,确定第一代码和第二代码之间的差异信息。
其中,更新代码可以是在第二代码的基础上,第一代码所作的更改,即进行更新的代码。
其中,更新类型可以为相比对第二代码,第一代码进行代码更新的类型,比如可以是在第二代码的基础上进行了新增、删除、以及修改等操作类型。
其中,对应位置可以表示第一代码的更新代码是在第二代码上进行更新类型所表示的操作的位置。
比如,具体可以是对比第一代码和第二代码的代码,确定第一代码是在第二代码的更新位置上对更新代码做更新类型表示的操作得到的,比如第一代码是在第二代码的第k行后面增加3行更新代码A,删除第二代码的第m行至第x 行,以及第二代码的第e行修改为更新代码C。
即可以得到更新代码A,更新类型为新增,更新位置为第二代码的第k行;第二代码的第m行至第x行代码即为更新代码B,更新类型为删除,更新位置为第m行至第x行;更新代码C,更新类型为修改,更改位置为第e行。
根据更新代码、更新类型和更新位置生成差异信息,差异信息可以包括第一代码相比于第二代码进行更新的更新代码、更新代码的更新类型和更新代码在第二代码中对应的更新位置。
可选的,差异信息还可以包括更新位置处第一代码的代码,以及更新位置处第二代码的代码。
根据在更新位置出第一代码和第二代码的区别,可以确定更新代码的更新类型。
第一代码和第二代码中可能存在多个代码文件,进行第一代码和第二代进行代码比对时,需要先确定第一代码中的代码文件对应的第二代码的代码文件,在对比对应的两个代码文件的代码,即在一实施例中,步骤“将第一代码和第二代码进行代码比对,得到第一代码相对于第二代码进行更新的更新代码、更新代码的更新类型以及更新代码在第二代码中对应的更新位置”,具体可以是:
遍历第一代码和第二代码的代码文件,确定第一代码中的代码文件与第二代码中的代码文件的对应关系;
基于对应关系,对比第一代码中的代码文件与第二代码中相对应的代码文件之间的差异,确定第一代码相对于第二代码进行更新的更新代码、更新代码的更新类型以及更新代码在第二代码中的对应位置。
其中,代码文件可以是包括第一代码中的部分代码的文件,即第一代码包括代码文件。
比如,具体可以是遍历第一代码和第二代码的代码文件,查询第一代码和第二代码的文件名称相同的代码文件,文件名称相同的两个代码文件即为有对应关系的代码文件。
对比两个代码文件的代码,确定第一代码中的代码文件相比于第二代码中的代码文件的代码文件进行更新的更新代码,更新代码的更新类型以及更新位置。
可选的,若第一代码中的代码文件是对第二代码中的代码文件进行重命名操作,则这两个文件虽然文件名称不相同,但二者为有对应关系的代码文件,且将根据差异信息和第二代码,得到第一代码的过程中,将第二代码中的代码文件的文件名称修改为第一代码中的代码文件的文件名称。
若第一代码文件的代码文件为新增的代码文件,则第二代码中没有对应的代码文件,或者是对应代码文件为空白代码文件,不进行对比即可确定更新代码为该代码文件,且更新类型为新增;代码文件为删除的代码文件对比过程可以参考新增代码文件。
通过对比第一代码和第二代码的代码,得到第一代码和第二代码之间的差异,即确定第一代码和第二代码之间的差异信息,并将差异信息上传至目标存储位置,为了提高上传速度,提高对第一代码的测试效率,可以在上传至目标存储位置之前对差异信息进行压缩操作,即在一实施例中,步骤“根据更新代码、更新类型以及更新代码在第二代码中对应的更新位置,确定第一代码和第二代码之间的差异信息”,具体可以是:
根据更新代码、更新类型以及更新代码在第二代码中对应的更新位置,确定第一代码和第二代码之间的初始差异信息;
对初始差异信息进行压缩处理,得到差异信息。
其中,初始差异信息为没有进行压缩处理的差异信息。
比如,具体可以是根据更新代码、更新类型以及更新代码在第二代码中对应的更新位置,确定第一代码和第二代码之间的初始差异信息,利用压缩工具,比如jszip和adm-zip,或者可以是其他的压缩工具,比如WinRAR,对得到的初始差异信息进行压缩处理,得到差异信息。
103、向测试服务器发送测试请求,测试请求携带第二代码的存储地址、目标地址和测试配置信息,测试请求用于触发测试服务器从目标地址指示的目标存储位置获取差异信息,以及从存储地址指示的远程数据库中获取第二代码,并根据第二代码、差异信息和测试配置信息对第一代码进行测试。
其中,测试服务器可以是自动化测试服务器,可用于自动化各种任务,如构建、测试(例如集成测试,单元测试和功能测试)和部署软件等,比如可以是Jenkins、Circle CI、Travis CI、或者GitLab CI等。
其中,测试请求可以是携带第二代码的存储地址、目标地址和测试配置信息,指示测试服务器对第一代码进行测试的请求信息。
其中,存储地址为第二代码在远程数据库的存储位置,该远程数据库其中,远程数据库可以是代码托管平台Github的Git仓库,远程数据库也可以是版本控制***SVN的svn仓库。
其中,测试配置信息可以包括测试服务器用于构建测试环境进行代码测试所需要的包括代码、相关参数以及依赖包等信息。
比如,具体可以是将差异信息存储至目标地址指示的目标存储位置之后,向测试服务器发送测试请求,以触发测试服务器从目标地址指示的目标存储位置获取差异信息,以及从存储地址指示的远程数据库中获取第二代码,并根据第二代码、差异信息和测试配置信息对第一代码进行测试。
其中,测试配置信息可以是用户通过测试指令指定的,比如可以是指定测试配置信息存储的位置,即在一实施例中,步骤“向测试服务器发送测试请求”之前,包括:
若测试指令携带的第一标识信息为第一目标标识信息,则获取与第一目标标识信息对应的目标测试配置信息,并将目标测试配置信息作为测试配置信息;
若测试指令携带的第一标识信息不为第一目标标识信息,则获取预设测试配置信息,并将预设测试配置信息作为测试配置信息。
其中,第一标识信息可以表示用户是否指定测试配置信息,第一标识信息可以是是参数或者是测试配置信息的存储地址等形式。
其中,第一目标标识信息可以是表示用户指定测试配置信息的参数,也可以是用户指定的测试配置信息的存储地址。
例如,若参数0表示用户没有指定测试配置信息,参数1表示用户有指定测试配置信息,则第一目标标识信息为1。
若第一标识信息为空白,表示用户没有指定测试配置信息,第一标识信息为存储地址,表示用户有指定测试配置信息,则第一目标标识信息为存储地址。
比如,具体可以是测试请求携带第一标识信息,通过判断第一标识信息是否为目标第一标识信息,若第一标识信息为第一目标标识信息,即用户指定测试配置信息,则根据第一目标标识信息从目标测试配置信息的存储地址获取目标测试配置信息,若第一标识信息不为第一目标标识信息,则获取预设测试配置信息。
其中,预设配置信息可以是用户预设的,比如用户预先配置了预设配置信息的存储地址,若第一标识信息不为第一目标标识信息,即用户没有指定测试配置信息,则获取用户预先配置的存储地址获取预设配置信息,预设配置信息也可以是预先设置在计算机设备的计算机程序中,比如将预设配置信息的存储地址预设值计算机程序中,若第一标识信息不为第一目标标识信息,则获取计算程序中预设的存储地址指示的预设测试配置信息,或是直接获取计算机程序中的预设测试配置信息。
将获取的目标测试配置信息(或者是预设测试配置信息)作为测试配置信息。
由上可知,本申请实施例通过接收测试指令,根据测试指令从本地获取预存的第一代码以及获取第二代码,然后,对比第一代码和第二代码之间的差异,得到第一代码和第二代码之间的差异信息,并将差异信息上传至目标地址指示的目标存储位置,最后,向测试服务器发送测试请求,以通过测试请求触发测试服务器从目标存储地址指示的目标存储位置获取差异信息,以及从存储地址指示的远程数据库中获取第二代码,并根据第二代码、差异信息和测试配置信息对第一代码进行测试。该方案通过对比得到第一代码和第二代码之间的差异信息,使得远程服务器可以根据差异信息以及远程数据库中的第二代码得到第一代码,并对第一代码进行测试,可以实现不需要将本地代码提交至远程仓库,即可对本地代码进行测试,提高测试代码的效率。
在上述实施例的基础上,下面将举例做进一步详细说明。
本实施例将从代码测试装置的角度进行描述,该代码测试装置具体可以集成在服务器中,该服务器可以是测试服务器,比如可以是Jenkins、Circle CI、 Travis CI、或者GitLab CI等测试服务器。
本申请实施例提供的一种代码测试方法,该方法可以由服务器的处理器执行,如图3所示,该代码测试方法的具体流程可以如下:
201、接收对第一代码进行测试的测试请求,测试请求携带第二代码在远程数据库中的存储地址、差异信息的目标地址和测试配置信息,第一代码为基于对第二代码更新得到的新版本代码,远程数据库用于管理代码,差异信息为第一代码和第二代码之间的差异信息。
其中,测试配置信息可以包括测试服务器用于构建测试环境进行代码测试所需要的包括代码、相关参数等信息。
比如,具体可以是接收通过网络或者是其他方式发送的测试请求。
202、根据测试请求从目标地址指示的目标存储位置获取差异信息,以及从存储地址指示的远程数据库中获取第二代码。
比如,具体可以是测试服务器接收测试请求,根据测试请求携带的目标地址从目标地址指示的目标存储位置获取差异信息,从远程数据库获取第二代码。
在一实施例中,测试服务器可以构建测试,通过获取从远程数据库获取第二代码,以及下载差异信息,根据第二代码和差异信息得到第一代码,对第一代码进行测试。
其中,测试流水线可以实现自动构建、自动部署、自动测试、和自动输出测试报告等过程。
测试服务器可以通过第二标识信息确定直接对远程数据库的第二代码进行测试,还是需要获取差异信息和远程数据库的第二代码得到第一代码,对第一代码进行测试。即在一实施例中,步骤“根据测试请求从目标地址指示的目标存储位置获取差异信息,以及从存储地址指示的远程数据库中获取第二代码”,具体可以是
若第二标识信息为第二目标标识信息,则根据测试请求从目标地址指示的目标存储位置获取差异信息,以及从存储地址指示的远程数据库中获取第二代码。
其中,第二标识信息可以用于表示用户是否要对本地的第一代码进行测试,第一标识信息可以是参数等形式。
其中,第二目标标识信息可以是表示用户请求对本地的第一代码进行测试,例如,若参数0表示用户请求对本地的第一代码,参数1表示用户请求对远程数据库中的第二代码,则第一目标标识信息为0。比如,具体可以是若第二标识信息是第二目标标识信息,则根据测试请求从目标地址指示的目标存储位置获取差异信息,从远程数据库中获取第二代码,将差异信息应用于第二代码,得到第一代码。
在一实施例中,若第二标识信息不为第二目标标识信息,则根据第二代码的存储地址从远程数据库中获取第二代码,将第二代码作为第一代码。
通过第二标识信息不仅可以对本地的第一代码进行测试,还可以对远程数据库中的第二代码进行测试,不局限于单一途径获取需要测试的代码,比如,若用户想要进行测试的代码为根据需求新开发的代码(即不是在原版本的基础上得到的新版本代码),则该代码即为差异信息,所以不需要根据差异信息得到对应的代码,可以直接对推送至远程数据库中的代码进行测试,即将数据库中的第二代码作为第一代码,对第一代码进行测试。
203、根据第二代码和差异信息生成第一代码。
比如,具体可以是将差异信息应用至第二代码,比如根据差异信息,删除第二代码的部分代码,在第二代码增加部分代码,增加的部分代码可以包括在差异信息中。
其中,差异信息还可以包括相对于第二代码,第一代码进行更新的更新代码、更新代码的更新类型以及更新代码的在第二代码对应的更新位置。即在一实施例中,步骤“根据第二代码和差异信息生成第一代码”,具体可以是:
当差异信息中包括更新类型为新增的更新代码时,将差异信息中更新类型为新增的更新代码添加至第二代码对应的更新位置;
当差异信息中包括更新类型为删除的更新代码时,在第二代码中,将与差异信息中更新类型为删除的更新代码对应的代码删除;
当差异信息中包括更新类型为修改的更新代码时,在第二代码中,对与差异信息中更新类型为修改的更新代码对应的代码进行修改,以得到第一代码。
其中,更新类型为新增可以表示该更新代码是第二代码中不存在的,需要补充至第二代码中;更新类型为删除可以表示删除第二代码中于该更新代码相同的代码;更新类型为修改可以表示将第二代码中更新位置的代码修改为更新代码。
比如,具体可以是将更新类型为新增的更新代码添加至更新位置指示的第二代码中的位置;将更新类型为删除的更新代码在第二代码中对应的代码进行删除;将第二代码中于更新位置对应位置的代码修改为更新类型为修改的更新代码,将差异信息中的更新代码全部应用于第二代码中,得到第一代码。
204、根据测试配置信息构建测试环境,在测试环境下对第一代码进行测试。
其中,测试环境可以是指测试运行第一代码的软件和硬件环境的描述,以及任何其它与第一代码交互的软件,包括驱动和桩。测试环境是指为了完成第一代码测试工作所必需的计算机硬件、软件、网络设备、历史数据的总称。
比如,具体可以是根据测试配置信息构建测试环境,在测试环境中对第一代码进行测试,例如,单元测试、集成测试、端对端测试、以及软件的可用性测试等。
在一实施例,对第一代码进行编译后,在测试环境中对编译后的第一代码进行测试。
其中,单元测试可以是针对第一代码的函数或模块的测试;集成测试可以是针对第一代码的某个功能的测试,又称功能测试;端对端测试可以是对第一代码中从用户界面直达数据库的全链路测试。
由上可知,本申请实施例测试服务器通过接收对第一代码进行测试的测试请求,根据测试请求从目标地址指示的目标存储位置获取差异信息,以及从存储地址指示的远程数据库中获取第二代码,根据第二代码和差异信息生成第一代码,根据测试配置信息构建测试环境,在测试环境下对第一代码进行测试。该方案通过第一代码和第二代码之间的差异信息,以及远程数据库中的第二代码得到第一代码,对第一代码进行测试,可以实现不需要将本地代码提交至远程仓库,即可对本地代码进行测试,提高测试代码的效率。
在上述实施例的基础上,下面将举例做进一步详细说明。
本实施例将从代码测试***的角度进行描述,该代码测试***可以包括终端和测试服务器,该终端可以为上述实施例中用于执行代码测试方法的终端,该测试服务器可以为上述实施例中用于执行代码测试方法的测试服务器。该终端可以包括手机、穿戴式智能设备、平板电脑、笔记本电脑、个人计算(PC, Personal Computer)、以及车载计算机等。
本申请实施例提供的一种代码测试方法,该方法可以由终端的处理器执行,和测试服务器的处理器执行。如图4所示,该代码测试方法的具体流程可以如下:
301、终端接收测试指令。
比如,具体可以是接收用户在终端上的控制台输入的测试指令,其中,控制台可以是用户在终端上进行编写代码的工作区,用户可以通过在控制台上通过输入代码指令创建分支,对第二代码进行修改,以得到基于第二代码进行更新,得到第一代码,用户对第二代码进行修改完成后,输入测试指令,触发终端响应该测试指令执行后续步骤。
302、终端获取第一代码和第二代码之间的初始差异信息。
比如,具体可以是终端接收到测试指令后,通过指令指示终端上相关的应用程序对比第一代码和第二代码之间的差异,以获取第一代码和第二代码之间的差异,确定第一代码和第二代码之间的初始差异信息。例如,可以是通过向版本管理***Git发送gitdiff指令,获取版本管理Git通过对比第一代码和第二代码之间的差异,返回的第一代码和第二代码之间的初始差异信息。
其中,第一代码存储于终端的存储介质中,第二代码可以存储于终端的存储介质中,具体可以存储在用户可以从Github克隆至本地的数据库中,所以,可以从本地获取第一代码和第二代码,也可以从本地获取第一代码,从远程数据库中获取第二代码,进行对比,在此不做限制。
303、终端对初始差异信息进行压缩处理,得到差异信息。
比如,具体可以是通过压缩工具jszip或者adm-zip对得到的初始差异信息进行压缩处理,得到差异信息,并将第二代码所在分支的分支ID作为压缩处理得到的差异信息的文件名称,该ID可以是哈希值的形式。
在一实施例中,可以不对初始差异信息进行压缩处理,将初始差异信息作为差异信息。
304、终端将差异信息上传至目标数据库中。
比如,具体可以是并将该差异信息发送至目标数据库中。其中目标数据库可以是目标地址指示的目标存储位置。
305、终端触发测试服务器启动流水线对第一代码进行测试。
比如,具体可以是终端判断用户输入的测试指令中是否有指定目标测试配置信息的存储路径,若测试指令中包括目标测试配置信息的存储路径,则终端获取该存储路径下的目标测试配置信息,并将该测试配置信息作为测试配置信息,若测试指令中没有指定目标配置信息的存储路径,则终端获取预设测试配置信息作为测试配置信息。
终端得到测试配置信息后,通过接口触发测试服务器启动流水线以对第一代码进行测试。
其中,测试配置信息可以包括测试服务器用于构建测试环境进行代码测试所需要的包括代码、相关参数以及依赖包等信息。预设测试配置信息可以是默认进行单元测试、端到端测试等测试方式所需要的测试配置信息,比如可以是默认通过jest进行单元测试,那么预设测试配置信息可以包括运行jest所需要的依赖包等信息。
测试配置信息还可以包括测试服务器执行脚本文件所需要的插件等内容。
306、测试服务器获取远程数据库中的第二代码。
比如,具体可以是根据测试请求携带的远程数据库的地址,拉取远程仓库,比如可以是通过git指令从远程数据库拉取git仓库,git仓库中包括第二代码以及第二代码所在的分支。
307、测试服务器判断是否有代码变更。
比如,具体可以是测试服务器根据终端发送的测试请求判断是否有代码变更,即判断对第一代码进行测试还是对第二代码进行测试,若第二标识信息为第二目标标识信息,则表示有代码更改;若第二标识信息不为第二目标标识信息,则表示没有代码更改。
其中,测试请求可以携带第二标识信息,该第二标识信息可以是用户可以通过对测试指令中设置第二标识信息,终端根据用户输入的测试指令判断用户需要进行测试的代码为本地的第一代码还是远程数据库中的第二代码,即用户没有对第二代码进行更新,然后根据该第二标识信息生成测试请求。
测试请求可以携带该第二标识信息,测试请求也可以是携带可以表示该第二标识信息其他形式的信息。
其中,第二标识信息可以是参数等形式。
308、若有代码变更,则测试服务器获取差异信息;若没有代码变更,则测试服务器执行步骤310。
比如,具体可以是若代码没有变更,即测试请求携带的第二标识信息不是第二目标标识信息,则测试服务器执行步骤310,对从远程数据库中的第二代码进行自动化测试。
若代码有变更,即第二标识信息为第二目标标识信息,则测试服务器从目标地址指示的目标存储位置获取差异信息,然后执行步骤309。
309、测试服务器根据差异信息和第二代码生成第一代码。
其中,差异信息还可以包括相对于第二代码,第一代码进行更新的更新代码、更新代码的更新类型以及更新代码的在第二代码对应的更新位置。
比如,具体可以是从目标地址指示的目标存储地址获取目标差异信息后,对目标差异信息进行解压处理,并提取该差异信息的压缩文件名称,根据测试请求携带的远程数据库的地址,以及提取到的该压缩文件名称,确定第二代码所在的分支,在该分支上将差异信息应用于第二代码。
将差异信息应用于第二代码具体可以是,将差异信息中更新类型为新增的更新代码添加至更新位置指示的第二代码中的位置;将差异信息中更新类型为删除的更新代码在第二代码中对应的代码进行删除;将第二代码中于更新位置对应位置的代码修改为差异信息中更新类型为修改的更新代码。
将差异信息中的更新代码全部应用于第二代码中,得到第一代码。
310、测试服务器进行自动化测试。
比如,具体可以是根据测试配置信息构建测试环境,在测试环境中通过流水线对第一代码进行测试,例如,单元测试、集成测试、端对端测试、以及软件的可用性测试等。
在一实施例,对第一代码进行编译后,在测试环境中通过流水线对编译后的第一代码进行测试。
311、测试服务器向终端发送测试报告。
其中,测试报告可以包括测试服务器对第一代码/第二代码进行测试得到的结果信息。
比如,具体可以是通过自动化测试可以检测第一代码/第二代码的代码质量,获得测试通过率和代码覆盖率等测试结果信息,验证模块层面的功能可用性。
将包括测试通过率、代码覆盖率以及功能可用性等测试结果信息的测试报告发送给终端。终端可以在控制台向用户显示该测试报告。
在一实施例中,以上测试代码的流程还可以通过图5所示的框架结构实现,如图5所示,远程驱动层可以是以Git作为代码托管仓库,即远程数据库,Axios 提供Http能力支持,Adm-zip提供压缩能力支持。
集成层可以是通过开发测试工具实现,该开发测试工具集成了远程驱动层包括的三个功能,以使得命令层可以在接收测试指令后,通过安装在本地的 Git版本管理***获取差异信息,通过Axios向测试服务器发送测试请求,通过 Adm-zip对差异信息进行压缩。
配置层可以根据测试配置信息生成测试环境配置(比如测试所需要的依赖包等信息),以及远程执行配置(比如测试服务器所需要的插件等信息)。
命令层可以实现接收第一测试代码,执行获取差异信息、上传差异信息和触发测试服务器进行自动化测试等。
流水线层可以由测试服务器实现从远程仓库拉取第二代码以及自动化测试。
以上各个操作的具体实施可参见前面的实施例。
由上可知,本申请实施例通过终端获取控制台输入的测试指令,终端获取第一代码和第二代码之间的初始差异信息,终端对初始差异信息进行压缩处理,得到差异信息,终端将差异信息上传至目标数据库中,终端触发测试服务器启动流水线对第一代码进行测试,测试服务器获取远程数据库中的第二代码;测试服务器判断是否有代码变更,若有代码变更,则测试服务器获取差异信息;若没有代码变更,则测试服务器进行自动化测试,测试服务器根据差异信息和第二代码生成第一代码,测试服务器进行自动化测试,测试服务器向终端返回测试报告。该方案通过对比得到第一代码和第二代码之间的差异信息,使得远程服务器可以根据差异信息以及远程数据库中的第二代码得到第一代码,并对第一代码进行测试,可以实现不需要将本地代码(第一代码)提交至远程仓库,即可获取本地代码,对本地代码进行测试,提高测试代码的效率。
为了便于更好地实施本申请实施例提供的代码测试方法,在一实施例中还提供了一种代码测试装置。其中名词的含义与上述代码测试方法中相同,具体实现细节可以参考方法实施例中的说明,该代码测试装置具体可以集成在计算机设备中,如图6所示,该代码测试装置可以包括:接收单元401、对比单元402、和发送单元403,具体如下:
(1)接收单元401:用于接收测试指令,根据测试指令从本地获取预存的第一代码以及获取第二代码,第一代码为基于对第二代码更新得到的新版本代码,测试指令携带目标地址。
比如,具体可以是接收用户通过终端输入的测试指令后,从终端的存储介质获取第一代码和第二代码。
在一实施例中,测试指令可以携带第一代码的第一存储地址和第二代码的第二存储地址,接收到用户输入的测试指令后,根据第一存储地址获取第一代码,比如第一存储地址指示终端的存储介质,则从存储介质中获取第一代码,若第一存储地址指示第三方的数据库,则从第三方数据库中获取第一代码;根据第二存储地址获取第二代码,比如第二存储地址为远程数据库地址,则从远程数据库拉去第二代码,若第二存储地址为终端的存储介质,则从存储介质中获取第二代码;其他存储情况参考以上获取代码的方式进行获取。
可选的,第一存储地址和第二存储地址可以是用户预先设置的,当用户输入测试指令时,终端获取预先设置的第一存储地址和第二存储地址,并根据第一存储地址获取第一代码,以及根据第二存储地址获取第二代码。或者中终端获取第一存储地址和第二存储地址后,将第一存储地址、第二存储地址、和测试指令发送给服务器,由服务器分别根据第一存储地址和第二存储弟子获取第一代码和第二代码。
第一存储地址和第二存储地址还可以包括在用户输入的测试指令中,即用户输入的测试指令中包括了第一存储地址和第二存储地址。
除此之外,目标地址也可以是用户预先设置的,或者包括在用户输入的测试指令中。
(2)对比单元402:用于对比第一代码和第二代码之间的差异,得到第一代码和第二代码之间的差异信息,并将差异信息上传至目标地址指示的目标存储位置。
比如,具体可以是对比第一代码和第二代码的每行代码,确定开发人员对第二代码所做的修改,即确定第一代码的更新内容,得到第一代码和第二代码之间的差异信息,并将该差异信息发送至测试指令携带的目标地址指示的目标存储位置上。
可选的,对比单元402还可以包括第一对比子单元,第一对比子单元可以用于对比第一代码和第二代码的代码,确定第一代码相比于第二代码进行更新的代码、代码的更新类型和代码在第二代码中的对应位置,具体地,第一对比子单元可以用于:
将第一代码和第二代码进行代码比对,得到第一代码相对于第二代码进行更新的更新代码、更新代码的更新类型以及更新代码在第二代码中对应的更新位置;
根据更新代码、更新类型以及更新代码在第二代码中对应的更新位置,确定第一代码和第二代码之间的差异信息。
比如,具体可以是对比第一代码和第二代码的代码,确定第一代码是在第二代码的更新位置上对更新代码做更新类型表示的操作得到的,比如第一代码是在第二代码的第k行后面增加3行更新代码A,删除第二代码的第m行至第x 行,以及第二代码的第e行修改为更新代码C。
即可以得到更新代码A,更新类型为新增,更新位置为第二代码的第k行;第二代码的第m行至第x行代码即为更新代码B,更新类型为删除,更新位置为第m行至第x行;更新代码C,更新类型为修改,更改位置为第e行。
根据更新代码、更新类型和更新位置生成差异信息,差异信息可以包括第一代码相比于第二代码进行更新的更新代码、更新代码的更新类型和更新代码在第二代码中对应的更新位置。
可选的,差异信息还可以包括更新位置处第一代码的代码,以及更新位置处第二代码的代码。
根据在更新位置出第一代码和第二代码的区别,可以确定更新代码的更新类型。
在一实施例中,第一代码和第二代码中可能存在多个代码文件,第一对比子单元可以包括代码文件对比模块,代码文件对比模块用于进行第一代码和第二代进行代码比对时,确定第一代码中的代码文件对应的第二代码的代码文件,再对比对应的两个代码文件的代码,具体地,第一对比子单元可以用于:
遍历第一代码和第二代码的代码文件,确定第一代码中的代码文件与第二代码中的代码文件的对应关系;
基于对应关系,对比第一代码中的代码文件与第二代码中相对应的代码文件之间的差异,确定第一代码相对于第二代码进行更新的更新代码、更新代码的更新类型以及更新代码在第二代码中的对应位置。
比如,具体可以是遍历第一代码和第二代码的代码文件,查询第一代码和第二代码的文件名称相同的代码文件,文件名称相同的两个代码文件即为有对应关系的代码文件。
对比两个代码文件的代码,确定第一代码中的代码文件相比于第二代码中的代码文件的代码文件进行更新的更新代码,更新代码的更新类型以及更新位置。
可选的,若第一代码中的代码文件是对第二代码中的代码文件进行重命名操作,则这两个文件虽然文件名称不相同,但二者为有对应关系的代码文件,且将根据差异信息和第二代码,得到第一代码的过程中,将第二代码中的代码文件的文件名称修改为第一代码中的代码文件的文件名称。
若第一代码文件的代码文件为新增的代码文件,则第二代码中没有对应的代码文件,或者是对应代码文件为空白代码文件,不进行对比即可确定更新代码为该代码文件,且更新类型为新增;代码文件为删除的代码文件对比过程可以参考新增代码文件。
通过对比第一代码和第二代码的代码,得到第一代码和第二代码之间的差异,即确定第一代码和第二代码之间的差异信息,并将差异信息上传至目标存储位置,为了提高上传速度,提高对第一代码的测试效率,第一对比子单元可以包括代码压缩模块,代码压缩模块可以用于在上传至目标存储位置之前对差异信息进行压缩操作,具体地,代码压缩模块可以用于:
根据更新代码、更新类型以及更新代码在第二代码中对应的更新位置,确定第一代码和第二代码之间的初始差异信息;
对初始差异信息进行压缩处理,得到差异信息。
比如,具体可以是根据更新代码、更新类型以及更新代码在第二代码中对应的更新位置,确定第一代码和第二代码之间的初始差异信息,利用压缩工具,比如jszip和adm-zip,或者可以是其他的压缩工具,比如WinRAR,对得到的初始差异信息进行压缩处理,得到差异信息。
(3)发送单元403:用于向测试服务器发送测试请求,测试请求携带第二代码的存储地址、目标地址和测试配置信息,测试请求用于触发测试服务器从目标存储地址指示的目标存储位置获取差异信息,以及从存储地址指示的远程数据库中获取第二代码,并根据第二代码、差异信息和测试配置信息对第一代码进行测试。
比如,具体可以是将差异信息存储至目标地址指示的目标存储位置之后,向测试服务器发送测试请求,以触发测试服务器对第一代码进行测试。
可选的,测试配置信息可以是用户通过测试指令指定的,比如可以是指定测试配置信息存储的位置,所以发送单元403还包括获取子单元,获取子单元用于获取测试配置信息,具体地,获取子单元用于:
若测试指令携带的第一标识信息为第一目标标识信息,则获取与第一目标标识信息对应的目标测试配置信息,并将目标测试配置信息作为测试配置信息;
若测试指令携带的第一标识信息不为第一目标标识信息,则获取预设测试配置信息,并将预设测试配置信息作为测试配置信息。
比如,具体可以是测试请求携带标识信息,通过判断第一标识信息是否为第一目标标识信息,若第一标识信息为第一目标标识信息,即用户指定测试配置信息,则根据第一目标标识信息从目标测试配置信息的存储地址获取目标测试配置信息,若第一标识信息不为第一目标标识信息,则获取预设测试配置信息。
其中,预设配置信息可以是用户预设的,比如用户预先配置了预设配置信息的存储地址,若第一标识信息不为第一目标标识信息,即用户没有指定测试配置信息,则获取用户预先配置的存储地址获取预设配置信息,预设配置信息也可以是预先设置在计算机设备的计算机程序中,比如将预设配置信息的存储地址预设值计算机程序中,若第一标识信息不为第一目标标识信息,则获取计算程序中预设的存储地址指示的预设测试配置信息,或是直接获取计算机程序中的预设测试配置信息。
将获取的目标测试配置信息(或者是预设测试配置信息)作为测试配置信息。
由上可知,本申请实施例通过接收单元401接收测试指令,根据测试指令从本地获取预存的第一代码以及获取第二代码,然后,由对比单元402对比第一代码和第二代码之间的差异,得到第一代码和第二代码之间的差异信息,并将差异信息上传至目标地址指示的目标存储位置,通过发送单元403向测试服务器发送测试请求,以通过测试请求触发测试服务器从目标存储地址指示的目标存储位置获取差异信息,以及从存储地址指示的远程数据库中获取第二代码,并根据第二代码、差异信息和测试配置信息对第一代码进行测试。该方案通过对比得到第一代码和第二代码之间的差异信息,使得远程服务器可以根据差异信息以及远程数据库中的第二代码得到第一代码,并对第一代码进行测试,可以实现不需要将本地代码(第一代码)提交至远程仓库,即可对本地代码进行测试,提高测试代码的效率。
为了便于更好地实施本申请实施例提供的代码测试方法,在一实施例中还提供了另一种代码测试装置。其中名词的含义与上述代码测试方法中相同,具体实现细节可以参考方法实施例中的说明,该代码测试装置具体可以集成在计算机设备中,如图7所示,该代码测试装置可以包括:指令接收单元501、获取单元502、生成单元503、和测试单元504,具体如下:
指令接收单元501:用于接收对第一代码进行测试的测试请求,测试请求携带第二代码在远程数据库中的存储地址、差异信息的目标地址和测试配置信息,第一代码为基于对第二代码更新得到的新版本代码,远程数据库用于管理代码,差异信息为第一代码和第二代码之间的差异信息。
比如,具体可以是接收通过网络或者是其他方式发送的测试请求。
获取单元502:用于根据测试请求从目标地址指示的目标存储位置获取差异信息,以及从存储地址指示的远程数据库中获取第二代码。
比如,具体可以是测试服务器接收测试请求,根据测试请求携带的目标地址从目标地址指示的目标存储位置获取差异信息,从远程数据库获取第二代码。
可选的,获取单元502可以包括第一获取子单元,第一获取子单元可以用于通过第二标识信息确定直接对远程数据库的第二代码进行测试,还是需要获取差异信息和远程数据库的第二代码得到第一代码,对第一代码进行测试。具体地,第一获取子单元可以用于:
若第二标识信息为第二目标标识信息,则根据测试请求从目标地址指示的目标存储位置获取差异信息,以及从存储地址指示的远程数据库中获取第二代码;
生成单元503:用于根据第二代码和差异信息生成第一代码。
比如,具体可以是将差异信息应用至第二代码,比如根据差异信息,删除第二代码的部分代码,在第二代码增加部分代码,增加的部分代码可以包括在差异信息中。
其中,差异信息还可以包括相对于第二代码,第一代码进行更新的更新代码、更新代码的更新类型以及更新代码的在第二代码对应的更新位置,在一实施例中,生成单元503可以包括应用子单元,应用子单元可以用于将差异信息应用于第二代码,具体的,应用子单元可以用于:
当差异信息中包括更新类型为新增的更新代码时,将差异信息中更新类型为新增的更新代码添加至第二代码对应的更新位置;
当差异信息中包括更新类型为删除的更新代码时,在第二代码中,将与差异信息中更新类型为删除的更新代码对应的代码删除;
当差异信息中包括更新类型为修改的更新代码时,在第二代码中,对与差异信息中更新类型为修改的更新代码对应的代码进行修改,以得到第一代码。
比如,具体可以是将更新类型为新增的更新代码添加至更新位置指示的第二代码中的位置;将更新类型为删除的更新代码在第二代码中对应的代码进行删除;将第二代码中于更新位置对应位置的代码修改为更新类型为修改的更新代码,将差异信息中的更新代码全部应用于第二代码中,得到第一代码。
可选的,生成单元503可以包括代码生成子单元,代码生成子单元可以用于根据第二标识信息生成第一代码,具体地,代码生成子单元可以用于:
若第二标识信息为第二目标标识信息,则根据第二代码和差异信息生成第一代码;
若第二标识信息不为第二目标标识信息,将第二代码作为第一代码。
比如,具体可以是若第二标识信息是第二目标标识信息,则从目标地址指示的目标存储位置获取差异信息,从远程数据库中获取第二代码,将差异信息应用于第二代码,得到第一代码。
若第二标识信息不为第二目标标识信息,则直接根据第二代码的存储地址从远程数据库中获取第二代码,将第二代码作为第一代码。
测试单元504:用于根据测试配置信息构建测试环境,在测试环境下对第一代码进行测试。
比如,具体可以是根据测试配置信息构建测试环境,在测试环境中对第一代码进行测试,例如,单元测试、集成测试、端对端测试、以及软件的可用性测试等。
在一实施例,对第一代码进行编译后,在测试环境中对编译后的第一代码进行测试。
其中,单元测试可以是针对第一代码的函数或模块的测试;集成测试可以是针对第一代码的某个功能的测试,又称功能测试;端对端测试可以是对第一代码中从用户界面直达数据库的全链路测试。
由上可知,本申请实施例通过指令接收单元501接收对第一代码进行测试的测试请求,由获取单元502根据测试请求构从目标地址指示的目标存储位置获取差异信息,以及从存储地址指示的远程数据库中获取第二代码,通过生成单元503根据第二代码和差异信息生成第一代码,通过测试单元504根据测试配置信息构建测试环境,在测试环境下对第一代码进行测试。该方案通过第一代码和第二代码之间的差异信息,以及远程数据库中的第二代码得到第一代码,对第一代码进行测试,可以实现不需要将本地代码提交至远程仓库,即可对本地代码进行测试,提高测试代码的效率。
本申请实施例还提供一种计算机设备,该计算机设备可以是终端,也可以是服务器,如图8所示,其示出了本申请实施例所涉及的计算机设备的结构示意图,具体来讲:
该计算机设备可以包括一个或者一个以上处理核心的处理器1001、一个或一个以上计算机可读存储介质的存储器1002、电源1003和输入单元1004 等部件。本领域技术人员可以理解,图8中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器1001是该计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器1002内的软件程序和/或模块,以及调用存储在存储器1002内的数据,执行计算机设备的各种功能和处理数据,从而对计算机设备进行整体监控。可选的,处理器1001可包括一个或多个处理核心;优选的,处理器1001可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1001中,存储器1002可用于存储软件程序以及模块,处理器1001通过运行存储在存储器1002的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器1002可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等) 等;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器 1002可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器1002 还可以包括存储器控制器,以提供处理器1001对存储器1002的访问,计算机设备还包括给各个部件供电的电源1003,优选的,电源1003可以通过电源管理***与处理器1001逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗管理等功能。电源1003还可以包括一个或一个以上的直流或交流电源、再充电***、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件,该计算机设备还可包括输入单元1004,该输入单元1004可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入,尽管未示出,计算机设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,计算机设备中的处理器1001会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器1002中,并由处理器1001来运行存储在存储器1002中的应用程序,从而实现各种功能,如下:
当计算机设备为终端或者服务器时,处理器1001运行存储在存储器1002 中的应用程序,可以执行以下操作:
接收测试指令,根据测试指令从本地获取预存的第一代码以及获取第二代码,第一代码为基于对第二代码更新得到的新版本代码,测试指令携带目标地址;
对比第一代码和第二代码之间的差异,得到第一代码和第二代码之间的差异信息,并将差异信息上传至目标地址指示的目标存储位置;
向测试服务器发送测试请求,测试请求携带第二代码的存储地址、目标地址和测试配置信息,测试请求用于触发测试服务器从目标存储地址指示的目标存储位置获取差异信息,以及从存储地址指示的远程数据库中获取第二代码,并根据第二代码、差异信息和测试配置信息对第一代码进行测试。
以及,当计算机设备为测试服务器时,处理器1001运行存储在存储器1002 中的应用程序,可以执行以下操作:
接收对第一代码进行测试的测试请求,测试请求携带第二代码在远程数据库中的存储地址、差异信息的目标地址和测试配置信息,第一代码为基于对第二代码更新得到的新版本代码,远程数据库用于管理代码,差异信息为第一代码和第二代码之间的差异信息;
根据测试请求从目标地址指示的目标存储位置获取差异信息,以及从存储地址指示的远程数据库中获取第二代码;
根据第二代码和差异信息生成第一代码;
根据测试配置信息构建测试环境,在测试环境下对第一代码进行测试。
以上各个操作的具体实施可参见前面的实施例,在此不作赘述。本申请实施例的计算机设备通过接收测试指令,根据测试指令从本地获取预存的第一代码以及获取第二代码,然后,对比第一代码和第二代码之间的差异,得到第一代码和第二代码之间的差异信息,并将差异信息上传至目标地址指示的目标存储位置,最后,向测试服务器发送测试请求,以通过测试请求触发测试服务器从目标存储地址指示的目标存储位置获取差异信息,以及从存储地址指示的远程数据库中获取第二代码,并根据第二代码、差异信息和测试配置信息对第一代码进行测试。该方案通过对比得到第一代码和第二代码之间的差异信息,使得远程服务器可以根据差异信息以及远程数据库中的第二代码得到第一代码,并对第一代码进行测试,可以实现不需要将本地代码提交至远程仓库,即可对本地代码进行测试,提高测试代码的效率。
以及,测试服务器通过接收对第一代码进行测试的测试请求,根据测试请求从目标地址指示的目标存储位置获取差异信息,以及从存储地址指示的远程数据库中获取第二代码,根据第二代码和差异信息生成第一代码,根据测试配置信息构建测试环境,在测试环境下对第一代码进行测试,可以实现不需要将本地代码提交至远程仓库,即可对本地代码进行测试,提高测试代码的效率。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中各种可选实现方式中提供的方法,本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过计算机程序来完成,或通过计算机程序控制相关的硬件来完成,该计算机程序可以存储于一计算机可读存储介质中,并由处理器进行加载和执行,为此,本申请实施例提供一种存储介质,其中存储有计算机程序,该计算机程序,能够被处理器进行加载,以执行本申请实施例所提供的任一种代码测试方法中的步骤,以上各个操作的具体实施可参见前面的实施例,在此不再赘述,其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,RandomAccess Memory)、磁盘或光盘等,由于该存储介质中所存储的计算机程序,可以执行本申请实施例所提供的任一种代码测试方法中的步骤,因此,可以实现本申请实施例所提供的任一种代码测试方法所能实现的有益效果,详见前面的实施例,在此不再赘述,以上对本申请实施例所提供的一种代码测试方法、装置、计算机设备和存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种代码测试方法,其特征在于,包括:
接收测试指令,根据所述测试指令从本地获取预存的第一代码,以及获取第二代码,所述第一代码为基于对第二代码更新得到的新版本代码,所述测试指令携带目标地址;
对比所述第一代码和所述第二代码之间的差异,得到所述第一代码和所述第二代码之间的差异信息,并将所述差异信息上传至所述目标地址指示的目标存储位置;
向测试服务器发送测试请求,所述测试请求携带所述第二代码的存储地址、所述目标地址和测试配置信息,所述测试请求用于触发所述测试服务器从所述目标地址指示的目标存储位置获取所述差异信息,以及从所述存储地址指示的远程数据库中获取所述第二代码,并根据所述第二代码、所述差异信息和所述测试配置信息对所述第一代码进行测试。
2.根据权利要求1所述的方法,其特征在于,所述对比所述第一代码和所述第二代码之间的差异,得到所述第一代码和所述第二代码之间的差异信息,包括:
将所述第一代码和所述第二代码进行代码比对,得到所述第一代码相对于所述第二代码进行更新的更新代码、所述更新代码的更新类型以及所述更新代码在所述第二代码中对应的更新位置;
根据所述更新代码、所述更新类型以及所述更新代码在所述第二代码中对应的更新位置,确定所述第一代码和所述第二代码之间的差异信息。
3.根据权利要求2所述的方式,其特征在于,所述将所述第一代码和所述第二代码进行代码比对,得到所述第一代码相对于所述第二代码进行更新的更新代码、所述更新代码的更新类型以及所述更新代码在所述第二代码中对应的更新位置,包括:
遍历所述第一代码和所述第二代码的代码文件,确定所述第一代码中的代码文件与所述第二代码中的代码文件的对应关系;
基于所述对应关系,对比所述第一代码中的代码文件与所述第二代码中相对应的代码文件之间的差异,确定所述第一代码相对于所述第二代码进行更新的更新代码、所述更新代码的更新类型以及所述更新代码在所述第二代码中对应的更新位置。
4.根据权利要求3所述的方法,其特征在于,所述根据所述更新代码、所述更新类型以及所述更新代码在所述第二代码中对应的更新位置,确定所述第一代码和所述第二代码之间的差异信息,包括:
根据所述更新代码、所述更新类型以及所述更新代码在所述第二代码中对应的更新位置,确定所述第一代码和所述第二代码之间的初始差异信息;
对所述初始差异信息进行压缩处理,得到所述第一代码和所述第二代码之间的差异信息。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述测试指令携带第一标识信息,所述向所述测试服务器发送测试指令之前,包括:
若所述测试指令携带的第一标识信息为第一目标标识信息,则获取与所述第一目标标识信息对应的目标测试配置信息,并将所述目标测试配置信息作为所述测试配置信息;
若所述测试指令携带的第一标识信息不为第一目标标识信息,则获取预设测试配置信息,并将所述预设测试配置信息作为所述测试配置信息。
6.一种代码测试方法,其特征在于,应用于测试服务器,所述方法包括:
接收对第一代码进行测试的测试请求,所述测试请求携带第二代码在远程数据库中的存储地址、差异信息的目标地址和测试配置信息,所述第一代码为基于对所述第二代码更新得到的新版本代码,所述远程数据库用于管理代码,所述差异信息为所述第一代码和所述第二代码之间的差异信息;
根据所述测试请求从所述目标地址指示的目标存储位置获取所述差异信息,以及从所述存储地址指示的所述远程数据库中获取所述第二代码;
根据所述第二代码和所述差异信息生成所述第一代码;
根据所述测试配置信息构建测试环境,在所述测试环境下对所述第一代码进行测试。
7.根据权利要求6所述的方法,其特征在于,所述差异信息包括更新代码、所述更新代码的更新类型以及所述更新代码在所述第二代码中对应的更新位置,所述更新类型包括新增、删除和修改中的一种或多种,所述根据所述第二代码和所述差异信息生成所述第一代码,包括:
当所述差异信息中包括更新类型为新增的更新代码时,将所述差异信息中更新类型为新增的更新代码添加至所述第二代码对应的更新位置;
当所述差异信息中包括更新类型为删除的更新代码时,在所述第二代码中,将与所述差异信息中更新类型为删除的更新代码对应的代码删除;
当所述差异信息中包括更新类型为修改的更新代码时,在所述第二代码中,对与所述差异信息中更新类型为修改的更新代码对应的代码进行修改,以得到所述第一代码。
8.根据权利要求6所述的方法,其特征在于,所述测试请求包括第二标识信息,所述根据所述测试请求从所述目标地址指示的目标存储位置获取所述差异信息,以及从所述存储地址指示的所述远程数据库中获取所述第二代码,包括:
若所述第二标识信息为第二目标标识信息,则根据所述测试请求从所述目标地址指示的目标存储位置获取所述差异信息,以及从所述存储地址指示的所述远程数据库中获取所述第二代码。
9.一种代码测试装置,其特征在于,包括:
接收单元:用于接收测试指令,根据所述测试指令从本地获取预存的第一代码以及获取第二代码,所述第一代码为基于对第二代码更新得到的新版本代码,所述测试指令携带目标地址;
对比单元:用于对比所述第一代码和所述第二代码之间的差异,得到所述第一代码和所述第二代码之间的差异信息,并将所述差异信息上传至所述目标地址指示的目标存储位置;
发送单元:用于向所述测试服务器发送测试请求,所述测试请求携带所述第二代码的存储地址、所述目标地址和测试配置信息,所述测试请求用于触发所述测试服务器从所述目标地址指示的目标存储位置获取所述差异信息,以及从所述存储地址指示的远程数据库中获取所述第二代码,并根据所述第二代码、所述差异信息和所述测试配置信息对所述第一代码进行测试。
10.一种代码测试装置,其特征在于,应用于测试服务器,所述装置包括:
指令接收单元:用于接收对第一代码进行测试的测试请求,所述测试请求携带第二代码在远程数据库中的存储地址、差异信息的目标地址和测试配置信息,所述第一代码为基于对所述第二代码更新得到的新版本代码,所述远程数据库用于管理代码,所述差异信息为所述第一代码和所述第二代码之间的差异信息;
获取单元:用于根据所述测试请求从所述目标地址指示的目标存储位置获取所述差异信息,以及从所述存储地址指示的所述远程数据库中获取所述第二代码;
生成单元:用于根据所述第二代码和所述差异信息生成所述第一代码;
测试单元:用于根据所述测试配置信息构建测试环境,在所述测试环境下对所述第一代码进行测试。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110313760.8A CN115129574A (zh) | 2021-03-24 | 2021-03-24 | 一种代码测试方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110313760.8A CN115129574A (zh) | 2021-03-24 | 2021-03-24 | 一种代码测试方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115129574A true CN115129574A (zh) | 2022-09-30 |
Family
ID=83374727
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110313760.8A Pending CN115129574A (zh) | 2021-03-24 | 2021-03-24 | 一种代码测试方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115129574A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230055215A1 (en) * | 2021-08-19 | 2023-02-23 | Bank Of America Corporation | Systems and methods for identifying and determining third party compliance |
US11893116B2 (en) | 2021-08-19 | 2024-02-06 | Bank Of America Corporation | Assessment plug-in system for providing binary digitally signed results |
-
2021
- 2021-03-24 CN CN202110313760.8A patent/CN115129574A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230055215A1 (en) * | 2021-08-19 | 2023-02-23 | Bank Of America Corporation | Systems and methods for identifying and determining third party compliance |
US11805017B2 (en) * | 2021-08-19 | 2023-10-31 | Bank Of America Corporation | Systems and methods for identifying and determining third party compliance |
US11893116B2 (en) | 2021-08-19 | 2024-02-06 | Bank Of America Corporation | Assessment plug-in system for providing binary digitally signed results |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109120678B (zh) | 用于分布式存储***的服务托管的方法和装置 | |
CN108563579B (zh) | 白盒测试方法、装置、***及存储介质 | |
CN110162334B (zh) | 一种代码管理方法、装置及存储介质 | |
CN110659202A (zh) | 客户端自动化测试方法及装置 | |
CN113485918B (zh) | 一种测试方法、装置、电子设备及存储介质 | |
CN108958843A (zh) | 基于轻量化脚本的插件构建方法、***、设备及介质 | |
CN115129574A (zh) | 一种代码测试方法和装置 | |
CN111651352B (zh) | 一种仓库代码的合并方法及装置 | |
CN116257438A (zh) | 接口测试用例的更新方法及相关设备 | |
CN113778486A (zh) | 一种代码流水线的容器化处理方法、装置、介质及设备 | |
CN114527996A (zh) | 一种多服务的部署方法、装置、电子设备及存储介质 | |
CN114237754B (zh) | 一种数据加载方法、装置、电子设备以及存储介质 | |
CN111782516A (zh) | 一种代码测试方法及装置、存储介质 | |
CN115268964A (zh) | 一种数据回注方法、***、电子设备及可读存储介质 | |
CN111324365A (zh) | 一种超融合***升级的方法和设备 | |
CN111176706A (zh) | 终端升级方法、装置、电子设备及存储介质 | |
CN104104701A (zh) | 在线服务的配置更新的方法和*** | |
CN110244968B (zh) | 充电站管理***及方法 | |
CN112685102B (zh) | 一种网关插件热加载方法、装置、设备及介质 | |
CN108989428A (zh) | 蓝牙终端升级方法、服务器、计算机可读存储介质及*** | |
CN105530140A (zh) | 一种解除用例和环境紧耦合的方法、装置和云调度*** | |
CN114610446A (zh) | 一种自动注入探针的方法、装置及*** | |
RU2520942C2 (ru) | Способ функционирования энергетической автоматизированной системы и энергетическая автоматизированная система | |
CN112765038A (zh) | 一种分布式集群软件的测试方法、装置、设备及存储介质 | |
CN111158654A (zh) | 算法调用方法、装置、服务器及存储介质 |
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 |