CN112765007A - 一种集成测试方法、装置及存储介质 - Google Patents

一种集成测试方法、装置及存储介质 Download PDF

Info

Publication number
CN112765007A
CN112765007A CN201911002638.8A CN201911002638A CN112765007A CN 112765007 A CN112765007 A CN 112765007A CN 201911002638 A CN201911002638 A CN 201911002638A CN 112765007 A CN112765007 A CN 112765007A
Authority
CN
China
Prior art keywords
test
virtual machine
cloud virtual
target task
environment
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.)
Granted
Application number
CN201911002638.8A
Other languages
English (en)
Other versions
CN112765007B (zh
Inventor
蒋艳军
潘金赤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201911002638.8A priority Critical patent/CN112765007B/zh
Publication of CN112765007A publication Critical patent/CN112765007A/zh
Application granted granted Critical
Publication of CN112765007B publication Critical patent/CN112765007B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提供了一种集成测试方法、装置、电子设备及存储介质;方法包括:基于目标任务的名称,查询云虚拟机组件列表;创建以所述目标任务的名称命名的云虚拟机测试环境,并将所创建的云虚拟机测试环境注册到持续集成平台或持续交付平台中;根据预先配置好的组件之间的依赖关系,将所查询到的组件依次部署到所述云虚拟机测试环境中;获取针对所述目标任务进行编写的测试用例,并执行所述测试用例;确定所述测试用例的通过率;当所述通过率大于通过率阈值时,将所述测试用例进行归档,并销毁所述云虚拟机测试环境。通过本发明,能够有效地对多个相互依赖的云虚拟机组件进行集成测试。

Description

一种集成测试方法、装置及存储介质
技术领域
本发明涉及测试技术,尤其涉及一种集成测试方法、装置、电子设备及存储介质。
背景技术
云虚拟机(CVM,Cloud Virtual Machine)是虚拟机服务,可提供各种可伸缩的虚拟计算资源。例如,CVM可提供多种不同配置类型的虚拟机,用于Web接入、数据缓存、数据库等多种场景。开发者可基于CVM进行新的功能开发或进行漏洞(BUG)修复。通常情况下,一个需求功能的开发往往涉及到多个CVM组件的变更,而组件之间具有相互依赖关系。因此,在功能开发完成后,需要将涉及到的多个组件串联起来做集成测试。
然而,相关技术缺乏对多个相互依赖的CVM组件进行集成测试的有效方案。
发明内容
本发明实施例提供一种集成测试方法、装置、电子设备及存储介质,能够有效地对多个相互依赖的云虚拟机组件进行集成测试。
本发明实施例的技术方案是这样实现的:
本发明实施例提供一种集成测试方法,包括:
基于目标任务的名称,查询云虚拟机组件列表;
创建以所述目标任务的名称命名的云虚拟机测试环境,并将所创建的云虚拟机测试环境注册到持续集成平台或持续交付平台中;
根据预先配置好的组件之间的依赖关系,将所查询到的组件依次部署到所述云虚拟机测试环境中;
获取针对所述目标任务进行编写的测试用例,并执行所获取的测试用例;
确定所述测试用例的通过率;
当所述通过率大于通过率阈值时,将所述测试用例进行归档,并销毁所述云虚拟机测试环境。
本发明实施例提供一种集成测试装置,所述装置包括:
查询模块,用于基于目标任务的名称,查询云虚拟机组件列表;
创建模块,用于创建以所述目标任务的名称命名的云虚拟机测试环境;
注册模块,用于将所创建的云虚拟机测试环境注册到持续集成平台或持续交付平台中;
部署模块,用于根据预先配置好的组件之间的依赖关系,将所查询到的组件依次部署到所述云虚拟机测试环境中;
获取模块,用于获取针对所述目标任务进行编写的测试用例,并执行所述测试用例;
确定模块,用于确定所述测试用例的通过率,以及
当所述通过率大于通过率阈值时,将所述测试用例进行归档,并销毁所述云虚拟机测试环境。
上述方案中,所述持续集成平台或持续交付平台具有流水线,且所述流水线中预先配置有执行集成测试所对应的流程。
上述方案中,所述查询模块,还用于基于所述目标任务的名称,在所述云虚拟组件列表中查询执行所述目标任务所需的多个组件;
其中,所述多个组件对应分支的分支名称相同,且与所述目标任务的名称相同。
上述方案中,所述装置还包括检测模块,用于当检测到存在以所述目标任务的名称命名的云虚拟机测试环境时,直接复用所述云虚拟机测试环境;以及
用于当未检测到以所述目标任务的名称命名的云虚拟机测试环境时,通过创建模块调用云虚拟机管理***接口创建所述云虚拟机测试环境。
上述方案中,所述注册模块,还用于当注册所述云虚拟机测试环境时,将所述云虚拟机测试环境与所述持续集成平台的服务器进行连接,或与所述持续交付平台的服务器进行连接;
将所述云虚拟机测试环境作为执行机,并在所述云虚拟机测试环境中部署所查询到的云虚拟机组件和执行自动化测试用例脚本。
上述方案中,所述创建模块,还用于在测试用例仓库中单独创建分支,且以所述目标任务的名称命名所述单独创建的分支;
将针对所述目标任务进行编写的测试用例保存在所述单独创建的分支下。
上述方案中,所述获取模块,还用于基于所述目标任务的名称,查询所述测试用例仓库,并获取所述测试用例仓库中与所述目标任务的名称相同的分支下的测试用例;
并通过自动化测试用例脚本执行所获取的测试用例。
上述方案中,所述确定模块,还用于当确定所述测试用例的通过率小于所述通过率阈值时,保留所述云虚拟机测试环境。
本发明实施例提供一种电子设备,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本发明实施例提供的集成测试方法。
本发明实施例提供一种存储介质,存储有可执行指令,用于引起处理器执行时,实现本发明实施例提供的集成测试方法。
本发明实施例具有以下有益效果:
本发明实施例根据目标任务的名称在云虚拟机组件列表中查询涉及目标任务的云虚拟机组件,创建云虚拟机测试环境,以及将所创建的云虚拟机测试环境注册到持续集成平台或持续交付平台中,并将查询到的云虚拟机组件根据预先配置好的依赖关系依次部署到云虚拟机测试环境中,随后获取针对目标任务进行编写的测试用例,在云虚拟机测试环境中执行,从而完成针对多个相互依赖的云虚拟机组件的集成测试。进一步的,在执行完测试用例后,确定测试用例的通过率,当通过率大于预先设置的阈值时,将测试用例进行归档,并销毁所创建的云虚拟机测试环境。如此,在确定测试通过后,将测试用例进行归档使得测试用例更加稳定;将测试环境进行销毁,以便于资源的重复利用。
附图说明
图1是本发明实施例提供的集成测试***的一个可选的架构示意图;
图2是本发明实施例提供的集成测试设备的一个可选的结构示意图;
图3A是本发明实施例提供的持续集成的架构示意图;
图3B是本发明实施例提供的持续交付的架构示意图;
图3C是本发明实施例提供的实现自动化集成测试的流水线示意图;
图4是本发明实施例提供的集成测试方法的一个可选的流程示意图;
图5是本发明实施例提供的集成测试方法的一个可选的流程示意图;
图6是本发明实施例提供的CVM自动化集成测试流水线的示意图;
图7是本发明实施例提供的CVM自动化集成测试的架构示意图;
图8是本发明实施例提供的集成测试方法的一个可选的流程示意图;
图9是本发明实施例提供的启动CVM自动化集成测试时的界面示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
1)持续集成(CI,Continuous Integration):持续集成号召所有的开发团队都将开发副本对齐至一个统一的主线版本(主干),而且频繁的(至少一天一次)合入到主干。合入后的代码经过编译集成及自动化测试后,可快速输出一个有质量保证的版本,提供后续的环节进行审批及发布部署。
2)持续交付(CD,Continuous Delivery):持续交付是持续集成的扩展,是软件交付流程的进一步自动化,以便随时轻松地部署到生成环境中。持续交付集中依赖于部署流水线,团队通过流水线进行自动化测试和部署。
3)流水线(Pipeline):指软件从版本控制库到用户手中这一过程的自动化实现,是持续交付和开发运维一体化(DevOps,Development and Operations的组合词)的核心工程实践。Pipeline流水线的自动化和持续流动,保证了在不同阶段、不同节点上产品发布的一致性和稳定性,同时也消除了由于人工操作所引入的人为风险,提高效率,消除等待和浪费。
4)持续集成平台或持续交付平台:从流程串联和数据整合两个角度出发进行打造的实现持续集成或持续交付的平台,例如:QCI平台。
5)云虚拟机(CVM,Cloud Virtual Machine):指虚拟机服务,可提供各种可伸缩的虚拟计算资源。例如,CVM可提供多种不同配置类型的虚拟机,用于Web接入、数据缓存、数据库等多种场景。CVM还提供了可视化的管理页面,开发者可方便地进行服务器日常管理,如申请、退还、重启、监控等。此外,还提供了多种安全防护手段,包括资源隔离、安全加固、网络安全(例如防DDOS攻击)、数据安全(例如FTP通道)和密码安全(例如HTTP代理登录)等。
6)云器测试环境管理平台:负责CVM测试环境的创建、分配、以及部署CVM组件等的平台。云器测试环境管理平台提供了创建CVM测试环境、部署CVM组件、以及销毁CVM测试环境等功能的应用程序编程接口(API,Application Programming Interface)。持续集成平台或持续交付平台可以通过调用云器测试环境管理平台提供的API接口来完成CVM测试环境的自动创建、CVM组件的自动部署、以及CVM测试环境的自动销毁等。
7)集成测试:也叫组装测试或联合测试,是单元测试的逻辑扩展。它最简单的形式是:把两个已经测试过的单元组合成一个组件,测试它们之间的接口。
发明人在实施本发明实施例的过程中发现,相关技术在对多个相互依赖的CVM组件做集成测试时,通常需要通过手动的方式进行。但是通过手动的方式做集成测试时存在比较耗时、且容易出错等问题。对此,考虑到持续集成平台或持续交付平台所具有的流水线能力,故可以将集成测试与持续集成平台或持续交付平台进行结合,基于持续集成平台或持续交付平台所提供的能力,有效地对多个相互依赖的CVM组件进行集成测试。
鉴于此,本发明实施例提供一种集成测试方法、装置、电子设备及存储介质,能够有效地对多个相互依赖的CVM组件进行集成测试。
下面说明本发明实施例提供的集成测试设备的示例性应用,本发明实施例提供的集成测试设备可以实施为服务器或服务器集群。
参见图1,图1是本发明实施例提供的集成测试***100的一个可选的架构示意图。如图1所示,开发/测试人员启动持续集成平台或持续交付平台400,并输入目标任务的名称。服务器200在接收到目标任务的名称后,根据所接收的目标任务的名称调用Git接口查询CVM组件列表,得到涉及所述目标任务的CVM组件。接着,服务器200通过调用云器测试环境管理平台接口创建以所输入的目标任务的名称命名的CVM测试环境500,并将所创建的CVM测试环境注册到持续集成平台或持续交付平台400中。随后,服务器200调用云器测试环境管理平台的接口配置好查询到的CVM组件之间的相互依赖关系,并将CVM组件按照顺序依次部署到CVM测试环境中。最后,服务器200将针对目标任务进行编写的测试用例从测试用例仓库600拉取到CVM测试环境500中,在CVM测试环境500中执行测试用例,从而完成针对目标任务所涉及的多个相互依赖的CVM组件间的集成测试。
参见图2,图2是本发明实施例提供的服务器200的结构示意图,图2所示的服务器200包括:至少一个处理器210、存储器250、至少一个网络接口220和用户接口230。服务器200中的各个组件通过总线***240耦合在一起。可理解,总线***240用于实现这些组件之间的连接通信。总线***240除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线***240。
处理器210可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口230包括使得能够呈现媒体内容的一个或多个输出装置231,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口230还包括一个或多个输入装置232,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器250可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器250可选地包括在物理位置上远离处理器210的一个或多个存储设备。
存储器250包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本发明实施例描述的存储器250旨在包括任意适合类型的存储器。
在一些实施例中,存储器250能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作***251,包括用于处理各种基本***服务和执行硬件相关任务的***程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块252,用于经由一个或多个(有线或无线)网络接口220到达其他计算设备,示例性的网络接口220包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
呈现模块253,用于经由一个或多个与用户接口230相关联的输出装置231(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作***设备和显示内容和信息的用户接口);
输入处理模块254,用于对一个或多个来自一个或多个输入装置232之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本发明实施例提供的集成测试装置可以采用软件方式实现,图2示出了存储在存储器250中的集成测试装置255,其可以是程序和插件等形式的软件,包括以下软件模块:查询模块2551、创建模块2552、注册模块2553、部署模块2554、获取模块2555、确定模块2556和检测模块2557,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
在另一些实施例中,本发明实施例提供的集成测试装置可以采用硬件方式实现,作为示例,本发明实施例提供的集成测试装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本发明实施例提供的集成测试方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific IntegratedCircuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)或其他电子元件。
下面将结合附图对本发明实施例提供的集成测试方法进行详细说明。
在对本发明实施例提供的集成测试方法进行进一步详细说明之前,首先对持续集成的架构或持续交付的架构进行详细的介绍。
参见图3A,图3A是本发明实施例提供的持续集成(CI)的架构示意图。如图3A所示,通过持续集成,开发人员能够频繁地将其代码集成到公共代码仓库的主分支中。开发人员能够在任何时候多次向仓库提交代码,而不是独立地开发每个功能模块并在开发周期结束时提交。持续集成是一个自动化的周期性的集成测试过程,通过部署流水线,实现从检出代码、编译构建、运行测试、结果记录、测试统计等功能的自动完成,无需人工干预。此外,还可以结合分布式版本控制工具(Git)以及可视化界面(Gogs)来更好地帮助开发人员进行测试。
参见图3B,图3B是本发明实施例提供的持续交付(CD)的架构示意图。如图3B所示,持续交付是持续集成的扩展,是软件交付流程的进一步自动化,以便随时轻松地部署到生成环境中。持续集成依赖于部署流水线,团队通过流水线进行自动化测试和部署的过程。此流水线是一个自动化***,可以针对目标任务构建一组渐进的测试套件。持续交付具有高度的自动化,并且在一些云计算环境中也易于配置。在流水线的每个阶段,如果构建的测试套件执行失败时,将向开发人员发出警报。如果执行成功,将继续进入下一个测试,并在连续通过测试后自动进入下一个阶段。
参见图3C,图3C是本发明实施例提供的实现自动化集成测试的流水线示意图,如图3C所示,基于持续集成平台或持续交付平台提供的流水线技术,在流水线中预先定义了执行集成测试所对应的完整流程,包括创建CVM测试环境、部署CVM组件、执行测试用例、以及销毁CVM测试环境。在触发流水线开始工作后,在流水线当前的步骤执行完成后,将自动依次执行后面的步骤。例如,在执行完部署CVM组件后,将自动执行测试用例的步骤。
在一些实施例中,上述自动化集成测试过程可以采用Jenkins、QCI平台等工具实现,Jenkins、QCI平台可以提供流水线,开发人员只要将集成测试所对应的完整流程预先加入流水线中,流水线即可按照预先配置的流程一步步执行。流水线可以包括多个环节,例如获取CVM组件、创建CVM测试环境、部署CVM测试环境、执行自动化测试用例、销毁CVM测试环境等。
参见图4,图4是本发明实施例提供的集成测试方法的一个可选的流程示意图,将结合图4示出的步骤进行说明。
在步骤S401中,持续集成平台或持续交付平台基于目标任务的名称,查询云虚拟机组件列表。
这里,所述目标任务包括开发新的功能或者修复某个BUG等。
在一些实施例中,当开发人员在开发某个功能或修复某个BUG时,如果涉及到需要改动多个CVM组件,则需要在这几个CVM组件上分别拉取分支进行开发,为了方便标识组件间的相互依赖关系,同一需求功能下相互依赖的组件对应的分支名称保持一致。如此,在需要将相互依赖的多个CVM组件进行集成测试时,可直接输入开发新功能或修复BUG时所对应的任务名称(即分支名称),根据所输入的任务名称,在云虚拟机列表中得到开发新功能或修复BUG时所涉及的CVM组件。
示例的,当某个新功能开发结束后,开发人员需要将该功能所涉及的多个CVM组件进行集成测试。此时,开发人员可以启动持续集成平台或持续交付平台的流水线,输入开发该功能时所对应的任务名称,在持续集成平台或持续交付平台的流水线启动后,可根据所输入的任务名称,调用版本控制工具(例如Git)接口查询CVM组件列表,得到相应的CVM组件。
在步骤S402中,持续集成平台或持续交付平台调用云器测试环境管理平台的接口创建以所述目标任务的名称命名的云虚拟机测试环境,并将所创建的云虚拟机测试环境注册到持续集成平台或持续交付平台中。
参见图5,图5是本发明实施例提供的集成测试方法的一个可选的流程示意图,在一些实施例中,图4示出的步骤S402可以通过图5示出的步骤S4021至步骤S4025实现,将结合各步骤进行说明。
在步骤S4021中,云器测试环境管理平台首先判断是否存在以所述目标任务的名称命名的云虚拟机测试环境,若存在,则执行步骤S4022;否则,执行步骤S4023。
在步骤S4022中,云器测试环境管理平台直接复用所述云虚拟机测试环境。
在一些实施例中,在创建以目标任务的名称命名的CVM测试环境之前,可以首先检测是否已存在以该目标任务的名称命名的CVM测试环境,当检测到存在以该目标任务的名称命名的CVM测试环境时,可直接复用该CVM测试环境,以提高CVM测试环境的利用率。
示例的,假设开发人员在上一次针对任务A所涉及的多个相互依赖的CVM组件进行集成测试时,由于集成测试不通过,保留以任务A的名称命名的CVM测试环境,如此,当开发人员修改代码重新启动集成测试流程时,检测到已存在以任务A的名称命名的CVM测试环境,如此,可以直接复用该CVM测试环境,而不必进行重复的创建,提高了CVM测试环境的利用率。
在步骤S4023中,持续集成平台或持续交付平台调用云虚拟机管理***接口创建所述云虚拟机测试环境。
这里,云虚拟机管理***可以是云器测试环境管理平台,当未检测到以目标任务的名称命名的CVM测试环境时,持续集成平台或持续交付平台可以调用云器测试环境管理平台的接口来自动创建以目标任务的名称命名的CVM测试环境。
示例的,可以通过调用云器测试环境管理平台提供的API接口来创建CVM测试环境。
在步骤S4024中,在注册所述云虚拟机测试环境时,云器测试环境管理平台将所述云虚拟机测试环境与所述持续集成平台的服务器进行连接,或与所述持续交付平台的服务器进行连接。
在步骤S4025中,持续集成平台或持续交付平台将所述云虚拟机测试环境作为执行机,并在所述云虚拟机测试环境中部署所查询到的云虚拟机组件和执行自动化测试用例脚本。
这里,在创建好以目标任务的名称命名的CVM测试环境后,将所创建的CVM测试环境注册到持续集成平台或持续交付平台上。在进行注册时会安装持续集成平台或持续交付平台的代理(agent),安装agent的目的是将CVM测试环境与持续集成平台的服务器或持续交付平台的服务器进行连接,如此,持续集成平台或持续交付平台可以将CVM测试环境作为执行机器(slave),在CVM测试环境中部署CVM组件和执行自动化测试用例脚本,并通过agent将任务下发到CVM测试环境中执行。
在步骤S403中,云器测试环境管理平台配置好云虚拟机组件之间的依赖关系,持续集成平台或持续交付平台调用云器测试环境管理平台的接口将云虚拟机组件依次部署到所述云虚拟机测试环境中。
这里,可以通过云器测试环境管理平台对CVM组件之间的依赖关系进行管理,并根据开发目标任务时所使用的CVM组件的先后顺序,将从步骤S401查询得到的CVM组件进行排序,进而,持续集成平台或持续交付平台可以通过调用云器测试环境管理平台所提供的API接口将所查询到的组件按照顺序依次部署到CVM测试环境中。
在步骤S404中,云器测试环境管理平台获取针对所述目标任务进行编写的测试用例,并执行所述测试用例。
在一些实施例中,在执行步骤S404之前,首先需要针对目标任务编写相应的测试用例。
示例的,假设对于任务A,可以在测试用例仓库中单独创建一个分支,并以任务A的名称命名所单独创建的分支,将针对任务A进行编写的测试用例存放在该分支下,从而实现对测试用例的更加规范的管理。
在另一些实施例中,可以通过分布式版本控制工具(Git)对测试用例进行统一管理。当需要进行测试时,将自动化测试用例从Git代码仓库拉取到CVM测试环境中,并执行自动化测试用例。
在步骤S405中,持续集成平台或持续交付平台确定所述测试用例的通过率。
在步骤S406中,当所述通过率大于通过率阈值时,持续集成平台或持续交付平台通过调用云器测试环境管理平台的接口将所述测试用例进行归档,并销毁所述云虚拟机测试环境。
这里,在所有的测试用例执行完成后,判断测试用例的通过率。如果测试用例的通过率大于事先设置的阈值(例如:90%),表示集成测试通过,则可以将测试用例进行归档,即将测试通过的测试用例合入到测试用例仓库主节点(master)上,以使测试用例更加稳定可靠。同时,可通过调用云器测试环境管理平台的接口将针对该目标任务进行创建的CVM测试环境进行销毁,以便于资源的重复利用。
在另一些实施例中,当测试用例的通过率小于事先设置的阈值时,则表示集成测试不通过。当集成测试不通过时,保留针对该目标任务进行创建的CVM测试环境,即不对CVM测试环境进行销毁。此时,开发人员可以根据测试结果对代码进行修改,修改完成后重新启动集成测试流程。在CVM测试环境创建阶段,可以直接复用上次所创建的CVM测试环境,从而提高了CVM测试环境的利用率。
在一些实施例中,图4示出的步骤S401至步骤S406可以通过持续集成平台或持续交付平台提供的流水线(pipeline)能力来自动执行。
示例的,可以基于持续集成平台或持续交付平台所提供的流水线(pipeline)能力,在流水线中预先配置好查询CVM组件、创建CVM测试环境、部署CVM测试环境、执行测试用例、以及销毁CVM测试环境的完整流程。在触发流水线启动时,根据开发人员输入的目标任务的名称,将按照顺序自动执行上述步骤。当流水线中的当前步骤执行完成后,将自动执行后续的步骤,从而按照预先配置好的流程自动地按照顺序完成查询CVM组件、创建CVM测试环境、部署CVM测试环境、执行测试用例、销毁CVM测试环境的步骤。
下面继续说明本发明实施例提供的集成测试装置255实施为软件模块的示例性结构,在一些实施例中,如图2所示,存储在存储器250的集成测试装置255中的软件模块可以包括:查询模块2551、创建模块2552、注册模块2553、部署模块2554、获取模块2555、确定模块2556和检测模块2557。
所述查询模块2551,用于基于目标任务的名称,查询云虚拟机组件列表;
所述创建模块2552,用于创建以所述目标任务的名称命名的云虚拟机测试环境;
所述注册模块2553,用于将所创建的云虚拟机测试环境注册到持续集成平台或持续交付平台中;
所述部署模块2554,用于根据预先配置好的组件之间的依赖关系,将所查询到的组件依次部署到所述云虚拟机测试环境中;
所述获取模块2555,用于获取针对所述目标任务进行编写的测试用例,并执行所述测试用例;
所述确定模块2556,用于确定所述测试用例的通过率,以及
当所述通过率大于通过率阈值时,将所述测试用例进行归档,并销毁所述云虚拟机测试环境。
在一些实施例中,所述持续集成平台或持续交付平台具有流水线,且所述流水线中预先配置有执行集成测试所对应的流程。
在一些实施例中,所述查询模块2551,还用于基于所述目标任务的名称,在所述云虚拟组件列表中查询执行所述目标任务所需的多个组件;
其中,所述多个组件对应分支的分支名称相同,且与所述目标任务的名称相同。
在一些实施例中,所述装置还包括检测模块2557,用于当检测到存在以所述目标任务的名称命名的云虚拟机测试环境时,直接复用所述云虚拟机测试环境;以及
用于当未检测到以所述目标任务的名称命名的云虚拟机测试环境时,通过创建模块调用云虚拟机管理***接口创建所述云虚拟机测试环境。
在一些实施例中,所述注册模块2553,还用于在注册所述云虚拟机测试环境时,将所述云虚拟机测试环境与所述持续集成平台的服务器进行连接,或与所述持续交付平台的服务器进行连接;
将所述云虚拟机测试环境作为执行机,并在所述云虚拟机测试环境中部署所查询到的云虚拟机组件和执行自动化测试用例脚本。
在一些实施例中,所述创建模块2553,还用于在测试用例仓库中单独创建分支,且以所述目标任务的名称命名所述单独创建的分支;
将针对所述目标任务进行编写的测试用例保存在所述单独创建的分支下。
在一些实施例中,所述获取模块2555,还用于基于所述目标任务的名称,查询所述测试用例仓库,并获取所述测试用例仓库中与所述目标任务的名称相同的分支下的测试用例;
并通过自动化测试用例脚本执行所获取的测试用例。
在一些实施例中,所述确定模块2556,还用于当确定所述测试用例的通过率小于所述通过率阈值时,保留所述云虚拟机测试环境。
需要说明的是,本发明实施例装置的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果,因此不做赘述。对于本发明实施例提供的集成测试装置中未尽的技术细节,可以根据图4-5、8任一附图的说明而理解。
下面,将说明本发明实施例在一个实际的应用场景中的示例性应用。
通常情况下,一个需求功能往往涉及到多个CVM组件的变更,而组件间具有相互依赖关系。因此,在功能开发完成后,需要将涉及到的多个组件串联起来做集成测试。
相关技术在进行多组件相互依赖的CVM集成测试时,一般是通过手动的方式进行,其技术方案具体为:
1)根据需求功能点制定测试计划和测试用例;
2)手动申请一台CVM机器作为测试环境;
3)根据组件之间的相互依赖关系,按照先后顺序依次将CVM组件部署到测试环境中;
4)根据测试计划和测试用例依次进行手动测试。
然而,相关技术提供的上述集成测试方案存在以下缺点:
1)需要手动进行测试环境的管理和维护。测试环境的创建、部署和销毁都需要手动在CVM管理平台上操作完成,比较耗时,且容易出错;
2)组件间的相互依赖管理需要通过手动维护。当需要进行测试环境部署时,需要先理清各个组件之间的相互依赖关系,按照依赖关系依次进行组件的部署。
3)集成测试需要通过手动操作完成。在测试准备阶段,根据需求功能点,设计测试用例;在集成测试阶段,根据测试用例,手动对各个功能点进行测试。
本发明实施例提供了一种集成测试方法,通过云器测试环境管理平台对测试环境进行管理,包括自动创建和销毁测试环境,从而提高测试环境管理的效率。此外,通过云器测试环境管理平台管理CVM组件之间的相互依赖关系,当需要部署测试环境时,查询依赖的组件列表,并依次进行部署。通过自动化的方式完成CVM集成测试,在测试环境中自动执行测试用例,并通过Git统一管理测试用例,且当测试用例稳定后自动进行归档。
参见图6,图6是本发明实施例提供的CVM自动化集成测试流水线的示意图,如图6所示,本发明实施例通过QCI平台将创建测试环境、部署测试环境、执行自动化测试用例和销毁测试环境串联起来,完成CVM自动化集成测试流程。当流水线中前面的步骤执行成功后,将依次执行后面的步骤,从而按照顺序完成CVM测试环境创建、测试环境部署、自动化测试和测试环境销毁的步骤。
参见图7,图7是本发明实施例提供的CVM自动化集成测试的架构示意图,如图7所示,通过云器测试环境管理平台管理CVM测试环境集群,包括创建CVM测试环境、分配CVM测试环境、部署CVM组件等。QCI平台通过调用云器测试环境管理平台提供的API接口,并结合本身的pipeline能力将创建CVM测试环境、部署CVM组件、执行自动化测试用例、以及销毁CVM测试环境串联起来。
参见图8,图8是本发明实施例提供的集成测试方法的一个可选的流程示意图,如图8所示,所述方法包括以下步骤:
步骤S801:输入分支参数,如分支名称。
参见图9,图9是本发明实施例提供的启动CVM自动化集成测试时的界面示意图,如图9所示,在启动QCI pipeline时输入分支名称,QCI pipeline启动后,根据输入的分支名称,调用Git接口查询CVM组件列表。
需要说明的是,为了方便标识组件之间的相互依赖关系,需要对分支的命名进行规范。例如,当开发某个功能或者修复某个BUG时,如果需要改动多个组件,需要在这多个组件上分别拉取分支进行开发,且所拉取分支的分支名称要求保持一致。
步骤S802:判断是否存在以所述分支名称命名的CVM测试环境,当存在时,执行步骤S804;否则,执行步骤S803。
这里,执行步骤S802的目的是为了提高CVM测试环境的利用率,当检测到已存在以所述分支名称命名的CVM测试环境时,可以直接复用该测试环境。
步骤S803:创建以所述分支名称命名的CVM测试环境。
这里,持续集成平台或持续交付平台通过调用云器测试环境管理平台的接口来创建CVM测试环境。
步骤S804:将所创建的CVM测试环境注册到QCI平台中。
这里,CVM测试环境创建好后,云器测试环境管理平台会将创建好的CVM测试环境注册到QCI平台中。在注册所述CVM测试环境时会安装QCI平台的agent,安装agent的目的是将执行机(slave)与QCI平台的服务器进行连接,任务通过agent下发到执行机中执行。如此,QCI平台可以将该CVM测试环境作为执行机,在测试环境中部署CVM组件和执行自动化测试用例脚本。
步骤S805:拉取并部署CVM组件。
这里,云器测试环境管理平台可根据事先配置好的CVM组件之间的相互依赖关系,按照顺序依次部署CVM组件到测试环境中。
步骤S806:执行自动化测试用例。
这里,将自动化测试用例从Git代码仓库拉取到CVM测试环境中,并执行自动化测试用例。为了更加规范地管理自动化测试用例,在开发每个新功能或修复新BUG时,可从测试用例仓库中单独拉取一个分支,分支的命名与CVM组件的分支名称保存一致,并将编写的自动化测试用例放在该分支下。
步骤S807:判断测试用例的通过率是否大于预先设置的阈值如:90%,当满足时,执行步骤S808;否则,执行步骤S810。
步骤S808:将自动化测试用例进行归档。
这里,当测试用例的通过率大于预先设置的阈值时,表示自动化集成测试通过,则可将自动化测试用例合入到测试用例仓库master上。
步骤S809:销毁测试环境。
这里,自动化集成测试通过后,持续集成平台或持续交付平台可调用CVM管理***接口(如云器测试环境管理平台接口)将CVM测试环境进行销毁,以便资源的重复利用。
步骤S810:结束本次集成测试。
当测试用例的通过率小于预先设置的阈值时,表示自动化集成测试不通过,不对CVM测试环境进行销毁。此时,开发人员可以根据测试结果,修改代码后重新启动上述集成测试流程。
本发明实施例提供的集成测试方法具有以下有益效果:
(1)通过云器测试环境管理平台自动创建、销毁测试环境,并自动化地将CVM测试环境注册到QCI平台中,从而提高了CVM测试环境管理的效率;
(2)根据自动化测试结果判断是否需要销毁CVM测试环境,当测试不通过时,不销毁CVM测试环境(留作下次部署时复用);当测试通过时,将CVM测试环境进行销毁,从而提高了测试环境的利用率;
(3)根据云器测试环境管理平台管理CVM组件之间的相互依赖关系,自动化地完成CVM组件的顺序部署,提高了CVM组件部署的效率,同时降低了手动部署时出错的概率;
(4)根据自动化测试结果对通过测试的测试用例进行自动化的归档,使得测试用例更加稳定可靠;
(5)通过QCI平台提供的流水线(pipeline)将获取CVM组件列表、创建CVM测试环境、部署CVM测试环境、执行自动化测试用例、销毁CVM测试环境串联起来,从而提高了CVM集成测试的效率。
本发明实施例提供一种存储有可执行指令的存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本发明实施例提供的集成测试方法,例如,如图4-5、8示出的方法。
在一些实施例中,存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件***中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
综上所述,通过本发明实施例具有以下有益效果:
(1)通过云器测试环境管理平台自动创建、销毁测试环境,并自动化地将CVM测试环境注册到QCI平台中,从而提高了CVM测试环境管理的效率;
(2)根据自动化测试结果判断是否需要销毁CVM测试环境,当测试不通过时,不销毁CVM测试环境(留作下次部署时复用);当测试通过时,将CVM测试环境进行销毁,从而提高了测试环境的利用率;
(3)根据云器测试环境管理平台管理CVM组件之间的相互依赖关系,自动化地完成CVM组件的顺序部署,提高了CVM组件部署的效率,同时降低了手动部署时出错的概率;
(4)根据自动化测试结果对通过测试的测试用例进行自动化的归档,使得测试用例更加稳定可靠;
(5)通过QCI平台提供的流水线(pipeline)将获取CVM组件列表、创建CVM测试环境、部署CVM测试环境、执行自动化测试用例、销毁CVM测试环境串联起来,从而提高了CVM集成测试的效率。
以上所述,仅为本发明的实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。

