CN112667491B - 虚拟机的功能测试方法及装置 - Google Patents
虚拟机的功能测试方法及装置 Download PDFInfo
- Publication number
- CN112667491B CN112667491B CN201910982727.7A CN201910982727A CN112667491B CN 112667491 B CN112667491 B CN 112667491B CN 201910982727 A CN201910982727 A CN 201910982727A CN 112667491 B CN112667491 B CN 112667491B
- Authority
- CN
- China
- Prior art keywords
- target
- test
- component
- function
- virtual
- 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.)
- Active
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开了一种虚拟机的功能测试方法及装置。其中,该虚拟机的功能测试方法,包括:在虚拟机更新时,获取所述虚拟机中目标功能所涉及的至少两个虚拟组件;确定所述至少两个虚拟组件中的变更组件;对所述变更组件进行测试;在所述变更组件测试通过后,对所述至少两个虚拟组件进行集成测试,实现所述目标功能的测试。本发明实施例能够提高虚拟机功能测试的测试效率。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种虚拟机的功能测试方法及装置。
背景技术
现有技术中的虚拟机功能测试一般为通过手动方式对多个相互依赖的虚拟组件进行集成测试。具体为,根据需求功能制定测试计划和测试用例,依次将多个虚拟组件部署到手动创建的测试环境中,并根据测试计划和测试用例对多个虚拟组件进行手动集成测试,集成测试完成后,手动打包多个虚拟组件并发布部署。
上述功能测试直接对多个虚拟组件进行集成测试,导致集成测试中虚拟组件的出错率较高,进而导致集成测试的通过率较低,而出错的虚拟组件需经开发人员修改后重新部署到测试环境中进行集成测试,导致功能测试的效率低下,另外,多个虚拟组件的集成测试为手动测试,进一步降低测试效率。
发明内容
本发明提供一种虚拟机的功能测试方法及装置,能够提高虚拟机功能测试的测试效率。
第一方面,本发明提供一种虚拟机的功能测试方法,所述虚拟机的功能测试方法包括:
在虚拟机更新时,获取所述虚拟机中目标功能所涉及的至少两个虚拟组件;
确定所述至少两个虚拟组件中的变更组件;
对所述变更组件进行测试;
在所述变更组件测试通过后,对所述至少两个虚拟组件进行集成测试,实现所述目标功能的测试。
在本发明一些实施例中,所述确定所述至少两个虚拟组件中的变更组件,具体包括:
若所述目标功能为新增的功能,则分别将所述至少两个虚拟组件中的每个虚拟组件作为所述变更组件;
若所述目标功能为修复的功能,则将所述至少两个虚拟组件中修复的虚拟组件作为所述变更组件。
在本发明一些实施例中,所述对所述变更组件进行测试,具体包括:
分别以所述变更组件中的每个组件为目标组件,检测所述目标组件的类型是否为预设组件类型;
若是,则对所述目标组件进行测试;
若否,则将所述目标组件反馈至目标终端。
在本发明一些实施例中,所述对所述至少两个虚拟组件进行集成测试,具体包括:
对所述至少两个虚拟组件进行部署;
获取所述目标功能对应的测试用例集;
根据所述测试用例集,对部署的虚拟组件进行集成测试。
在本发明一些实施例中,所述对所述至少两个虚拟组件进行部署,具体包括:
获取所述目标功能的测试环境;
根据预先配置的所述至少两个虚拟组件的依赖关系,依次将所述至少两个虚拟组件部署到所述测试环境中。
在本发明一些实施例中,所述获取所述目标功能的测试环境,具体包括:
检测当前已创建的测试环境中是否具有所述目标功能的测试环境;
若是,则从当前已创建的测试环境中获取所述目标功能的测试环境;
若否,则创建所述目标功能的测试环境。
在本发明一些实施例中,所述方法还包括:
检测所述集成测试是否测试通过;
若是,则对所述测试用例集进行归档,并销毁所述目标功能的测试环境;
若否,则保留所述目标功能的测试环境,并将所述目标组件反馈至目标终端。
在本发明一些实施例中,所述检测所述集成测试是否测试通过,具体包括:
检测所述测试用例集中测试用例的通过率是否大于预设阈值;
若是,则判定通过所述集成测试;
若否,则判定未通过所述集成测试。
在本发明一些实施例中,所述方法还包括:
在通过所述集成测试后,合并所述至少两个虚拟组件,并给合并后的虚拟组件设置标签,打包所述合并后的虚拟组件并发布。
第二方面,本发明提供一种虚拟机的功能测试装置,所述虚拟机的功能测试装置包括:
获取模块,用于在虚拟机更新时,获取虚拟机中目标功能所涉及的至少两个虚拟组件;
确定模块,用于确定所述至少两个虚拟组件中的变更组件;
测试模块,用于对所述变更组件进行测试;以及,
集成测试模块,用于在所述变更组件测试通过后,对所述至少两个虚拟组件进行集成测试,实现所述目标功能的测试。
本发明实施例在虚拟机更新时,获取虚拟机中目标功能所涉及的至少两个虚拟组件,并确定至少两个虚拟组件中变更的组件,以先对变更组件进行测试,降低变更组件的出错率,在变更组件测试通过后,将至少两个虚拟组件合并后进行集成测试,提高集成测试的测试通过率,且集成测试为自动测试,有效提高功能测试的测试效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的虚拟机的功能测试系统的场景示意图;
图2是本发明实施例中提供的虚拟机的功能测试方法的一个实施例流程示意图;
图3是本发明实施例中虚拟机的功能测试的界面示意图;
图4是本发明实施例中提供的虚拟机的功能测试方法的另一个实施例流程示意图;
图5是本发明实施例中虚拟机的功能测试的架构图;
图6是本发明实施例中提供的虚拟机的功能测试装置的一个实施例结构示意图;
图7是本发明实施例提供的服务器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在以下的说明中,本发明的具体实施例将参考由一部或多部计算机所执行的步骤及符号来说明,除非另有说明。因此,这些步骤及操作将有数次提到由计算机执行,本文所指的计算机执行包括了由代表了以一结构化型式中的数据的电子信号的计算机处理单元的操作。此操作转换该数据或将其维持在该计算机的内存系统中的位置处,其可重新配置或另外以本领域测试人员所熟知的方式来改变该计算机的运作。该数据所维持的数据结构为该内存的实体位置,其具有由该数据格式所定义的特定特性。但是,本发明原理以上述文字来说明,其并不代表为一种限制,本领域测试人员将可了解到以下所述的多种步骤及操作亦可实施在硬件当中。
本文所使用的术语“模块”或“单元”可看做为在该运算系统上执行的软件对象。本文所述的不同组件、模块、引擎及服务可看做为在该运算系统上的实施对象。而本文所述的装置及方法优选的以软件的方式进行实施,当然也可在硬件上进行实施,均在本发明保护范围之内。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
本发明实施例提供一种虚拟机的功能测试方法及装置。
请参阅图1,图1为本发明实施例所提供的虚拟机的功能测试系统的场景示意图,该虚拟机的功能测试系统可以包括终端100和服务器200,终端100和服务器200通过网络连接,服务器200中集成有虚拟机的功能测试装置,该服务器200可以提供不同配置类型的虚拟机,终端100可以访问服务器200。本发明实施例中服务器200主要用于在虚拟机更新时,获取所述虚拟机中目标功能所涉及的至少两个虚拟组件;确定所述至少两个虚拟组件中的变更组件;对所述变更组件进行测试;在所述变更组件测试通过后,将所述至少两个虚拟组件进行合并;对合并后的虚拟组件进行集成测试,实现所述目标功能的测试。
本发明实施例中,该服务器200可以是独立的服务器,也可以是服务器组成的服务器网络或服务器集群,例如,本发明实施例中所描述的服务器200,其包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云服务器。其中,云服务器由基于云计算(Cloud Computing)的大量计算机或网络服务器构成。本发明的实施例中,服务器与客户端之间可通过任何通信方式实现通信,包括但不限于,基于第三代合作伙伴计划(3rd Generation Partnership Project,3GPP)、长期演进(Long Term Evolution,LTE)、全球互通微波访问(Worldwide Interoperability for Microwave Access,WiMAX)的移动通信,或基于TCP/IP协议族(TCP/IP Protocol Suite,TCP/IP)、用户数据报协议(User Datagram Protocol,UDP)协议的计算机网络通信等。
可以理解的是,本发明实施例中所使用的终端100可以理解为客户端设备,客户端设备既包括接收和发射硬件的设备,即具有能够在双向通信链路上,执行双向通信的接收和发射硬件的设备。这种客户端设备可以包括:蜂窝或其他通信设备,其具有单线路显示器或多线路显示器或没有多线路显示器的蜂窝或其他通信设备。终端100具体可以是台式终端或移动终端,移动终端具体可以手机、平板电脑、笔记本电脑等中的一种。
本领域技术人员可以理解,图1中示出的应用环境,仅仅是与本申请方案一种应用场景,并不构成对本申请方案应用场景的限定,其他的应用环境还可以包括比图1中所示更多或更少的服务器,或者服务器网络连接关系,例如图1中仅示出1个服务器和1个终端,可以理解的,该虚拟机的功能测试系统还可以包括一个或多个其他服务器,或/且一个或多个与服务器网络连接的终端,具体此处不作限定。
另外,如图1所示,该虚拟机的功能测试系统还可以包括存储器300,用于存储数据,如存储对象数据库,该对象数据库中保存有对象数据,该对象数据可以包括应用模版(例如审批模版、打卡模版等各种应用模版),文件数据(如Word文件、Excel文件或PPT文件等各种格式的文件),图片数据(如jpg、png、bmp等各种格式的图片)等多种数据,与之对应的,该对象数据库也可以分为多种类型的数据,例如应用数据库,文件数据库或图片数据库等。
需要说明的是,图1所示的虚拟机的功能测试系统的场景示意图仅仅是一个示例,本发明实施例描述的虚拟机的功能测试系统以及场景是为了更加清楚的说明本发明实施例的技术方案,并不构成对于本发明实施例提供的技术方案的限定,本领域普通技术人员可知,随着虚拟机的功能测试系统的演变和新业务场景的出现,本发明实施例提供的技术方案对于类似的技术问题,同样适用。
下面结合具体实施例进行详细说明。
在本实施例中,将从虚拟机的功能测试装置的角度进行描述,该虚拟机的功能测试装置具体可以集成在服务器200中。
本发明提供一种虚拟机的功能测试方法,该虚拟机的功能测试方法包括:在虚拟机更新时,获取所述虚拟机中目标功能所涉及的至少两个虚拟组件;确定所述至少两个虚拟组件中的变更组件;对所述变更组件进行测试;在所述变更组件测试通过后,将所述至少两个虚拟组件进行合并;对合并后的虚拟组件进行集成测试,实现所述目标功能的测试。
请参阅图2,为本发明实施例中本发明实施例中虚拟机的功能测试方法的一个实施例流程示意图,该虚拟机的功能测试方法包括:
201、在虚拟机更新时,获取所述虚拟机中目标功能所涉及的至少两个虚拟组件。
本发明实施例中,服务器可以为云服务器(CVM,Cloud Virtual Machine),CVM提供虚拟机服务,是云平台提供的可伸缩的虚拟计算资源。CVM提供多种不同配置类型的虚拟机,可用于Web接入、数据缓存、数据库等多种场景。CVM提供了可视化的管理页面,开发者可方便地进行服务器日常管理,如申请、退还、重启等;并且提供了多种安全防护手段,包括资源隔离、安全加固、网络安全(例如防DDOS攻击),数据安全(例如FTP通道)和密码安全(例如HTTP代理登录)等。
虚拟机可以提供多种组件服务,例如网络组件服务、自动扩缩容组件服务、DES加密组件服务等。一种组件服务对应一个功能,一个功能可以涉及多个虚拟组件,多个虚拟组件是指至少两个虚拟组件。
虚拟机更新是指虚拟机中的功能被更新,更新的功能可以包括虚拟机中新开发的功能和修复的功能。虚拟机中开发或修复某个功能后,该功能作为目标功能,获取目标功能所涉及的多个虚拟组件。
202、确定所述至少两个虚拟组件中的变更组件。
本实施例中,目标功能的更新可能会变更目标功能所涉及的所有虚拟组件,也可能只变更目标功能所涉及的部分虚拟组件。例如,目标功能为新开发的功能,即新增的功能,目标功能所涉及的所有虚拟组件都需要被开发,因此这种情况下目标功能所涉及的所有虚拟组件都被变更;目标功能为修复的功能,目标功能所涉及的部分虚拟组件被修复,因此这种情况下目标功能所涉及的修复的虚拟组件被变更。
具体地,步骤202中的所述确定所述至少两个虚拟组件中的变更组件,具体包括:若所述目标功能为新增的功能,则分别将所述至少两个虚拟组件中的每个虚拟组件作为所述变更组件;若所述目标功能为修复的功能,则将所述至少两个虚拟组件中修复的虚拟组件作为所述变更组件。其中,变更组件为变更的虚拟组件。
需要说明的是,实现目标功能的代码分为主干和至少一个分支,主干构成父流水线,一个分支构成一个子流水线。变更组件中的每个组件可构成一个分支,即一个变更的虚拟组件构成一个分支,不同的分支可以由不同开发人员来完成。例如,当开发人员被分配某个任务后,可以从主干代码拉取分支,并在该分支中实现虚拟组件代码的变更,获得变更的虚拟组件。主干代码和分支代码统一使用GIT进行管理,GIT是一个开源的分布式版本控制系统。
203、对所述变更组件进行测试。
本实施例中,在开发人员向每个分支提交相应的虚拟组件代码后,获得变更组件,进而对变更组件进行测试,该测试一般包括组件类型的检测和组件功能测试等。具体地,步骤203中的所述对所述变更组件进行测试,具体包括:分别以所述变更组件中的每个组件为目标组件,检测所述目标组件的类型是否为预设组件类型;若是,则对所述目标组件进行测试;若否,则将所述目标组件反馈至目标终端。
其中,分支类型包括免测分支、特性分支和release分支,免测分支的命名格式规范为hotfix/xxxxx_xxxx_xxx,特性分支的命名格式规范为feature/xxxxxx,release分支的命名格式规范为release/vx.x.x。由于后续分支需合并到主干代码中,而主干只允许免测分支和测试后的release分支的合并,因此多个特性分支在提交代码后可以先合并为release分支再进行后续处理,即后续合并到主干代码中的分支类型只包括免测类型和release类型。
提交到分支上的目标组件的类型即构成该分支的类型,因此允许合并到主干代码中的目标组件的组件类型包括免测类型和release类型,因此上述预设组件类型包括免测类型和release类型。提交到分支上的目标组件的名称即构成该分支的名称,而不同分支类型其命名格式规范不同,因此可通过目标组件的名称来确定目标组件的组件类型。
目标组件在其分支上开发完成后,先检测目标组件的名称是否符合规范,即判断目标组件的名称是否为hotfix/xxxxx_xxxx_xxx或release/vx.x.x,若是,则判定目标组件的组件类型为预设组件类型,可继续进行下一步的测试;若否,则判定目标组件的组件类型不为预设组件类型,任务执行失败,将目标组件反馈给目标终端,例如图1中的终端100,使开发人员对目标组件进行重命名,直到目标组件的名称符合规范为止。另外,变更组件中所有组件的名称都需相同,即所有分支的名称相同。
在确定目标组件所在的分支可以合并到主干后,向主干提交一个合并请求(MR,Merger Request),此时通过GIT webhook自动触发启动该分支的自动化功能测试,即目标组件的自动化功能测试。
如图3所示,3个分支中,每一个分支触发自动化测试后,均先开始分支名检查,分支名即为在该分支上提交的目标组件的名称,在分支名检查通过后,对目标组件进行测试,该测试可以包括测试1和测试2,如单元测试、静态语法检测等,在测试通过后即可启动子流水线,结束该分支的自动化测试。分支测试的流程可通过界面显示,且每完成一步,该步骤会对应显示一个“√”,以供测试人员查看流程进度。本实施例在各分支合并到主干之前,对各分支中的目标组件分别进行测试,以降低变更组件的出错率。
由于目标功能下所有目标组件都进行测试后才能继续后续处理,因此还需对MR数量进行检测,即检测MR数量与分支的数量是否相同,若相同,则表明所有分支都已提交MR,即所有变更组件都已测试,若不相同,则表明仍有分支未提交MR,需等待所有目标组件提交MR。
例如,目标功能下有3个代码库需要修复,1个代码库构成一个目标组件,开发人员从主干代码中拉取3个分支,3个分支的名称相同,即hotfix/fix_foo。3个分支与3个代码库一一对应,开发人员将每个修复的代码库提交到对应的分支上,在确定分支可以合并到主干后,对每个代码库提交一个MR,每个MR会触发相应代码库的功能测试。在3个分支都提交了MR,即在确定有3个MR后,才会继续后续的处理。
204、在所述变更组件测试通过后,对所述至少两个虚拟组件进行集成测试,实现所述目标功能的测试。
本实施例中,在所有分支完成测试后,对具有相互依赖关系的虚拟组件进行部署,具有相互依赖关系的虚拟组件一般包括目标功能所涉及的所有虚拟组件,进而对相互依赖的虚拟组件进行集成测试,集成测试完成后即实现目标功能的测试。具体地,步骤204中的所述对所述至少两个虚拟组件进行集成测试,具体包括:对所述至少两个虚拟组件进行部署;获取所述目标功能对应的测试用例集;根据所述测试用例集,对部署的虚拟组件进行集成测试。
虚拟组件部署时,需先部署目标功能的测试环境,再将目标功能所涉及的所有虚拟组件部署到测试环境中。具体地,所述对所述至少两个虚拟组件进行部署,具体包括:获取所述目标功能的测试环境;根据预先配置的所述至少两个虚拟组件的依赖关系,依次将所述至少两个虚拟组件部署到所述测试环境中。
需要说明的是,在部署目标功能的测试环境时,为了提高测试环境的利用率,先判断目标功能是否已创建测试环境。具体地,所述获取所述目标功能的测试环境,具体包括:检测当前已创建的测试环境中是否具有所述目标功能的测试环境;若是,则从当前已创建的测试环境中获取所述目标功能的测试环境;若否,则创建所述目标功能的测试环境。
由于目标功能下所有分支的名称都相同,因此目标功能所对应的测试环境可以采用分支名称来命名。在检测当前已创建的测试环境中是否具有目标功能的测试环境时,可以检测当前已创建的测试环境中是否具有以分支名称命名的测试环境,若是,则复用该测试环境,即从当前已创建的测试环境中获取以分支名称命名的测试环境,作为目标功能对应的测试环境;若否,则创建目标功能对应的测试环境,并将该测试环境以分支名称来命名。
在获取目标功能的测试环境后,可以获取预先配置的虚拟组件的依赖关系,并按照依赖关系中虚拟组件的先后顺序,将相互依赖的虚拟组件依次部署到目标功能的测试环境中。
本实施例可以预先封装测试环境的管理代码,实现目标功能的测试环境的自动管理和维护,相对于现有技术中测试环境手动操作的管理和维护,提高测试环境管理的效率。另外,现有技术中虚拟组件间的依赖关系通过手动维护,在部署时,需要先理清各个组件间的相互依赖关系,而本实施例预先制定相互依赖的虚拟组件代码开发规范,自动化完成虚拟组件的顺序部署,有效提高虚拟组件的部署效率,同时降低手动部署时的出错概率。
在相互依赖的虚拟组件完成部署后,对相互依赖的虚拟组件进行集成测试,集成测试完成后即实现目标功能的测试。集成测试可以采用自动化测试用例来实现,GIT代码仓库中存储有各种功能对应的测试用例集,因此可以从GIT代码仓库中获取目标功能对应的测试用例集。自动化测试用例通过调用各个虚拟组件提供的接口完成自动化测试。集成测试完成后,还可自动生成测试报告。
现有技术在测试准备阶段根据需求功能设计测试用例,在集成测试阶段,根据测试用例,手动对目标功能进行测试,降低测试效率。而本实施例可以实现测试用例的自动化执行,并自动生成测试报告,有效节约测试时间,提高测试效率。
在对相互依赖的虚拟组件进行集成测试后,还需对集成测试的通过情况进行检测,以便根据测试通过情况进行后续处理。具体地,所述方法还包括:检测所述合并后的虚拟组件是否测试通过;若是,则对所述测试用例集进行归档,并销毁所述目标功能的测试环境;若否,则保留所述目标功能的测试环境,并将所述目标组件反馈至目标终端。
其中,集成测试的通过情况可根据测试用例集的通过率来检测。具体地,所述检测所述合并后的虚拟组件是否测试通过,具体包括:检测所述测试用例集中测试用例的通过率是否大于预设阈值;若是,则判定所述合并后的虚拟组件测试通过;若否,则判定所述合并后的虚拟组件测试未通过。
需要说明的是,测试用例集中包括多个测试用例,依次根据多个测试用例,对相互依赖的虚拟组件进行测试,并检测测试用例的通过个数,将测试用例的通过个数除以测试用例的总个数,作为测试用例集中测试用例的通过率。进而,将该通过率与预设阈值进行比较,预设阈值可以为90%,若该通过率大于或等于90%,则表明集成测试通过,若该通过率低于90%,则表明集成测试未通过。
若集成测试未通过,则将变更组件中的每个组件反馈至相应的目标终端,如图1中的终端100,使开发人员对相应组件的代码进行修改,代码修改后,需返回步骤203,重新对相应组件进行测试,以及相互依赖的虚拟组件的部署和集成测试。另外,在集成测试未通过时,保留目标功能的测试环境,即不对目标功能的测试环境进行销毁,以便目标功能重新测试时,直接获取目标功能的测试环境部署虚拟组件,提高测试环境的利用率。
若集成测试通过,则对测试用例集进行归档,将测试用例集保存到测试用例仓库中,并以目标功能下的分支名称来命名该测试用例集,以便更加规范的管理自动化测试用例,使测试用例更加稳定可靠。同时,销毁目标功能的测试环境,以便资源的重复利用。另外,本实施例可以完成测试环境的自动创建和自动销毁,相对于现有技术的手动创建和销毁,有效提高测试环境的管理效率,且降低出错概率。
进一步地,所述方法还包括:在所述合并后的虚拟组件测试通过后,给所述变更组件设置标签,打包所述变更组件并发布。
需要说明的是,在集成测试通过后,自动对变更组件设置标签(TAG),以标识变更组件,自动将变更组件提交到发布平台,并自动创建一键发布单,在一键发布单审批通过后,自动发布到现网环境中。本实施例相当于现有技术中手动打标签、手动打包、手动创建一键发布单和手动发布,有效节省发布时间,提高发布效率,且减少手动操作的出错率。
如图3所示,在每个分支测试完成后,即可开始集成测试和打包分布,一般包括检测MR数量、创建部署测试环境、获取测试用例集、集成测试、合并到主干、打TAG、打包、创建一键发布单和发布部署等步骤。集成测试和打包分布的流程可通过界面显示,且每完成一步,该步骤会对应显示一个“√”,以供测试人员查看流程进度。
综上,本申请实施例在虚拟机更新时,获取虚拟机中目标功能所涉及的至少两个虚拟组件,并确定至少两个虚拟组件中变更的组件,以先对变更组件进行测试,降低变更组件的出错率,在变更组件测试通过后,将至少两个虚拟组件合并后进行集成测试,提高集成测试的测试通过率,且集成测试为自动测试,有效提高功能测试的测试效率。
下面结合一具体应用场景对本发明实施例中虚拟机的功能测试方法进行描述。
请参阅图4,为本发明实施例中虚拟机的功能测试方法的另一个实施例流程示意图,该虚拟机的功能测试方法应用于服务器,如图5所示,服务器中可以加载QCI平台、GIT代码管理平台、云器测试环境管理平台、QTA测试管理平台、打包发布平台和一键发布平台。
QCI平台是腾讯自研的,从流程串联及数据整合的这两个角度出发,打造的一个的持续集成CI/持续交付CD平台。QCI平台提供pipeline能力,Pipeline是指软件从版本控制库到用户这一过程的自动化实现,是持续交付与DevOps的核心工程实践。Pipeline流水线的自动化和持续流动,才能保证在不同阶段、不同节点上产品发布的一致性和稳定性,同时也才能消除由于人工操作所引入的人为风险,提高效率,消除等待与浪费。
GIT代理管理平台用于MR触发QCI任务、获取分支数量和MR数量、分支合并至主干、打TAG。
云器测试环境管理平台用于创建CVM测试环境、部署CVM测试环境、销毁CVM测试环境。
QTA测试管理平台用于下发并执行自动化测试用例。
打包发布平台用于打包CVM组件、部署CVM组件。
一键发布平台用于创建一键发布单并发布。
如图4所示,该虚拟机的功能测试方法包括:
401、检测CVM组件分支的名称是否合法,若是,则执行步骤402,若否,则反馈修改。
其中,CVM组件为变更的虚拟组件,一个CVM组件对应一个分支,一个分支构成一个子流水线,CVM组件分支的名称为CVM组件的名称,检测CVM组件分支的名称是否hotfix/xxxxx_xxxx_xxx或release/vx.x.x,若是,则判定CVM组件分支的名称合法,若否,则判定CVM组件分支的名称不合法,将该CVM组件反馈至开发人员对应的终端,使开发人员对该CVM组件的名称进行修改。另外,同一批次的CVM组件分支名称需相同。
402、对CVM组件分支进行自动化测试。
其中,自动化测试包括单元测试和静态语法检测等。
403、检测MR数量是否等于分支数量,若是,则执行步骤404,若否,则继续等待。
CVM组件分支完成自动化测试后会提交MR,MR触发QCI任务,GIT代码管理平台获取分支数量和MR数量并进行比较。若MR数量等于分支数量,则表明所有CVM组件分支都已完成自动化测试,可继续进行下一步在;若MR数量小于分支数量,则表明还有CVM组件分支未完成自动化测试,需要继续等待。
404、检测CVM组件分支名称对应的测试环境是否存在,若否,则执行步骤405,若是,则执行步骤407。
云器测试环境管理平台对测试环境进行管理。若当前已创建的测试环境中已存在以CVM组件分支名称命名的测试环境,则直接获取该测试环境,并跳转到步骤407。
405、创建CVM测试环境。
若当前已创建的测试环境中不存在以CVM组件分支名称命名的测试环境,则云器测试环境管理平台创建测试环境,且该测试环境以CVM组件分支名称来命名。云器测试环境管理平台完成CVM测试环境的自动创建,提高测试环境管理的效率。
406、部署CVM组件。
通过云器测试环境管理平台管理CVM组件的依赖关系,自动化完成CVM组件的顺序部署,提高CVM组件部署的效率。
407、执行自动化测试用例。
QTA测试管理平台下发测试任务,将自动化测试用例从GIT代码仓库中提取出,以在CVM测试环境中执行自动化测试用例,实现集成测试,并生成自动化测试报告。
408、检测测试用例的通过率是否大于90%,若是,则执行步骤409,若否,则反馈修改。
其中,若测试用例的通过率大于90%,则表明集成测试通过,可继续进行下一步;若测试用例的通过率小于90%,则表明集成测试未通过,将CVM组件反馈至开发人员对应的终端,使开发人员对CVM组件进行修改。
409、分支合并至主干。
集成测试通过后,GIT代码管理平台将CVM组件分支代码合并到主干代码中。
410、打TAG。
GIT代码管理平台对合并后的组件进行打TAG。
411、打包。
将并后的组件自动提交到打包发布平台,如织云打包发布平台,使打包发布平台对合并后的组件进行打包。
412、创建一键发布单。
将打包的组件自动提交到一键发布平台,如星云一键发布平台,使一键发布平台创建一键发布单,在一键发布单审批通过后,自动发布到现网环境中。
413、销毁测试环境。
云器测试环境管理平台对CVM测试环境进行销毁,以便资源重复利用。
本实施例通过QCI平台提供的pipeline能力将CVM组件分支自动化测试与分支主干的集成测试自动化串联起来,有效提高CVM发布部署的效率。
为便于更好的实施本发明实施例提供的虚拟机的功能测试方法,本发明实施例还提供一种虚拟机的功能测试方法的装置。其中名词的含义与上述虚拟机的功能测试方法中相同,具体实现细节可以参考方法实施例中的说明。
请参阅图6,图6为本发明实施例提供的虚拟机的功能测试装置的结构示意图,其中该虚拟机的功能测试装置700可以包括:
获取模块601,用于在虚拟机更新时,获取虚拟机中目标功能所涉及的至少两个虚拟组件;
确定模块602,用于确定所述至少两个虚拟组件中的变更组件;
测试模块603,用于对所述变更组件进行测试;以及,
集成测试模块604,用于在所述变更组件测试通过后,对所述至少两个虚拟组件进行集成测试,实现所述目标功能的测试。
在本发明一些实施例中,该确定模块602具体用于:
若所述目标功能为新增的功能,则分别将所述至少两个虚拟组件中的每个虚拟组件作为所述变更组件;
若所述目标功能为修复的功能,则将所述至少两个虚拟组件中修复的虚拟组件作为所述变更组件。
在本发明一些实施例中,该测试模块603具体用于:
分别以所述变更组件中的每个组件为目标组件,检测所述目标组件的类型是否为预设组件类型;
若是,则对所述目标组件进行测试;
若否,则将所述目标组件反馈至目标终端。
在本发明一些实施例中,该集成测试模块604具体用于:
对所述至少两个虚拟组件进行部署;
获取所述目标功能对应的测试用例集;
根据所述测试用例集,对部署的虚拟组件进行集成测试。
在本发明一些实施例中,该集成测试模块604具体还用于:
获取所述目标功能的测试环境;
根据预先配置的所述至少两个虚拟组件的依赖关系,依次将所述至少两个虚拟组件部署到所述测试环境中。
在本发明一些实施例中,该集成测试模块604具体还用于:
检测当前已创建的测试环境中是否具有所述目标功能的测试环境;
若是,则从当前已创建的测试环境中获取所述目标功能的测试环境;
若否,则创建所述目标功能的测试环境。
在本发明一些实施例中,所述装置还包括检测模块,该检测模块具体用于:
检测所述集成测试是否测试通过;
若是,则对所述测试用例集进行归档,并销毁所述目标功能的测试环境;
若否,则保留所述目标功能的测试环境,并将所述目标组件反馈至目标终端。
在本发明一些实施例中,该检测模块具体还用于:
检测所述测试用例集中测试用例的通过率是否大于预设阈值;
若是,则判定通过所述集成测试;
若否,则判定未通过所述集成测试。
在本发明一些实施例中,所述装置还包括发布模块,该发布模块具体用于:
在通过所述集成测试后,合并所述至少两个虚拟组件,并给合并后的虚拟组件设置标签,打包所述合并后的虚拟组件并发布。
具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
本发明实施例在虚拟机更新时,获取虚拟机中目标功能所涉及的至少两个虚拟组件,并确定至少两个虚拟组件中变更的组件,以先对变更组件进行测试,降低变更组件的出错率,在变更组件测试通过后,将至少两个虚拟组件合并后进行集成测试,提高集成测试的测试通过率,且集成测试为自动测试,有效提高功能测试的测试效率。
本发明实施例还提供一种服务器,如图7所示,其示出了本发明实施例所涉及的服务器的结构示意图,具体来讲:
该服务器可以包括一个或者一个以上处理核心的处理器701、一个或一个以上计算机可读存储介质的存储器702、电源703和输入单元704等部件。本领域技术人员可以理解,图7中示出的服务器结构并不构成对服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
其中:
处理器701是该服务器的控制中心,利用各种接口和线路连接整个服务器的各个部分,通过运行或执行存储在存储器702内的软件程序和/或模块,以及调用存储在存储器702内的数据,执行服务器的各种功能和处理数据。可选的,处理器701可包括一个或多个处理核心;优选的,处理器701可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作存储介质、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器701中。
存储器702可用于存储软件程序以及模块,处理器701通过运行存储在存储器702的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器702可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作存储介质、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器702可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器702还可以包括存储器控制器,以提供处理器701对存储器702的访问。
服务器还包括给各个部件供电的电源703,优选的,电源703可以通过电源管理存储介质与处理器701逻辑相连,从而通过电源管理存储介质实现管理充电、放电、以及功耗管理等功能。电源703还可以包括一个或一个以上的直流或交流电源、再充电存储介质、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该服务器还可包括输入单元704,该输入单元704可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,服务器还可以包括显示单元等,在此不再赘述。具体在本实施例中,服务器中的处理器701会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器702中,并由处理器701来运行存储在存储器702中的应用程序,从而实现各种功能,如下:
在虚拟机更新时,获取所述虚拟机中目标功能所涉及的至少两个虚拟组件;确定所述至少两个虚拟组件中的变更组件;对所述变更组件进行测试;在所述变更组件测试通过后,对所述至少两个虚拟组件进行集成测试,实现所述目标功能的测试。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本发明实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本发明实施例所提供的任一种虚拟机的功能测试方法中的步骤。例如,该指令可以执行如下步骤:
在虚拟机更新时,获取所述虚拟机中目标功能所涉及的至少两个虚拟组件;确定所述至少两个虚拟组件中的变更组件;对所述变更组件进行测试;在所述变更组件测试通过后,对所述至少两个虚拟组件进行集成测试,实现所述目标功能的测试。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的指令,可以执行本发明实施例所提供的任一种虚拟机的功能测试方法中的步骤,因此,可以实现本发明实施例所提供的任一种虚拟机的功能测试方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本发明实施例所提供的一种虚拟机的功能测试方法、装置、服务器和存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (8)
1.一种虚拟机的功能测试方法,其特征在于,包括:
在虚拟机更新时,获取所述虚拟机中目标功能所涉及的至少两个虚拟组件,所述目标功能为所述虚拟机中新开发或修复的功能;
确定所述至少两个虚拟组件中的变更组件;
分别以所述变更组件中的每个组件为目标组件,每个目标组件构成实现所述目标功能的代码的一个分支;
对所述目标组件对应的分支代码的名称的合法性进行检测,所述目标组件对应的分支代码的名称为所述目标组件的名称,所述目标组件的名称用于确定所述目标组件的类型;
当检测结果指示所述目标组件对应的分支代码的名称合法时,对所述分支代码进行自动化测试;并在所述分支代码完成自动化测试后,向实现所述目标功能的主干代码提交合并请求;
当检测结果指示所述目标组件对应的分支代码的名称不合法时,将所述目标组件反馈至目标终端,以通过所述目标终端对所述目标组件进行重命名,直至所述目标组件的名称合法;
当所述合并请求的数量等于分支代码的数量时,确定所有目标组件的分支代码均完成自动化测试;
在所有目标组件的分支代码均完成自动化测试后,获取所述目标功能的测试环境;
根据预先配置的所述至少两个虚拟组件的依赖关系,按照所述依赖关系中所述目标组件的先后顺序,将所述目标组件依次部署到目标功能的测试环境中;
获取所述目标功能对应的测试用例集;
根据所述测试用例集,对部署的目标组件进行集成测试,以实现所述目标功能的测试。
2.根据权利要求1所述的虚拟机的功能测试方法,其特征在于,所述确定所述至少两个虚拟组件中的变更组件,具体包括:
若所述目标功能为新增的功能,则分别将所述至少两个虚拟组件中的每个虚拟组件作为所述变更组件;
若所述目标功能为修复的功能,则将所述至少两个虚拟组件中修复的虚拟组件作为所述变更组件。
3.根据权利要求1所述的虚拟机的功能测试方法,其特征在于,所述获取所述目标功能的测试环境,具体包括:
检测当前已创建的测试环境中是否具有所述目标功能的测试环境;
若是,则从当前已创建的测试环境中获取所述目标功能的测试环境;
若否,则创建所述目标功能的测试环境。
4.根据权利要求1所述的虚拟机的功能测试方法,其特征在于,所述方法还包括:
检测所述集成测试是否测试通过;
若是,则对所述测试用例集进行归档,并销毁所述目标功能的测试环境;
若否,则保留所述目标功能的测试环境,并将所述目标组件反馈至目标终端。
5.根据权利要求4所述的虚拟机的功能测试方法,其特征在于,所述检测所述集成测试是否测试通过,具体包括:
检测所述测试用例集中测试用例的通过率是否大于预设阈值;
若是,则判定通过所述集成测试;
若否,则判定未通过所述集成测试。
6.根据权利要求1所述的虚拟机的功能测试方法,其特征在于,所述方法还包括:
在通过所述集成测试后,合并所述至少两个虚拟组件,并给合并后的虚拟组件设置标签,打包所述合并后的虚拟组件并发布。
7.一种虚拟机的功能测试装置,其特征在于,包括:
获取模块,用于在虚拟机更新时,获取虚拟机中目标功能所涉及的至少两个虚拟组件,所述目标功能为所述虚拟机中新开发或修复的功能;
确定模块,用于确定所述至少两个虚拟组件中的变更组件;
测试模块,用于分别以所述变更组件中的每个组件为目标组件,每个目标组件构成实现所述目标功能的代码的一个分支;对所述目标组件对应的分支代码的名称的合法性进行检测,所述目标组件对应的分支代码的名称为所述目标组件的名称,所述目标组件的名称用于确定所述目标组件的类型;当检测结果指示所述目标组件对应的分支代码的名称合法时,对所述分支代码进行自动化测试;并在所述分支代码完成自动化测试后,向实现所述目标功能的主干代码提交合并请求;当检测结果指示所述目标组件对应的分支代码的名称不合法时,将所述目标组件反馈至目标终端,以通过所述目标终端对所述目标组件进行重命名,直至所述目标组件的名称合法;当所述合并请求的数量等于分支代码的数量时,确定所有目标组件的分支代码均完成自动化测试;
集成测试模块,用于在所有目标组件的分支代码均完成自动化测试后,获取所述目标功能的测试环境;根据预先配置的所述至少两个虚拟组件的依赖关系,按照所述依赖关系中所述目标组件的先后顺序,将所述目标组件依次部署到目标功能的测试环境中;获取所述目标功能对应的测试用例集;根据所述测试用例集,对部署的目标组件进行集成测试,以实现所述目标功能的测试。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有多条指令,所述指令被处理器进行加载,以执行权利要求1至6任一项所述的虚拟机的功能测试方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910982727.7A CN112667491B (zh) | 2019-10-16 | 2019-10-16 | 虚拟机的功能测试方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910982727.7A CN112667491B (zh) | 2019-10-16 | 2019-10-16 | 虚拟机的功能测试方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112667491A CN112667491A (zh) | 2021-04-16 |
CN112667491B true CN112667491B (zh) | 2023-09-26 |
Family
ID=75400654
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910982727.7A Active CN112667491B (zh) | 2019-10-16 | 2019-10-16 | 虚拟机的功能测试方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112667491B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113672242B (zh) * | 2021-09-03 | 2024-09-24 | 中国邮政储蓄银行股份有限公司 | 协同部署方法、装置、计算机可读存储介质与处理器 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105224869A (zh) * | 2014-06-12 | 2016-01-06 | 腾讯科技(深圳)有限公司 | 组件测试方法和装置 |
CN106227657A (zh) * | 2016-07-18 | 2016-12-14 | 浪潮(北京)电子信息产业有限公司 | 一种虚拟化云系统的持续集成方法和装置 |
CN108920359A (zh) * | 2018-06-06 | 2018-11-30 | 腾讯科技(成都)有限公司 | 应用程序的测试方法、装置、存储介质和电子装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9116874B2 (en) * | 2013-09-25 | 2015-08-25 | Hitachi, Ltd. | Virtual machine test system, virtual machine test method |
-
2019
- 2019-10-16 CN CN201910982727.7A patent/CN112667491B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105224869A (zh) * | 2014-06-12 | 2016-01-06 | 腾讯科技(深圳)有限公司 | 组件测试方法和装置 |
CN106227657A (zh) * | 2016-07-18 | 2016-12-14 | 浪潮(北京)电子信息产业有限公司 | 一种虚拟化云系统的持续集成方法和装置 |
CN108920359A (zh) * | 2018-06-06 | 2018-11-30 | 腾讯科技(成都)有限公司 | 应用程序的测试方法、装置、存储介质和电子装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112667491A (zh) | 2021-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112035228B (zh) | 一种资源调度方法及装置 | |
US8402437B2 (en) | System and method for updating initialization parameters for application software from within a software development environment | |
CN116523457B (zh) | 基于业务流程的工作流处理方法、装置、设备及存储介质 | |
CN110532182B (zh) | 一种虚拟化平台的自动化测试方法及装置 | |
CN113448862B (zh) | 软件版本测试方法、装置及计算机设备 | |
WO2016202000A1 (zh) | 差分回退升级方法及装置 | |
JP2022542203A (ja) | ミニプログラムのバッチ処理方法、装置、電子機器及び可読記憶媒体 | |
US20150006736A1 (en) | Method and System for Deploying and Modifying a Service-Oriented Architecture Deployment Environment | |
CN111090442B (zh) | 一种应用更新方法、装置和存储介质 | |
CN114640709B (zh) | 一种边缘节点的处理方法、装置及介质 | |
CN112667491B (zh) | 虚拟机的功能测试方法及装置 | |
WO2022012305A1 (zh) | 推理应用中模型文件的管理方法及装置 | |
CN115964061A (zh) | 插件更新方法、装置、电子设备和计算机可读存储介质 | |
CN113760320A (zh) | 元数据部署方法和装置 | |
CN113553065B (zh) | 一种代码文件发布方法及装置 | |
CN114610446A (zh) | 一种自动注入探针的方法、装置及系统 | |
CN114489937A (zh) | 镜像缓存方法、装置、电子设备及存储介质 | |
CN117251250B (zh) | 基于云原生平台的容器管理方法及相关设备 | |
CN113934453B (zh) | 风险检测方法、装置及存储介质 | |
CN114676034B (zh) | 一种测试方法、装置、及计算机设备 | |
CN119248513B (zh) | 服务多实例内存优化方法、装置、电子设备及存储介质 | |
CN113900959B (zh) | 软件测试方法、装置、设备及存储介质 | |
CN116931914A (zh) | 页面渲染方法、装置、电子设备和计算机可读存储介质 | |
CN115994077A (zh) | 业务模拟处理方法以及相关设备 | |
CN116414635A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |