CN117591412A - 测试方法、装置、电子设备及存储介质 - Google Patents
测试方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117591412A CN117591412A CN202311588606.7A CN202311588606A CN117591412A CN 117591412 A CN117591412 A CN 117591412A CN 202311588606 A CN202311588606 A CN 202311588606A CN 117591412 A CN117591412 A CN 117591412A
- Authority
- CN
- China
- Prior art keywords
- test
- task
- image
- tested
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 530
- 238000010998 test method Methods 0.000 title claims description 16
- 238000004806 packaging method and process Methods 0.000 claims abstract description 57
- 238000000034 method Methods 0.000 claims abstract description 46
- 238000012856 packing Methods 0.000 claims abstract description 16
- 238000009434 installation Methods 0.000 claims description 10
- 238000013515 script Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 230000003749 cleanliness Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 210000001503 joint Anatomy 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
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/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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/3692—Test management for test results analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- 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
-
- 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)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本申请提供一种测试方法、装置、电子设备及存储介质,该方法应用于teuthology系统,所述teuthology系统包括多个测试节点,所述方法包括:获取待测试任务;基于所述待测试任务获取预生成的测试镜像和预生成的源码编译打包镜像,以及根据所述测试镜像生成测试容器;在所述多个测试节点中确定与所述待测试任务对应的目标测试节点;基于目标测试节点利用所述测试镜像、所述源码编译打包镜像和所述测试容器对所述待测试任务进行测试,得到测试结果。本申请通过在测试过程中,根据需要进行测试的待测试任务生成测试镜像和源码编译打包镜像,并根据测试镜像获取测试容器,从而在多个空闲的测试节点中确定目标测试节点,并根据目标测试节点进行测试,从而提高了测试安全性和测试效率。
Description
技术领域
本申请实施例涉及云计算技术领域,尤其涉及一种测试方法、装置、电子设备及存储介质。
背景技术
随着云计算技术的发展,越来越多的行业使用到了云计算。目前,在自动化测试平台上,teuthology平台由于具有强大的测试能力,使得其受到了广泛的应用。在使用teuthology平台进行测试时,由于测试均在teuthology平台上进行,容易出现应用程序之间出现依赖性和互相干扰的问题,从而导致了测试效率较低的问题。
发明内容
本申请实施例提供一种测试方法、装置、电子设备及存储介质,以解决现有技术中测试效率较低的问题。
为解决上述问题,本申请是这样实现的:
第一方面,本申请实施例提供了一种测试方法,应用于teuthology系统,所述teuthology系统包括多个测试节点,所述方法包括:
获取待测试任务;
基于所述待测试任务获取预生成的测试镜像和预生成的源码编译打包镜像,以及根据所述测试镜像生成测试容器,所述测试镜像用于配置并生成所述待测试任务的测试环境,所述源码编译打包镜像用于打包出测试所需的安装包;
在所述多个测试节点中确定与所述待测试任务对应的目标测试节点,所述目标测试节点为所述多个测试节点中空闲的测试节点;
基于目标测试节点利用所述测试镜像、所述源码编译打包镜像和所述测试容器对所述待测试任务进行测试,得到测试结果。
可选的,所述teuthology系统与gitlab平台对接,所述基于所述待测试任务获取预生成的测试镜像,包括:
基于所述待测试任务确定需要配置的测试参数;
在所述gitlab平台中,基于所述测试参数确定所述测试环境;
根据所述测试环境获取所述预生成的测试镜像。
可选的,所述基于所述待测试任务获取预生成的源码编译打包镜像,包括:
基于所述待测试任务确定需要配置的测试参数;
在所述gitlab平台中,基于所述测试参数确定所述测试源码;
基于所述测试源码获取所述预生成的测试镜像。
可选的,所述在所述多个测试节点中确定与所述待测试任务对应的目标测试节点,包括:
在目标数据库中,根据所述测试源码进行匹配,得到由所述测试源码打包的软件安装包;
根据所述软件安装包确定目标计算资源;
根据所述目标计算资源在所述多个测试节点中确定所述待测试任务对应的测试节点。
可选的,所述根据所述软件安装包确定目标计算资源,包括:
获取多个空闲计算资源;
根据所述软件安装包在所述多个空闲计算资源中进行匹配,确定所述目标计算资源,所述目标计算资源为所述多个空闲计算资源中的一个或多个计算资源。
可选的,所述基于目标测试节点利用所述测试镜像、所述源码编译打包镜像和所述测试容器对所述待测试任务进行测试,得到测试结果,包括:
利用所述测试镜像、所述源码编译打包镜像和所述测试容器对所述目标测试进行锁定,生成测试锁定信息,所述测试锁定信息用于将所述目标测试节点标记为已锁定状态;
在检测到所述测试锁定信息的情况下,基于目标测试节点利用所述测试镜像、所述源码编译打包镜像和所述测试容器对所述待测试任务进行测试,得到测试结果。
可选的,所述基于目标测试节点利用所述测试镜像、所述源码编译打包镜像和所述测试容器对所述待测试任务进行测试,得到测试结果之后,所述方法还包括:
将所述测试结果与历史测试结果进行对比,生成故障结果,所述历史测试结果的任务类型与所述待测试任务的任务类型相同;
在所述故障结果指示所述测试结果出现故障时,生成告警信息并输出所述告警信息。
第二方面,本申请实施例提供了一种测试装置,应用于teuthology系统,所述teuthology系统包括多个测试节点,所述装置包括:
获取模块,用于获取待测试任务;
生成模块,用于基于所述待测试任务获取预生成的测试镜像和预生成的源码编译打包镜像,以及根据所述测试镜像生成测试容器,所述测试镜像用于配置并生成所述待测试任务的测试环境,所述源码编译打包镜像用于打包出测试所需的安装包;
确定模块,用于在所述多个测试节点中确定与所述待测试任务对应的目标测试节点,所述目标测试节点为所述多个测试节点中空闲的测试节点;
测试模块,用于基于目标测试节点利用所述测试镜像、所述源码编译打包镜像和所述测试容器对所述待测试任务进行测试,得到测试结果。
第三方面,本申请实施例还提供一种通信设备,包括:收发机、存储器、处理器及存储在所述存储器上并可在所述处理器上运行的程序;所述处理器,用于读取存储器中的程序实现如前述第一方面所述方法中的步骤。
第四方面,本申请实施例还提供一种可读存储介质,用于存储程序,所述程序被处理器执行时实现如前述第一方面所述方法中的步骤。
本申请提供一种测试方法、装置、电子设备及存储介质,该方法应用于teuthology系统,所述teuthology系统包括多个测试节点,所述方法包括:获取待测试任务;基于所述待测试任务获取预生成的测试镜像和预生成的源码编译打包镜像,以及根据所述测试镜像生成测试容器,所述测试镜像用于配置并生成所述待测试任务的测试环境,所述源码编译打包镜像用于打包出测试所需的安装包;在所述多个测试节点中确定与所述待测试任务对应的目标测试节点,所述目标测试节点为所述多个测试节点中空闲的测试节点;基于目标测试节点利用所述测试镜像、所述源码编译打包镜像和所述测试容器对所述待测试任务进行测试,得到测试结果。本申请通过在测试过程中,根据需要进行测试的待测试任务生成测试镜像和源码编译打包镜像,并根据测试镜像获取测试容器,从而在多个空闲的测试节点中确定目标测试节点,并根据目标测试节点进行测试,从而提高了测试安全性和测试效率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的测试方法的流程示意图;
图2是本申请实施例提供的teuthology系统的结构示意图;
图3是本申请实施例提供的测试装置的结构示意图;
图4是本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。此外,本申请中使用“和/或”表示所连接对象的至少其中之一,例如A和/或B和/或C,表示包含单独A,单独B,单独C,以及A和B都存在,B和C都存在,A和C都存在,以及A、B和C都存在的7种情况。
参见图1,图1是本申请实施例提供的测试方法的流程示意图。图1所示的测试方法可以由teuthology系统执行,所述teuthology系统包括多个测试节点。
如图1所示,测试方法可以包括以下步骤:
步骤101、获取待测试任务。
在本实施例中,待测试任务为用户触发生成,并在代码托管平台中进行测试执行,具体地,teuthology系统如图2所示,其中,Pulpito:一个Web UI模块,用于显示测试结果和状态,显示适配的teuthology平台共有多少资源,即拥有多少台机器(slave)来跑任务,它们的状态如何,当前有哪些任务在跑,成功还是失败,失败的日志是原因是什么,以及它们的日志展示等等。它还提供了REST API,以供其他程序查询测试结果。
Paddles:负责管理teuthology数据的工具,用于管理测试集群,包括添加/删除/修改测试节点和运行测试。pulpito只是一个展示的web界面,真正和数据打交道的是paddles,通常使用的数据库是postgresql。当它接收到正确的HTTP请求时,它会把相应的数据从数据库中取出来,并以一定的格式返回给请求者。
Scheduler:teuthology本身模块之一,用于调度测试任务。相当于是用户使用的入口,用户在该环境下执行命令,让将测试信息上传至paddles,令worker开始执行用户指定的任务。默认情况下scheduler通过创建一个用户名为teuthology的用户,安装依赖,配置teuthology参数来让这个用户作为调度者。
Worker:teuthology本身模块之一,用于管理测试节点,执行用户具体命令。它会监听来自paddles的任务,并分配给可用的节点执行,最终把结果推送给paddles,令测试情况在pulpito中展示。默认情况下worker通过创建一个用户名为teuthworker的用户安装依赖作为worker。scheduler和worker通过paddles进行数据上的指示。
Gitbuilder:一个Ceph包源,放置了不同版本的打包编译好的Ceph包,不同的CommitID生成的软连接指向对应的Ceph包所在的文件夹。Gitbuilder通过http服务令外界可以访问。需要的机器通过指定的ceph.repo将其作为Ceph源,通过指定的CommitID找到所需的安装包。
不同的Ceph源码打包编译方式不相同,因此teuthology并没有做自动化生成对应gitbuilder源的模块,gitbuilder对应版本的Ceph源需要自己编译并生成repodata。
Slave节点(被teuthology所管理的节点):官方将其称为任务资源,本质是linux系统的安装好必要依赖并能访问gitbuilder和依赖包的源的实体机或者虚拟机,所有的teuthology测试在名为ubuntu的用户下进行,因此slave虚机需要有一个名为ubuntu的用户,并且该用户拥有管理员权限。同时,worker需要有免密登录slave节点的能力以便执行各种自动化操作的命令。
代码托管平台:teuthology作为开源项目,默认使用github上的源码仓库,teuthology需要的源码仓库包括以下三个仓库:
Ceph源码:Ceph源码本身已经在打包编译并放在gitbuilder下制成源,但teuthology运行的时候依旧需要拉取Ceph源码,这是因为ceph-qa-suite项目存在于Ceph源码下,要进行测试首先要把Ceph仓库拉下来获取对应分支的ceph-qa-suite下的指定的测试脚本进行测试。另外slave节点在某些测试下也会拉取某些位于ceph代码中/qa/workunits下的脚本,这也要求虚机有访问指定代码托管平台的能力。Ceph源码会从默认源或是配置文件指定源拉取。
ceph-cm-ansible:
ceph-cm-ansible是一个功能强大的Ceph集群管理工具,它可以帮助用户快速地部署、配置和维护Ceph集群,同时还提供了一些监控和扩展工具,方便用户管理Ceph集群。teuthology跑任务时会从默认路径或配置文件中指定的地址拉取源码。
Teuthology:teuthology在运行的时候,还会尝试默认或从指定的路径拉取自身最新版本。
步骤102、基于所述待测试任务获取预生成的测试镜像和预生成的源码编译打包镜像,以及根据所述测试镜像生成测试容器,所述测试镜像用于配置并生成所述待测试任务的测试环境,所述源码编译打包镜像用于打包出测试所需的安装包。
在本实施例中,测试任务正在分发到Gitlab中,并根据待测试任务分别生成测试镜像和源码编译打包镜像。通过测试镜像和源码编译打包镜像对待测试任务进行测试。需要进行说明的是,源码编译打包镜像不会生成测试源码,而是通过测试源码编译打包出测试所需的安装包。其中,测试镜像容器为Docker容器,具体地,Docker容器包含以下优点:环境隔离:Docker容器可以将应用程序及其依赖项打包到一个独立的容器中,确保应用程序与主机之间具有良好的隔离性,避免了应用程序之间的依赖冲突和版本差异等问题。可移植性:Docker容器可以在不同的主机上运行,只需要保证主机上已安装Docker引擎即可,这使得应用程序的部署和迁移变得更加简单和方便。快速部署:Docker容器可以在几秒钟内启动和停止,这大大缩短了应用程序的部署和测试时间,提高了开发和运维的效率。自动化清理:使用docker--run--rm命令运行容器,可以在容器执行完成后自动删除容器,避免了容器的积累和占用主机资源,提高了资源利用率。
对于许多物理机来说,建立用户并直接进行测试操作的行为很可能会污染环境,Docker容器的以上优点不仅便于维持物理节点的整洁,还便于自动化触发各种需要的操作。
步骤103、在所述多个测试节点中确定与所述待测试任务对应的目标测试节点,所述目标测试节点为所述多个测试节点中空闲的测试节点。
在本实施例中,根据测试镜像和源码编译打包镜像在多个测试节点中进行匹配后确定执行待测试任务所对应的目标测试节点,需要进行说明的是,目标测试节点可以为一个或者多个,在本实施例中不作具体限定,可以根据实际情况进行适应性调整。
步骤104、基于目标测试节点利用所述测试镜像、所述源码编译打包镜像和所述测试容器对所述待测试任务进行测试,得到测试结果。
在本实施例中,使用打包好的编译镜像自动生成容器在gitlab的pipeline触发编译指令后自动编译打包对应源码,并将编译打包好的Ceph包在gitbuilder下生成repo源,触发后容器自动删除。使用打包好的teuthology镜像在触发测试命令之后自动生成容器发出测试命令,取代teuthology Scheduler的功能,触发成功后也会自动删除。
本申请提供一种测试方法,该方法应用于teuthology系统,所述teuthology系统包括多个测试节点,所述方法包括:获取待测试任务;基于所述待测试任务获取预生成的测试镜像和预生成的源码编译打包镜像,以及根据所述测试镜像生成测试容器,所述测试镜像用于配置并生成所述待测试任务的测试环境,所述源码编译打包镜像用于生成测试源码;在所述多个测试节点中确定与所述待测试任务对应的目标测试节点,所述目标测试节点为所述多个测试节点中空闲的测试节点;基于目标测试节点利用所述测试镜像、所述源码编译打包镜像和所述测试容器对所述待测试任务进行测试,得到测试结果。本申请通过在测试过程中,根据需要进行测试的待测试任务生成测试镜像和源码编译打包镜像,并根据测试镜像获取测试容器,从而在多个空闲的测试节点中确定目标测试节点,并根据目标测试节点进行测试,从而提高了测试安全性和测试效率。
在一些可行的实施方式中,可选的,所述teuthology系统与gitlab平台对接,所述基于所述待测试任务获取预生成的测试镜像,包括:
基于所述待测试任务确定需要配置的测试参数;
在所述gitlab平台中,基于所述测试参数确定所述测试环境;
根据所述测试环境获取所述预生成的测试镜像。在本实施例中,如图2所示,在gitlab平台中,基于所述测试参数确定所述测试环境并根据所述测试环境生成所述测试镜像。
需要进行说明的是,gitlab平台作为开源的代码托管平台,被众多机构和企业使用,从而用以更新和管理代码,同时它也包含着许多代码的测试能力,在teuthology平台基础上进行了修改,形成了以gitlab为触发核心的自动化teuthology测试平台。
可选的,所述基于所述待测试任务获取预生成的源码编译打包镜像,包括:
基于所述待测试任务确定需要配置的测试参数;
在所述gitlab平台中,基于所述测试参数确定所述测试源码;
基于所述测试源码获取所述预生成的测试镜像。
在本实施例中,在gitlab平台中,基于所述测试参数确定所述测试源码并根据所述测试源码生成所述源码编译打包镜像。
可选的,所述在所述多个测试节点中确定与所述待测试任务对应的目标测试节点,包括:
在目标数据库中,根据所述测试源码进行匹配,得到由所述测试源码打包的软件安装包;
根据所述软件安装包确定目标计算资源;
根据所述目标计算资源在所述多个测试节点中确定所述待测试任务对应的测试节点。
在本实施例中,在根据代码的commit的ID进行匹配,确定软件安装包,并根据确定目标计算资源,从而确定待测试任务对应的测试节点。在与gitlab平台完成对接后,此后的代码提交者在提交commit后,如果想测试本此代码是否没有问题,只需在CI/CD的pipeline界面下,手动点击suite测试按键,便会自动开始对该CommitID的Ceph源码的编译打包,在生成Gitbuilder的repo库之后开始指定的teuthology suite测试。编译打包完成后生成的编译容器和下载的源码会自动删除已节省存储资源;teuthology suite测试成功触发后,接下来的任务会由worker部分执行并指示slave节点进行测试,因此也会自动删除测试容器节约资源。同时,pipeline界面会给用户返回编译打包的Docker容器和teuthologysuite测试的容器执行过程的重定向日志,以便提交者随时查看容器执行情况;还会返回给用户pulpito的url,pulpito可以给用户展示测试过程中的测试信息,测试是否成功pass。
可选的,所述根据所述软件安装包确定目标计算资源,包括:
获取多个空闲计算资源;
根据所述软件安装包在所述多个空闲计算资源中进行匹配,确定所述目标计算资源,所述目标计算资源为所述多个空闲计算资源中的一个或多个计算资源。
在本实施例中,在多个空闲计算资源中进行匹配,确定所述目标计算资源,所述目标计算资源为所述多个空闲计算资源中的一个或多个计算资源,从而可以提高目标计算资源的计算速度。
可选的,所述基于目标测试节点利用所述测试镜像、所述源码编译打包镜像和所述测试容器对所述待测试任务进行测试,得到测试结果,包括:
利用所述测试镜像、所述源码编译打包镜像和所述测试容器对所述目标测试进行锁定,生成测试锁定信息,所述测试锁定信息用于将所述目标测试节点标记为已锁定状态;
在检测到所述测试锁定信息的情况下,基于目标测试节点利用所述测试镜像、所述源码编译打包镜像和所述测试容器对所述待测试任务进行测试,得到测试结果。
需要进行说明的是,对于搭建本专利自动化本地化的teuthology平台的搭建者,除了搭建原始teuthology平台的Pulpito,Paddles,worker,所需要的slave节点,Gitbuilder的网络服务之外,在镜像构建方面,只要先写好对应镜像Dockerfile,构建镜像时安装好需要的依赖并将触发编译打包的脚本或是触发teuthology suite测试的脚本COPY放入镜像之中,通过这设置entrypoint的方式传入参数并自动触发对应脚本。
对于Gitlab的pipeline工具触发打包编译和teuthology测试的方式,在Gitlab端,.gitlab-ci.yml文件用于定义CI/CD pipeline,可以通过在该文件中定义任务(job)来触发pipeline的执行。具体来说,定义任务需要指定任务的名称(name)、任务执行的脚本(script)和任务执行的条件(when)。在.gitlab-ci.yml中增加源码的编译打包任务和Teuhtology的suite任务,让用户可以在pipeline中自主选择是否触发。触发后,会向设置好的服务器端通过curl命令发送HTTP PUT请求,在请求头中指定Content-Type为application/json,请求体中包含了一个JSON格式的数据。这个JSON数据包含了RepoUrl和CommitID,Branch三个字段,分别表示代码仓库的URL和要构建的代码CommitID和分支。作为对接,在teuthology服务器端使用go语言实现了一个RESTful API,用于接收HTTP请求并处理请求。接收命令请求后,根据请求体中的RepoUrl和,CommitID和Branch字段指定的代码仓库,Commit ID和分支,从代码仓库中拉取对应的代码,并进行对应请求的操作。操作成功后,服务器应该会返回操作过程中输出的日志的url以及pulpito的url让操作者及时查看测试过程的输出。
可选的,所述基于目标测试节点利用所述测试镜像、所述源码编译打包镜像和所述测试容器对所述待测试任务进行测试,得到测试结果之后,所述方法还包括:
将所述测试结果与历史测试结果进行对比,生成故障结果,所述历史测试结果的任务类型与所述待测试任务的任务类型相同;
在所述故障结果指示所述测试结果出现故障时,生成告警信息并输出所述告警信息。
在本实施例中,将所述测试结果与历史测试结果进行对比,生成对比结果如果对比结果出现故障的情况,则生成告警信息提示用户。
另外,Teuthololgy本身是面向github仓库,因此Ceph源码,ceph-cm-ansible源码,teuthology默认的更新地址都是github仓库,其中teuthology和ceph-cm-ansible的地址无法通过配置文件改变。并且以上源码在github上都在Ceph这个大project owner下,因此在commit查找方式上teuthology原始方式为以Ceph为project owner构建查找所需Commit的ID值,但本地化的情况下project owner名称为己方设定,原始的teuthology查找CommitID的方式会报错。针对以上问题,为解决teuthology自动化测试平台本身在本地部署方面的问题,本专利主要通过以下方式做好Teuhtology平台的本地化适配工作:
首先针对Teuhtology平台对于非社区源码适配不足的问题,本专利通过更改源码查找相关源码url部分的逻辑增加对gitlab等平台源码的支持,并增加指定包括teuthology、ceph-cm-ansible源码库分支功能,令其不再强制设置为main分支。
针对CommitID查找在非Ceph的project owner下会失败的问题,增加teuthology对于project owner的判断让其可以在配置文件中指定project owner,正常找到指定Commit。
Docker容器有助于自动化配置,本专利使用的teuthology各个模块都使用Docker容器方式配置,因此都可以打包成镜像,在其他节点可以快速部署平台,增加平台部署效率。
本申请通过在测试过程中,根据需要进行测试的待测试任务生成测试镜像和源码编译打包镜像,并根据测试镜像获取测试容器,从而在多个空闲的测试节点中确定目标测试节点,并根据目标测试节点进行测试,从而提高了测试安全性和测试效率。
参阅图3,图3是本申请实施例提供的测试装置的结构图。如图3所示,测试装置300包括:
获取模块310,用于获取待测试任务;
生成模块320,用于基于所述待测试任务获取预生成的测试镜像和预生成的源码编译打包镜像,以及根据所述测试镜像生成测试容器,所述测试镜像用于配置并生成所述待测试任务的测试环境,所述源码编译打包镜像用于打包出测试所需的安装包;
确定模块330,用于在所述多个测试节点中确定与所述待测试任务对应的目标测试节点,所述目标测试节点为所述多个测试节点中空闲的测试节点;
测试模块340,用于基于目标测试节点利用所述测试镜像、所述源码编译打包镜像和所述测试容器对所述待测试任务进行测试,得到测试结果。
可选的,所述teuthology系统与gitlab平台对接,生成模块320包括:
第一确定子模块,用于基于所述待测试任务确定需要配置的测试参数;
第二确定子模块,用于在所述gitlab平台中,基于所述测试参数确定所述测试环境;
第一生成子模块,用于根据所述测试环境获取所述预生成的测试镜像。
可选的,生成模块320包括:
第三确定子模块,用于基于所述待测试任务确定需要配置的测试参数;
第四确定子模块,用于在所述gitlab平台中,基于所述测试参数确定所述测试源码;
第二生成子模块,用于基于所述测试源码获取所述预生成的测试镜像。
可选的,确定模块330包括:
匹配子模块,用于在目标数据库中,根据所述测试源码进行匹配,得到由所述测试源码打包的软件安装包;
第五确定子模块,用于根据所述软件安装包确定目标计算资源;
第六确定子模块,用于根据所述目标计算资源和所述测试镜像在所述多个测试节点中确定所述待测试任务对应的测试节点。
可选的,第五确定子模块包括:
获取单元,用于获取多个空闲计算资源;
匹配单元,用于根据所述软件安装包在所述多个空闲计算资源中进行匹配,确定所述目标计算资源,所述目标计算资源为所述多个空闲计算资源中的一个或多个计算资源。
可选的,测试模块340包括:
第七确定子模块,用于利用所述测试镜像、所述源码编译打包镜像和所述测试容器对所述目标测试进行锁定,生成测试锁定信息,所述测试锁定信息用于将所述目标测试节点标记为已锁定状态;
测试子模块,用于在检测到所述测试锁定信息的情况下,基于目标测试节点利用所述测试镜像、所述源码编译打包镜像和所述测试容器对所述待测试任务进行测试,得到测试结果。
可选的,还包括:
对比模块,用于将所述测试结果与历史测试结果进行对比,生成故障结果,所述历史测试结果的任务类型与所述待测试任务的任务类型相同;
输出模块,用于在所述故障结果指示所述测试结果出现故障时,生成告警信息并输出所述告警信息。
本申请通过在测试过程中,根据需要进行测试的待测试任务生成测试镜像和源码编译打包镜像,并根据测试镜像获取测试容器,从而在多个空闲的测试节点中确定目标测试节点,并根据目标测试节点进行测试,从而提高了测试安全性和测试效率。
本申请实施例还提供一种电子设备。请参见图4,电子设备可以包括处理器401、存储器402及存储在存储器402上并可在处理器401上运行的程序4021。
在通信设备为终端的情况下,程序4021被处理器401执行时可实现图1对应的方法实施例中的任意步骤:
获取待测试任务;
基于所述待测试任务获取预生成的测试镜像和预生成的源码编译打包镜像,以及根据所述测试镜像生成测试容器,所述测试镜像用于配置并生成所述待测试任务的测试环境,所述源码编译打包镜像用于打包出测试所需的安装包;
在所述多个测试节点中确定与所述待测试任务对应的目标测试节点,所述目标测试节点为所述多个测试节点中空闲的测试节点;
基于目标测试节点利用所述测试镜像、所述源码编译打包镜像和所述测试容器对所述待测试任务进行测试,得到测试结果。
可选的,所述teuthology系统与gitlab平台对接,所述基于所述待测试任务获取预生成的测试镜像,包括:
基于所述待测试任务确定需要配置的测试参数;
在所述gitlab平台中,基于所述测试参数确定所述测试环境;
根据所述测试环境获取所述预生成的测试镜像。
可选的,所述基于所述待测试任务获取预生成的源码编译打包镜像,包括:
基于所述待测试任务确定需要配置的测试参数;
在所述gitlab平台中,基于所述测试参数确定所述测试源码;
基于所述测试源码获取所述预生成的测试镜像。
可选的,所述在所述多个测试节点中确定与所述待测试任务对应的目标测试节点,包括:
在目标数据库中,根据所述测试源码进行匹配,得到由所述测试源码打包的软件安装包;
根据所述软件安装包确定目标计算资源;
根据所述目标计算资源在所述多个测试节点中确定所述待测试任务对应的测试节点。
可选的,所述根据所述软件安装包确定目标计算资源,包括:
获取多个空闲计算资源;
根据所述软件安装包在所述多个空闲计算资源中进行匹配,确定所述目标计算资源,所述目标计算资源为所述多个空闲计算资源中的一个或多个计算资源。
可选的,所述基于目标测试节点利用所述测试镜像、所述源码编译打包镜像和所述测试容器对所述待测试任务进行测试,得到测试结果,包括:
利用所述测试镜像、所述源码编译打包镜像和所述测试容器对所述目标测试进行锁定,生成测试锁定信息,所述测试锁定信息用于将所述目标测试节点标记为已锁定状态;
在检测到所述测试锁定信息的情况下,基于目标测试节点利用所述测试镜像、所述源码编译打包镜像和所述测试容器对所述待测试任务进行测试,得到测试结果。
可选的,所述基于目标测试节点利用所述测试镜像、所述源码编译打包镜像和所述测试容器对所述待测试任务进行测试,得到测试结果之后,所述方法还包括:
将所述测试结果与历史测试结果进行对比,生成故障结果,所述历史测试结果的任务类型与所述待测试任务的任务类型相同;
在所述故障结果指示所述测试结果出现故障时,生成告警信息并输出所述告警信息。
本申请通过在测试过程中,根据需要进行测试的待测试任务生成测试镜像和源码编译打包镜像,并根据测试镜像获取测试容器,从而在多个空闲的测试节点中确定目标测试节点,并根据目标测试节点进行测试,从而提高了测试安全性和测试效率。
本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述测试方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
Claims (10)
1.一种测试方法,其特征在于,应用于teuthology系统,所述teuthology系统包括多个测试节点,所述方法包括:
获取待测试任务;
基于所述待测试任务获取预生成的测试镜像和预生成的源码编译打包镜像,以及根据源码编译打包镜像所述测试镜像生成测试容器,所述测试镜像用于配置并生成所述待测试任务的测试环境,所述源码编译打包镜像用于打包出测试所需的安装包;
在所述多个测试节点中确定与所述待测试任务对应的目标测试节点,所述目标测试节点为所述多个测试节点中空闲的测试节点;
基于目标测试节点利用所述测试镜像、所述源码编译打包镜像和所述测试容器对所述待测试任务进行测试,得到测试结果。
2.根据权利要求1所述的方法,其特征在于,所述teuthology系统与gitlab平台对接,所述基于所述待测试任务获取预生成的测试镜像,包括:
基于所述待测试任务确定需要配置的测试参数;
在所述gitlab平台中,基于所述测试参数确定所述测试环境;
根据所述测试环境获取所述预生成的测试镜像。
3.根据权利要求2所述的方法,其特征在于,所述基于所述待测试任务获取预生成的源码编译打包镜像,包括:
基于所述待测试任务确定需要配置的测试参数;
在所述gitlab平台中,基于所述测试参数确定测试源码;
基于所述测试源码获取所述预生成的测试镜像源码编译打包镜像。
4.根据权利要求3所述的方法,其特征在于,所述在所述多个测试节点中确定与所述待测试任务对应的目标测试节点,包括:
在目标数据库中,根据所述测试源码进行匹配,得到由所述测试源码打包的软件安装包;
根据所述软件安装包确定目标计算资源;
根据所述目标计算资源在所述多个测试节点中确定所述待测试任务对应的测试节点。
5.根据权利要求4所述的方法,其特征在于,所述根据所述软件安装包确定目标计算资源,包括:
获取多个空闲计算资源;
根据所述软件安装包在所述多个空闲计算资源中进行匹配,确定所述目标计算资源,所述目标计算资源为所述多个空闲计算资源中的一个或多个计算资源。
6.根据权利要求1所述的方法,其特征在于,所述基于目标测试节点利用所述测试镜像、所述源码编译打包镜像和所述测试容器对所述待测试任务进行测试,得到测试结果,包括:
利用所述测试镜像、所述源码编译打包镜像和所述测试容器对所述目标测试进行锁定,生成测试锁定信息,所述测试锁定信息用于将所述目标测试节点标记为已锁定状态;
在检测到所述测试锁定信息的情况下,基于目标测试节点利用所述测试镜像、所述源码编译打包镜像和所述测试容器对所述待测试任务进行测试,得到测试结果。
7.根据权利要求1所述的方法,其特征在于,所述基于目标测试节点利用所述测试镜像、所述源码编译打包镜像和所述测试容器对所述待测试任务进行测试,得到测试结果之后,所述方法还包括:
将所述测试结果与历史测试结果进行对比,生成故障结果,所述历史测试结果的任务类型与所述待测试任务的任务类型相同;
在所述故障结果指示所述测试结果出现故障时,生成告警信息并输出所述告警信息。
8.一种测试装置,其特征在于,应用于teuthology系统,所述teuthology系统包括多个测试节点,所述装置包括:
获取模块,用于获取待测试任务;
生成模块,用于基于所述待测试任务获取预生成的测试镜像和预生成的源码编译打包镜像,以及根据所述测试镜像生成测试容器,所述测试镜像用于配置并生成所述待测试任务的测试环境,所述源码编译打包镜像用于打包出测试所需的安装包;
确定模块,用于在所述多个测试节点中确定与所述待测试任务对应的目标测试节点,所述目标测试节点为所述多个测试节点中空闲的测试节点;
测试模块,用于基于目标测试节点利用所述测试镜像、所述源码编译打包镜像和所述测试容器对所述待测试任务进行测试,得到测试结果。
9.一种电子设备,包括:收发机、存储器、处理器及存储在所述存储器上并可在所述处理器上运行的程序;其特征在于,所述处理器,用于读取存储器中的程序实现如权利要求1至7中任一项所述的测试方法中的步骤。
10.一种可读存储介质,用于存储程序,其特征在于,所述程序被处理器执行时实现如权利要求1至7中任一项所述的测试方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311588606.7A CN117591412A (zh) | 2023-11-27 | 2023-11-27 | 测试方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311588606.7A CN117591412A (zh) | 2023-11-27 | 2023-11-27 | 测试方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117591412A true CN117591412A (zh) | 2024-02-23 |
Family
ID=89921508
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311588606.7A Pending CN117591412A (zh) | 2023-11-27 | 2023-11-27 | 测试方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117591412A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118331892A (zh) * | 2024-06-17 | 2024-07-12 | 卡斯柯信号(北京)有限公司 | 一种流水线式的软件测试方法及装置 |
-
2023
- 2023-11-27 CN CN202311588606.7A patent/CN117591412A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118331892A (zh) * | 2024-06-17 | 2024-07-12 | 卡斯柯信号(北京)有限公司 | 一种流水线式的软件测试方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109814879B (zh) | 自动化ci/cd项目部署方法、存储介质 | |
CN111142879B (zh) | 软件集成发布方法及自动运维平台 | |
CN106559438B (zh) | 一种基于目标网络平台的程序上传方法和装置 | |
US9311064B1 (en) | Systems and methods for automated centralized build/merge management | |
CN108733553B (zh) | 基于docker的测试装置的配置方法、装置和系统 | |
CN103336688A (zh) | 面向云计算软件研发过程中的软件集成方法及系统 | |
CN112527349A (zh) | 动态部署策略优化及持续部署业务保障系统 | |
CN108984179B (zh) | 一种Linux下编译处理方法及装置 | |
CN117591412A (zh) | 测试方法、装置、电子设备及存储介质 | |
CN111651352B (zh) | 一种仓库代码的合并方法及装置 | |
CN110908670A (zh) | 一种自动发布服务的方法及装置 | |
CN114297056A (zh) | 一种自动化测试方法及系统 | |
CN113568604B (zh) | 风控策略的更新方法、装置及计算机可读存储介质 | |
CN111680302A (zh) | 第三方组件漏洞扫描方法及装置 | |
CN115220863A (zh) | 容器应用的运维方法、装置、计算机设备和存储介质 | |
CN117539459B (zh) | 一种api接口配置方法、系统及设备 | |
CN115357258B (zh) | 应用的部署方法、装置、存储介质及电子装置 | |
CN115840617A (zh) | 一种调试方法、系统及相关装置 | |
CN112231231B (zh) | 云端服务的调试方法、系统及装置 | |
CN115599399A (zh) | 一种应用程序部署方法、装置及存储介质 | |
Deshpande et al. | Test automation and continuous integration using Jenkins for smart card OS | |
CN114428710B (zh) | 队列状态校验方法、装置及电子设备 | |
CN115373696B (zh) | 软件资源生成的低代码配置方法、系统、设备及存储介质 | |
US20240086157A1 (en) | Visual generation of software deployment pipelines using recommendations of development and operations blueprints | |
Gorsky | Continuous integration, delivery, and deployment for scientific workflows in Orlando Tools. |
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 |