Claims (10)

1.一种集成测试方法,其特征在于,所述方法包括:
基于目标任务的名称,查询云虚拟机组件列表;
创建以所述目标任务的名称命名的云虚拟机测试环境,并将所创建的云虚拟机测试环境注册到持续集成平台或持续交付平台中;
根据预先配置好的组件之间的依赖关系,将所查询到的组件依次部署到所述云虚拟机测试环境中;
获取针对所述目标任务进行编写的测试用例,并执行所获取的测试用例;
确定所述测试用例的通过率;
当所述通过率大于通过率阈值时,将所述测试用例进行归档,并销毁所述云虚拟机测试环境。
2.根据权利要求1所述的方法,其特征在于,
所述持续集成平台或持续交付平台具有流水线,且所述流水线中预先配置有执行集成测试所对应的流程。
3.根据权利要求1所述的方法,其特征在于,所述基于目标任务的名称,查询云虚拟机组件列表,包括:
基于所述目标任务的名称,在所述云虚拟组件列表中查询执行所述目标任务所需的多个组件;
其中,所述多个组件对应分支的分支名称相同,且与所述目标任务的名称相同。
4.根据权利要求1所述的方法,其特征在于,所述创建以所述目标任务的名称命名的云虚拟机测试环境,包括:
当检测到存在以所述目标任务的名称命名的云虚拟机测试环境时,直接复用所述云虚拟机测试环境;
当未检测到以所述目标任务的名称命名的云虚拟机测试环境时,调用云虚拟机管理***接口创建所述云虚拟机测试环境。
5.根据权利要求1所述的方法,其特征在于,所述将所创建的云虚拟机测试环境注册到所述持续集成平台或持续交付平台中,包括:
当注册所述云虚拟机测试环境时,将所述云虚拟机测试环境与所述持续集成平台的服务器进行连接,或与所述持续交付平台的服务器进行连接;
将所述云虚拟机测试环境作为执行机,并在所述云虚拟机测试环境中部署所查询到的云虚拟机组件和执行自动化测试用例脚本。
6.根据权利要求1所述的方法,其特征在于,获取针对所述目标任务进行编写的自动化测试用例之前,所述方法还包括:
在测试用例仓库中单独创建分支,且以所述目标任务的名称命名所述单独创建的分支;
将针对所述目标任务进行编写的测试用例保存在所述单独创建的分支下。
7.根据权利要求6所述的方法,其特征在于,所述获取针对所述目标任务进行编写的测试用例,并执行所获取的测试用例,包括:
基于所述目标任务的名称,查询所述测试用例仓库,并获取所述测试用例仓库中与所述目标任务的名称相同的分支下的测试用例;
通过自动化测试用例脚本执行所获取的测试用例。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述方法还包括:
当所述测试用例的通过率小于所述通过率阈值时,保留所述云虚拟机测试环境。
9.一种集成测试装置,其特征在于,所述装置包括:
查询模块,用于基于目标任务的名称,查询云虚拟机组件列表;
创建模块,用于创建以所述目标任务的名称命名的云虚拟机测试环境;
注册模块,用于将所创建的云虚拟机测试环境注册到持续集成平台或持续交付平台中;
部署模块,用于根据预先配置好的组件之间的依赖关系,将所查询到的组件依次部署到所述云虚拟机测试环境中;
获取模块,用于获取针对所述目标任务进行编写的测试用例,并执行所获取的测试用例;
确定模块,用于确定所述测试用例的通过率,以及
当所述通过率大于通过率阈值时,将所述测试用例进行归档,并销毁所述云虚拟机测试环境。
10.一种存储介质,其特征在于,存储有可执行指令,用于引起处理器执行时,实现权利要求1-8任一项所述的集成测试方法。
CN201911002638.8A 2019-10-21 2019-10-21 一种集成测试方法、装置及存储介质 Active CN112765007B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911002638.8A CN112765007B (zh) 2019-10-21 2019-10-21 一种集成测试方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911002638.8A CN112765007B (zh) 2019-10-21 2019-10-21 一种集成测试方法、装置及存储介质

