CN115048313A - 自动化测试方法及装置、计算机可读存储介质及电子设备 - Google Patents

自动化测试方法及装置、计算机可读存储介质及电子设备 Download PDF

Info

Publication number
CN115048313A
CN115048313A CN202210772893.6A CN202210772893A CN115048313A CN 115048313 A CN115048313 A CN 115048313A CN 202210772893 A CN202210772893 A CN 202210772893A CN 115048313 A CN115048313 A CN 115048313A
Authority
CN
China
Prior art keywords
test
container
script
script object
test script
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
CN202210772893.6A
Other languages
English (en)
Other versions
CN115048313B (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.)
China Telecom Corp Ltd
Original Assignee
China Telecom Corp 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 China Telecom Corp Ltd filed Critical China Telecom Corp Ltd
Priority to CN202210772893.6A priority Critical patent/CN115048313B/zh
Publication of CN115048313A publication Critical patent/CN115048313A/zh
Application granted granted Critical
Publication of CN115048313B publication Critical patent/CN115048313B/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/3684Test management for test design, e.g. generating new test cases
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

本公开是关于一种自动化测试方法及装置、计算机可读存储介质及电子设备,涉及计算机技术领域。该方法包括:通过流水线平台对需要执行自动化测试的测试脚本对象进行检测,并在检测到所述测试脚本对象时,将根据测试脚本对象生成的测试执行容器的创建请求发送至所述自动化测试平台;通过自动化测试平台根据所述测试执行容器的创建请求中包括的测试脚本对象,确定测试执行容器;将所述测试执行容器部署到执行所述测试脚本对象的自动化测试所需要的被测试环境中;在所述被测试环境中启动并执行所述测试执行容器,得到与所述测试脚本对象对应的测试执行结果。该方法提高了测试效率。

Description

