CN116225622A - 基于Docker的PaaS应用参数模板的测试方法 - Google Patents
基于Docker的PaaS应用参数模板的测试方法 Download PDFInfo
- Publication number
- CN116225622A CN116225622A CN202310266988.5A CN202310266988A CN116225622A CN 116225622 A CN116225622 A CN 116225622A CN 202310266988 A CN202310266988 A CN 202310266988A CN 116225622 A CN116225622 A CN 116225622A
- Authority
- CN
- China
- Prior art keywords
- template
- application
- parameter
- application parameter
- parameter template
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Testing Or Calibration Of Command Recording Devices (AREA)
Abstract
本说明书提供了基于Docker的PaaS应用参数模板的测试方法,可用于金融领域。在基于初始应用参数模板中的第一应用参数模板拆分得到第二应用参数模板后,先获取并根据第一应用参数模板和第二应用参数模板,进行静态测试,得到静态测试结果;再根据第一应用参数模板和第二应用参数模板,分别启动相应的第一类容器和第二类容器,以分别运行对应的第一应用实例和第二应用实例;并在运行所述第一应用实例和第二应用实例的过程中,进行动态测试,得到动态测试结果;根据静态测试结果和动态测试结果,确定出第二应用参数模板关于第一应用参数模板的模板拆分测试结果。能够较为高效、准确地确定拆分出的第二应用参数模板是否符合拆分要求。
Description
技术领域
本说明书属于互联网技术领域,尤其涉及基于Docker的PaaS应用参数模板的测试方法。
背景技术
在金融业务领域,由于PaaS(Platform-As-A-Service,平台即服务)所具有的面向应用的解决计算资源、软件资源快速供给及快速部署的优势,越来越多的交易机构/平台的数据处理系统开始逐步从传统架构向PaaS迁移推广。
基于PaaS构架的系统中,在涉及应用逻辑重定位,或DevOps标准化改造等情况时,常常需要进行相关参数模板的拆分。具体拆分时,还需要针对应用的variablelist.xls等参数模板中的参数重新划分。相应的,原应用镜像拆分后的参数模板可能会随之拆分为几十个。而每一个参数本身又会涉及多个不同维度的多种属性参数,导致拆分后的参数模板相对较为复杂。
基于现有方法,在得到拆分后的新的参数模板后,往往需要针对新的参数模板利用大量的交易数据进行测试验证,才能判断出新的参数模板相对于原来旧的参数模板是否满足准确性、完整性和一致性。基于上述方法具体测试时,势必需要对参数模板进行全量的测试验证,导致测试过程较为繁琐、复杂,测试成本相对较高,测试效率相对较低。
针对上述问题,目前尚未提出有效的解决方案。
发明内容
本说明书提供了一种基于Docker的PaaS应用参数模板的测试方法,能够较为高效、准确地测试并确定新拆分出的第二应用参数模板是否符合拆分要求。
本说明书提供了一种基于Docker的PaaS应用参数模板的测试方法,包括:
获取第一应用参数模板和第二应用参数模板;其中,所述第二应用参数模板为基于初始应用参数模板中的第一应用参数模板拆分得到的;所述第一应用参数模板、第二应用参数模板、初始应用参数模板为基于Docker的PaaS应用参数模板;
根据第一应用参数模板和第二应用参数模板,进行静态测试,得到对应的静态测试结果;
根据第一应用参数模板和第二应用参数模板,分别启动相应的第一类容器和第二类容器,以分别运行对应的第一应用实例和第二应用实例;并在运行所述第一应用实例和第二应用实例的过程中,进行动态测试,得到对应的动态测试结果;
根据静态测试结果和动态测试结果,确定出第二应用参数模板关于第一应用参数模板的模板拆分测试结果。
在一个实施例中,根据第一应用参数模板和第二应用参数模板,进行静态测试,得到对应的静态测试结果,包括:
根据预设的静态测试规则,通过遍历第一应用参数模板和第二应用参数模板中的字段,检测第一应用参数模板中的参数名是否在第二应用参数模板中出现;
在确定第一应用参数模板中的参数名在第二应用参数模板中出现的情况下,检测第一应用参数模板和第二应用参数模板中相同参数名的参数数据值之间的差异值是否小于等于预设的差异阈值;
在确定第一应用参数模板和第二应用参数模板中相同参数名的参数数据值之间的差异值小于等于预设的差异阈值的情况下,通过检测第一应用参数模板和第二应用参数模板的参数生效范围,确定对应的静态测试结果。
在一个实施例中,检测第一应用参数模板和第二应用参数模板中相同参数名的参数数据值之间的差异值是否小于等于预设的差异阈值,包括:
对第一应用参数模板和第二应用参数模板中的参数数据值进行格式归一化处理,得到处理后第一应用参数模板和处理后的第二应用参数模板;
检测处理后的第一应用参数模板和处理后的第二应用参数模板中相同参数名的参数数据值之间的差异值是否小于等于预设的差异阈值。
在一个实施例中,通过检测第一应用参数模板和第二应用参数模板的参数生效范围,确定对应的静态测试结果,包括:
根据第一应用参数模板和第二应用参数模板,确定在将初始应用参数模板中的第一应用参数模板拆分成第二应用参数模板后的参数迁移类型;
根据参数迁移类型,确定参数生效范围的变更结果;
根据参数生效范围的变更结果,确定对应的静态测试结果。
在一个实施例中,所述参数迁移类型包括以少之一:应用级到应用级的迁移、模板级到模板级的迁移、应用级到模板级的迁移、模板级到应用级的迁移。
在一个实施例中,根据参数迁移类型,确定参数生效范围的变更结果,包括:
在确定参数迁移类型为应用级到应用级的迁移的情况下,确定参数生效范围的变更结果为参数生效范围不变;
在确定参数迁移类型为应用级到模板级的迁移的情况下,确定参数生效范围的变更结果为参数生效范围缩减;
在确定参数迁移类型为模板级到应用级的迁移的情况下,确定参数生效范围的变更结果为参数生效范围扩张;
在确定参数迁移类型为模板级到模板级的迁移的情况下,遍历所述第一应用参数模板和第二应用参数模板所涉及的处理节点是否相同;在确定所涉及的处理节点相同的情况下,确定参数生效范围的变更结果为参数生效范围不变;在确定所涉及的处理节点不同的情况下,确定参数生效范围的变更结果为参数生效范围缩减。
在一个实施例中,根据参数生效范围的变更结果,确定对应的静态测试结果,包括:
在确定参数生效范围的变更结果为:参数生效范围不变,或参数生效范围扩张的情况下,确定静态测试通过;
在确定参数生效范围的变更结果为:参数生效范围缩减的情况下,确定静态测试结果待定。
在一个实施例中,在进行动态测试之前,所述方法还包括:
获取关于第一应用参数模板或第二应用参数模板的参数变量清单;
在镜像仓库中分别对与第一应用参数模板关联的第一PaaS镜像包、与第二应用参数模板关联的第二PaaS镜像包进行内容解析,得到对应的第一内容解析结果和第二内容解析结果;
根据参数变量清单、第一内容解析结果,确定出涉及第一应用参数模板的参数变量的第一程序的程序信息;根据参数变量清单、第二内容解析结果,确定出涉及第二应用参数模板的参数变量的第二程序的程序信息。
在一个实施例中,所述程序信息包括:程序的程序文件名、程序的程序文件路径、程序所涉及的参数变量的变量名。
在一个实施例中,在根据第一应用参数模板和第二应用参数模板,分别启动相应的第一类容器和第二类容器之后,所述方法还包括:
调用预设线程,获得第一类容器的容器标识和第二类容器的容器标识;
根据第一类容器的容器标识,查询得到第一类容器的IP地址;根据第二类容器的容器标识,查询得到第二类容器的IP地址;
根据第一程序的程序信息、第一类容器的IP地址,确定第一程序的物理地址;根据第二程序的程序信息、第二类容器的IP地址,确定第二程序的物理地址。
在一个实施例中,在运行所述第一应用实例和第二应用实例的过程中,进行动态测试,包括:
根据第一程序的物理地址,获取第一程序文件;根据第二程序的物理地址,获取第二程序文件;
根据参数变量清单,比对第一程序文件和第二程序文件相同变量名的参数变量,得到变量比对结果;
根据变量比对结果,确定对应的动态测试结果。
在一个实施例中,在根据静态测试结果和动态测试结果,确定出第二应用参数模板关于第一应用参数模板的模板拆分测试结果之后,所述方法还包括:
根据模板拆分测试结果,确定第二应用参数模板是否符合拆分要求;
在确定第二应用参数模板不符合拆分要求的情况下,生成关于第二应用参数模板的报错提示。
本说明书还提供了一种基于Docker的PaaS应用参数模板的测试装置,包括:
获取模块,用于获取第一应用参数模板和第二应用参数模板;其中,所述第二应用参数模板为基于初始应用参数模板中的第一应用参数模板拆分得到的;所述第一应用参数模板、第二应用参数模板、初始应用参数模板为基于Docker的PaaS应用参数模板;
静态测试模块,用于根据第一应用参数模板和第二应用参数模板,进行静态测试,得到对应的静态测试结果;
动态测试模块,用于根据第一应用参数模板和第二应用参数模板,分别启动相应的第一类容器和第二类容器,以分别运行对应的第一应用实例和第二应用实例;并在运行所述第一应用实例和第二应用实例的过程中,进行动态测试,得到对应的动态测试结果;
确定模块,用于根据静态测试结果和动态测试结果,确定出第二应用参数模板关于第一应用参数模板的模板拆分测试结果。
本说明书还提供了一种服务器,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现以下步骤:获取第一应用参数模板和第二应用参数模板;其中,所述第二应用参数模板为基于初始应用参数模板中的第一应用参数模板拆分得到的;所述第一应用参数模板、第二应用参数模板、初始应用参数模板为基于Docker的PaaS应用参数模板;根据第一应用参数模板和第二应用参数模板,进行静态测试,得到对应的静态测试结果;根据第一应用参数模板和第二应用参数模板,分别启动相应的第一类容器和第二类容器,以分别运行对应的第一应用实例和第二应用实例;并在运行所述第一应用实例和第二应用实例的过程中,进行动态测试,得到对应的动态测试结果;根据静态测试结果和动态测试结果,确定出第二应用参数模板关于第一应用参数模板的模板拆分测试结果。
本说明书还提供了一种计算机可读存储介质,其上存储有计算机指令,所述指令被处理器执行时实现所述基于Docker的PaaS应用参数模板的测试方法的相关步骤。
本说明书还提供了一种计算机程序产品,包含有计算机程序,所述计算机程序被处理器执行时实现所述基于Docker的PaaS应用参数模板的测试方法的相关步骤。
基于本说明书提供的基于Docker的PaaS应用参数模板的测试方法,在基于初始应用参数模板中的第一应用参数模板拆分得到新的第二应用参数模板后,可以先获取并根据旧的第一应用参数模板和第二应用参数模板,进行静态测试,得到对应的静态测试结果;再根据第一应用参数模板和第二应用参数模板,分别启动相应的第一类容器和第二类容器,以分别运行对应的第一应用实例和第二应用实例;并在运行所述第一应用实例和第二应用实例的过程中,进行动态测试,得到对应的动态测试结果;最后综合利用静态测试结果和动态测试结果两种维度的测试结果,确定出第二应用参数模板关于第一应用参数模板的模板拆分测试结果。从而可以不需要依赖全量的测试验证,通过充分考虑Docker容器和PaaS镜像的具体特性和原理机制,有效利用第一应用参数模板和第二应用参数模板自身的数据信息进行静态测试和动态测试,就能够较为高效、准确地测试并确定拆分出的第二应用参数模板是否符合拆分要求,降低了测试成本,提高了测试效率。
附图说明
为了更清楚地说明本说明书实施例,下面将对实施例中所需要使用的附图作简单地介绍,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本说明书的一个实施例提供的基于Docker的PaaS应用参数模板的测试方法的流程示意图;
图2是在一个场景示例中,应用本说明书实施例提供的基于Docker的PaaS应用参数模板的测试方法的一种实施例的示意图;
图3是在一个场景示例中,应用本说明书实施例提供的基于Docker的PaaS应用参数模板的测试方法的一种实施例的示意图;
图4是本说明书的一个实施例提供的基于Docker的PaaS应用参数模板的测试方法的流程示意图;
图5是在一个场景示例中,应用本说明书实施例提供的基于Docker的PaaS应用参数模板的测试方法的一种实施例的示意图;
图6是本说明书的一个实施例提供的基于Docker的PaaS应用参数模板的测试方法的流程示意图;
图7是在一个场景示例中,应用本说明书实施例提供的基于Docker的PaaS应用参数模板的测试方法的一种实施例的示意图;
图8是在一个场景示例中,应用本说明书实施例提供的基于Docker的PaaS应用参数模板的测试方法的一种实施例的示意图;
图9是本说明书的一个实施例提供的服务器的结构组成示意图;
图10是本说明书的一个实施例提供的基于Docker的PaaS应用参数模板的测试装置的结构组成示意图;
图11是在一个场景示例中,应用本说明书实施例提供的基于Docker的PaaS应用参数模板的测试方法的一种实施例的示意图;
图12是本说明书的一个实施例提供的基于Docker的PaaS应用参数模板的测试方法的流程示意图;
图13是在一个场景示例中,应用本说明书实施例提供的基于Docker的PaaS应用参数模板的测试方法的一种实施例的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
参阅图1所示,本说明书实施例提供了一种基于Docker的PaaS应用参数模板的测试方法,其中,该方法具体应用于服务器一侧。具体实施时,该方法可以包括以下内容:
S101:获取第一应用参数模板和第二应用参数模板;其中,所述第二应用参数模板为基于初始应用参数模板中的第一应用参数模板拆分得到的;所述第一应用参数模板、第二应用参数模板、初始应用参数模板为基于Docker的PaaS应用参数模板;
S102:根据第一应用参数模板和第二应用参数模板,进行静态测试,得到对应的静态测试结果;
S103:根据第一应用参数模板和第二应用参数模板,分别启动相应的第一类容器和第二类容器,以分别运行对应的第一应用实例和第二应用实例;并在运行所述第一应用实例和第二应用实例的过程中,进行动态测试,得到对应的动态测试结果;
S104:根据静态测试结果和动态测试结果,确定出第二应用参数模板关于第一应用参数模板的模板拆分测试结果。
基于上述实施例,由于充分考虑了Docker容器和PaaS镜像的具体特性和原理机制,不需要依赖全量的测试验证,只需要分析并利用第一应用参数模板和第二应用参数模板自身的数据信息,同时进行静态测试和动态测试,就能够以较小的测试成本,较为高效、准确地测试并确定拆分出的第二应用参数模板是否符合拆分要求,即,确定出第二应用参数模板相对于原来的第一应用参数模板是否满足准确性、完整性和一致性的拆分要求。
在一些实施例中,上述基于Docker的PaaS应用参数模板的测试方法具体可以用于服务器一侧。
其中,上述服务器具体可以包括一种应用于交易机构平台(例如,XX银行)的交易系统一侧,能够实现数据传输、数据处理等功能的后台服务器。具体的,所述服务器例如可以为一个具有数据运算、存储功能以及网络交互功能的电子设备。或者,所述服务器也可以为运行于该电子设备中,为数据处理、存储和网络交互提供支持的软件程序。在本实施例中,并不具体限定所述服务器的数量。所述服务器具体可以为一个服务器,也可以为几个服务器,或者,由若干服务器形成的服务器集群。
上述交易系统具体可以包括基于PaaS的系统。其中,PaaS(Platform as aService,平台即服务)通过网络进行程序提供的服务(Software as a Service,SaaS),是一种云计算服务,具有面向应用的解决计算资源、软件资源快速供给及快速部署的优势。
Docker作为PaaS的一个重要组件,具体可以是一种应用容器引擎,支持用户可以打包应用以及依赖包到一个可移植的镜像中。
具体的,Docker镜像可以理解为一个只读模板,容器可以理解为应用的实例。在Docker中可以创建很多个容器,并利用容器来运行具体的应用。
具体实施时,参阅图2所示,PaaS可以通过如下方式可实现应用参数的集约式管理:PaaS通过分层参数将原应用下的每个模板各自管理的部分参数提取出来,再将参数作用范围设置为应用级、模板级从而实现参数的统一维护,减少重复参数配置,达到运维效能的提升。其中,对于作用范围为所有模板的参数可以改造为应用级参数;作用范围为一个或多个模板非所有模板的参数可以改造为模板级参数。
在具体的金融业务场景中,随着业务功能复杂度的增多,应用需要手工维护的模板数量也在增多。并且,随着业务的发展和变化,PaaS构建包还需要按照应用逻辑定位对模板进行拆分。此外,DevOps标准化改造也产生拆分模板的需求。具体的,对于图2中的初始应用参数模板通过应用模板拆分,可以得到4个独立的模板(或称应用参数模板),参阅图3所示。
其中,每一个应用模板对应一个具体业务的应用实例。具体的,例如,第一个模板对应手机银行中的身份验证的应用实例,第二个模板对应手机银行中的转账业务的应用实例,第三个模板对应手机银行中的汇款业务的应用实例,第四个模板对应手机银行中的查询业务的应用实例等。
在拆分得到多个模板后,服务器可以应用本说明书提供的基于Docker的PaaS应用参数模板的测试方法快速、准确地对所拆分出的新模板进行测试,以确定拆分出的新模板是否满足准确性、完整性和一致性等拆分要求。
在一些实施例中,参阅图2所示,上述初始应用参数模板至少包含有第一应用参数模板,以及至少一个其他应用参数模板。参阅图3所示,上述第二应用参数模板,具体可以是基于初始应用参数模板中的第一应用参数模板拆分得到的一个新的应用参数模板。正常情况下,要求第二应用参数模板相对于第一应用参数模板满足准确性、完整性和一致性等。
其中,上述第一应用参数模板、第二应用参数模板、初始应用参数模板为基于Docker的PaaS应用参数模板,满足Docker和PaaS的原理机制,同时具备Docker和PaaS的特性。
在一些实施例中,上述静态测试具体可以理解为一种不需要进行实际测试,仅基于应用参数模板自身的数据信息实现的测试。
上述动态测试具体可以理解为一种仅需要进行少量的实际测试,不需要依赖全量测试验证的测试。
在一些实施例中,参阅图4所示,上述根据第一应用参数模板和第二应用参数模板,进行静态测试,得到对应的静态测试结果,具体实施时,可以包括以下内容:
S1:根据预设的静态测试规则,通过遍历第一应用参数模板和第二应用参数模板中的字段,检测第一应用参数模板中的参数名是否在第二应用参数模板中出现;
S2:在确定第一应用参数模板中的参数名在第二应用参数模板中出现的情况下,检测第一应用参数模板和第二应用参数模板中相同参数名的参数数据值之间的差异值是否小于等于预设的差异阈值;
S3:在确定第一应用参数模板和第二应用参数模板中相同参数名的参数数据值之间的差异值小于等于预设的差异阈值的情况下,通过检测第一应用参数模板和第二应用参数模板的参数生效范围,确定对应的静态测试结果。
其中,预设的差异阈值具体可以为一个接近于0(或等于0)的极小值,例如,0.001。
基于上述实施例,可以通过依次基于应用参数模板中的参数名、参数数据值、参数生效范围等多个维度,逐步实现对第一应用参数模板和第二应用参数模板的静态测试。
需要说明的是,结合具体的业务场景和精度要求,还可以进一步引入并基于参数文件名、参数变量描述、参数变量级别等更多维度,实现对第一应用参数模板和第二应用参数模板更加全面的静态测试,进而可以得到准确度相对更高的静态测试结果。
在一些实施例中,具体实施时,在检测到第一应用参数模板中至少一个参数名未在第二应用参数模板中出现;和/或,在检测到第一应用参数模板和第二应用参数模板中至少存在一个相同参数名的参数数据值之间的差异值大于预设的差异阈值,可以确定静态测试结果为静态测试未通过,进而可以不再触发进行后续的数据处理,可以直接确定当前的第二应用参数模板不符合拆分要求。
在一些实施例中,上述检测第一应用参数模板和第二应用参数模板中相同参数名的参数数据值之间的差异值是否小于等于预设的差异阈值,具体实施时,可以包括以下内容:
S1:对第一应用参数模板和第二应用参数模板中的参数数据值进行格式归一化处理,得到处理后第一应用参数模板和处理后的第二应用参数模板;
S2:检测处理后的第一应用参数模板和处理后的第二应用参数模板中相同参数名的参数数据值之间的差异值是否小于等于预设的差异阈值。
具体进行格式归一化处理时,可以包括:将第一应用参数模板和第二应用参数模板中的参数数据值统一转换为大写形式(或统一转换为小写形式);和/或,将第一应用参数模板和第二应用参数模板中的参数数据值内的空格符统一删除等等。
基于上述实施例,可以有效地避免数据值格式差异对静态测试所产生的误差影响,从而可以得到准确度相对更高的静态测试结果。
在一些实施例中,参阅图5所示,上述通过检测第一应用参数模板和第二应用参数模板的参数生效范围,确定对应的静态测试结果,具体实施时,可以包括以下内容:
S1:根据第一应用参数模板和第二应用参数模板,确定在将初始应用参数模板中的第一应用参数模板拆分成第二应用参数模板后的参数迁移类型;
S2:根据参数迁移类型,确定参数生效范围的变更结果;
S3:根据参数生效范围的变更结果,确定对应的静态测试结果。
具体实施时,可以先根据第一应用参数模板的模板标签和第二应用参数模板的模板标签,确定出确定在将初始应用参数模板中的第一应用参数模板拆分成第二应用参数模板后的参数迁移类型。再区分不同参数迁移类型,有针对性地确定对应的参数生效范围的变更结果;并根据参数生效范围的变更结果,确定最终的静态测试结果。
基于上述实施例,可以基于应用参数模板的参数生效范围的维度,准确地实现对第一应用参数模板和第二应用参数模板的静态测试。
在一些实施例中,所述参数迁移类型具体可以包括以少之一:应用级到应用级的迁移、模板级到模板级的迁移、应用级到模板级的迁移、模板级到应用级的迁移等。
基于上述实施例,可以充分考虑到各种参数迁移类型所对应的不同情况,从而可以更加全面、精准地分析确定不同迁移类型下的参数生效范围的变更结果。
在一些实施例中,参阅图6所示,上述根据参数迁移类型,确定参数生效范围的变更结果,具体实施时,可以包括以下内容:
S1:在确定参数迁移类型为应用级到应用级的迁移的情况下,确定参数生效范围的变更结果为参数生效范围不变;
S2:在确定参数迁移类型为应用级到模板级的迁移的情况下,确定参数生效范围的变更结果为参数生效范围缩减;
S3:在确定参数迁移类型为模板级到应用级的迁移的情况下,确定参数生效范围的变更结果为参数生效范围扩张;
S4:在确定参数迁移类型为模板级到模板级的迁移的情况下,遍历所述第一应用参数模板和第二应用参数模板所涉及的处理节点是否相同;在确定所涉及的处理节点相同的情况下,确定参数生效范围的变更结果为参数生效范围不变;在确定所涉及的处理节点不同的情况下,确定参数生效范围的变更结果为参数生效范围缩减。
其中,上述参数生效范围的变更结果具体可以包括以下三种类型:参数生效范围不变、参数生效范围缩减、参数生效范围扩张。上述处理节点具体可以是指应用参数模板所对应的容器的部署节点或部署区域范围等。
基于上述实施例,可以区分不同的参数迁移类型,有针对性地采用相对应的确定方式,准确、高效地确定出参数生效范围的变更结果。
具体的,参阅图3所示,应用级的参数相对于模板级的具有更高的调用的级别,更广的生效范围。
相应的,当参数迁移类型为应用级到应用级的迁移时,第二应用参数模板的参数和原来的第一应用参数模板的参数都可以视为全局变量,因此参数生效范围不变,后续实际运行调用时不会存在问题隐患。
具体的,当参数迁移类型为应用级到模板级的迁移时,第二应用参数模板的参数相对于第一应用模板的参数可以视为由原来拆分前的全局变量变成了拆分后的局部变量,在这种情况下,拆分前可正常调用的参数拆分后可能无法再调用,因此参数生效范围缩减,后续实际运行调用时可能会存在问题隐患。
当参数迁移类型为模板级到应用级的迁移时,第二应用参数模板的参数相对于第一应用参数模板的参数可以视为由原来拆分前的局部变量变成了拆分后的全局变量,在这种情况下,拆分前可正常调用的参数拆分后势必仍能正常调用,因此参数生效范围扩张,后续实际运行调用时不会存在问题隐患。此外,拆分后如果第二应用模板的参数有覆盖其它旧的同名模板参数,后续会在关于该参数测试比对中发现,因此也不会存在潜在隐患。
当参数迁移类型为模板级到模板级的迁移时,第二应用参数模板的参数相对于第一应用参数模板的参数可以视为由原来拆分前的一种局部变量变成了拆分后的另一种局部变量,这时需要分两种情况分析:如果第一应用参数模板和第二应用参数模板所涉及的处理节点均为相同的处理节点,则说明实际运行时所涉及到的还是同一种局部变量,这时参数生效范围不变,后续实际运行调用时不会存在问题隐患。相反,如果第一应用参数模板和第二应用参数模板所涉及的处理节点中至少存在一个不同的处理节点,只能说明实际运行时所涉及到的不是同一种局部变量,这时会存在很多的不确定性,无法准确地判断出参数生效范围的变更情况。
在一些实施例中,上述根据参数生效范围的变更结果,确定对应的静态测试结果,具体实施时,可以包括以下内容:
S1:在确定参数生效范围的变更结果为:参数生效范围不变,或参数生效范围扩张的情况下,确定静态测试通过;
S2:在确定参数生效范围的变更结果为:参数生效范围缩减的情况下,确定静态测试结果待定。
基于上述实施例,可以根据参数生效范围的变更结果,基于参数生效范围的维度,准确地确定出最终的静态测试结果。
在一些实施例中,在根据第一应用参数模板和第二应用参数模板,进行静态测试,得到对应的静态测试结果之后,所述方法还包括:检测静态测试结果,在确定静态测试结果为静态测试通过,或待定的情况下,触发继续进行后续的动态测试。
在一些实施例中,在进行动态测试之前,所述方法具体实施时,还可以包括以下内容:
S1:获取关于第一应用参数模板或第二应用参数模板的参数变量清单;
S2:在镜像仓库中分别对与第一应用参数模板关联的第一PaaS镜像包、与第二应用参数模板关联的第二PaaS镜像包进行内容解析,得到对应的第一内容解析结果和第二内容解析结果;
S3:根据参数变量清单、第一内容解析结果,确定出涉及第一应用参数模板的参数变量的第一程序的程序信息;根据参数变量清单、第二内容解析结果,确定出涉及第二应用参数模板的参数变量的第二程序的程序信息。
其中,所述程序信息具体可以包括:程序的程序文件名、程序的程序文件路径、程序所涉及的参数变量的变量名等。
在本实施例中,基于PaaS构建,容器在启动运行的过程中,PaaS会根据容器所属的应用参数模板的模板标识,去分层参数记录中匹配相应配置文件中的参数变量对应的值,再利用匹配搭配的参数变量对应的值进行模板参数的替换,得到对应的镜像包;进而可以基于上述镜像包,实现相应的应用实例的具体运行。
因此,在容器启动后,进行动态测试前,可以先通过解析相应的镜像包,并根据解析得到的内容解析结果,与应用参数模板的参数变量清单,进行比较对照,以确定在运行应用实例中,使用到参数变量清单中的参数变量的程序的程序文件名、程序所涉及到的应用参数模板中的参数变量的变量名等信息;进一步,还可以根据内容解析结果和程序文件名,确定出该程序的程序文件路径等信息。
基于上述实施例,可以在进行动态测试前,提前获取并准备好动态测试时所需要使用到的用于定位的第一程序的程序信息和第二程序的程序信息。
在一些实施例中,参阅图7所示,在根据第一应用参数模板和第二应用参数模板,分别启动相应的第一类容器和第二类容器之后,所述方法具体实施时,还可以包括以下内容:
S1:调用预设线程,获得第一类容器的容器标识和第二类容器的容器标识;
S2:根据第一类容器的容器标识,查询得到第一类容器的IP地址;根据第二类容器的容器标识,查询得到第二类容器的IP地址;
S3:根据第一程序的程序信息、第一类容器的IP地址,确定第一程序的物理地址;根据第二程序的程序信息、第二类容器的IP地址,确定第二程序的物理地址。
其中,上述容器标识具体可以是容器ID。
上述第一程序的物理地址具体可以理解为运行第一程序实例的第一类容器所对应的第一程序的实际物理地址。上述第二程序的物理地址具体可以理解为运行第二程序实例的第二类容器所对应的第二程序的实际物理地址。基于上述第一程序的物理地址和第二程序的物理地址,可以分别访问并获取得到第一应用实例和第二应用实例在运行过程中第一程序和第二程序所分别产生的相关联的第一程序文件和第二程序文件。
具体实施时,可以先通过执行预设的第一指令,例如,docker exec-it mongobash指令进入相应的容器;再该容器中通过调用预设的进程,例如,cat/proc/self/cgroup|head–l,查询获得对应的容器标识。进一步,还可以根据容器标识通过执行预设的第二指令,例如,docker inspect<容器id>,得到对应的容器的IP地址。按照上述方式,可以得到第一类容器的IP地址和第二类容器的IP地址。
接着,服务器可以根据第一类容器的IP地址和第一程序的程序文件路径,通过拼接处理,得到对应的第一程序的物理地址;根据第二类容器的IP地址和第二程序的程序文件路径,通过拼接处理,得到对应的第二程序的物理地址。
基于上述实施例,可以较为高效、准确地获取得到在运行所述第一应用实例和第二应用实例的过程中,用于存储第一程序所产生的第一程序文件的第一程序的物理地址,以及用于存储第二程序所产生的第二程序文件的第二程序的物理地址。
在一些实施例中,参阅图8所示,在运行所述第一应用实例和第二应用实例的过程中,进行动态测试,具体实施时,可以包括以下内容:
S1:根据第一程序的物理地址,获取第一程序文件;根据第二程序的物理地址,获取第二程序文件;
S2:根据参数变量清单,比对第一程序文件和第二程序文件相同变量名的参数变量,得到变量比对结果;
S3:根据变量比对结果,确定对应的动态测试结果。
具体实施时,可以根据参数变量清单,比对第一程序文件和第二程序文件相同变量名的参数变量,得到对应的变量比对结果;根据变量比对结果,在确定第一程序文件和第二程序文件相同变量名的参数变量都相同的情况下,可以确定动态测试结果为动态测试通过;相反,在确定第一程序文件和第二程序文件相同变量名的参数变量中至少存在一个不同的情况下,可以确定动态测试结果为动态测试未通过。
基于上述实施例,可以较为准确地实现动态测试,并得到参考价值较高、效果较好的动态测试结果。
在一些实施例中,根据静态测试结果和动态测试结果,确定出第二应用参数模板关于第一应用参数模板的模板拆分测试结果,包括:组合静态测试结果和动态测试结果,将组合后的测试结果,确定出拆分测试结果。
进一步,在确定静态测试结果为待确定的情况下,可以直接将动态测试结果,确定为拆分测试结果。
在一些实施例中,在根据静态测试结果和动态测试结果,确定出第二应用参数模板关于第一应用参数模板的模板拆分测试结果之后,所述方法具体实施时,还可以包括以下内容:
S1:根据模板拆分测试结果,确定第二应用参数模板是否符合拆分要求;
S2:在确定第二应用参数模板不符合拆分要求的情况下,生成关于第二应用参数模板的报错提示。
具体实施时,在根据静态测试结果和动态测试结果,确定静态测试通过,且动态测试通过的情况下,确定最终的拆分测试结果为:拆分测试通过,第二应用参数模板符合拆分要求。相反,在确定静态测试未通过,和/或动态测试未通过的情况下,确定最终的拆分测试结果为:拆分测试未通过,第二应用参数模板不符合拆分要求。
基于上述实施例,可以综合利用静态测试结果和动态测试结果两种不同维度的测试结果,准确地确定出所拆分出的第二应用参数模板,相对于原来的第一应用参数模板,是否符合拆分要求;并在确定不符合拆分要求的情况下,及时生成相关的报错提示,以触发重新进行应用参数模板的拆分,或者基于当前已拆分得到的第二应用参数模板进行改进,以快速得到符合拆分要求的改进后的第二应用参数模板。
在一些实施例中,在生成关于第二应用参数模板的报错提示之后,所述方法还包括:根据静态测试结果和动态测试结果,进行拆分错误分析,得到拆分错误分析报告;将所述拆分错误分析报告连同报错提示一同发送给负责拆分的服务器。其中,负责拆分的服务器响应报错提示,根据拆分错误分析报告,有针对性地准确地识别并修正拆分过程中的拆分错误;在拆分错误得到修正后,重新拆分初始应用参数模板中的第一应用参数模板,得到符合拆分要求的第二应用参数模板。
由上可见,基于本说明书实施例提供的基于Docker的PaaS应用参数模板的测试方法,在基于初始应用参数模板中的第一应用参数模板拆分得到第二应用参数模板后,可以先获取并根据第一应用参数模板和第二应用参数模板,进行静态测试,得到静态测试结果;再根据第一应用参数模板和第二应用参数模板,分别启动相应的第一类容器和第二类容器,以分别运行对应的第一应用实例和第二应用实例;并在运行所述第一应用实例和第二应用实例的过程中,进行动态测试,得到动态测试结果;综合利用静态测试结果和动态测试结果两种维度的测试结果,确定出第二应用参数模板关于第一应用参数模板的模板拆分测试结果。从而不需要进行全量的测试验证,通过有效利用第一应用参数模板和第二应用参数模板自身的数据信息进行静态测试和动态测试,就能较为高效、准确地测试并确定拆分出的第二应用参数模板是否符合拆分要求,降低了测试成本,提高了测试效率。
本说明书实施例还提供一种服务器,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器具体实施时可以根据指令执行以下步骤:获取第一应用参数模板和第二应用参数模板;其中,所述第二应用参数模板为基于初始应用参数模板中的第一应用参数模板拆分得到的;所述第一应用参数模板、第二应用参数模板、初始应用参数模板为基于Docker的PaaS应用参数模板;根据第一应用参数模板和第二应用参数模板,进行静态测试,得到对应的静态测试结果;根据第一应用参数模板和第二应用参数模板,分别启动相应的第一类容器和第二类容器,以分别运行对应的第一应用实例和第二应用实例;并在运行所述第一应用实例和第二应用实例的过程中,进行动态测试,得到对应的动态测试结果;根据静态测试结果和动态测试结果,确定出第二应用参数模板关于第一应用参数模板的模板拆分测试结果。
为了能够更加准确地完成上述指令,参阅图9所示,本说明书实施例还提供了另一种具体的服务器,其中,所述服务器包括网络通信端口901、处理器902以及存储器903,上述结构通过内部线缆相连,以便各个结构可以进行具体的数据交互。
其中,所述网络通信端口901,具体可以用于获取第一应用参数模板和第二应用参数模板;其中,所述第二应用参数模板为基于初始应用参数模板中的第一应用参数模板拆分得到的;所述第一应用参数模板、第二应用参数模板、初始应用参数模板为基于Docker的PaaS应用参数模板。
所述处理器902,具体可以用于根据第一应用参数模板和第二应用参数模板,进行静态测试,得到对应的静态测试结果;根据第一应用参数模板和第二应用参数模板,分别启动相应的第一类容器和第二类容器,以分别运行对应的第一应用实例和第二应用实例;并在运行所述第一应用实例和第二应用实例的过程中,进行动态测试,得到对应的动态测试结果;根据静态测试结果和动态测试结果,确定出第二应用参数模板关于第一应用参数模板的模板拆分测试结果。
所述存储器903,具体可以用于存储相应的指令程序。
在本实施例中,所述网络通信端口901可以是与不同的通信协议进行绑定,从而可以发送或接收不同数据的虚拟端口。例如,所述网络通信端口可以是负责进行web数据通信的端口,也可以是负责进行FTP数据通信的端口,还可以是负责进行邮件数据通信的端口。此外,所述网络通信端口还可以是实体的通信接口或者通信芯片。例如,其可以为无线移动网络通信芯片,如GSM、CDMA等;其还可以为Wifi芯片;其还可以为蓝牙芯片。
在本实施例中,所述处理器902可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。本说明书并不作限定。
在本实施例中,所述存储器903可以包括多个层次,在数字系统中,只要能保存二进制数据的都可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也叫存储器,如RAM、FIFO等;在系统中,具有实物形式的存储设备也叫存储器,如内存条、TF卡等。
本说明书实施例还提供了一种基于上述Docker的PaaS应用参数模板的测试方法的计算机可读存储介质,所述计算机可读存储介质存储有计算机程序指令,在所述计算机程序指令被执行时实现以下步骤:获取第一应用参数模板和第二应用参数模板;其中,所述第二应用参数模板为基于初始应用参数模板中的第一应用参数模板拆分得到的;所述第一应用参数模板、第二应用参数模板、初始应用参数模板为基于Docker的PaaS应用参数模板;根据第一应用参数模板和第二应用参数模板,进行静态测试,得到对应的静态测试结果;根据第一应用参数模板和第二应用参数模板,分别启动相应的第一类容器和第二类容器,以分别运行对应的第一应用实例和第二应用实例;并在运行所述第一应用实例和第二应用实例的过程中,进行动态测试,得到对应的动态测试结果;根据静态测试结果和动态测试结果,确定出第二应用参数模板关于第一应用参数模板的模板拆分测试结果。
在本实施例中,上述存储介质包括但不限于随机存取存储器(Random AccessMemory,RAM)、只读存储器(Read-Only Memory,ROM)、缓存(Cache)、硬盘(Hard DiskDrive,HDD)或者存储卡(Memory Card)。所述存储器可以用于存储计算机程序指令。网络通信单元可以是依照通信协议规定的标准设置的,用于进行网络连接通信的接口。
在本实施例中,该计算机可读存储介质存储的程序指令具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
本说明书还提供了一种计算机程序产品,包含有计算机程序,所述计算机程序被处理器执行时实现以下步骤:获取第一应用参数模板和第二应用参数模板;其中,所述第二应用参数模板为基于初始应用参数模板中的第一应用参数模板拆分得到的;所述第一应用参数模板、第二应用参数模板、初始应用参数模板为基于Docker的PaaS应用参数模板;根据第一应用参数模板和第二应用参数模板,进行静态测试,得到对应的静态测试结果;根据第一应用参数模板和第二应用参数模板,分别启动相应的第一类容器和第二类容器,以分别运行对应的第一应用实例和第二应用实例;并在运行所述第一应用实例和第二应用实例的过程中,进行动态测试,得到对应的动态测试结果;根据静态测试结果和动态测试结果,确定出第二应用参数模板关于第一应用参数模板的模板拆分测试结果。
参阅图10所示,在软件层面上,本说明书实施例还提供了一种基于Docker的PaaS应用参数模板的测试装置,该装置具体可以包括以下的结构模块:
获取模块1001,具体可以用于获取第一应用参数模板和第二应用参数模板;其中,所述第二应用参数模板为基于初始应用参数模板中的第一应用参数模板拆分得到的;所述第一应用参数模板、第二应用参数模板、初始应用参数模板为基于Docker的PaaS应用参数模板;
静态测试模块1002,具体可以用于根据第一应用参数模板和第二应用参数模板,进行静态测试,得到对应的静态测试结果;
动态测试模块1003,具体可以用于根据第一应用参数模板和第二应用参数模板,分别启动相应的第一类容器和第二类容器,以分别运行对应的第一应用实例和第二应用实例;并在运行所述第一应用实例和第二应用实例的过程中,进行动态测试,得到对应的动态测试结果;
确定模块1004,具体可以用于根据静态测试结果和动态测试结果,确定出第二应用参数模板关于第一应用参数模板的模板拆分测试结果。
在一些实施例中,上述静态测试模块1002具体实施时,可以按照以下方式根据第一应用参数模板和第二应用参数模板,进行静态测试,得到对应的静态测试结果:根据预设的静态测试规则,通过遍历第一应用参数模板和第二应用参数模板中的字段,检测第一应用参数模板中的参数名是否在第二应用参数模板中出现;在确定第一应用参数模板中的参数名在第二应用参数模板中出现的情况下,检测第一应用参数模板和第二应用参数模板中相同参数名的参数数据值之间的差异值是否小于等于预设的差异阈值;在确定第一应用参数模板和第二应用参数模板中相同参数名的参数数据值之间的差异值小于等于预设的差异阈值的情况下,通过检测第一应用参数模板和第二应用参数模板的参数生效范围,确定对应的静态测试结果。
在一些实施例中,上述静态测试模块1002具体实施时,可以按照以下方式检测第一应用参数模板和第二应用参数模板中相同参数名的参数数据值之间的差异值是否小于等于预设的差异阈值:对第一应用参数模板和第二应用参数模板中的参数数据值进行格式归一化处理,得到处理后第一应用参数模板和处理后的第二应用参数模板;检测处理后的第一应用参数模板和处理后的第二应用参数模板中相同参数名的参数数据值之间的差异值是否小于等于预设的差异阈值。
在一些实施例中,上述静态测试模块1002具体实施时,可以按照以下方式通过检测第一应用参数模板和第二应用参数模板的参数生效范围,确定对应的静态测试结果:根据第一应用参数模板和第二应用参数模板,确定在将初始应用参数模板中的第一应用参数模板拆分成第二应用参数模板后的参数迁移类型;根据参数迁移类型,确定参数生效范围的变更结果;根据参数生效范围的变更结果,确定对应的静态测试结果。
在一些实施例中,所述参数迁移类型具体可以包括以少之一:应用级到应用级的迁移、模板级到模板级的迁移、应用级到模板级的迁移、模板级到应用级的迁移等。
在一些实施例中,上述静态测试模块1002具体实施时,可以按照以下方式根据参数迁移类型,确定参数生效范围的变更结果:在确定参数迁移类型为应用级到应用级的迁移的情况下,确定参数生效范围的变更结果为参数生效范围不变;在确定参数迁移类型为应用级到模板级的迁移的情况下,确定参数生效范围的变更结果为参数生效范围缩减;在确定参数迁移类型为模板级到应用级的迁移的情况下,确定参数生效范围的变更结果为参数生效范围扩张;在确定参数迁移类型为模板级到模板级的迁移的情况下,遍历所述第一应用参数模板和第二应用参数模板所涉及的处理节点是否相同;在确定所涉及的处理节点相同的情况下,确定参数生效范围的变更结果为参数生效范围不变;在确定所涉及的处理节点不同的情况下,确定参数生效范围的变更结果为参数生效范围缩减。
在一些实施例中,上述静态测试模块1002具体实施时,可以按照以下方式根据参数生效范围的变更结果,确定对应的静态测试结果:在确定参数生效范围的变更结果为:参数生效范围不变,或参数生效范围扩张的情况下,确定静态测试通过;在确定参数生效范围的变更结果为:参数生效范围缩减的情况下,确定静态测试结果待定。
在一些实施例中,上述动态测试模块1003在进行动态测试之前,具体实施时,还可以用于获取关于第一应用参数模板或第二应用参数模板的参数变量清单;在镜像仓库中分别对与第一应用参数模板关联的第一PaaS镜像包、与第二应用参数模板关联的第二PaaS镜像包进行内容解析,得到对应的第一内容解析结果和第二内容解析结果;根据参数变量清单、第一内容解析结果,确定出涉及第一应用参数模板的参数变量的第一程序的程序信息;根据参数变量清单、第二内容解析结果,确定出涉及第二应用参数模板的参数变量的第二程序的程序信息。
在一些实施例中,上述动态测试模块1003在根据第一应用参数模板和第二应用参数模板,分别启动相应的第一类容器和第二类容器之后,还可以用于调用预设线程,获得第一类容器的容器标识和第二类容器的容器标识;根据第一类容器的容器标识,查询得到第一类容器的IP地址;根据第二类容器的容器标识,查询得到第二类容器的IP地址;根据第一程序的程序信息、第一类容器的IP地址,确定第一程序的物理地址;根据第二程序的程序信息、第二类容器的IP地址,确定第二程序的物理地址。
在一些实施例中,上述动态测试模块1003具体实施时,可以按照以下方式在运行所述第一应用实例和第二应用实例的过程中,进行动态测试:根据第一程序的物理地址,获取第一程序文件;根据第二程序的物理地址,获取第二程序文件;根据参数变量清单,比对第一程序文件和第二程序文件相同变量名的参数变量,得到变量比对结果;根据变量比对结果,确定对应的动态测试结果。
在一些实施例中,在根据静态测试结果和动态测试结果,确定出第二应用参数模板关于第一应用参数模板的模板拆分测试结果之后,所述装置具体实施时,还可以用于根据模板拆分测试结果,确定第二应用参数模板是否符合拆分要求;在确定第二应用参数模板不符合拆分要求的情况下,生成关于第二应用参数模板的报错提示。
需要说明的是,上述实施例阐明的单元、装置或模块等,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
由上可见,基于本说明书实施例提供的基于Docker的PaaS应用参数模板的测试装置,不需要进行全量的测试验证,通过有效利用第一应用参数模板和第二应用参数模板自身的数据信息进行静态测试和动态测试,就能较为高效、准确地测试并确定拆分出的第二应用参数模板是否符合拆分要求,降低了测试成本,提高了测试效率。
在一个具体的场景示例中,可以应用本说明书提供的基于Docker的PaaS应用参数模板的测试方法针对银行基于PaaS构架的业务系统构建基于Docker的PaaS应用模板拆分自动化测试系统。其中,该测试系统具体可以包括:新旧分级参数模板比对模块、含模板变量程序路径识别模块、容器id获取模块、容器IP获取模块和PaaS容器文件比对模块。
具体实施时,参阅图11所示,可以利用上述自动化测试系统中的具体模块实现对拆分出的基于Docker的PaaS应用模板(例如,第二应用参数模板)实现自动测试,得到最终的核对结果(即,模板拆分测试结果)。
具体的,上述新旧分级参数模板比对模块,具体负责核对PaaS镜像的静态参数模板差异(相当于根据第一应用参数模板和第二应用参数模板,进行静态测试),可以通过核对参数文件名称、变量名称、参数值、变量描述、变量级别、生效范围是否存在参数缺失、参数值问题、描述有误以及变量级别和生效范围缩小等情况。具体逻辑可以设置于为针对旧分级参数模板(例如,第一应用参数模板)的每一行参数,在新模板中进行遍历匹配。具体执行时,可以包括以下步骤。
S1:判断该参数名称(例如,参数名)在新模板中是否出现,如果为否则参数未随镜像拆分同步到新参数模板;
S2:如果参数名称出现,则继续比较参数值(例如,参数数据值)是否一致。因为同参数名可能由于变量级别或生效范围的区别出现不同特征值。如果旧分级参数模板中此参数名称的该参数值未能匹配到,则该参数特征值未随镜像拆分同步到新参数模板;此时对参数值做统一大写处理重新匹配,如果能匹配上则说明参数值大小写不一致导致参数未能同步至新参数模板。
S3:如果同参数名称、参数值匹配成功,则继续判断参数生效范围是否一致。
具体执行S3时,可以区分以下多种情况:
1)如果参数迁移前后均是APP,即从应用级至应用级,则属于全局变量没有问题。
2)如果参数迁移是从APP到TEMPLATE,即从应用级至模板级,则其生效范围有缩减存在问题。
3)如果参数迁移均是TEMPLATE,即从模板级至模板级,此时要判断具体的生效范围是否一致,要对生效范围中的具体节点做遍历匹配,如果该参数在旧参数模板的生效范围在新模板中均出现则代表一致,否则其生效范围有缩减存在问题。
4)如果参数迁移是从TEMPLATE到APP,即从模板级至应用级,则其生效范围有扩张,如果覆盖其它旧同名模板参数,会在该参数的后续比对中发现,因此不存在问题。
具体得到的比对结果,可以参阅图12所示。
上述含模板变量程序信息识别模块,具体负责对PaaS镜像中涉及使用模板参数的文件信息进行识别,获得新旧镜像中使用模板变量的程序文件名称、所在路径以及所含变量名(相当于获取第一程序的程序信息、第二程序的程序信息)。
具体的,该模板的工作目标是为后面模块进行PaaS容器动态比对对象提供精准的指导,容器在启动过程中PaaS会根据容器所属模版的名字,去分层参数记录中匹配相应配置文件中的变量对应的值,从而实现模版参数替换。
该模块可以通过新旧分级参数模板比对模块获取的PaaS镜像参数模板所包含的变量清单,在镜像仓库中对PaaS镜像包内容进行解析,识别包含模板变量的程序信息。具体识别规则为$#{变量名称},可以参阅图13所示。基于上述方式,可以识别得到如表1所示的程序信息。
表1
镜像名称 | 镜像文件名称(全路径) | 配置名称列表 |
镜像1 | /App/VACP/config/config_GBK_DSE/btt.xml | decryptKey|signKey |
上述容器id获取模块,具体负责获得PaaS镜像运行后的容器标识。具体执行时,可以通过执行docker exec-it mongo bash进入容器,然后通过执行cat/proc/self/cgroup|head-l根据进程获得容器id。
上述容器IP获取模块,具体负责根据容器id获取模块获得的容器id进一步获得容器IP(或称IP地址)。具体可以通过执行docker inspect<容器id>,根据容器id获得容器IP。
上述PaaS容器文件比对模块,具体负责根据含模板变量程序信息识别模块、容器id获取模块和容器IP获取模块输出的信息,在PaaS镜像启动运行后,自动运行容器的含模板变量程序文件进行动态比对。此时PaaS会根据容器所属模版的名字,去分层参数记录中匹配相应配置文件中的变量对应的值,从而实现模版参数值替换。
相应的,该模块首先根据含模板变量程序信息识别模块获得的镜像文件路径以及容器IP获取模块获得的容器IP,获得新旧运行容器中同程序文件的实际物理位置。
进一步,又考虑到Docker文件系统是在宿主机上完成Merge后再挂载到容器内的,因此可以通过指令docker inspect--format='{{.GraphDriver.Data.MergedDir}}'<容器ID>快速定位容器文件系统在宿主机上对应的目录,得到具体的IP地址,例如,以下的目标录地址/var/lib/docker/demo/555nb8b3d8668ff88c75c8b2cb24a5ea3d73862da69c68bd9c92bfe3c0c58b368/merged,再将该目录地址与含模板变量程序信息识别模块中的镜像文件路径进行拼接得到程序文件的实际物理位置(例如,第一程序的物理地址、第二程序的物理地址)。
进而,该模块可以通过物理位置拉取到新旧容器的同程序文件后,再根据含模板变量程序信息识别模块获得的配置名称列表,对各参数的实际值进行比较,如果结果一致则拆分正确,否则存在问题。从而实现自动化测试。
通过上述场景示例,验证了本说明书提供的基于Docker的PaaS应用参数模板的测试方法,通过结合PaaS镜像和容器原理机制,辅以静态和动态的数字化技术核对方法,为银行系统转型和架构提升测试提供支撑。并且该方法适用于基于Docker的PaaS应用模板拆分,能有效解决PaaS拆分架构优化对全量交易验证过于依赖的实际问题,解决业务测试覆盖不全带来的影响和风险,解决版本不断交付导致业务测试需要反复的效率和有效性问题。
虽然本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
通过以上的实施例的描述可知,本领域的技术人员可以清楚地了解到本说明书可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书的技术方案本质上可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本说明书各个实施例或者实施例的某些部分所述的方法。
虽然通过实施例描绘了本说明书,本领域普通技术人员知道,本说明书有许多变形和变化而不脱离本说明书的精神,希望所附的权利要求包括这些变形和变化而不脱离本说明书的精神。
Claims (15)
1.一种基于Docker的PaaS应用参数模板的测试方法,其特征在于,包括:
获取第一应用参数模板和第二应用参数模板;其中,所述第二应用参数模板为基于初始应用参数模板中的第一应用参数模板拆分得到的;所述第一应用参数模板、第二应用参数模板、初始应用参数模板为基于Docker的PaaS应用参数模板;
根据第一应用参数模板和第二应用参数模板,进行静态测试,得到对应的静态测试结果;
根据第一应用参数模板和第二应用参数模板,分别启动相应的第一类容器和第二类容器,以分别运行对应的第一应用实例和第二应用实例;并在运行所述第一应用实例和第二应用实例的过程中,进行动态测试,得到对应的动态测试结果;
根据静态测试结果和动态测试结果,确定出第二应用参数模板关于第一应用参数模板的模板拆分测试结果。
2.根据权利要求1所述的方法,其特征在于,根据第一应用参数模板和第二应用参数模板,进行静态测试,得到对应的静态测试结果,包括:
根据预设的静态测试规则,通过遍历第一应用参数模板和第二应用参数模板中的字段,检测第一应用参数模板中的参数名是否在第二应用参数模板中出现;
在确定第一应用参数模板中的参数名在第二应用参数模板中出现的情况下,检测第一应用参数模板和第二应用参数模板中相同参数名的参数数据值之间的差异值是否小于等于预设的差异阈值;
在确定第一应用参数模板和第二应用参数模板中相同参数名的参数数据值之间的差异值小于等于预设的差异阈值的情况下,通过检测第一应用参数模板和第二应用参数模板的参数生效范围,确定对应的静态测试结果。
3.根据权利要求2所述的方法,其特征在于,检测第一应用参数模板和第二应用参数模板中相同参数名的参数数据值之间的差异值是否小于等于预设的差异阈值,包括:
对第一应用参数模板和第二应用参数模板中的参数数据值进行格式归一化处理,得到处理后第一应用参数模板和处理后的第二应用参数模板;
检测处理后的第一应用参数模板和处理后的第二应用参数模板中相同参数名的参数数据值之间的差异值是否小于等于预设的差异阈值。
4.根据权利要求2所述的方法,其特征在于,通过检测第一应用参数模板和第二应用参数模板的参数生效范围,确定对应的静态测试结果,包括:
根据第一应用参数模板和第二应用参数模板,确定在将初始应用参数模板中的第一应用参数模板拆分成第二应用参数模板后的参数迁移类型;
根据参数迁移类型,确定参数生效范围的变更结果;
根据参数生效范围的变更结果,确定对应的静态测试结果。
5.根据权利要求4所述的方法,其特征在于,所述参数迁移类型包括以少之一:应用级到应用级的迁移、模板级到模板级的迁移、应用级到模板级的迁移、模板级到应用级的迁移。
6.根据权利要求5所述的方法,其特征在于,根据参数迁移类型,确定参数生效范围的变更结果,包括:
在确定参数迁移类型为应用级到应用级的迁移的情况下,确定参数生效范围的变更结果为参数生效范围不变;
在确定参数迁移类型为应用级到模板级的迁移的情况下,确定参数生效范围的变更结果为参数生效范围缩减;
在确定参数迁移类型为模板级到应用级的迁移的情况下,确定参数生效范围的变更结果为参数生效范围扩张;
在确定参数迁移类型为模板级到模板级的迁移的情况下,遍历所述第一应用参数模板和第二应用参数模板所涉及的处理节点是否相同;在确定所涉及的处理节点相同的情况下,确定参数生效范围的变更结果为参数生效范围不变;在确定所涉及的处理节点不同的情况下,确定参数生效范围的变更结果为参数生效范围缩减。
7.根据权利要求5所述的方法,其特征在于,根据参数生效范围的变更结果,确定对应的静态测试结果,包括:
在确定参数生效范围的变更结果为:参数生效范围不变,或参数生效范围扩张的情况下,确定静态测试通过;
在确定参数生效范围的变更结果为:参数生效范围缩减的情况下,确定静态测试结果待定。
8.根据权利要求1所述的方法,其特征在于,在进行动态测试之前,所述方法还包括:
获取关于第一应用参数模板或第二应用参数模板的参数变量清单;
在镜像仓库中分别对与第一应用参数模板关联的第一PaaS镜像包、与第二应用参数模板关联的第二PaaS镜像包进行内容解析,得到对应的第一内容解析结果和第二内容解析结果;
根据参数变量清单、第一内容解析结果,确定出涉及第一应用参数模板的参数变量的第一程序的程序信息;根据参数变量清单、第二内容解析结果,确定出涉及第二应用参数模板的参数变量的第二程序的程序信息。
9.根据权利要求7所述的方法,其特征在于,在根据第一应用参数模板和第二应用参数模板,分别启动相应的第一类容器和第二类容器之后,所述方法还包括:
调用预设线程,获得第一类容器的容器标识和第二类容器的容器标识;
根据第一类容器的容器标识,查询得到第一类容器的IP地址;根据第二类容器的容器标识,查询得到第二类容器的IP地址;
根据第一程序的程序信息、第一类容器的IP地址,确定第一程序的物理地址;根据第二程序的程序信息、第二类容器的IP地址,确定第二程序的物理地址。
10.根据权利要求9所述的方法,其特征在于,在运行所述第一应用实例和第二应用实例的过程中,进行动态测试,包括:
根据第一程序的物理地址,获取第一程序文件;根据第二程序的物理地址,获取第二程序文件;
根据参数变量清单,比对第一程序文件和第二程序文件相同变量名的参数变量,得到变量比对结果;
根据变量比对结果,确定对应的动态测试结果。
11.根据权利要求1所述的方法,其特征在于,在根据静态测试结果和动态测试结果,确定出第二应用参数模板关于第一应用参数模板的模板拆分测试结果之后,所述方法还包括:
根据模板拆分测试结果,确定第二应用参数模板是否符合拆分要求;
在确定第二应用参数模板不符合拆分要求的情况下,生成关于第二应用参数模板的报错提示。
12.一种基于Docker的PaaS应用参数模板的测试装置,其特征在于,包括:
获取模块,用于获取第一应用参数模板和第二应用参数模板;其中,所述第二应用参数模板为基于初始应用参数模板中的第一应用参数模板拆分得到的;所述第一应用参数模板、第二应用参数模板、初始应用参数模板为基于Docker的PaaS应用参数模板;
静态测试模块,用于根据第一应用参数模板和第二应用参数模板,进行静态测试,得到对应的静态测试结果;
动态测试模块,用于根据第一应用参数模板和第二应用参数模板,分别启动相应的第一类容器和第二类容器,以分别运行对应的第一应用实例和第二应用实例;并在运行所述第一应用实例和第二应用实例的过程中,进行动态测试,得到对应的动态测试结果;
确定模块,用于根据静态测试结果和动态测试结果,确定出第二应用参数模板关于第一应用参数模板的模板拆分测试结果。
13.一种服务器,其特征在于,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现权利要求1至11中任一项所述方法的步骤。
14.一种计算机可读存储介质,其特征在于,其上存储有计算机指令,所述指令被处理器执行时实现权利要求1至11中任一项所述方法的步骤。
15.一种计算机程序产品,其特征在于,包含有计算机程序,所述计算机程序被处理器执行时实现权利要求1至11中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310266988.5A CN116225622A (zh) | 2023-03-14 | 2023-03-14 | 基于Docker的PaaS应用参数模板的测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310266988.5A CN116225622A (zh) | 2023-03-14 | 2023-03-14 | 基于Docker的PaaS应用参数模板的测试方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116225622A true CN116225622A (zh) | 2023-06-06 |
Family
ID=86580514
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310266988.5A Pending CN116225622A (zh) | 2023-03-14 | 2023-03-14 | 基于Docker的PaaS应用参数模板的测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116225622A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7477693B1 (ja) | 2023-07-25 | 2024-05-01 | PayPay株式会社 | 送金管理装置、送金管理方法、およびプログラム |
-
2023
- 2023-03-14 CN CN202310266988.5A patent/CN116225622A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7477693B1 (ja) | 2023-07-25 | 2024-05-01 | PayPay株式会社 | 送金管理装置、送金管理方法、およびプログラム |
JP7514410B1 (ja) | 2023-07-25 | 2024-07-10 | PayPay株式会社 | 送金管理装置、送金管理方法、およびプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10824404B2 (en) | Methods and systems for uploading a program based on a target network platform | |
CN109800258B (zh) | 数据文件部署方法、装置、计算机设备及存储介质 | |
CN112181804A (zh) | 一种参数校验方法、设备以及存储介质 | |
JP2022100301A (ja) | ソフトウェア・アップグレードがコンピューティング・デバイスに与える潜在的な影響を判定するための方法、コンピュータ・プログラム、および更新推奨コンピュータ・サーバ(ソフトウェア・アップグレードの安定性の推奨) | |
US20230161614A1 (en) | Detecting vulnerabilities in configuration code of a cloud environment utilizing infrastructure as code | |
JP2022545422A (ja) | スマートコントラクトの並行実行の方法、装置、機器、及び媒体 | |
US20160124795A1 (en) | Evaluation method and apparatus | |
CN115242874B (zh) | 应用开发阶段的网络请求代理优化方法、系统、设备及存储介质 | |
CN116225622A (zh) | 基于Docker的PaaS应用参数模板的测试方法 | |
CN116974874A (zh) | 数据库的测试方法、装置、电子设备及可读存储介质 | |
CN116881156A (zh) | 一种自动化测试方法、装置、设备及存储介质 | |
CN111831574A (zh) | 回归测试规划方法、装置、计算机系统和介质 | |
CN114581241A (zh) | 智能合约的处理方法和装置、处理器及电子设备 | |
CN110716912B (zh) | 一种sql性能检测方法及服务器 | |
Raharjo et al. | Reliability Evaluation of Microservices and Monolithic Architectures | |
CN116401113B (zh) | 一种异构众核架构加速卡的环境验证方法、装置及介质 | |
CN116483888A (zh) | 程序评估方法及装置、电子设备和计算机可读存储介质 | |
CN115687129A (zh) | 一种覆盖率报告生成方法、装置、存储介质和计算机设备 | |
CN114546799A (zh) | 埋点日志校验方法、装置、电子设备、存储介质及产品 | |
US11347722B2 (en) | Big data regression verification method and big data regression verification apparatus | |
CN117992359B (zh) | 服务化软件的观测方法、装置和电子设备 | |
CN110262958B (zh) | 测试用户的确定方法、装置、服务器和存储介质 | |
US20230164174A1 (en) | Techniques for lateral movement detecton in a cloud computing environment | |
CN118778975A (zh) | 应用处理方法、装置、计算机设备、存储介质和程序产品 | |
CN115499237A (zh) | 高风险app检测方法、装置、电子设备及存储介质 |
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 |