Publications (2)

Publication Number Publication Date
CN112765007A true CN112765007A (zh) 2021-05-07
CN112765007B CN112765007B (zh) 2024-06-18

Family

ID=75691724

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911002638.8A Active CN112765007B (zh) 2019-10-21 2019-10-21 一种集成测试方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN112765007B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105446878A (zh) * 2015-11-09 2016-03-30 上海爱数信息技术股份有限公司 一种持续的程序自动化测试方法
CN107704395A (zh) * 2017-10-24 2018-02-16 武大吉奥信息技术有限公司 一种基于Openstack下云平台自动化测试实施方法与***
CN109614321A (zh) * 2018-11-24 2019-04-12 卡斯柯信号有限公司 用于ats软件的持续集成和交付的***
CN109857643A (zh) * 2018-12-29 2019-06-07 北京奇安信科技有限公司 一种虚拟化平台性能自动测试的方法及装置
CN110058920A (zh) * 2019-03-04 2019-07-26 平安科技(深圳)有限公司 虚拟机性能检测方法及装置、电子设备、存储介质
CN110213121A (zh) * 2019-04-28 2019-09-06 山石网科通信技术股份有限公司 虚拟通信产品的测试平台、测试方法和测试装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105446878A (zh) * 2015-11-09 2016-03-30 上海爱数信息技术股份有限公司 一种持续的程序自动化测试方法
CN107704395A (zh) * 2017-10-24 2018-02-16 武大吉奥信息技术有限公司 一种基于Openstack下云平台自动化测试实施方法与***
CN109614321A (zh) * 2018-11-24 2019-04-12 卡斯柯信号有限公司 用于ats软件的持续集成和交付的***
CN109857643A (zh) * 2018-12-29 2019-06-07 北京奇安信科技有限公司 一种虚拟化平台性能自动测试的方法及装置
CN110058920A (zh) * 2019-03-04 2019-07-26 平安科技(深圳)有限公司 虚拟机性能检测方法及装置、电子设备、存储介质
CN110213121A (zh) * 2019-04-28 2019-09-06 山石网科通信技术股份有限公司 虚拟通信产品的测试平台、测试方法和测试装置