自动化测试方法及装置、计算机可读存储介质及电子设备
技术领域
本公开实施例涉及计算机技术领域,具体而言,涉及一种自动化测试方法、自动化测试装置、计算机可读存储介质以及电子设备。
背景技术
在一种基于自动化测试平台实现自动化测试的方案中,由于自动化测试平台主要面向测试人员,因此自动化测试平台提供了一体化的测试对象管理解决方案;同时,一些自动化测试平台还会提供快速测试脚本创建,测试执行等功能。
但是,由于该自动化测试平台独立于流水线平台,流水线平台无法使用自动化测试平台所提供的测试资源进行自动化测试,进而使得测试效率较低。
需要说明的是,在上述背景技术部分发明的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的目的在于提供一种自动化测试方法、自动化测试装置、计算机可读存储介质以及电子设备,进而至少在一定程度上克服由于相关技术的限制和缺陷而导致的测试效率较低的问题。
根据本公开的一个方面,提供一种自动化测试方法,包括:
通过流水线平台对需要执行自动化测试的测试脚本对象进行检测,并在检测到所述测试脚本对象时,将根据测试脚本对象生成的测试执行容器的创建请求发送至所述自动化测试平台;
通过自动化测试平台根据所述测试执行容器的创建请求中包括的测试脚本对象,确定测试执行容器;
将所述测试执行容器部署到执行所述测试脚本对象的自动化测试所需要的被测试环境中;
在所述被测试环境中启动并执行所述测试执行容器,得到与所述测试脚本对象对应的测试执行结果。
在本公开的一种示例性实施例中,所述自动化测试方法还包括:
在所述自动化测试平台中创建所述测试脚本对象,并为所述测试脚本对象配置执行自动化测试所需的参数信息;
在所述流水线平台的预设位置指定需要执行自动化测试的测试脚本对象;
其中,所述参数信息包括所述测试脚本对象的原始配置信息以及与所述测试脚本对象对应的测试脚本文件与测试用例之间的关联关系;
所述原始配置信息包括所述测试脚本对象的脚本类型或自动化测试框架类型、所述测试脚本对象的测试脚本文件所在的代码仓库的位置、脚本编译构建参数、脚本执行参数、测试数据以及环境变量中的多种。
在本公开的一种示例性实施例中,根据所述测试脚本对象确定测试执行容器,包括:
根据所述测试脚本对象在预设的制品仓库中查询是否存在所述测试执行容器;
若存在,则从所述制品仓库中获取所述测试执行容器;若不存在,则创建所述测试执行容器。
在本公开的一种示例性实施例中,创建所述测试执行容器,包括:
根据所述测试脚本对象在所述自动化测试平台中查询构造所述测试执行容器所需要的目标配置信息,并根据所述脚本类型确定与所述测试脚本对象对应的可执行镜像;
根据所述目标配置信息以及所述可执行镜像生成容器生成脚本,并执行所述容器生成脚本生成容器镜像;
将所述容器镜像上传至支持所述被测试环境访问的公共制品仓库,并在所述被测试环境下在所述公共制品仓库中执行所述容器镜像,得到所述测试执行容器。
在本公开的一种示例性实施例中,根据所述脚本类型确定与所述测试脚本对象对应的可执行镜像,包括:
根据所述脚本类型判断所述测试脚本对象的测试脚本文件是否需要进行编译;
在确定所述测试脚本文件需要进行编译时,对所述测试脚本文件进行预编译构建,得到与所述测试脚本对象关联的第一可执行镜像;
在确定所述待测试脚本不需要进行编译时,获取与所述测试脚本对象对应的测试框架的第二可执行镜像。
在本公开的一种示例性实施例中,对所述测试脚本文件进行预编译构建,得到与所述测试脚本对象关联的第一可执行镜像,包括:
根据所述测试脚本对象从所述制品仓库中下载与所述测试脚本文件关联的部署编译环境以及编译所述测试脚本文件所需要的依赖软件包,并根据所述测试脚本对象从代码仓库中下载与所述测试脚本文件关联的脚本源代码;
在所述部署编译环境下执行所述依赖软件包以及脚本源代码的编译构建,生成与所述测试脚本对象关联的第一可执行镜像。
在本公开的一种示例性实施例中,所述容器生成脚本中包括执行所述测试脚本对象的自动化测试所需要的目标配置信息、第一可执行镜像或第二可执行镜像;
所述目标配置信息包括执行所述待测试脚本的自动化测试所需要的测试数据、测试脚本文件以及所述流水线平台在上报所述测试执行结果中所需要的认证鉴权信息;
所述认证鉴权信息包括所述流水线平台在上报所述测试执行结果是所需携带的令牌或者对所述测试执行结果进行加密所需要的公钥。
在本公开的一种示例性实施例中,执行所述容器生成脚本生成容器镜像,包括:
将所述容器生成镜像中包括的可执行镜像、依赖软件包、测试数据以及所述流水线平台在上报所述测试执行结果中所需要的认证鉴权信息安装至与所述测试脚本对象关联的指定目录;
根据所述目标配置信息生成容器启动指令,并基于所述容器启动指令以及所述指定目录下的可执行镜像、依赖软件包、测试数据以及所述认证鉴权信息,生成所述容器镜像。
在本公开的一种示例性实施例中,在所述被测试环境下在所述公共制品仓库中执行所述容器镜像,得到所述测试执行容器,包括:
在所述公共制品仓库中配置由多个独立子容器组成的容器组,并将所述容器组挂载至共享磁盘;其中,所述容器组中所述包括独立子容器包括接口测试辅助容器、用户界面测试辅助容器、上传/下载容器、脚本执行容器中的多个;
根据所述脚本类型从挂载在所述共享磁盘下的容器组中选取执行所述容器镜像所需要的目标容器,并在所述被测环境下在所述目标容器中执行所述容器镜像,得到所述测试执行容器。
在本公开的一种示例性实施例中,所述接口测试辅助容器用于执行接口类型的测试脚本对象的容器镜像;
所述用户界面辅助容器用于执行交互界面类型的测试脚本对象的容器镜像;
所述上传/下载容器用于对与测试脚本对象关联的测试脚本文件进行动态下载,或者对封装后的测试执行报告进行实时上传;
所述脚本执行容器用于响应于对所述测试脚本文件的更新操作,对测试脚本文件进行更新。
在本公开的一种示例性实施例中,将所述测试执行容器部署到执行所述测试脚本对象的自动化测试所需要的被测试环境中,包括:
通过所述流水线平台将所述测试执行容器部署到执行所述测试脚本对象的自动化测试所需要的被测试环境中;或者
通过所述自动化测试平台将所述测试执行容器部署到执行所述测试脚本对象的自动化测试所需要的被测试环境中。
在本公开的一种示例性实施例中,在所述被测试环境中启动并执行所述测试执行容器,得到与所述测试脚本对象对应的测试执行结果,包括:
在所述被测试环境中启动并执行所述测试执行容器中包括的可执行镜像,得到与所述测试脚本对象对应的测试执行结果。
在本公开的一种示例性实施例中,所述自动化测试方法还包括:
在所述可执行镜像执行的过程中,间隔预设时间通过所述流水线平台向所述自动化测试平台上报所述可执行镜像的执行状态。
在本公开的一种示例性实施例中,所述自动化测试方法还包括:
通过所述测试执行容器中包括的上报所述测试执行结果中所需要的认证鉴权信息对所述测试执行结果进行标识;
基于预设的上传方式将标识后的测试执行结果上传至所述自动化测试平台;其中,所述预设的上传方式包括增量上传方式或者编码上传方式。
根据本公开的一个方面,提供一种自动化测试装置,包括:
测试脚本对象检测模块,用于通过流水线平台对需要执行自动化测试的测试脚本对象进行检测,并在检测到所述测试脚本对象时,将根据测试脚本对象生成的测试执行容器的创建请求发送至所述自动化测试平台;
测试执行容器确定模块,用于通过自动化测试平台根据所述测试执行容器的创建请求中包括的测试脚本对象,确定测试执行容器;
测试执行容器部署模块,用于将所述测试执行容器部署到执行所述测试脚本对象的自动化测试所需要的被测试环境中;
自动化测试模块,用于在所述被测试环境中启动并执行所述测试执行容器,得到与所述测试脚本对象对应的测试执行结果。
根据本公开的一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的自动化测试方法。
根据本公开的一个方面,提供一种电子设备,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的自动化测试方法。
本公开实施例提供的一种自动化测试方法,一方面,通过流水线平台对需要执行自动化测试的测试脚本对象进行检测,并在检测到测试脚本对象时,将根据测试脚本对象生成的测试执行容器的创建请求发送至自动化测试平台;然后通过自动化测试平台根据测试执行容器的创建请求中包括的测试脚本对象,确定测试执行容器;再将测试执行容器部署到执行测试脚本对象的自动化测试所需要的被测试环境中;最后在被测试环境中启动并执行测试执行容器,得到与测试脚本对象对应的测试执行结果;实现了在流水线中触发测试脚本对象的自动化测试,并直接利用自动化测试平台中的测试执行容器实现自动化测试,解决了现有技术中由于自动化测试平台独立于流水线平台,流水线平台无法使用自动化测试平台所提供的测试资源进行自动化测试,进而使得测试效率较低的问题;再一方面,由于可以通过自动化测试平台提供测试执行容器的构建服务,减少了用户自己维护流水线的复杂操作,同时避免了用户创建大量自定义镜像造成空间浪费。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示意性示出根据本公开示例实施例的一种自动化测试方法的流程图。
图2示意性示出根据本公开示例实施例的一种DevOps平台的结构示例图。
图3示意性示出根据本公开示例实施例的一种自动化测试方法的应用场景的示例图。
图4示意性示出根据本公开示例实施例的一种测试执行容器的生成过程的方法流程图。
图5示意性示出根据本公开示例实施例的一种第一可执行镜像的生成过程的方法流程图。
图6示意性示出根据本公开示例实施例的一种由多容器组成的容器组Pod的示例图。
图7示意性示出根据本公开示例实施例的一种自动化测试装置的框图示例图。
图8示意性示出根据本公开示例实施例的一种用于实现上述自动化测试方法的电子设备。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
执行自动化测试是流水线中的重要步骤。在传统的在流水线上进行自动化测试的方案中,可以通过用户自行编写流水线脚本完成测试脚本的编译、构建、部署、执行的方式来实现;但是,该方法一方面具有较高的使用门槛,另一方面容易导致用户创建大量自定义测试执行镜像,造成资源浪费。
为了解决上述问题,产生了如下自动化测试方案:
一种是,在流水线中直接执行自动化测试。也即,用户可以通过自行编写流水线脚本(Groovy脚本)完成测试脚本的编译、构建、部署、执行;但是,流水线中执行测试的困难在于流水线不是专门面向测试的系统,各种测试对象,例如:用例、脚本、环境变量、测试数据等缺乏统一管理;同时,测试人员可能缺乏流水线的配置权限和相关知识,因此使用起来门槛较高;并且,还容易导致用户创建大量自定义测试执行镜像,造成资源浪费。
另一种是,基于自动化测试平台实现自动化测试。具体的,自动化测试平台主要面向测试人员,提供一体化的测试对象管理解决方案,同时部分自动化测试平台还会提供快速测试脚本创建,测试执行等功能。但是,由于测试平台独立于流水线系统,流水线不能很好的使用自动化测试系统的内容;另外,由于测试平台需要独立管理测试资源池,运维成本会比较高。
再一种是,通过自动化平台触发流水线执行自动化测试:这种方式本质上第一种方式是相同的,都是利用流水线的执行能力实现。但是,虽然自动化平台可以在触发过程中携带一些参数,但是主要的配置工作用户仍然需要在流水线中完成,进而使得测试效率较低。
基于此,本示例实施方式中首先提供了一种自动化测试方法,该方法可以运行于服务器、服务器集群或云服务器等;当然,本领域技术人员也可以根据需求在其他平台运行本公开的方法,本示例性实施例中对此不做特殊限定。具体的,参考图1所示,该自动化测试方法可以包括以下步骤:
步骤S110.通过流水线平台对需要执行自动化测试的测试脚本对象进行检测,并在检测到所述测试脚本对象时,将根据测试脚本对象生成的测试执行容器的创建请求发送至所述自动化测试平台;
步骤S120.通过自动化测试平台根据所述测试执行容器的创建请求中包括的测试脚本对象,确定测试执行容器;
步骤S130.将所述测试执行容器部署到执行所述测试脚本对象的自动化测试所需要的被测试环境中;
步骤S140.在所述被测试环境中启动并执行所述测试执行容器,得到与所述测试脚本对象对应的测试执行结果。
上述自动化测试方法中,一方面,通过流水线平台对需要执行自动化测试的测试脚本对象进行检测,并在检测到测试脚本对象时,将根据测试脚本对象生成的测试执行容器的创建请求发送至自动化测试平台;然后通过自动化测试平台根据测试执行容器的创建请求中包括的测试脚本对象,确定测试执行容器;再将测试执行容器部署到执行测试脚本对象的自动化测试所需要的被测试环境中;最后在被测试环境中启动并执行测试执行容器,得到与测试脚本对象对应的测试执行结果;实现了在流水线中触发测试脚本对象的自动化测试,并直接利用自动化测试平台中的测试执行容器实现自动化测试,解决了现有技术中由于自动化测试平台独立于流水线平台,流水线平台无法使用自动化测试平台所提供的测试资源进行自动化测试,进而使得测试效率较低的问题;再一方面,由于可以通过自动化测试平台提供测试执行容器的构建服务,减少了用户自己维护流水线的复杂操作,同时避免了用户创建大量自定义镜像造成空间浪费。
以下,将结合附图对本公开示例实施例自动化测试方法进行详细的解释以及说明。
首先,对本公开示例实施例的发明目的进行解释以及说明。具体的,本公开示例实施例提出一种在流水线中集成自动化测试能力的方法与系统,重点解决目前DevOps(Development和Operations的组合词,过程、方法与系统的统称)流程中,流水线如何集成自动化测试能力的问题。
其次,对本公开示例实施例中所涉及到的DevOps平台进行解释以及说明。具体的,参考图2所示,DevOps平台中,可以包括流水线平台210以及自动化测试平台220;其中,流水线平台可以是流水线PaaS服务,自动化测试平台可以是自动化测试PaaS服务;PaaS为Platform as a Service,平台即服务。进一步的,流水线平台210与自动化测试平台220通信连接;其中,自动化测试平台可以提供统一的测试资产管理,以及为用户提供自动化测试过程中所需要的测试执行容器的镜像的组装服务;流水线平台中设置有自动化测试流水线集成模块,该自动化测试流水线集成模块可以基于现有流水线(例如可以是Jenkins)的脚本语言(该脚本语言例如可以是Groovy)编写,具体的业务流程改造较为容易。
在具体的应用过程中,自动化测试流水线集成模块可以被配置到流水线过程中的特定步骤来执行;并且,在流水线平台执行到测试步骤时,该自动化测试流水线集成模块可以负责与自动化测试平台进行交互,并执行后续的测试执行容器的镜像的部署、启动、轮询结果等操作。并且,本公开通过设计一套通用的自动化测试PaaS服务系统和流程,实现既保证测试服务平台对测试资源的统一管理,同时通过相关流水线集成模块与流水线实现集成;同时,在具体的进行自动化测试的过程中,用户仅需要简单配置即可在流水线中使用自动化测试能力,可以有效简化用户操作、提升测试效率。
进一步的,参考图3所示,在上述所记载的DevOps平台中,还可以包括流水线平台Web前端301、自动化测试平台Web前端302、代码仓库303、制品仓库304以及软件测试环境;其中,流水线Web前端与流水线平台通信连接,自动化测试平台Web前端与自动化测试平台连接,代码仓库以及制品仓库分别与流水线平台通信连接;自动化测试平台与软件测试环境通信连接,代码仓库用于管理测试脚本源代码,制品仓库用于管理依赖库以及容器镜像;软件测试环境中可以包括测试执行容器305以及被测软件系统306。
最后,对本公开示例实施例所记载的自动化测试方法的前置条件进行解释以及说明。具体的,在执行本公开示例实施例所记载的自动化测试方法之前,首先需要对测试脚本对象进行创建以及配置。具体的,可以通过如下方式实现:首先,在所述自动化测试平台中创建所述测试脚本对象,并为所述测试脚本对象配置执行自动化测试所需的参数信息;其次,在所述流水线平台的预设位置指定需要执行自动化测试的测试脚本对象;其中,所述参数信息包括所述测试脚本对象的原始配置信息以及与所述测试脚本对象对应的测试脚本文件与测试用例之间的关联关系;所述原始配置信息包括所述测试脚本对象的脚本类型或自动化测试框架类型、所述测试脚本对象的测试脚本文件所在的代码仓库的位置、脚本编译构建参数、脚本执行参数、测试数据以及环境变量中的多种。
也即,在具体的应用过程中,首先,测试人员或者运维人员需要在自动化测试平台创建测试脚本对象,并配置测试脚本对象在执行自动化测试过程中所需的各种参数信息;其中,参数信息可以包括原始配置信息以及测试脚本文件与测试用例之间的关联关系;原始配置信息可以包括但不限于:脚本类型(或者自动化测试框架类型)、测试脚本文件所在代码仓库的位置、脚本编译构建参数、脚本执行参数、测试数据以及环境变量等配置信;然后,再在流水线平台中配置自动化测试流水线集成模块,在步骤中添加对应于自动化测试的自动化测试步骤,指定需要执行测试脚本对象(该测试脚本对象也即测试脚本标识ID),并部署该测试脚本对象在流水线中的位置。
以下,结合图2以及图3对图1中所示出的自动化测试方法进行解释以及说明。具体的:
在步骤S110中,通过流水线平台对需要执行自动化测试的测试脚本对象进行检测,并在检测到所述测试脚本对象时,将根据测试脚本对象生成的测试执行容器的创建请求发送至所述自动化测试平台。
具体的,在具体的执行流水线的过程中,当执行到自动化测试流水线集成模块(后文均简称集成模块)时,可以根据预先部署的指定需要执行自动化测试的测试脚本对象来检测当前位置是否存在需要执行自动化测试的脚本对象;当检测到测试脚本对象时,可以生成测试执行容器的床脚请求发送至自动化测试平台,以请求自动化测试平台创建与该测试脚本对象关联的测试执行容器。
此处需要补充说明的是,部署在集成模块中的测试脚本对象,可以以标识符的形式呈现;也即,在自动化测试平台创建完成测试脚本对象时,可以记录该测试脚本对象(也即一串可以唯一识别该测试脚本对象的标识符),并将其部署至集成模块中。
在步骤S120中,通过自动化测试平台根据所述测试执行容器的创建请求中包括的测试脚本对象,确定测试执行容器。
在本示例实施例中,当自动化测试平台接收到测试执行容器的创建请求以后,即可根据该测试执行容器的创建请求中包括的测试脚本对象,确定该测试执行容器。其中,测试执行容器的具体确定过程可以通过如下方式实现:首先,根据所述测试脚本对象在预设的制品仓库中查询是否存在所述测试执行容器;其次,若存在,则从所述制品仓库中获取所述测试执行容器;若不存在,则创建所述测试执行容器。也即,在具体的应用过程中,自动化测试服务平台可以根据测试脚本对象ID查询制品仓库中是否存在现成的测试执行容器;若存在,则可以直接获取该测试执行容器;若不存在,则需要创建(或构建)该测试执行容器。
图4示意性示出根据本公开示例实施例的一种创建测试执行容器的方法流程图。具体的,参考图4所示,测试执行容器的具体创建过程可以包括以下步骤:
步骤S410,根据所述测试脚本对象在所述自动化测试平台中查询构造所述测试执行容器所需要的目标配置信息,并根据所述脚本类型确定与所述测试脚本对象对应的可执行镜像。
在本示例实施例中,首先,根据脚本对象在自动化测试平台中查询构建测试执行容器所需要的目标配置信息;其中,该目标配置信息是预先设置在自动化测试平台中的,也即,在创建测试脚本对象时,即配置了与该测试脚本对象对应的原始配置信息;当需要创建测试执行容器时,即可从该原始配置信息查询对应的目标配置信息;其中,该目标配置信息可以包括测试脚本对象的脚本类型、测试框架类型、环境变量配置以及测试数据等等,当然也可以包括其他需要用到的配置信息,本示例对此不做特殊限制。
其次,当查询到目标配置信息以后,即可根据脚本类型确定与测试脚本对象对应的可执行镜像。具体的,可以通过如下方式实现:首先,根据所述脚本类型判断所述测试脚本对象的测试脚本文件是否需要进行编译;其次,在确定所述测试脚本文件需要进行编译时,对所述测试脚本文件进行预编译构建,得到与所述测试脚本对象关联的第一可执行镜像;或者,在确定所述待测试脚本不需要进行编译时,获取与所述测试脚本对象对应的测试框架的第二可执行镜像。
在一种示例实施例中,对所述测试脚本文件进行预编译构建,得到与所述测试脚本对象关联的第一可执行镜像,具体可以通过如下方式实现:首先,根据所述测试脚本对象从所述制品仓库中下载与所述测试脚本文件关联的部署编译环境以及编译所述测试脚本文件所需要的依赖软件包,并根据所述测试脚本对象从代码仓库中下载与所述测试脚本文件关联的脚本源代码;其次,在所述部署编译环境下执行所述依赖软件包以及脚本源代码的编译构建,生成与所述测试脚本对象关联的第一可执行镜像。
以下,对容器生成脚本以及可执行镜像的具体生成过程进行解释以及说明。具体的,首先,根据脚本类型(也可以是测试框架类型,本示例对此不做特殊限制)判断测试脚本对象的测试脚本文件是否需要进行编译;其中,若脚本类型为Java语言或者Go语言,则确定需要进行编译;若需要编译,则执行预编译构建步骤得到第一可执行镜像;若无需编译,则可以直接根据测试框架的第二可执行镜像。进一步的,在第一可执行镜像生成的过程中,参考图5所示,可以通过如下方式实现:
步骤S501,流水线平台根据测试脚本对象从制品仓库中下载部署编译环境的基础镜像;
步骤S502,流水线平台根据测试脚本对象从制品仓库中下载依赖软件包;
步骤S503,流水线平台根据测试脚本对象从代码仓库中下载脚本源代码;
步骤S504,流水线平台在部署编译环境下执行依赖软件包以及脚本源代码的编译构建,得到第一可执行镜像。
此处需要补充说明的是,通过流水线平台执行第一可执行镜像的构建过程,可以减轻自动化测试平台的负担;同时,在具体的应用过程中,鉴于流水线平台自身所具有的执行能力,通过流水线平台下载部署编译环境、依赖软件包以及脚本源代码,可以提高下载效率,进而达到提高测试效率的目的。
步骤S420,根据所述目标配置信息以及所述可执行镜像生成容器生成脚本,并执行所述容器生成脚本生成容器镜像。
在本示例实施例中,首先,生成容器生成脚本。其中,容器生成脚本的具体生成过程可以通过如下方式实现:一方面,若测试脚本文件需要编译,则根据所述第一可执行镜像以及所述目标配置信息生成所述容器生成脚本;另一方面,若测试脚本文件不需要编译,则根据所述第二可执行镜像以及所述目标配置信息生成所述容器生成脚本;其中,所述容器生成脚本中包括执行所述测试脚本对象的自动化测试所需要的目标配置信息、第一可执行镜像或第二可执行镜像;所述目标配置信息包括执行所述待测试脚本的自动化测试所需要的测试数据、测试脚本文件以及所述流水线平台在上报所述测试执行结果中所需要的认证鉴权信息;所述认证鉴权信息包括所述流水线平台在上报所述测试执行结果是所需携带的令牌或者对所述测试执行结果进行加密所需要的公钥。
具体的,所生成的容器生成脚本例如可以是Dockerfile;并且,该容器生成脚本中定义的信息可以包括:测试执行所需的基础镜像,例如预编译构建生成的执行镜像,或者是已经预先安装了执行脚本对应的测试框架的执行镜像;拷贝的测试所需的相关文件,包括:用于执行的测试脚本,测试数据,该测试数据例如可以是CSV(Comma-Separated Values,逗号分隔值)文件,以及用于上报测试结果的认证鉴权信息,例如:鉴权Token信息,或者用于加密通信的公钥信息等等。
其次,在得到容器生成脚本以后,即可根据容器生成脚本生成容器镜像。其中,容器镜像的生成过程具体可以通过如下方式实现:首先,将所述容器生成镜像中包括的可执行镜像、依赖软件包、测试数据以及所述流水线平台在上报所述测试执行结果中所需要的认证鉴权信息安装至与所述测试脚本对象关联的指定目录;其次,根据所述目标配置信息生成容器启动指令,并基于所述容器启动指令以及所述指定目录下的可执行镜像、依赖软件包、测试数据以及所述认证鉴权信息,生成所述容器镜像。也即,可以安装测试执行脚本的可执行文件(第一可执行镜像或第二可执行镜像)、依赖软件包、测试数据文件、鉴权令牌(Token)以及公钥安装到指定目录,进而根据容器启动指令以及指定目录下的第一可执行镜像或第二可执行镜像、依赖软件包、测试数据以及鉴权令牌(Token),生成容器镜像。
步骤S430,将所述容器镜像上传至支持所述被测试环境访问的公共制品仓库,并在所述被测试环境下在所述公共制品仓库中执行所述容器镜像,得到所述测试执行容器。
在本示例实施例中,当得到容器镜像以后,即可将该容器镜像上传至公共制品仓库;其中,此处所记载的被测试环境,指的是可以支持容器镜像启动的被测试环境,该被测试环境例如可以是K8s,也可以是其他环境,本示例对此不做特殊限制。
进一步的,当容器镜像上传至公共制品仓库以后,即可在所述被测试环境下在所述公共制品仓库中执行所述容器镜像,得到所述测试执行容器。具体的,可以通过如下方式实现:在所述公共制品仓库中配置由多个独立子容器组成的容器组,并将所述容器组挂载至共享磁盘;其中,所述容器组中所述包括独立子容器包括接口测试辅助容器、用户界面(UI,User Interface)测试辅助容器、上传/下载容器、脚本执行容器中的多个;根据所述脚本类型从挂载在所述共享磁盘下的容器组中选取执行所述容器镜像所需要的目标容器,并在所述被测环境下在所述目标容器中执行所述容器镜像,得到所述测试执行容器。其中,所述接口测试辅助容器用于执行接口类型的测试脚本对象的容器镜像;所述用户界面辅助容器用于执行交互界面类型的测试脚本对象的容器镜像;所述上传/下载容器用于对与测试脚本对象关联的测试脚本文件进行动态下载,或者对封装后的测试执行报告进行实时上传;所述脚本执行容器用于响应于对所述测试脚本文件的更新操作,对测试脚本文件进行更新。
具体的,上述生成测试执行容器的过程中,优选的可以采用多容器组成Pod的形式来部署执行容器,具体可以参考图6所示。在具体的生成测试执行容器的过程中,可以将上传功能划分为独立的容器并与脚本执行容器共享挂载的磁盘分区;然后,将固定的功能分拆为独立的容器,此时当用户更新脚本后,只需要更新脚本执行容器,其他容器不需要更新;同时,还可以将执行脚本的上传、测试报告的下载封装为独立的容器,从而实现脚本的动态下载和报告实时上传,避免脚本变动而需要每次更新容器镜像。进一步的,可以增加其他辅助容器用于特定的测试目的,例如可以将接口测试、UI测试框架所使用的辅助功能封装为独立的容器,从而避免频繁更新。通过该方法,可以避免每次脚本更新时需要全量更新容器,另外较小的容器也可以加速容器的组装过程。
在步骤S130中,将所述测试执行容器部署到执行所述测试脚本对象的自动化测试所需要的被测试环境中。
在本示例实施例中,在将测试执行容器部署到执行测试脚本对象的自动化测试所需要的被测试环境中,可以通过如下两种方式实现:一种是,通过所述流水线平台将所述测试执行容器部署到执行所述测试脚本对象的自动化测试所需要的被测试环境中;另一种是,通过所述自动化测试平台将所述测试执行容器部署到执行所述测试脚本对象的自动化测试所需要的被测试环境中。也即,在具体的应用过程中,自动化测试平台在得到测试执行容器以后,自己直接将该测试执行容器部署到所需要的被测试环境中;或者是将该测试执行容器的镜像标识反馈至流水线平台,然后由流水线平台将该测试执行容器部署至所需要的被测试环境中。
在步骤S140中,在所述被测试环境中启动并执行所述测试执行容器,得到与所述测试脚本对象对应的测试执行结果。
在本示例实施例中,在具体的测试过程中,可以在所述被测试环境中启动并执行所述测试执行容器中包括的可执行镜像,得到与所述测试脚本对象对应的测试执行结果。同时,当流水线平台执行完测试脚本对象的自动化测试以后,该测试执行容器可以被制品仓库进行缓存或回收,以便于进行下一次再对该测试脚本对象进行测试时,可以直接调用该测试执行容器进行测试,进而达到提高测试效率的目的。
进一步的,上述测试脚本执行容器在具体的应用过程中,所实现的功能可以包括但不限于:一方面,通过启动脚本文件,实现对测试脚本对象的自动化测试的执行;另一方面,在所述可执行镜像执行的过程中,间隔预设时间通过所述流水线平台向所述自动化测试平台上报所述可执行镜像的执行状态;其中,此处所记载的预设时间,可以根据执行自动化测试所需要的时间来确定,本示例对此不做特殊限定;再一方面,测试结束或意外终止后,还需要通过所述测试执行容器中包括的上报所述测试执行结果中所需要的认证鉴权信息对所述测试执行结果进行标识;进而基于预设的上传方式将标识后的测试执行结果上传至所述自动化测试平台;其中,所述预设的上传方式包括增量上传方式或者编码上传方式;也即,在具体的对测试结束或意外终止后生成的测试结果文件上传的过程中,优选的可以采用增量上传、纠错/压缩编码等措施提高上传效率或者可靠度,可以采用加密等措施保证传输安全;同时,所使用的鉴权Token和公钥等在生成容器镜像时由自动化测试PaaS服务预置到容器中。
至此,已经完成了所有的测试过程,当测试过程结束以后,自动化测试平台可以生成整体的测试报告,并通知流水线集成模块测试结束;同时,测试执行完后,流水线执行后续步骤,比如系统发布上线等等;并且,相应的用户(例如软件开发人员和/或测试人员)可以在测试服平台执行测试报告查看,缺陷提交等操作。
基于上述记载的内容可以得知,本公开示例实施例所记载的自动化测试方法,至少具有如下优势:
一方面,将自动化测试平台与流水线平台进行有机整合,通过自动化测试平台替用户组装生成测试代理镜像,减少了用户的手工操作,提升了测试流程的自动化水平;同时,解决了现有技术中由于采用“自动化测试平台触发流水线执行器”的集成模式,用户通常在自动化平台侧调用流水线,无法在流水线反向使用自动化测试平台能力的问题;
另一方面,本公开示例实施例所记载的自动化测试方法,采用了较为折中的方式,在替用户创建测试代理的同时,将测试代理的部署权利交由用户,避免了需要由测试平台为用户分配和指定执行资源的问题;并且,由自动化测试服务平台替用户组装测试代理,可以基于公共的容器模板,避免了用户创建大量自定义测试执行容器镜像,减少了系统资源的浪费和安全风险,还有利于对测试结果等信息进行有机分析;
再一方面,本公开示例实施例所记载的自动化测试方法,可以采用动态的方式创建流水线,对用户不可见,不会引起资产管理混乱;同时,由于所有基于公共的测试容器执行镜像,所以可以有效的减少用户自己维护流水线的复杂操作的问题,同时还可以避免用户创建大量自定义镜像造成空间浪费的问题;
进一步的,通过在流水线平台中提供集成模块,避免了测试人员使用流水线底层脚本去实现或者操控自动化测试流程;并且,测试人员只需要在流水线中简单配置集成模块所需要执行的测试脚本对象,即可实现在流水线执行过程中调用自动化测试平台能力完成该脚本的测试执行;
更进一步的,公共的测试容器执行镜像中携带了测试结果上传功能模块,自动处理测试完成后的结果上传流程,方便了用户。
在未来的应用场景中,本公开示例实施例所记载的自动化测试方法,可以应用于DevOps研发平台,可用于提升自动化测试服务水平;同时,本公开示例实施例所记载的自动化测试方法,可以统一企业的测试用例描述格式,实现测试用例的统一管理,提升测试用例的复用水平,减少测试用例重复编写,进而达到提升测试自动化水平,加快业务上线的目的。
下述为本公开装置实施例,可以用于执行本公开方法实施例。对于本公开装置实施例中未披露的细节,请参照本公开方法实施例。
具体的,本公开示例实施例还提供了一种自动化测试装置。参考图7所示,该自动化测试装置可以包括测试脚本对象检测模块710、测试执行容器确定模块720、测试执行容器部署模块730以及自动化测试模块740。其中:
测试脚本对象检测模块710,可以用于通过流水线平台对需要执行自动化测试的测试脚本对象进行检测,并在检测到所述测试脚本对象时,将根据测试脚本对象生成的测试执行容器的创建请求发送至所述自动化测试平台;
测试执行容器确定模块720,可以用于通过自动化测试平台根据所述测试执行容器的创建请求中包括的测试脚本对象,确定测试执行容器;
测试执行容器部署模块730,可以用于将所述测试执行容器部署到执行所述测试脚本对象的自动化测试所需要的被测试环境中;
自动化测试模块740,可以用于在所述被测试环境中启动并执行所述测试执行容器,得到与所述测试脚本对象对应的测试执行结果。
在本公开的一种示例性实施例中,所述自动化测试装置还包括:
测试脚本对象创建模块,可以用于在所述自动化测试平台中创建所述测试脚本对象,并为所述测试脚本对象配置执行自动化测试所需的参数信息;
测试脚本对象指定模块,可以用于在所述流水线平台的预设位置指定需要执行自动化测试的测试脚本对象;
其中,所述参数信息包括所述测试脚本对象的原始配置信息以及与所述测试脚本对象对应的测试脚本文件与测试用例之间的关联关系;
所述原始配置信息包括所述测试脚本对象的脚本类型或自动化测试框架类型、所述测试脚本对象的测试脚本文件所在的代码仓库的位置、脚本编译构建参数、脚本执行参数、测试数据以及环境变量中的多种。
在本公开的一种示例性实施例中,根据所述测试脚本对象确定测试执行容器,包括:
根据所述测试脚本对象在预设的制品仓库中查询是否存在所述测试执行容器;
若存在,则从所述制品仓库中获取所述测试执行容器;若不存在,则创建所述测试执行容器。
在本公开的一种示例性实施例中,创建所述测试执行容器,包括:
根据所述测试脚本对象在所述自动化测试平台中查询构造所述测试执行容器所需要的目标配置信息,并根据所述脚本类型确定与所述测试脚本对象对应的可执行镜像;
根据所述目标配置信息以及所述可执行镜像生成容器生成脚本,并执行所述容器生成脚本生成容器镜像;
将所述容器镜像上传至支持所述被测试环境访问的公共制品仓库,并在所述被测试环境下在所述公共制品仓库中执行所述容器镜像,得到所述测试执行容器。
在本公开的一种示例性实施例中,根据所述脚本类型确定与所述测试脚本对象对应的可执行镜像,包括:
根据所述脚本类型判断所述测试脚本对象的测试脚本文件是否需要进行编译;
在确定所述测试脚本文件需要进行编译时,对所述测试脚本文件进行预编译构建,得到与所述测试脚本对象关联的第一可执行镜像;
在确定所述待测试脚本不需要进行编译时,获取与所述测试脚本对象对应的测试框架的第二可执行镜像。
在本公开的一种示例性实施例中,对所述测试脚本文件进行预编译构建,得到与所述测试脚本对象关联的第一可执行镜像,包括:
根据所述测试脚本对象从所述制品仓库中下载与所述测试脚本文件关联的部署编译环境以及编译所述测试脚本文件所需要的依赖软件包,并根据所述测试脚本对象从代码仓库中下载与所述测试脚本文件关联的脚本源代码;
在所述部署编译环境下执行所述依赖软件包以及脚本源代码的编译构建,生成与所述测试脚本对象关联的第一可执行镜像。
在本公开的一种示例性实施例中,所述容器生成脚本中包括执行所述测试脚本对象的自动化测试所需要的目标配置信息、第一可执行镜像或第二可执行镜像;
所述目标配置信息包括执行所述待测试脚本的自动化测试所需要的测试数据、测试脚本文件以及所述流水线平台在上报所述测试执行结果中所需要的认证鉴权信息;
所述认证鉴权信息包括所述流水线平台在上报所述测试执行结果是所需携带的令牌或者对所述测试执行结果进行加密所需要的公钥。
在本公开的一种示例性实施例中,执行所述容器生成脚本生成容器镜像,包括:
将所述容器生成镜像中包括的可执行镜像、依赖软件包、测试数据以及所述流水线平台在上报所述测试执行结果中所需要的认证鉴权信息安装至与所述测试脚本对象关联的指定目录;
根据所述目标配置信息生成容器启动指令,并基于所述容器启动指令以及所述指定目录下的可执行镜像、依赖软件包、测试数据以及所述认证鉴权信息,生成所述容器镜像。
在本公开的一种示例性实施例中,将所述测试执行容器部署到执行所述测试脚本对象的自动化测试所需要的被测试环境中,包括:
通过所述流水线平台将所述测试执行容器部署到执行所述测试脚本对象的自动化测试所需要的被测试环境中;或者
通过所述自动化测试平台将所述测试执行容器部署到执行所述测试脚本对象的自动化测试所需要的被测试环境中。
在本公开的一种示例性实施例中,在所述被测试环境下在所述公共制品仓库中执行所述容器镜像,得到所述测试执行容器,包括:
在所述公共制品仓库中配置由多个独立子容器组成的容器组,并将所述容器组挂载至共享磁盘;其中,所述容器组中所述包括独立子容器包括接口测试辅助容器、用户界面测试辅助容器、上传/下载容器、脚本执行容器中的多个;
根据所述脚本类型从挂载在所述共享磁盘下的容器组中选取执行所述容器镜像所需要的目标容器,并在所述被测环境下在所述目标容器中执行所述容器镜像,得到所述测试执行容器。
在本公开的一种示例性实施例中,所述接口测试辅助容器用于执行接口类型的测试脚本对象的容器镜像;
所述用户界面辅助容器用于执行交互界面类型的测试脚本对象的容器镜像;
所述上传/下载容器用于对与测试脚本对象关联的测试脚本文件进行动态下载,或者对封装后的测试执行报告进行实时上传;
所述脚本执行容器用于响应于对所述测试脚本文件的更新操作,对测试脚本文件进行更新。
在本公开的一种示例性实施例中,在所述被测试环境中启动并执行所述测试执行容器,得到与所述测试脚本对象对应的测试执行结果,包括:
在所述被测试环境中启动并执行所述测试执行容器中包括的可执行镜像,得到与所述测试脚本对象对应的测试执行结果。
在本公开的一种示例性实施例中,所述自动化测试装置还包括:
执行状态上报模块,可以用于在所述可执行镜像执行的过程中,间隔预设时间通过所述流水线平台向所述自动化测试平台上报所述可执行镜像的执行状态。
在本公开的一种示例性实施例中,所述自动化测试装置还包括:
测试执行结果标识模块,可以用于通过所述测试执行容器中包括的上报所述测试执行结果中所需要的认证鉴权信息对所述测试执行结果进行标识;
测试执行结果上报模块,可以用于基于预设的上传方式将标识后的测试执行结果上传至所述自动化测试平台;其中,所述预设的上传方式包括增量上传方式或者编码上传方式。
上述自动化测试装置中各模块的具体细节已经在对应的自动化测试方法中进行了详细的描述,因此此处不再赘述。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。
所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
下面参照图8来描述根据本公开的这种实施方式的电子设备800。图8显示的电子设备800仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图8所示,电子设备800以通用计算设备的形式表现。电子设备800的组件可以包括但不限于:上述至少一个处理单元810、上述至少一个存储单元820、连接不同系统组件(包括存储单元820和处理单元810)的总线830以及显示单元840。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元810执行,使得所述处理单元810执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。例如,所述处理单元810可以执行如图1中所示的步骤S110:通过流水线平台对需要执行自动化测试的测试脚本对象进行检测,并在检测到所述测试脚本对象时,将根据测试脚本对象生成的测试执行容器的创建请求发送至所述自动化测试平台;步骤S120:通过自动化测试平台根据所述测试执行容器的创建请求中包括的测试脚本对象,确定测试执行容器;步骤S130:将所述测试执行容器部署到执行所述测试脚本对象的自动化测试所需要的被测试环境中;步骤S140:在所述被测试环境中启动并执行所述测试执行容器,得到与所述测试脚本对象对应的测试执行结果。
存储单元820可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)8201和/或高速缓存存储单元8202,还可以进一步包括只读存储单元(ROM)8203。
存储单元820还可以包括具有一组(至少一个)程序模块8205的程序/实用工具8204,这样的程序模块8205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线830可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备800也可以与一个或多个外部设备900(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备800交互的设备通信,和/或与使得该电子设备800能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口850进行。并且,电子设备800还可以通过网络适配器860与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器860通过总线830与电子设备800的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备800使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。
根据本公开的实施方式的用于实现上述方法的程序产品,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
此外,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
本领域技术人员在考虑说明书及实践这里发明的发明后,将容易想到本公开的其他实施例。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未发明的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。

Claims (17)

1.一种自动化测试方法,其特征在于,包括:
通过流水线平台对需要执行自动化测试的测试脚本对象进行检测,并在检测到所述测试脚本对象时,将根据测试脚本对象生成的测试执行容器的创建请求发送至所述自动化测试平台;
通过自动化测试平台根据所述测试执行容器的创建请求中包括的测试脚本对象,确定测试执行容器;
将所述测试执行容器部署到执行所述测试脚本对象的自动化测试所需要的被测试环境中;
在所述被测试环境中启动并执行所述测试执行容器,得到与所述测试脚本对象对应的测试执行结果。
2.根据权利要求1所述的自动化测试方法,其特征在于,所述自动化测试方法还包括:
在所述自动化测试平台中创建所述测试脚本对象,并为所述测试脚本对象配置执行自动化测试所需的参数信息;
在所述流水线平台的预设位置指定需要执行自动化测试的测试脚本对象;
其中,所述参数信息包括所述测试脚本对象的原始配置信息以及与所述测试脚本对象对应的测试脚本文件与测试用例之间的关联关系;
所述原始配置信息包括所述测试脚本对象的脚本类型或自动化测试框架类型、所述测试脚本对象的测试脚本文件所在的代码仓库的位置、脚本编译构建参数、脚本执行参数、测试数据以及环境变量中的多种。
3.根据权利要求2所述的自动化测试方法,其特征在于,根据所述测试脚本对象确定测试执行容器,包括:
根据所述测试脚本对象在预设的制品仓库中查询是否存在所述测试执行容器;
若存在,则从所述制品仓库中获取所述测试执行容器;若不存在,则创建所述测试执行容器。
4.根据权利要求3所述的自动化测试方法,其特征在于,创建所述测试执行容器,包括:
根据所述测试脚本对象在所述自动化测试平台中查询构造所述测试执行容器所需要的目标配置信息,并根据所述脚本类型确定与所述测试脚本对象对应的可执行镜像;
根据所述目标配置信息以及所述可执行镜像生成容器生成脚本,并执行所述容器生成脚本生成容器镜像;
将所述容器镜像上传至支持所述被测试环境访问的公共制品仓库,并在所述被测试环境下在所述公共制品仓库中执行所述容器镜像,得到所述测试执行容器。
5.根据权利要求4所述的自动化测试方法,其特征在于,根据所述脚本类型确定与所述测试脚本对象对应的可执行镜像,包括:
根据所述脚本类型判断所述测试脚本对象的测试脚本文件是否需要进行编译;
在确定所述测试脚本文件需要进行编译时,对所述测试脚本文件进行预编译构建,得到与所述测试脚本对象关联的第一可执行镜像;
在确定所述待测试脚本不需要进行编译时,获取与所述测试脚本对象对应的测试框架的第二可执行镜像。
6.根据权利要求5所述的自动化测试方法,其特征在于,对所述测试脚本文件进行预编译构建,得到与所述测试脚本对象关联的第一可执行镜像,包括:
根据所述测试脚本对象从所述制品仓库中下载与所述测试脚本文件关联的部署编译环境以及编译所述测试脚本文件所需要的依赖软件包,并根据所述测试脚本对象从代码仓库中下载与所述测试脚本文件关联的脚本源代码;
在所述部署编译环境下执行所述依赖软件包以及脚本源代码的编译构建,生成与所述测试脚本对象关联的第一可执行镜像。
7.根据权利要求5或6所述的自动化测试方法,其特征在于,所述容器生成脚本中包括执行所述测试脚本对象的自动化测试所需要的目标配置信息、第一可执行镜像或第二可执行镜像;
所述目标配置信息包括执行所述待测试脚本的自动化测试所需要的测试数据、测试脚本文件以及所述流水线平台在上报所述测试执行结果中所需要的认证鉴权信息;
所述认证鉴权信息包括所述流水线平台在上报所述测试执行结果是所需携带的令牌或者对所述测试执行结果进行加密所需要的公钥。
8.根据权利要求4所述的自动化测试方法,其特征在于,执行所述容器生成脚本生成容器镜像,包括:
将所述容器生成镜像中包括的可执行镜像、依赖软件包、测试数据以及所述流水线平台在上报所述测试执行结果中所需要的认证鉴权信息安装至与所述测试脚本对象关联的指定目录;
根据所述目标配置信息生成容器启动指令,并基于所述容器启动指令以及所述指定目录下的可执行镜像、依赖软件包、测试数据以及所述认证鉴权信息,生成所述容器镜像。
9.根据权利要求4所述的自动化测试方法,其特征在于,在所述被测试环境下在所述公共制品仓库中执行所述容器镜像,得到所述测试执行容器,包括:
在所述公共制品仓库中配置由多个独立子容器组成的容器组,并将所述容器组挂载至共享磁盘;其中,所述容器组中所述包括独立子容器包括接口测试辅助容器、用户界面测试辅助容器、上传/下载容器、脚本执行容器中的多个;
根据所述脚本类型从挂载在所述共享磁盘下的容器组中选取执行所述容器镜像所需要的目标容器,并在所述被测环境下在所述目标容器中执行所述容器镜像,得到所述测试执行容器。
10.根据权利要求9所述的自动化测试方法,其特征在于,所述接口测试辅助容器用于执行接口类型的测试脚本对象的容器镜像;
所述用户界面辅助容器用于执行交互界面类型的测试脚本对象的容器镜像;
所述上传/下载容器用于对与测试脚本对象关联的测试脚本文件进行动态下载,或者对封装后的测试执行报告进行实时上传;
所述脚本执行容器用于响应于对所述测试脚本文件的更新操作,对测试脚本文件进行更新。
11.根据权利要求1所述的自动化测试方法,其特征在于,将所述测试执行容器部署到执行所述测试脚本对象的自动化测试所需要的被测试环境中,包括:
通过所述流水线平台将所述测试执行容器部署到执行所述测试脚本对象的自动化测试所需要的被测试环境中;或者
通过所述自动化测试平台将所述测试执行容器部署到执行所述测试脚本对象的自动化测试所需要的被测试环境中。
12.根据权利要求1所述的自动化测试方法,其特征在于,在所述被测试环境中启动并执行所述测试执行容器,得到与所述测试脚本对象对应的测试执行结果,包括:
在所述被测试环境中启动并执行所述测试执行容器中包括的可执行镜像,得到与所述测试脚本对象对应的测试执行结果。
13.根据权利要求12所述的自动化测试方法,其特征在于,所述自动化测试方法还包括:
在所述可执行镜像执行的过程中,间隔预设时间通过所述流水线平台向所述自动化测试平台上报所述可执行镜像的执行状态。
14.根据权利要求12所述的自动化测试方法,其特征在于,所述自动化测试方法还包括:
通过所述测试执行容器中包括的上报所述测试执行结果中所需要的认证鉴权信息对所述测试执行结果进行标识;
基于预设的上传方式将标识后的测试执行结果上传至所述自动化测试平台;其中,所述预设的上传方式包括增量上传方式或者编码上传方式。
15.一种自动化测试装置,其特征在于,包括:
测试脚本对象检测模块,用于通过流水线平台对需要执行自动化测试的测试脚本对象进行检测,并在检测到所述测试脚本对象时,将根据测试脚本对象生成的测试执行容器的创建请求发送至所述自动化测试平台;
测试执行容器确定模块,用于通过自动化测试平台根据所述测试执行容器的创建请求中包括的测试脚本对象,确定测试执行容器;
测试执行容器部署模块,用于将所述测试执行容器部署到执行所述测试脚本对象的自动化测试所需要的被测试环境中;
自动化测试模块,用于在所述被测试环境中启动并执行所述测试执行容器,得到与所述测试脚本对象对应的测试执行结果。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-14任一项所述的自动化测试方法。
17.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1-14任一项所述的自动化测试方法。
CN202210772893.6A 2022-06-30 2022-06-30 自动化测试方法及装置、计算机可读存储介质及电子设备 Active CN115048313B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210772893.6A CN115048313B (zh) 2022-06-30 2022-06-30 自动化测试方法及装置、计算机可读存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210772893.6A CN115048313B (zh) 2022-06-30 2022-06-30 自动化测试方法及装置、计算机可读存储介质及电子设备

Publications (2)

Publication Number Publication Date
CN115048313A true CN115048313A (zh) 2022-09-13
CN115048313B CN115048313B (zh) 2023-12-08

Family

ID=83164398

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210772893.6A Active CN115048313B (zh) 2022-06-30 2022-06-30 自动化测试方法及装置、计算机可读存储介质及电子设备

Country Status (1)

Country Link
CN (1) CN115048313B (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100161632A1 (en) * 2008-12-19 2010-06-24 Microsoft Corporation Shared value resolution with multiple runtime containers
US20170052766A1 (en) * 2015-08-19 2017-02-23 Integrator Software Integrated software development environments, systems, methods, and memory models
CN111666572A (zh) * 2020-06-03 2020-09-15 辽宁北方实验室有限公司 一种自动化渗透测试框架
CN111679965A (zh) * 2020-04-23 2020-09-18 平安国际智慧城市科技股份有限公司 自动化测试方法、装置、计算机设备和存储介质
CN111880903A (zh) * 2020-07-30 2020-11-03 浪潮云信息技术股份公司 一种基于DevOps的云平台虚拟机镜像自动化制作、测试及发布装置和方法
CN112130956A (zh) * 2020-09-09 2020-12-25 中盈优创资讯科技有限公司 一种基于Jenkins的自动化CI/CD流水线方法
US20210042217A1 (en) * 2019-08-09 2021-02-11 International Business Machines Corporation Dynamic Automation of DevOps Pipeline Vulnerability Detecting and Testing
CN112765043A (zh) * 2021-03-16 2021-05-07 上饶市中科院云计算中心大数据研究院 一种基于docker的自动化测试方法和装置
US11163673B1 (en) * 2020-05-01 2021-11-02 Sap Se Enhanced testing by automated reuse of test metrics
CN113849189A (zh) * 2021-09-28 2021-12-28 上海金仕达软件科技有限公司 一种项目热部署方法及装置
CN114064058A (zh) * 2021-11-17 2022-02-18 上海浦东发展银行股份有限公司 一种程序自动化发布方法、装置、电子设备及存储介质

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100161632A1 (en) * 2008-12-19 2010-06-24 Microsoft Corporation Shared value resolution with multiple runtime containers
CN102257474A (zh) * 2008-12-19 2011-11-23 微软公司 多个运行时容器共享的值解析
US20170052766A1 (en) * 2015-08-19 2017-02-23 Integrator Software Integrated software development environments, systems, methods, and memory models
US20210042217A1 (en) * 2019-08-09 2021-02-11 International Business Machines Corporation Dynamic Automation of DevOps Pipeline Vulnerability Detecting and Testing
CN111679965A (zh) * 2020-04-23 2020-09-18 平安国际智慧城市科技股份有限公司 自动化测试方法、装置、计算机设备和存储介质
US11163673B1 (en) * 2020-05-01 2021-11-02 Sap Se Enhanced testing by automated reuse of test metrics
CN111666572A (zh) * 2020-06-03 2020-09-15 辽宁北方实验室有限公司 一种自动化渗透测试框架
CN111880903A (zh) * 2020-07-30 2020-11-03 浪潮云信息技术股份公司 一种基于DevOps的云平台虚拟机镜像自动化制作、测试及发布装置和方法
CN112130956A (zh) * 2020-09-09 2020-12-25 中盈优创资讯科技有限公司 一种基于Jenkins的自动化CI/CD流水线方法
CN112765043A (zh) * 2021-03-16 2021-05-07 上饶市中科院云计算中心大数据研究院 一种基于docker的自动化测试方法和装置
CN113849189A (zh) * 2021-09-28 2021-12-28 上海金仕达软件科技有限公司 一种项目热部署方法及装置
CN114064058A (zh) * 2021-11-17 2022-02-18 上海浦东发展银行股份有限公司 一种程序自动化发布方法、装置、电子设备及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
丘晖;: "基于容器的持续集成和部署方法研究", 广东通信技术, no. 10, pages 66 - 70 *
徐星;李银桥;刘学锋;毛建华;: "企业开发、测试环境快速部署方案的设计与实现", 工业控制计算机, no. 03, pages 15 - 17 *

Also Published As

Publication number Publication date
CN115048313B (zh) 2023-12-08

Similar Documents

Publication Publication Date Title
CN109358858B (zh) 自动化部署方法、装置、介质及电子设备
CN101739285B (zh) 用于全虚拟化计算环境中图形硬件资源使用的系统和方法
CN112685035B (zh) 项目开发方法及装置、计算机可读存储介质、电子设备
CN108733553B (zh) 基于docker的测试装置的配置方法、装置和系统
KR20200115020A (ko) 하이퍼레저 패브릭 네트워크 구축 방법과 컨트롤러 및 저장 매체
CN102279765A (zh) 预编译托存托管代码
CN111767208B (zh) 一种自动测试方法及装置
CN111367534A (zh) 一种基于应用环境的服务编排方法及系统
CN106557878B (zh) 开发项目管理方法及装置
CN113934426A (zh) 软件包处理方法、装置、系统、设备及介质
CN113434158A (zh) 一种大数据组件的自定义管理方法、装置、设备及介质
CN114115838A (zh) 一种基于分布式组件和云平台的数据交互方法及系统
CN115658529A (zh) 用户页面的自动化测试方法以及相关设备
CN113760306A (zh) 安装软件的方法、装置、电子设备及存储介质
WO2023084345A1 (en) Automated deployment of enterprise archive with dependency on application server via script
CN113127009A (zh) 大数据管理平台的自动化部署方法和装置
CN115113972A (zh) 应用改造方法、系统、集群、介质及程序产品
CN111258618A (zh) 文件配置方法、装置、计算机设备和存储介质
CN115756424A (zh) 一种生成mvp代码的方法、装置及设备
CN115048313B (zh) 自动化测试方法及装置、计算机可读存储介质及电子设备
CN112395096A (zh) 远程函数调用的处理方法、装置、电子设备及存储介质
CN115185644A (zh) 基于容器交互式应用的检测方法、系统、设备及存储介质
CN113010189B (zh) 一种数据库安装方法、装置、设备及存储介质
CN115729679A (zh) 任务处理方法及装置、计算机可读存储介质、电子设备
CN109358972B (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