CN114840429A - 识别版本冲突的方法、装置、设备、介质和程序产品 - Google Patents
识别版本冲突的方法、装置、设备、介质和程序产品 Download PDFInfo
- Publication number
- CN114840429A CN114840429A CN202210532707.1A CN202210532707A CN114840429A CN 114840429 A CN114840429 A CN 114840429A CN 202210532707 A CN202210532707 A CN 202210532707A CN 114840429 A CN114840429 A CN 114840429A
- Authority
- CN
- China
- Prior art keywords
- version
- target file
- package
- tested
- packages
- 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/368—Test management for test version control, e.g. updating test cases to a new software version
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本公开提供了一种识别版本冲突的方法,可应用于金融或其他技术领域。包括:获取应用的所有版本包和所有版本包中的目标文件,所有版本包包括待测试版本包和历史版本包,目标文件包括第一目标文件和/或第二目标文件;提取所有版本包中的目标文件的特征数据;将待测试版本包中的目标文件的特征数据与历史版本包中对应的目标文件的特征数据进行对比,得到对比结果;根据对比结果确定待测试版本包与历史版本包之间是否存在冲突,其中所有版本包中均包括第一目标文件和/或第二目标文件时确定冲突的方式不同。本公开还提供了一种识别版本冲突的装置、设备、介质和程序产品。
Description
技术领域
本公开涉及独立测试环境的并行版本测试领域,可以应用于金融领域或其他技术领域,具体地涉及一种识别版本冲突的方法、装置、设备、介质和程序产品。
背景技术
现有技术中,软件应用的一般流程是先由开发人员进行编码开发、调试,然后编译成应用的版本包发布,再由专门的测试运维人员在独立的测试环境下对版本包进行功能适应性测试。随着银行业务功能的丰富和迭代加快,业务产品的上线频度越来越高。为保证业务需求尽快落地以提高市场占有率,普遍基于项目的不同应用模块采用平台式研发,对不同应用模块的版本单独打包与并行交付,以避免不同应用模块间开发进度以及投产时间点不同导致的时间延长,提升了效率。但与此同时,也存在如下问题:
(1)测试运维人员接收的待测试版本包是打包后的已编译程序,版本包与开发环境以及源代码是隔离的,因此测试运维人员无法识别接收的待测试版本包与历史版本包是否不同;
(2)平台化开发涉及不同的开发团队,因为各应用模块的开发进度不同以及开发团队的管理存在差异,因此版本管理员对一个应用模块的不同版本的修改有了解不充分和/或同步不及时的情况;
(3)测试环境的资源有限,不能为每个版本包单独安排测试环境,如果开发人员反馈不同投产时间点的版本包没有冲突,一个项目的不同应用模块的版本包一般都申请部署在同一环境并行验证。但开发人员因为对项目的不同应用模块的改造了解有限,很多时候反馈并不准确,测试环境的正确性仅能依赖版本管理员对并行版本的同步和继承。如果开发人员的反馈和版本管理员同步出现错误,将导致适应性测试的环境基础完全不对,引入极大的投产风险。
发明内容
鉴于上述问题,本公开提供了识别版本冲突的方法、装置、设备、介质和程序产品。
根据本公开的第一个方面,提供了一种识别版本冲突的方法,包括:
获取应用的所有版本包和所有版本包中的目标文件,所有版本包包括待测试版本包和历史版本包,目标文件包括第一目标文件和/或第二目标文件;
提取所有版本包中的目标文件的特征数据;
将待测试版本包中的目标文件的特征数据与历史版本包中对应的目标文件的特征数据进行对比,得到对比结果;
根据对比结果确定待测试版本包与历史版本包之间是否存在冲突,其中所有版本包中均包括第一目标文件和/或第二目标文件时确定冲突的方式不同。
根据本公开的实施例,目标文件包括第一目标文件和/或第二目标文件,第一目标文件包括编译文件和文本文件,第二目标文件包括数据库脚本。
根据本公开的实施例,当所有版本包中的目标文件均包括第一目标文件时,根据对比结果确定待测试版本包与历史版本包之间是否存在冲突包括:
在确定待测试版本包中第一目标文件的特征数据与历史版本包中第一目标文件的特征数据不一样的情况下,确定待测试版本包与历史版本包之间存在冲突。
根据本公开的实施例,当所有版本包中的目标文件均包括第二目标文件时,根据对比结果确定待测试版本包与历史版本包之间是否存在冲突包括:
在确定待测试版本包中第二目标文件的特征数据与历史版本包中第二目标文件的特征数据存在重复部分的情况下,确定待测试版本包与历史版本包之间存在冲突。
根据本公开的实施例,当目标文件包括第一目标文件时,提取所有版本包中的目标文件的特征数据包括:
通过MD5算法提取所有版本包中编译文件和文本文件的哈希值,哈希值为特征数据。
根据本公开的实施例,当目标文件包括第二目标文件时,提取所有版本包中的目标文件的特征数据包括:
解析所有版本包中的数据库脚本;
提取数据库脚本所操作的数据库对象,数据库对象为特征数据。
根据本公开的实施例,数据库对象包括,数据库的表、索引、存储过程、视图的对象名以及操作方式中的至少一个。
根据本公开的实施例,方法还包括:
获取应用的所有版本包的版本信息,版本信息包括应用名、版本号、交付日和投产日,交付日为每个版本包交付到测试环境的日期,投产日为每个版本包计划在生产环境上线部署的日期。
根据本公开的实施例,在所有版本包中的目标文件均包括第一目标文件的情况下,方法还包括:
在确定待测试版本包的交付日晚于历史版本包的交付日或与历史版本包的交付日为同一天,以及,待测试版本包的投产日早于历史版本包的投产日的情况下,发出告警。
根据本公开的实施例,发出告警后,方法还包括:
重新确定待测试版本包的交付日并更新待测试版本包。
根据本公开的实施例,当所有版本包中的目标文件均包括第二目标文件时,方法还包括:
获取重复部分的操作方式;
在重复部分的操作方式属于数据定义语言方式的情况下,发出告警。
本公开的第二方面提供了一种识别版本冲突的装置,包括:
获取模块,用于获取应用的所有版本包和所有版本包中的目标文件,所有版本包包括待测试版本包和历史版本包,目标文件包括第一目标文件和/或第二目标文件;
提取模块,用于提取所有版本包中的目标文件的特征数据;
对比模块,用于将待测试版本包中的目标文件的特征数据与历史版本包中对应的目标文件的特征数据进行对比,得到对比结果;
确定模块,用于根据对比结果确定待测试版本包与历史版本包之间是否存在冲突,其中所有版本包中均包括第一目标文件和/或第二目标文件时确定冲突的方式不同。
本公开的第三方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器执行上述识别版本冲突的方法。
本公开的第四方面还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行上述识别版本冲突的方法。
本公开的第五方面还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述识别版本冲突的方法。
本公开提供的识别版本冲突的方法、装置、设备、介质和程序产品,通过将待测试版本包中目标文件的特征数据与历史版本包中目标文件的特征数据进行对比,即可知道待测试版本包与历史版本包之间是否存在冲突,版本管理员可以通过特征数据来识别待测试版本包与历史版本包是否不同,及时发现待测试版本包是否有修改,以便于进行同步,可以不仅仅通过开发人员的反馈来了解待测试版本包的情况,降低了待测试版本包的错误率,降低投产风险。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述内容以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本公开实施例的识别版本冲突的方法、装置、设备、介质和程序产品的应用场景图;
图2示意性示出了根据本公开实施例的识别版本冲突的方法的流程图;
图3示意性示出了根据本公开实施例的识别版本冲突的装置的结构框图;以及
图4示意性示出了根据本公开实施例的适于实现识别版本冲突的方法的电子设备的方框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的***”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的***等)。
在实现本公开技术方案过程中,发明人发现相关技术中,银行***测试一般采用独立测试环境,与开发代码环境隔离,这么做既有利于发现开发环境无法重现的漏洞,更可以模拟软件包的生产安装部署过程,提前发现安装部署及其文档是否有问题。但是测试运维人员接收的待测试版本包是打包后的已编译程序,版本包与开发环境以及源代码是隔离的,导致测试运维人员无法读取版本包的程序内容,因此无法识别接收的待测试版本包与历史版本包是否不同;并且平台化开发涉及不同的开发团队,因为各应用模块的进度和开发团队的管理能力存在差异,导致版本管理员对和不同版本的项目模块的修改有了解不充分和同步不及时的情况;同时测试环境的资源有限,不能为每个版本包单独安排测试环境,如果开发人员反馈不同投产时间点的版本包没有冲突,一个项目的不同应用模块的版本包一般都申请部署在同一环境并行验证。但开发人员因为对项目的不同应用模块的改造了解有限,很多时候反馈并不准确,测试环境的正确性仅能依赖版本管理员对并行版本同步和继承。如果开发人员的反馈和版本管理员同步出现错误,将导致适应性测试的环境基础完全不对,引入极大的投产风险。
针对相关技术中存在的技术问题,本公开的实施例提供了一种识别版本冲突的方法、装置、设备、介质和程序产品。根据本公开实施例,首先,获取应用的所有版本包和所有版本包中的目标文件,所有版本包包括待测试版本包和历史版本包,目标文件包括第一目标文件和/或第二目标文件;然后,提取所有版本包中的目标文件的特征数据;接下来,在所有版本包中的目标文件均包括第一目标文件的情况下,判断待测试版本包中第一目标文件的特征数据与历史版本包中第一目标文件的特征数据是否一样;在所有版本包中的目标文件均包括第二目标文件的情况下,判断待测试版本包中第二目标文件的特征数据与历史版本包中第二目标文件的特征数据是否存在重复部分;若待测试版本包中第一目标文件的特征数据与历史版本包中第一目标文件的特征数据不一样,和/或,待测试版本包中第二目标文件的特征数据与历史版本包中第二目标文件的特征数据存在重复部分,则确定待测试版本包与历史版本包之间存在冲突。
图1示意性示出了根据本公开实施例的识别版本冲突的的应用场景图。
如图1所示,根据该实施例的应用场景100可以包括终端设备101、102、103、网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对用户利用终端设备101、102、103所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。
需要说明的是,本公开实施例所提供的识别版本冲突的方法一般可以由服务器105执行。相应地,本公开实施例所提供的识别版本冲突的装置一般可以设置于服务器105中。本公开实施例所提供的识别版本冲突的方法也可以由不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的识别版本冲突的装置也可以设置于不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
需要说明的是,本公开识别版本冲突的方法和装置可用于金融领域在项目测试方面,也可用于除金融领域之外的任意领域,本公开识别版本冲突的方法和装置的应用领域不做限定。
以下将基于图1描述的场景,通过图2对公开实施例的识别版本冲突的方法进行详细描述。
图2示意性示出了根据本公开实施例的识别版本冲突的方法的流程图。
如图2所示,该实施例的识别版本冲突的包括操作S210~操作S240。
在操作S210,获取应用的所有版本包和所有版本包中的目标文件,所有版本包包括待测试版本包和历史版本包,目标文件包括第一目标文件和/或第二目标文件;
本实施例中,第一目标文件包括编译文件和文本文件,第二目标文件包括数据库脚本。其中,编译文件,例如class、图片、jar包等;文本文件,例如jsp、xml、txt等文件;数据库脚本,例如sql等。不同类型的目标文件后续对应的特征数据和特征数据的对比方法可能有所不同。本实施例中待测试版本包为新接收到的版本包,历史版本包为与待测试版本包属于同一应用,但在待测试版本包之前接收的版本包。
在操作S220,提取所有版本包中的目标文件的特征数据;
本实施例中,操作S220具体包括,当目标文件包括第一目标文件时,即包括编译文件和/或文本文件,提取所有版本包中的目标文件的特征数据包括:通过MD5算法提取所有版本包中编译文件和文本文件的哈希值,哈希值为特征数据。当目标文件包括第二目标文件时,即包括数据库脚本,提取所有版本包中的目标文件的特征数据包括:解析所有版本包中的数据库脚本;提取数据库脚本所操作的数据库对象,数据库对象为特征数据。数据库对象包括,数据库的表、索引、存储过程、视图的对象名以及操作方式中的至少一个,操作方式,例如create、drop、alter等的数据定义语言,或delete、update、insert等的DML。本公开通过提取编译文件和文本文件的哈希值以及数据库脚本所操作的数据库对象,可以基于这些特征数据来识别待测试版本包和历史版本包的不同。为了更清楚得将编译文件、文本文件和数据库脚本的特征数据进行呈现,如表1所示,表1示出了编译文件、文本文件和数据库脚本的特征数据之间的对应关系的一个实施例。
表1
应用名 | 版本号 | 目标文件 | 目标文件类型 | 特征数据 |
应用A | V1.1.1 | a.class | 编译文件 | 哈希值 |
应用A | V1.1.1 | b.jsp | 文本文件 | 哈希值 |
应用A | V1.2.1 | a.class | 编译文件 | 哈希值 |
应用A | V1.2.1 | c_0801.sql | 数据库脚本 | 涉及的数据库对象 |
需要说明的是,哈希值,又称:散列函数(或散列算法,又称哈希函数,英语:HashFunction)是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个叫做散列值(hash values,hash codes,hash sums,或hashes)的指纹。MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理。MD5算法具有以下特点:1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。2、容易计算:从原数据计算出MD5值很容易。3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被″压缩″成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。SQL语言(结构化查询语言)的组成部分,SQL语言包括四种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML),数据控制语言(DCL)和事务控制语言(TCL)。
在操作S230,将待测试版本包中的目标文件的特征数据与历史版本包中对应的目标文件的特征数据进行对比,得到对比结果;
本实施例中需要限定所有版本包中的目标文件均包括第一目标文件或第二目标文件,是因为例如待测试版本包中包括a.class文件,如果历史版本包中没有a.class文件,那待测试版本包中的a.class文件就不会与历史版本包中的文件存在交叉或同步的问题,因此这种情况不需要进行下一步的识别。
在操作S240,根据对比结果确定待测试版本包与历史版本包之间是否存在冲突,其中所有版本包中均包括第一目标文件和/或第二目标文件时确定冲突的方式不同。
本实施例中,当所有版本包中的目标文件均包括第一目标文件时,若待测试版本包中第一目标文件的特征数据与历史版本包中第一目标文件的特征数据一样,那说明第一目标文件的内容已经同步,那当前的待测试版本包中的第一目标文件是没有问题的,而如果待测试版本包中第一目标文件的特征数据与历史版本包中第一目标文件的特征数据不一样,那说明待测试版本包和历史版本包是存在冲突的。而当所有版本包中的目标文件均包括第二目标文件时,因为文件类型的不同,判断方式也是不同的,若待测试版本包中第二目标文件的特征数据与历史版本包中第二目标文件的特征数据不存在重复部分,则说明第二目标文件在待测试版本包和历史版本包无交叉影响,若待测试版本包中第二目标文件的特征数据与历史版本包中第二目标文件的特征数据存在重复部分,则说明待测试版本包与历史版本包之间存在冲突,具体冲突的大小和危险性需要进行进一步的判断。
本实施例公开的识别版本冲突的方法,通过将目标文件分为两类,得到不同目标文件对应的特征数据,再通过将待测试版本包中目标文件的特征数据与历史版本包中对应的目标文件的特征数据进行对比,其中第一目标文件和第二目标文件的特征数据的对应方式不同,即可以快速得出待测试版本包与历史版本包之间是否存在冲突,不需要依赖源代码,也不需要依赖开发团队和开发人员的反馈,版本管理员可自主识别和同步待测试版本包,降低了待测试版本包的错误率,提高了版本包投产的安全性。
作为一种可选实施例,本实施例公开的识别版本冲突的方法还包括,获取应用的所有版本包的版本信息,版本信息包括应用名、版本号、交付日和投产日。版本号是对具体版本包的唯一命名,对应应用的具体的版本,交付日为每个版本包交付到测试环境的日期,投产日为每个版本包计划在生产环境上线部署的日期,如表2所示,表2示出了版本信息包括的内容的一个实施例。
表2
应用名 | 版本号 | 交付日 | 投产日 |
应用A | V1.1.1 | 2021-08-01 | 2021-08-10 |
应用A | V1.2.1 | 2021-08-01 | 2021-08-15 |
应用A | V1.2.2 | 2021-08-02 | 2021-08-15 |
应用A | V1.1.2 | 2021-08-03 | 2021-08-10 |
应用A | V1.2.3 | 2021-08-03 | 2021-08-15 |
应用A | V1.1.3 | 2021-08-04 | 2021-08-10 |
因为历史版本包是在待测试版本包之前接收的版本包,因此历史版本包的交付日会早于待测试版本包的交付日或与待测试版本包的交付日为同一日,同时需要说明的是,一般情况下,当天接收的版本包会在当天进行测试。
作为一种可选实施例,在所有版本包中的目标文件均包括第一目标文件的情况下,识别版本冲突的方法还包括:在确定待测试版本包的交付日晚于历史版本包的交付日或与历史版本包的交付日为同一天的情况下,以及,待测试版本包的投产日早于历史版本包的投产日的情况下,发出告警,以下将举出两个实施例以进行详细的讲解,实施例1:当天是2021-08-04,文件a.class在V1.1.3(交付日:2021-08-04,投产日:2021-08-10)和V1.2.1(交付日:2021-08-01,投产日:2021-08-15)中均有交付且识别出两个特征数据不一致,而当日并未交付该文件的15号投产内容,说明该文件未及时同步,这种情况如果继续测试,测试结果可能显示是正常的,但15号投产时生产环境的a.class文件将被覆盖为旧文件,这必将出现生产问题,这时将会自动提交测试问题并进行跟踪,同时附上未同步文件的信息;实施例2:当天是2021-08-04,文件b.class在V1.1.3(交付日:2021-08-04,投产日:2021-08-10)和V1.2.3(交付日:2021-08-04,投产日:2021-08-15)中均有交付且识别出特征数据不一致,说明测试环境该文件存在交叉,且当前测试验证基础为2021-08-15的内容,无法保证得到10日投产的结果,这种可能会出现生产问题。以上两种情况都会发出告警以提醒相关人员或***进行进一步的操作。并且针对实施例2,在发出告警后,识别版本冲突的方法还包括:重新确定待测试版本包的交付日并更新待测试版本包,具体的,撮合10日和15日两个项目组协商测试计划,如果确定8日前优先确保第一个项目测试,则自动将测试环境的b.class文件置为V1.1.3版本,待8日再自动更新为V1.2.3版本。
根据本公开的实施例,在所有版本包中的目标文件均包括第二目标文件的情况下,识别版本冲突的方法还包括:获取重复部分的操作方式;在重复部分的操作方式属于DDL方式的情况下,发出告警。本实施例中,如果对同一数据库对象的操作属于DML,即数据类的变化,一般不会影响其它脚本,可以视作正常的共同操作,不需要发出告警;而如果对同一数据库对象的操作方式属于DDL,即数据库对象本身的变化,可能对其它脚本操作产生较大影响,因此需要发出告警来提醒测试环境的技术测试人员负责检查评估并跟踪反馈,同时附上涉及交叉的数据库脚本信息。
需要说明的是,数据操纵语言(Data Manipulation Language,DML)是SQL语言中,负责对数据库对象运行数据访问工作的指令集,以INSERT、UPDATE、DELETE三种指令为核心,分别代表***、更新与删除,是开发以数据为中心的应用程序必定会使用到的指令,因此有很多开发人员都把加上SQL的SELECT语句的四大指令以″CRUD″来称呼。
本实施例中,不仅可以自动判断并行项目间目标文件覆盖关系的合理性,而且可以针对不同冲突情况进行进一步的识别,针对性的提供下一步的措施,可以提供问题跟踪和测试环境的解决方案,极大地提高环境集约使用效率,提供并行版本的可靠部署、安全验证的测试环境。
基于上述识别版本冲突的方法,本公开还提供了一种识别版本冲突的装置。以下将结合图3对该装置进行详细描述。
图3示意性示出了根据本公开实施例的识别版本冲突的装置的结构框图。
如图3所示,该实施例的识别版本冲突的装置300包括获取模块310、提取模块320、对比模块330和确定模块340。
获取模块310用于获取应用的所有版本包和所有版本包中的目标文件,所有版本包包括待测试版本包和历史版本包,目标文件包括第一目标文件和/或第二目标文件。在一实施例中,获取模块310可以用于执行前文描述的操作S210,在此不再赘述。
提取模块320用于提取所有版本包中的目标文件的特征数据。在一实施例中,提取模块320可以用于执行前文描述的操作S220,在此不再赘述。
对比模块330用于将待测试版本包中的目标文件的特征数据与历史版本包中对应的目标文件的特征数据进行对比,得到对比结果。在一实施例中,对比模块330可以用于执行前文描述的操作S230,在此不再赘述。
确定模块340用于根据对比结果确定待测试版本包与历史版本包之间是否存在冲突,其中所有版本包中均包括第一目标文件和/或第二目标文件时确定冲突的方式不同。在一实施例中,确认模块330可以用于执行前文描述的操作S240,在此不再赘述。
根据本公开的实施例,获取模块310、提取模块320、对比模块330和确定模块340中的任意多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,获取模块310、提取模块320、对比模块330和确定模块340中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上***、基板上的***、封装上的***、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,获取模块310、提取模块320、对比模块330和确定模块340中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
需要说明的是,本公开的实施例中识别版本冲突的装置部分与本公开的实施例中识别版本冲突的方法部分是相对应的,识别版本冲突的装置部分的描述具体参考识别版本冲突的方法部分,在此不再赘述。
图4示意性示出了根据本公开实施例的适于实现识别版本冲突的方法的电子设备的方框图。
如图4所示,根据本公开实施例的电子设备900包括处理器901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储部分908加载到随机访问存储器(RAM)903中的程序而执行各种适当的动作和处理。处理器901例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC))等等。处理器901还可以包括用于缓存用途的板载存储器。处理器901可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 903中,存储有电子设备900操作所需的各种程序和数据。处理器901、ROM902以及RAM 903通过总线904彼此相连。处理器901通过执行ROM 902和/或RAM 903中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 902和RAM 903以外的一个或多个存储器中。处理器901也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,电子设备900还可以包括输入/输出(I/O)接口905,输入/输出(I/O)接口905也连接至总线904。电子设备900还可以包括连接至I/O接口905的以下部件中的一项或多项:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/***中所包含的;也可以是单独存在,而未装配入该设备/装置/***中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 902和/或RAM 903和/或ROM 902和RAM 903以外的一个或多个存储器。
本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机***中运行时,该程序代码用于使计算机***实现本公开实施例所提供的物品推荐方法。
在该计算机程序被处理器901执行时执行本公开实施例的***/装置中限定的上述功能。根据本公开的实施例,上文描述的***、装置、模块、单元等可以通过计算机程序模块来实现。
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分909被下载和安装,和/或从可拆卸介质911被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
在这样的实施例中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。在该计算机程序被处理器901执行时,执行本公开实施例的***中限定的上述功能。根据本公开的实施例,上文描述的***、设备、装置、模块、单元等可以通过计算机程序模块来实现。
根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如Java,C++,python,“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
Claims (15)
1.一种识别版本冲突的方法,其特征在于,包括:
获取应用的所有版本包和所述所有版本包中的目标文件,所述所有版本包包括待测试版本包和历史版本包,所述目标文件包括第一目标文件和/或第二目标文件;
提取所述所有版本包中的目标文件的特征数据;
将所述待测试版本包中的目标文件的特征数据与所述历史版本包中对应的目标文件的特征数据进行对比,得到对比结果;
根据所述对比结果确定所述待测试版本包与所述历史版本包之间是否存在冲突,其中所述所有版本包中均包括所述第一目标文件和/或所述第二目标文件时确定冲突的方式不同。
2.根据权利要求1所述的方法,其中,所述第一目标文件包括编译文件和文本文件,所述第二目标文件包括数据库脚本。
3.根据权利要求2所述的方法,其中,当所述所有版本包中的目标文件均包括所述第一目标文件时,所述根据所述对比结果确定所述待测试版本包与所述历史版本包之间是否存在冲突包括:
在确定所述待测试版本包中第一目标文件的特征数据与所述历史版本包中第一目标文件的特征数据不一样的情况下,确定所述待测试版本包与所述历史版本包之间存在冲突。
4.根据权利要求2所述的方法,其中,当所述所有版本包中的目标文件均包括所述第二目标文件时,所述根据所述对比结果确定所述待测试版本包与所述历史版本包之间是否存在冲突包括:
在确定所述待测试版本包中第二目标文件的特征数据与所述历史版本包中第二目标文件的特征数据存在重复部分的情况下,确定所述待测试版本包与所述历史版本包之间存在冲突。
5.根据权利要求2所述的方法,其中,当所述目标文件包括所述第一目标文件时,所述提取所述所有版本包中的目标文件的特征数据包括:
通过MD5算法提取所述所有版本包中编译文件和文本文件的哈希值,所述哈希值为所述特征数据。
6.根据权利要求4所述的方法,其中,当所述目标文件包括所述第二目标文件时,所述提取所述所有版本包中的目标文件的特征数据包括:
解析所述所有版本包中的数据库脚本;
提取所述数据库脚本所操作的数据库对象,所述数据库对象为所述特征数据。
7.根据权利要求6所述的方法,其中,所述数据库对象包括,数据库的表、索引、存储过程、视图的对象名以及操作方式中的至少一个。
8.根据权利要求2所述的方法,其中,所述方法还包括:
获取所述应用的所有版本包的版本信息,所述版本信息包括应用名、版本号、交付日和投产日,所述交付日为每个版本包交付到测试环境的日期,所述投产日为所述每个版本包计划在生产环境上线部署的日期。
9.根据权利要求8所述的方法,其中,在所述所有版本包中的目标文件均包括所述第一目标文件的情况下,所述方法还包括:
在确定所述待测试版本包的交付日晚于所述历史版本包的交付日或与所述历史版本包的交付日为同一天,以及,所述待测试版本包的投产日早于所述历史版本包的投产日的情况下,发出告警。
10.根据权利要求9所述的方法,其中,所述发出告警后,所述方法还包括:
重新确定所述待测试版本包的交付日并更新所述待测试版本包。
11.根据权利要求7所述的方法,其中,所述当所述所有版本包中的目标文件均包括所述第二目标文件时,所述方法还包括:
获取所述重复部分的操作方式;
在所述重复部分的操作方式属于数据定义语言方式的情况下,发出告警。
12.一种识别版本冲突的装置,包括:
获取模块,用于获取应用的所有版本包和所述所有版本包中的目标文件,所述所有版本包包括待测试版本包和历史版本包,所述目标文件包括第一目标文件和/或第二目标文件;
提取模块,用于提取所述所有版本包中的目标文件的特征数据;
对比模块,用于将所述待测试版本包中的目标文件的特征数据与所述历史版本包中对应的目标文件的特征数据进行对比,得到对比结果;
确定模块,用于根据所述对比结果确定所述待测试版本包与所述历史版本包之间是否存在冲突,其中所述所有版本包中均包括所述第一目标文件和/或所述第二目标文件时确定冲突的方式不同。
13.一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行根据权利要求1~11中任一项所述的方法。
14.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行根据权利要求1~11中任一项所述的方法。
15.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现根据权利要求1~11中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210532707.1A CN114840429A (zh) | 2022-05-16 | 2022-05-16 | 识别版本冲突的方法、装置、设备、介质和程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210532707.1A CN114840429A (zh) | 2022-05-16 | 2022-05-16 | 识别版本冲突的方法、装置、设备、介质和程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114840429A true CN114840429A (zh) | 2022-08-02 |
Family
ID=82570481
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210532707.1A Pending CN114840429A (zh) | 2022-05-16 | 2022-05-16 | 识别版本冲突的方法、装置、设备、介质和程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114840429A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115421775A (zh) * | 2022-09-06 | 2022-12-02 | 中国建设银行股份有限公司 | 数据处理方法、装置及电子设备、存储介质 |
-
2022
- 2022-05-16 CN CN202210532707.1A patent/CN114840429A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115421775A (zh) * | 2022-09-06 | 2022-12-02 | 中国建设银行股份有限公司 | 数据处理方法、装置及电子设备、存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106575227B (zh) | 自动软件更新框架 | |
US10331439B2 (en) | Source code transfer control method, computer program therefor, and recording medium therefor | |
CN112463729B (zh) | 数据文件的入库方法、装置、电子设备和介质 | |
CN110895472A (zh) | 一种识别业务变更的方法和装置 | |
CN112506779A (zh) | 软件接口测试方法、装置、电子设备及存储介质 | |
CN113032257B (zh) | 自动化测试方法、装置、计算机***和可读存储介质 | |
CN107689975B (zh) | 一种基于云计算的计算机病毒识别方法及*** | |
US20230259358A1 (en) | Documentation enforcement during compilation | |
CN114840429A (zh) | 识别版本冲突的方法、装置、设备、介质和程序产品 | |
CN113342560A (zh) | 一种故障处理方法、***、电子设备及存储介质 | |
CN110795331A (zh) | 软件测试的方法和装置 | |
CN113434254A (zh) | 客户端部署方法、装置、计算机设备及存储介质 | |
CN112559024A (zh) | 一种生成交易码变更列表的方法和装置 | |
CN116662302A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN116599881A (zh) | 云平台租户建模测试的方法、装置、设备及存储介质 | |
CN116431519A (zh) | 软件测试方法及装置、电子设备和计算机可读存储介质 | |
CN113032256B (zh) | 自动化测试方法、装置、计算机***和可读存储介质 | |
CN113918525A (zh) | 数据交换调度方法、***、电子设备、介质及程序产品 | |
CN114253599A (zh) | 版本部署方法、版本部署装置、电子设备和存储介质 | |
US20230101077A1 (en) | Verification device, verification system, verification method, and computer readable medium | |
CN116452208B (zh) | 变更交易码的确定方法、装置、设备及介质 | |
CN112241332A (zh) | 一种接口补偿的方法和装置 | |
CN116401319B (zh) | 数据同步方法及装置、电子设备和计算机可读存储介质 | |
CN115421779A (zh) | 对象存储方法及装置、电子设备和计算机可读存储介质 | |
CN114266547A (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 |