Also Published As

Publication number Publication date
CN112765007B (zh) 2024-06-18

Similar Documents

Publication Publication Date Title
US10162650B2 (en) Maintaining deployment pipelines for a production computing service using live pipeline templates
CN109960643B (zh) 一种代码测试方法和装置
US10255058B2 (en) Analyzing deployment pipelines used to update production computing services using a live pipeline template process
US11243516B2 (en) Edge devices and associated networks utilising microservices
US10193961B2 (en) Building deployment pipelines for a production computing service using live pipeline templates
US8127268B2 (en) Server testing framework
US10334058B2 (en) Matching and enforcing deployment pipeline configurations with live pipeline templates
US8533676B2 (en) Single development test environment
US8745585B2 (en) Meta-data for single development test environment
US8352916B2 (en) Facilitating the automated testing of daily builds of software
US20130174124A1 (en) Version numbering in single development and test environment
CN106708740B (zh) 脚本测试方法及装置
CN110908859B (zh) 应用服务处理方法、装置、终端及存储介质
US20150100832A1 (en) Method and system for selecting and executing test scripts
US20170220324A1 (en) Data communication accelerator system
Humble et al. The deployment production line
AU2012201749B2 (en) Single development test environment
US10146674B2 (en) Plugin-based software verification system
CN115220863A (zh) 容器应用的运维方法、装置、计算机设备和存储介质
CN107678969B (zh) 测试版本发布方法、装置、版本控制设备和测试机
CN112765007B (zh) 一种集成测试方法、装置及存储介质
EP2503450A2 (en) Version numbering in single development and test environment
CN111488264A (zh) 一种针对接口性能测试集群的部署调度方法
CN116360800B (zh) 一种代码分支环境的部署方法、装置及电子设备
EP2503451A2 (en) Metadata for single development test environment

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