数据开发任务测试方法、装置、计算机设备和存储介质
技术领域
本申请涉及测试技术领域,特别是涉及一种数据开发任务测试方法、装置、计算机设备和存储介质。
背景技术
随着大数据时代的到来,信息技术不断更新,电力企业建立的信息化系统数据日积月累,对数据开发、数据应用、数据运维及探索带来了挑战。目前为满足不同业务部门的数据开发、数据应用、数据运维需求,首先针对各业务系统中使用的数据技术,选择此产品官方推荐的数据开发脚本执行和部署的方法。比如greenplum是使用pgadmin导出greenplum的函数和表的执行脚本,再人为部署到测试和生成环境;hive是人为维护hive的建表语句和脚本,再部署的时候,更改环境变量,将建表语句和脚本提交到测试环境和生成环境执行部署。
然而,线下人为操作去部署测试的方法对运维人员的要求很高,并且如果部署步骤出现了差错,还可能导致数据丢失,数据质量达不到要求等问题的出现,对生产应用的稳定性造成严重的影响。
因此,当前的开发任务测试方法存在效率较低、数据质量得不到保证的问题。
发明内容
基于此,有必要针对上述测试方法存在效率较低、数据质量得不到保证的技术问题,提供一种数据开发任务测试方法、装置、计算机设备和存储介质。
一种数据开发任务测试方法,所述方法包括:
生成任务发布包;所述任务发布包包含有开发数据;
将所述任务发布包部署至测试环境,以及,确定与所述开发数据对应的测试资源;所述测试资源包括:存储资源和计算资源;
调用所述测试资源,对所述开发数据进行测试;
当测试成功时,将所述任务发布包部署至生产环境,完成上线操作。
在其中一个实施例中,所述生成任务发布包之前,还包括:
接收数据开发任务的打包请求;
响应于所述打包请求,获取所述数据开发任务的开发数据;所述开发数据包括建表脚本和开发脚本;
将所述开发数据转换成标准发布文件,并打包生成所述任务发布包。
在其中一个实施例中,所述确定与所述开发数据对应的测试资源,包括:
从所述开发数据中获取测试资源地址;
根据所述测试资源地址从测试环境数据库中获取对应的所述测试资源。
在其中一个实施例中,所述将所述任务发布包部署至测试环境之后,还包括:
对所述任务发布包进行解压,得到解压后开发数据;
将所述解压后开发数据进行封装,生成测试用例;
执行所述测试用例,生成测试报告;所述测试报告包括所述测试用例的执行结果。
在其中一个实施例中,所述将所述任务发布包部署至生产环境,包括:
接收任务上线指令;
响应于所述任务上线指令,调用生产环境部署服务,执行任务发布脚本,完成所述数据开发任务的上线操作。
一种数据开发任务测试装置,所述装置包括:
生成模块,用于生成任务发布包;所述任务发布包包含有开发数据;
确定模块,用于将所述任务发布包部署至测试环境,以及,确定与所述开发数据对应的测试资源;所述测试资源包括:存储资源和计算资源;
测试模块,用于调用所述测试资源,对所述开发数据进行测试;
上线模块,用于当测试成功时,将所述任务发布包部署至生产环境,完成上线操作。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
生成任务发布包;所述任务发布包包含有开发数据;
将所述任务发布包部署至测试环境,以及,确定与所述开发数据对应的测试资源;所述测试资源包括:存储资源和计算资源;
调用所述测试资源,对所述开发数据进行测试;
当测试成功时,将所述任务发布包部署至生产环境,完成上线操作。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
生成任务发布包;所述任务发布包包含有开发数据;
将所述任务发布包部署至测试环境,以及,确定与所述开发数据对应的测试资源;所述测试资源包括:存储资源和计算资源;
调用所述测试资源,对所述开发数据进行测试;
当测试成功时,将所述任务发布包部署至生产环境,完成上线操作。
上述数据开发任务测试方法、装置、计算机设备和存储介质,通过将生成的任务发布包部署至测试环境,确定与开发数据对应的测试资源,并调用该测试资源,对开发数据进行测试,测试成功时,将任务发布包部署至生产环境,进行上线。本申请通过将不同数据开发任务所需的测试资源部署在同一测试环境中,使得可以满足不同数据开发任务的测试需求,实现对数据开发任务的自动化测试和上线,降低对运维人员的要求,若出现运行故障,便于进行回滚操作,查找原因,从而,解决了传统方法中,线下通过人为操作去部署上线,不同的数据开发任务,需部署不同的测试环境,需要运维的数据组件增加,需要大量人力去维护,且容易出错的问题。
附图说明
图1为一个实施例中数据开发任务测试方法的应用场景图;
图2为一个实施例中数据开发任务测试方法的流程示意图;
图3为一个实施例中数据开发任务测试方法的应用流程图;
图4为一个实施例中数据开发任务测试装置的结构框图;
图5为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的数据开发任务测试方法,可以应用于如图1所示的应用环境中。其中,开发服务器102通过网络与测试服务器104进行通信。其中,测试服务器104通过网络与生产服务器106进行通信。其中,服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
其中,开发环境指项目、软件、程序、或系统尚在开发阶段所应用的环境,可部署在专门用于开发的开发服务器102上。
其中,测试环境指与生产环境配置相同,在开发完成后,进行测试所应用的环境,可部署在测试服务器104上。
其中,生产环境指对外提供服务,与用户产生交互的真实环境,可部署在生产服务器106上。
本申请通过虚拟化项目开发所需要的开发环境、测试环境和生产环境三套环境,以及,虚拟化greenplum和hive开发所需要的存储资源和计算资源,使得能够支持greenplum表、hive表和脚本在对应环境的运行,支持测试环境中脚本的部署和自动测试,支持生产环境的部署和执行服务,供调度平台周期执行。
其中,环境虚拟化是通过初始化三套环境的大数据集群和greenplum集群环境变量,将大数据和greenplum底层的存储介质和计算介质,封装成可分配的,安全隔离的租户资源。通过统一的资源和权限管理,封装HDFS和greenplum的文件访问权限、空间使用配置,封装Hive表读写和访问权限;封装计算机的运行CPU和内容使用权限,对外暴露存储资源和计算资源的服务接口。
在一个实施例中,如图2所示,提供了一种数据开发任务测试方法,包括以下步骤:
步骤S202,生成任务发布包;任务发布包包含有开发数据。
其中,任务发布包为数据开发任务测试可表示完成数据开发任务所需要的开发数据的压缩包。
其中,数据开发任务包括:greenplum(一种面向数据仓库应用的关系型数据库)开发任务和hive(基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载)开发任务。
其中,开发数据可包括:建表脚本和开发脚本。
具体实现中,用户在终端显示界面的任务发布功能上选择要进行测试的数据开发任务,点击批量打包,生成打包请求发送给开发服务器102,由开发服务器102根据该打包请求从开发环境的数据库等存储资源中获取该数据开发任务的开发数据。在获取开发数据后,将该开发数据转换成标准发布文件,并压缩,生成任务发布包。实际应用中,当数据开发任务有多种开发数据时,从数据库中获取最新版本的开发数据。
步骤S204,将任务发布包部署至测试环境,以及,确定与开发数据对应的测试资源;测试资源包括:存储资源和计算资源。
其中,测试资源部署在测试环境中,用于对开发数据进行测试。
其中,存储资源用于存储在测试过程中所产生的greenplum数据表、hive数据表等。
其中,计算资源用于提供建表脚本和开发脚本的运行能力。
具体实现中,在生成任务发布包后,由测试服务器104将该任务发布包部署到测试环境中。在测试环境中测试服务器104先解压任务发布包,之后解析标准发布文件,获取标准发布文件中的开发数据。从该开发数据中获取存储资源地址和计算资源地址,根据该测试资源地址确定对应的存储资源和计算资源。
步骤S206,调用测试资源,对开发数据进行测试。
具体实现中,测试服务器104在将标准文件解析后,得到数据开发任务的开发数据,然后调用测试用例生成接口对该开发数据进行封装,得到多个测试用例。其中,该测试用例包括:测试的目标数据源、开发脚本、测试执行日期等。顺序执行多个测试用例,生成测试报告,同时,在执行测试用例时,及时更新数据表,在数据表中进行字段的增加或删除等操作。测试报告包括:测试用例的成功数、失败数、测试执行计划、测试执行日志、测试执行性能指标等。
步骤S208,当测试成功时,将任务发布包部署至生产环境,完成上线操作。
具体实现中,在测试服务器104执行测试用例,生成测试报告后,根据测试用例的执行情况判定是否测试成功。更具体地,当所有测试用例全部执行成功时,判定测试通过,可将任务发布包部署至生产环境所在的生产服务器106上,完成上线;反之,当有至少一个测试用例执行失败时,则判定数据开发任务测试失败。
上述数据开发任务测试方法中,通过将生成的任务发布包部署至测试环境,确定与开发数据对应的测试资源,并调用该测试资源,对开发数据进行测试,测试成功时,将任务发布包部署至生产环境,进行上线。本申请通过将不同数据开发任务所需的测试资源部署在同一测试环境中,使得可以满足不同数据开发任务的测试需求,实现对数据开发任务的自动化测试和上线,降低对运维人员的要求,若出现运行故障,便于进行回滚操作,查找原因,从而,解决了传统方法中,线下通过人为操作去部署上线,不同的数据开发任务,需部署不同的测试环境,需要运维的数据组件增加,需要大量人力去维护,且容易出错的问题。
在一个实施例中,生成任务发布包之前,还包括:接收数据开发任务的打包请求;响应于打包请求,获取数据开发任务的开发数据;开发数据包括建表脚本和开发脚本;将开发数据转换成标准发布文件,并打包生成任务发布包。
其中,标准发布文件可涵盖不同的脚本格式,具体可包括发布包信息、发布脚本的信息和发布测试环境的信息。
具体实现中,统一定义了数据表和任务发布的标准文件格式,当开发服务器102获取到数据开发任务的开发数据后,将该开发数据按照定义好的标准文件格式转换成标准发布文件,之后将该标准发布文件进行压缩,生成任务发布包。其中,开发数据中不同脚本的格式不同。
优选地,在获取greenplum数据表建表语句、hive数据表建表语句、及开发脚本等开发数据后,开发服务器102便可将该开发数据转换成标准发布文件。其中标准发布文件的格式可以为:
"projectId":[],//项目ID
"hiveTable":[],//hive表组
"greenplumTable":[],//greenplum表组
"hiveTask":[],//hiveSQL任务数组
"greenplumTask":[],//greenplumSQL任务数组
"syncTask":[],//同步任务数组
"workFlowParams":[],//工作流参数
"workflowId":
"workflowName"
"workflowShowName".
本实施例中,通过将数据开发任务的开发数据转换成标准发布文件,涵盖不同的脚本文件格式,可提高应用程序的测试速率,解决了传统方法中需要在测试环境或生产环境中部署多种读取模块,以读取不同格式的脚本的繁琐工作,避免出现因脚本格式不同,导致无法读取脚本文件的问题。
在一个实施例中,确定与开发数据对应的测试资源,包括:从开发数据中获取测试资源地址;根据测试资源地址从测试环境数据库中获取对应的测试资源。
具体实现中,数据开发任务的开发数据中携带有存储资源地址和计算资源地址。在测试服务器104将任务发布包解压,得到标准格式的开发数据后,从开发数据中获取存储资源地址和计算资源地址,根据该存储资源地址和计算资源地址,从测试环境数据库中确定与数据开发任务相对应的存储资源和测试资源。
本实施例中,通过先从开发数据中获取测试资源地址,进而根据该测试资源地址从测试环境数据库中获取对应的测试资源,以便于调用该测试资源,对数据开发任务的开发数据进行测试。
在一个实施例中,将任务发布包部署至测试环境之后,还包括:对任务发布包进行解压,得到解压后开发数据;将解压后开发数据进行封装,生成测试用例;执行测试用例,生成测试报告;测试报告包括测试用例的执行结果。
具体实现中,在测试服务器104将任务发布包解压,得到解压后开发数据,该解压后开发数据包括多个脚本文件,之后调用测试用例生成接口,封装该脚本文件,形成多个测试用例。其中,每个测试用例对应一个脚本文件,测试用例包括脚本的目标数据源、脚本和测试执行日期等。最后,测试服务器104调用测试用例执行接口,逐个去执行各个测试用例,进行冒烟测试,并采集每个测试用例的执行结果,包括:测试用例的成功或失败状态、测试执行计划、执行日志、执行性能指标等。由测试服务器104根据该执行结果,生成测试报告,该测试报告包括各个测试用例的执行情况。
本实施例中,通过在测试环境中将开发数据中的脚本文件封装为测试用例,并逐个执行该测试用例,生成测试报告,便于根据该测试报告判断数据开发任务的测试情况,进而判定是否将该任务发布包进行上线。
在一个实施例中,将任务发布包部署至生产环境,包括:接收任务上线指令;响应于任务上线指令,调用生产环境部署服务,执行任务发布脚本,完成数据开发任务的上线操作。
具体实现中,当在测试服务器104完成数据开发任务的测试后,用户可通过测试报告决定是否将任务发布包进行上线,当确定上线,并发起上线指令后,通过流量注册服务将任务发布包传输至生产环境,由生产服务器106解压任务发布包,并解析建表脚本和开发脚本,调用生产环境部署服务,以及,执行发布脚本,最后完成该任务发布包的上线。实际应用中,即为根据hive和greenplum的任务发布包的测试结果,将hive和greenplum的任务发布包进行上线。
本实施例中,根据测试报告的执行结果,当所有测试用例执行成功时,将任务发布包进行上线,通过统一的管理平台实现了数据开发任务的自上线部署无需大量的人力去维护,当程序会数据处理错误时,实现回滚操作,便于查找问题的原因。
为了更好地理解上述方法,以下详细阐述一个本申请数据开发任务测试方法的应用实例。如图3所示,为一个实施例中应用数据开发任务测试方法的实现流程图。其中,待测试项目的开发数据包括:hive开发任务、gp(greenplum)开发任务和数据表。
在开发环境中:
由开发服务器将待测试项目内容转换成标准文件,进行打包,生成任务发布包。其中,该标准文件为涵盖了不同脚本格式,以便于测试环境进行解析。
在测试环境中:
测试环境中部署有不同开发任务所需要的测试资源,即存储资源和计算资源。通过流程注册服务将开发环境中生成的任务发布包通过加密通道传输至测试环境中进行测试,在测试环境中,由测试服务器对任务发布包进行解压,获得开发数据,调用部署接口,将开发数据部署到测试环境数据库。然后调用测试用例生成接口,封装开发数据,形成多个测试用例;调用测试用例执行接口,执行测试用例,采集测试用例的执行结果,生成测试报告。
在生产环境中:
通过流程注册服务将任务发布包传输给生产环境,在生产环境中先解压该任务发布包,并解析发布脚本,进一步调用生产环境部署服务,执行发布脚本,并更新生产环境中的数据表,完成任务发布包的上线操作。
本实施例,通过将不同数据开发任务所需的测试资源部署在同一测试环境中,使得可以满足不同数据开发任务的测试需求,实现对数据开发任务的统一测试和上线,若出现故障,便于进行回滚操作,查找原因,从而,解决了传统方法中,线下通过人为操作去部署上线,对运维人员要求较高,并且若部署步骤出现差错,可能导致数据丢失,数据质量参差不齐等问题,对生产和应用的稳定性和效率造成严重的影响。
应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图4所示,提供了一种数据开发任务测试装置,包括:生成模块402、确定模块404、测试模块406和上线模块408,其中:
生成模块402,用于用于生成任务发布包;任务发布包包含有开发数据;
确定模块404,用于将任务发布包部署至测试环境,以及,确定与开发数据对应的测试资源;测试资源包括:存储资源和计算资源;
测试模块406,用于调用测试资源,对开发数据进行测试;
上线模块408,用于当测试成功时,将任务发布包部署至生产环境,完成上线操作。
在一个实施例中,上述装置还包括:
接收模块,用于接收数据开发任务的打包请求;
获取模块,用于响应于打包请求,获取数据开发任务的开发数据;开发数据包括建表脚本和执行脚本;
打包模块,用于将开发数据转换成标准发布文件,并打包生成任务发布包。
在一个实施例中,上述确定模块404具体用于:从开发数据中获取测试资源地址;根据测试资源地址从测试环境数据库中获取对应的测试资源。
在一个实施例中,上述确定模块404还用于:对任务发布包进行解压,得到解压后开发数据;将解压后开发数据进行封装,生成测试用例;执行测试用例,生成测试报告;测试报告包括测试用例的执行结果。
在一个实施例中,上述上线模块408具体用于:接收任务上线指令;响应于任务上线指令,调用生产环境部署服务,执行任务发布脚本,完成数据开发任务的上线操作。
需要说明的是,本申请的数据开发任务测试装置与本申请的数据开发任务测试方法一一对应,在上述数据开发任务测试方法的实施例阐述的技术特征及其有益效果均适用于数据开发任务测试装置的实施例中,具体内容可参见本申请方法实施例中的叙述,此处不再赘述,特此声明。
此外,上述数据开发任务测试装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据开发任务的测试数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据开发任务测试方法。
本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,处理器执行计算机程序时实现以下步骤:
生成任务发布包;任务发布包包含有开发数据;
将任务发布包部署至测试环境,以及,确定与开发数据对应的测试资源;测试资源包括:存储资源和计算资源;
调用测试资源,对开发数据进行测试;
当测试成功时,将任务发布包部署至生产环境,完成上线操作。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:接收数据开发任务的打包请求;响应于打包请求,获取数据开发任务的开发数据;开发数据包括建表脚本和开发脚本;将开发数据转换成标准发布文件,并打包生成任务发布包。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:从开发数据中获取测试资源地址;根据测试资源地址从测试环境数据库中获取对应的测试资源。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:对任务发布包进行解压,得到解压后开发数据;将解压后开发数据进行封装,生成测试用例;执行测试用例,生成测试报告;测试报告包括测试用例的执行结果。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:接收任务上线指令;响应于任务上线指令,调用生产环境部署服务,执行任务发布脚本,完成数据开发任务的上线操作。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
生成任务发布包;任务发布包包含有开发数据;
将任务发布包部署至测试环境,以及,确定与开发数据对应的测试资源;测试资源包括:存储资源和计算资源;
调用测试资源,对开发数据进行测试;
当测试成功时,将任务发布包部署至生产环境,完成上线操作。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:接收数据开发任务的打包请求;响应于打包请求,获取数据开发任务的开发数据;开发数据包括建表脚本和开发脚本;将开发数据转换成标准发布文件,并打包生成任务发布包。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:从开发数据中获取测试资源地址;根据测试资源地址从测试环境数据库中获取对应的测试资源。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:对任务发布包进行解压,得到解压后开发数据;将解压后开发数据进行封装,生成测试用例;执行测试用例,生成测试报告;测试报告包括测试用例的执行结果。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:接收任务上线指令;响应于任务上线指令,调用生产环境部署服务,执行任务发布脚本,完成数据开发任务的上线操作。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。