旁路测试方法、装置、电子设备及可读存储介质与流程

1.本发明涉及离线测试领域,尤其涉及一种旁路测试方法、装置、电子设备及可读存储介质。
背景技术:
2.随着数字经济引发的新一轮市场变革,大数据存储、计算能力逐步向云服务拓展。对于由传统模式升迁为云服务模式,或者在不同云服务模式间进行业务迁移的厂商来说,需要解决任务迁移前后的数据一致性、版本兼容性等问题。
3.目前,在大数据离线领域,业务上云后,针对大数据离线计算引擎任务验证的方式存在场景单一、验证效果不佳、可能污染数据等问题。
技术实现要素:
4.基于上述技术问题,本技术提供一种旁路测试方法、装置、电子设备及可读存储介质,能够解决大数据离线计算引擎任务验证的方式场景单一、验证效果不佳、可能污染数据的问题。
5.为解决上述技术问题,本发明采用如下技术方案:
6.第一方面,本技术提供一种旁路测试方法,包括:
7.获取待测试的目标任务,对目标任务进行解析处理,得到目标任务的第一输出结果的存储空间。将目标任务的第一输出结果的存储空间变更为预设的存储空间。在云端处理目标任务,得到第一输出结果,将第一输出结果存储至预设的存储空间。根据第一输出结果和目标任务的第二输出结果进行数据校验,得到旁路测试结果,第二输出结果是目标任务在迁移至云端之前输出的。
8.一些实施方式中,将目标任务的第一输出结果的存储空间变更为预设的存储空间,包括:在第一模块拦截目标任务。根据第一输出结果的类型将第一输出结果的存储空间变更为预设的存储空间。
9.一些实施方式中,第一输出结果的类型为表,第一模块为结构化查询语言(structured query language,sql)总接口模块。
10.根据第一输出结果的类型将第一输出结果的存储空间变更为预设的存储空间,包括:在sql总接口模块拦截目标任务。将第一输出结果的写入表更换为测试表。
11.一些实施方式中,第一输出结果的类型为路径,第一模块为分布式文件系统(hadoop distributed file system,hdfs)写入模块。
12.根据第一输出结果的类型将第一输出结果的存储空间变更为预设的存储空间,包括:在hdfs写入模块拦截目标任务。将第一输出结果的输出路径更换为测试路径。
13.一些实施方式中,对目标任务进行解析处理,包括:根据预设规则对目标任务的sql进行分类和拆解,分类包括写操作或读操作。对每一段拆解后的sql进行分析,每一段拆解后的sql的输出结果的集合作为第一输出结果。
14.一些实施方式中,在对每一段拆解后的sql进行分析之后,还包括:对目标任务进行身份验证,当验证通过时,放行目标任务的读写权限。
15.一些实施方式中,根据第一输出结果和目标任务的第二输出结果进行数据校验,得到旁路测试结果,包括:当第一输出结果和第二输出结果的类型为表时,比对第一输出结果和第二输出结果的数据一致性,输出旁路测试结果。
16.一些实施方式中,根据第一输出结果和目标任务的第二输出结果进行数据校验,得到旁路测试结果,包括:当第一输出结果和第二输出结果的类型为路径时,将第一输出结果指示的数据映射为第一验证表,将第二输出结果指示的数据映射为第二验证表。比对第一验证表和第二验证表的数据一致性,输出旁路测试结果。
17.一些实施方式中,该方法还包括:当旁路测试结果为异常时,对不一致的数据进行分析,得到异常分析结果。展示异常分析结果。
18.在第一方面中,将目标任务解析后在云端处理,并将目标任务的第一输出结果的存储空间变更为预设的存储空间,然后将输出结果存储在预设的存储空间。由于仅对目标任务输出结果的存储位置进行变更,因此,无需针对不同的计算引擎进行单独编程,可以应用于多种场景中。同时,进行验证时是根据目标任务上云前后的输出结果进行验证,其准确性更好。最后,验证结果存储在单独的存储空间中,可以有效对生成和测试进行隔离,防止污染线上数据。
19.第二方面,本技术提供一种旁路测试装置,包括:
20.处理模块,用于获取待测试的目标任务,对所述目标任务进行解析处理,得到所述目标任务的第一输出结果的存储空间;变更模块,用于将所述目标任务的第一输出结果的存储空间变更为预设的存储空间;所述处理模块还用于在云端处理所述目标任务,得到所述第一输出结果,将所述第一输出结果存储至所述预设的存储空间;校验模块,用于根据所述第一输出结果和目标任务的第二输出结果进行数据校验,得到旁路测试结果,所述第二输出结果是所述目标任务在迁移至所述云端之前输出的。
21.一些实施方式中,变更模块,具体用于在第一模块拦截目标任务。根据第一输出结果的类型将第一输出结果的存储空间变更为预设的存储空间。
22.一些实施方式中,第一输出结果的类型为表,第一模块为sql总接口模块。
23.变更模块,具体用于在sql总接口模块拦截目标任务。将第一输出结果的写入表更换为测试表。
24.一些实施方式中,第一输出结果的类型为路径,第一模块为hdfs写入模块。
25.变更模块,具体用于在hdfs写入模块拦截目标任务。将第一输出结果的输出路径更换为测试路径。
26.一些实施方式中,处理模块,具体用于根据预设规则对目标任务的sql进行分类和拆解,分类包括写操作或读操作。对每一段拆解后的sql进行分析,每一段拆解后的sql的输出结果的集合作为第一输出结果。
27.一些实施方式中,处理模块,还用于对目标任务进行身份验证,当验证通过时,放行目标任务的读写权限。
28.一些实施方式中,校验模块,具体用于当第一输出结果和第二输出结果的类型为表时,比对第一输出结果和第二输出结果的数据一致性,输出旁路测试结果。
29.一些实施方式中,校验模块,具体用于当第一输出结果和第二输出结果的类型为路径时,将第一输出结果指示的数据映射为第一验证表,将第二输出结果指示的数据映射为第二验证表。比对第一验证表和第二验证表的数据一致性,输出旁路测试结果。
30.一些实施方式中,校验模块,还用于当旁路测试结果为异常时,对不一致的数据进行分析,得到异常分析结果。展示异常分析结果。
31.第三方面,本技术提供一种电子设备,该电子设备包括处理器和存储器;存储器中存储有处理器可执行的指令;处理器被配置为执行指令时,使得电子设备实现上述第一方面的方法。
32.第四方面,本技术提供一种可读存储介质,该可读存储介质存储有计算机程序;当计算机程序在电子设备中运行时,使得电子设备实现上述第一方面的方法。
33.第五方面,本技术提供一种计算机程序产品,当该计算程序产品在电子设备上运行时,使得电子设备执行上述第一方面相关方法的步骤,以实现上述第一方面的方法。
34.上述第二方面至第五方面的有益效果可以参照第一方面和第二方面,不再赘述。
附图说明
35.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
36.图1示出了一种旁路测试方法的应用场景示意;
37.图2示出了本技术一实施例提供的一种旁路测试方法的流程示意图;
38.图3示出了本技术一实施例提供的一种旁路测试方法中将第一输出结果的存储空间变更为预设的存储空间的示意图;
39.图4示出了本技术另一实施例提供的一种旁路测试方法中将第一输出结果的存储空间变更为预设的存储空间的示意图;
40.图5示出了本技术一实施例提供的旁路测试装置的结构框图;
41.图6示出了可以用来实施本公开的实施例的电子设备600的示意性框图。
具体实施方式
42.以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
43.图1示出了一种旁路测试方法的应用场景示意图。
44.参考图1,其中包括云端12、本地设备11、旁路测试设备13。本地设备11、云端12以及旁路测试设备13通过网络连接。
45.其中,本地设备11运行有大数据离线计算引擎,计算引擎是一种在大数据领域用于计算、统计分析等操作的计算平台。例如,常见的计算引擎包括火花(spark)引擎、蜂箱(hive)引擎或者急速(presto)引擎等。本地设备可以是服务器、个人计算机、计算机集群等
具有数据处理能力的设备。
46.在未将计算引擎迁移至云端12时,通过本地设备11中的大数据离线计算引擎执行大数据离线计算任务。其中,云端12是指采用应用程序虚拟化技术(application virtualization)的软件平台,云端12可以包括云服务器、云数据库等,云服务器可以提供足够的算力,而云数据库则可以提供足够大的存储空间。
47.当将本地设备11中的大数据离线计算引擎迁移至云端12时,可以通过旁路测试设备13对迁移前后进行测试验证,以保证任务可以在云端12中被正确处理。其中,旁路测试设备13可以是个人计算机、笔记本电脑、平板电脑、个人数字助理(personal digital assistant)、定制终端、智能手机等电子设备。
48.当将本地设备11中的大数据离线计算引擎迁移至云端12后,则可以通过云端12中的大数据离线计算引擎执行大数据离线计算任务。
49.当将本地设备11中的大数据离线计算引擎迁移至云端12时,可能存在迁移前后的数据一致性、版本兼容性等问题,进而导致业务上云时产生一定的风险。
50.现有技术中,对上云前后的任务验证主要通过基于验证数据的模拟流量测试、基于特定业务场景的功能测试、基于线上业务的强制回溯测试、以及基于sql的单一任务逐步测试等方式进行。而这些方式存在着场景单一、验证效果不佳、可能污染数据等问题。
51.对于此,本技术提供了一种旁路测试方法,包括:获取待测试的目标任务,对目标任务进行解析处理,得到目标任务的第一输出结果的存储空间。将目标任务的第一输出结果的存储空间变更为预设的存储空间。在云端处理目标任务,得到第一输出结果,将第一输出结果存储至预设的存储空间。根据第一输出结果和目标任务的第二输出结果进行数据校验,得到旁路测试结果,第二输出结果是目标任务在迁移至云端之前输出的。
52.在本技术中,将目标任务解析后在云端处理,并将目标任务的第一输出结果的存储空间变更为预设的存储空间,然后将输出结果存储在预设的存储空间。由于仅对目标任务输出结果的存储位置进行变更,因此,无需针对不同的计算引擎进行单独编程,可以应用于多种场景中。同时,进行验证时是根据目标任务上云前后的输出结果进行验证,其准确性更好。最后,验证结果存储在单独的存储空间中,可以有效对生成和测试进行隔离,防止污染线上数据。
53.图2示出了本技术一实施例提供的一种旁路测试方法的流程示意图。
54.参考图2,一种旁路测试方法包括:
55.s201、获取待测试的目标任务。
56.一些实施方式中,待测试的目标任务可以通过不同的计算引擎提出。目标任务可以根据输出结果中的产物不同进行分类。
57.作为示例,若目标任务输出结果为一个表格,表格中存储有处理后的数据,则hive可以通过直连(beeline)、java数据库连接(java database connectivity,jdbc)模式启动目标任务;spark可以通过spark-sql模式、spark-jdbc模式、spark-shell模式三种接口启动目标任务;presto则可以通过客户端启动目标任务。
58.另一些示例中,若目标任务输出结果为一个路径,即在该路径中存储接收到的数据,则hive、spark、presto均可使用客户端启动目标任务。
59.其中,目标任务可以通过sql语句进行描述,但不以此为限。
60.s202、对目标任务进行解析处理,得到目标任务的第一输出结果的存储空间。
61.一些实施方式中,根据预设规则对目标任务的sql进行分类和拆解,分类包括写操作或读操作。对每一段拆解后的sql进行分析,每一段拆解后的sql的输出结果的集合作为第一输出结果。
62.作为示例,预设规则可以是根据操作类型对sql进行分类,例如,可以分为读操作和写操作。对sql拆解则可以是将复杂查询语句拆解成简单查询。例如,将多层嵌套查询拆解为单层查询。
63.一些事实施方式中,对每一段拆解后的sql进行分析时,可以通过语言识别的另一个工具(another tool for language recognition,antlr)对sql片段进行词义解析、语法解析、构建语法树等分析。得到最终的输出产物集合,例如,读操作的输出产物集合包括获取对应的表、字段,写操作的输出产物集合包括获得对应的输出表、路径。本技术的方案主要应用于写操作。
64.s203、对目标任务进行鉴权,鉴权通过后执行s204。
65.一些实施方式中,可以对目标任务进行身份验证,当验证通过时,放行目标任务的读写权限。
66.作为示例,可以调取数据安全鉴权系统权限接口将鉴权信息传输到服务端完成身份验证并放权操作。
67.例如,当数据安全鉴权系统识别到旁路验证的约定身份,自动验证并放行所有的读权限。如果身份验证合法且表、字段、路径对比通过的话,数据鉴权系统会返回成功标志“succ”,允许任务提交到云端执行。如果身份验证,表、字段、路径对比有其中一项出现异常,都会返回失败标志“fail”,拒绝任务提交。
68.s204、将目标任务的第一输出结果的存储空间变更为预设的存储空间。
69.一些实施方式中,可以在第一模块拦截目标任务。根据第一输出结果的类型将第一输出结果的存储空间变更为预设的存储空间。
70.一些实施方式中,第一输出结果的类型为表,第一模块为结构化查询语言(structured query language,sql)总接口模块。
71.图3示出了本技术一实施例提供的一种旁路测试方法中将第一输出结果的存储空间变更为预设的存储空间的示意图。
72.参考图3,根据第一输出结果的类型将第一输出结果的存储空间变更为预设的存储空间,包括:在sql总接口模块拦截目标任务。将第一输出结果的写入表更换为测试表。
73.其中,参考图3,无论哪个计算引擎以何种方式启动目标任务,最终都需要经过sql总接口模块。故,第一模块设置为sql总接口模块。可以在该接口位置,通过输出产物变更模块对写动作进行拦截。其中,输出产物变更模块是一个虚拟的功能模块,由多条代码构成,用于实现对输出产物进行变更。
74.例如,输出产物变更模块检测到执行目标任务的指令后,获取目标任务的第一输出结果的写入表,并将写入表更换为测试表。对于查询数据类型操作不做任何处理。
75.其中,写入表为目标任务执行完成后在云端实际写入的表。而测试表则可以是在旁路测试设备中存储的用于进行测试的表。将测试结果写入测试表,可以实现数据分离,保证在线数据不被污染。
76.图4示出了本技术另一实施例提供的一种旁路测试方法中将第一输出结果的存储空间变更为预设的存储空间的示意图。
77.参考图4,第一输出结果的类型为路径,第一模块为hdfs写入模块。
78.根据第一输出结果的类型将第一输出结果的存储空间变更为预设的存储空间,包括:在hdfs写入模块拦截目标任务。将第一输出结果的输出路径更换为测试路径。
79.其中,参考图4,无论哪个计算引擎以何种方式启动目标任务,最终都需要经过hdfs写入模块。故,第一模块设置为hdfs写入模块。可以在该位置,对入路径进行拦截。
80.例如,当监测到hdfs写入模块启动时,获取该模块的写入路径,将该路径更改为测试路径。对于查询数据类型操作不做任何处理。
81.其中,写入路径是目标任务产生的数据在云端的输出路径,测试路径则是本地的存储路径。将目标任务产生的数据写入测试路径,可以实现数据分离,保证在线数据不被污染。
82.需要说明的是,在对写入表或输出路径进行变更时,若未出现异常情况,则可以则返回成功标志“succ”,如果出现任何异常,均返回失败标志“fail”。当返回成功标志时,可以继续执行下一步,当返回失败标志时,展示时失败标志并指示用户进行检查。
83.s205、在云端处理目标任务,得到第一输出结果,将第一输出结果存储至预设的存储空间。
84.一些实施方式中,当接收到s204中示出的成功标志后,可以将目标任务传输到云端,通过另一种资源协调者(yet another resource negotiator,yarn)资源调度器或者集群执行目标任务,并将第一输出结果写入对应的测试表或测试路径。
85.s206、获取目标任务的第二输出结果。
86.一些实施方式中,目标任务的第二输出结果,可以是将目标任务以相同的数据在图1示出的本地设备中执行得到。也可以是获取本地设备中已经执行后存储的第二输出结果,本技术对第二输出结果的获取方式不做限制。
87.s207、根据第一输出结果和目标任务的第二输出结果进行数据校验,得到旁路测试结果。
88.一些实施方式中,可以通过数据校验模块主要是对目标任务的第一输出结果(表或者路径)和第二输出结果进行一致性校验。对比迁移前后数据的条数、格式、内容等。旁路测试结果主要包括一致性校验的结果。
89.作为示例,当第一输出结果和第二输出结果的类型为表时,比对第一输出结果和第二输出结果的数据一致性,输出旁路测试结果。
90.另一些示例中,当第一输出结果和第二输出结果的类型为路径时,目标任务执行输出的数据是直接存储到测试路径中。由于测试路径中可能存储多种类型的数据,数据的存储格式也不相同,例如,可能存在优化后的列式记录(optimized record columnar,orc)格式、文本(txt)格式、二进制格式等文件格式。
91.而且,由于迁移前后目标任务输出的数据文件个数、数据存储模式不完全一致,导致直接对路径下的数据进行校验存在困难。所以可以首先将路径下的数据通过spark引擎映射成表,以便于进行数据对比。即,将第一输出结果指示的数据映射为第一验证表,将第二输出结果指示的数据映射为第二验证表。比对第一验证表和第二验证表的数据一致性,
输出旁路测试结果。
92.一些实施方式中,数据一致性的校验可以使用sql关联迁移前后的两张表进行数据的对比,如果对比后,输出结果为“数据一致”,则直接记录该对比状态。
93.作为示例,当第一输出结果和第二输出结果的类型为表时,可以将第一输出结果的测试表和第二输出结果写入表通过sql关联对比,验证两张表中的数据是否一致,若一致,则可以得到“数据一致”的旁路验证结果。
94.当第一输出结果和第二输出结果的类型为路径时,将路径中的数据通过spark引擎映射分别为第一验证表和第二验证表。通过sql关联对比第一验证表和第二验证表,验证两张表中的数据是否一致,若一致,则可以得到“数据一致”的旁路验证结果。
95.还有一些实施方式中,当旁路测试结果为异常时,即验证两张表中数据是否一致时存在不一致的数据,则旁路验证结果为“数据不一致”。
96.这个情况下,可以对不一致的数据进行分析,得到异常分析结果。展示异常分析结果。
97.作为示例,可以先使用sql关联迁移前后的两张表将校验不通过的数据进行统一存储,再次对比不一致的数据,通过预先设置的错误数据规则,给出数据异常初步结论。
98.例如,如果根据预先设置的错误数据规则,确定是双精度浮点数(double)精度的问题导致数据对比不一致,则返回“结论:doule精度导致”,并展示返回的结论。
99.如果根据预先设置的错误数据规则,确定联合(union)关联字段问题导致数据对比不一致,则返回“结论:union关联字段导致”,并展示返回的结论。
100.如果根据预先设置的错误数据规则,无法确定是何种原因导致数据对比不一致,则返回“结论:暂无法给出具体原因”,并展示返回的结论,等待人工介入分析。
101.示例性实施例中,本公开实施例还提供一种旁路测试装置,可以用于实现如前述实施例提供的旁路测试方法。
102.图5示出了本技术一实施例提供的旁路测试装置的结构框图。
103.参考图5,旁路测试装置,包括:
104.处理模块51,用于获取待测试的目标任务,对目标任务进行解析处理,得到目标任务的第一输出结果的存储空间。
105.变更模块52,用于将目标任务的第一输出结果的存储空间变更为预设的存储空间。
106.处理模块51还用于在云端处理目标任务,得到第一输出结果,将第一输出结果存储至预设的存储空间。
107.校验模块53,用于根据第一输出结果和目标任务的第二输出结果进行数据校验,得到旁路测试结果,第二输出结果是目标任务在迁移至云端之前输出的。
108.一些实施方式中,变更模块52,具体用于在第一模块拦截目标任务。根据第一输出结果的类型将第一输出结果的存储空间变更为预设的存储空间。
109.一些实施方式中,第一输出结果的类型为表,第一模块为sql总接口模块。
110.变更模块52,具体用于在sql总接口模块拦截目标任务。将第一输出结果的写入表更换为测试表。
111.一些实施方式中,第一输出结果的类型为路径,第一模块为hdfs写入模块。
112.变更模块52,具体用于在hdfs写入模块拦截目标任务。将第一输出结果的输出路径更换为测试路径。
113.一些实施方式中,处理模块51,具体用于根据预设规则对目标任务的sql进行分类和拆解,分类包括写操作或读操作。对每一段拆解后的sql进行分析,每一段拆解后的sql的输出结果的集合作为第一输出结果。
114.一些实施方式中,处理模块51,还用于对目标任务进行身份验证,当验证通过时,放行目标任务的读写权限。
115.一些实施方式中,校验模块53,具体用于当第一输出结果和第二输出结果的类型为表时,比对第一输出结果和第二输出结果的数据一致性,输出旁路测试结果。
116.一些实施方式中,校验模块53,具体用于当第一输出结果和第二输出结果的类型为路径时,将第一输出结果指示的数据映射为第一验证表,将第二输出结果指示的数据映射为第二验证表。比对第一验证表和第二验证表的数据一致性,输出旁路测试结果。
117.一些实施方式中,校验模块53,还用于当旁路测试结果为异常时,对不一致的数据进行分析,得到异常分析结果。展示异常分析结果。
118.根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
119.电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如以上实施例中提供的方法。
120.示例性实施例中,可读存储介质可以是存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行根据以上实施例中提供的方法。
121.示例性实施例中,计算机程序产品包括计算机程序,所述计算机程序在被处理器执行时实现根据以上实施例中提供的方法。
122.图6示出了可以用来实施本公开的实施例的示例电子设备600的示意性框图。
123.电子设备旨在表示各种形式的具有计算能力的设备,诸如,个人计算机、膝上型计算机、平板电脑、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
124.如图6所示,第一设备600包括计算单元601,其可以根据存储在只读存储器(rom)602中的计算机程序或者从存储单元608加载到随机访问存储器(ram)603中的计算机程序,来执行各种适当的动作和处理。在ram 603中,还可存储设备600操作所需的各种程序和数据。计算单元601、rom 602以及ram 603通过总线604彼此相连。输入/输出(i/o)接口605也连接至总线604。
125.设备600中的多个部件连接至i/o接口605,包括:输入单元606,例如键盘、鼠标等;输出单元607,例如各种类型的显示器、扬声器等;存储单元608,例如磁盘、光盘等;以及通信单元609,例如网卡、调制解调器、无线通信收发机等。通信单元609允许设备600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
126.计算单元601可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单
元601的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元601执行上文所描述的各个方法和处理,例如页面渲染方法。例如,在一些实施例中,页面渲染方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元605。在一些实施例中,计算机程序的部分或者全部可以经由rom 602和/或通信单元609而被载入和/或安装到设备600上。当计算机程序加载到ram 603并由计算单元601执行时,可以执行上文描述的页面渲染方法的一个或多个步骤。备选地,在其他实施例中,计算单元601可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行旁路验证方法。
127.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
128.用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
129.在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
130.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
131.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界
面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
132.计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
133.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
134.上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
技术特征:
1.一种旁路测试方法,其特征在于,包括:获取待测试的目标任务,对所述目标任务进行解析处理,得到所述目标任务的第一输出结果的存储空间;将所述目标任务的第一输出结果的存储空间变更为预设的存储空间;在云端处理所述目标任务,得到所述第一输出结果,将所述第一输出结果存储至所述预设的存储空间;根据所述第一输出结果和目标任务的第二输出结果进行数据校验,得到旁路测试结果,所述第二输出结果是所述目标任务在迁移至所述云端之前输出的。2.如权利要求1所述的方法,其特征在于,所述将所述目标任务的第一输出结果的存储空间变更为预设的存储空间,包括:在第一模块拦截所述目标任务;根据所述第一输出结果的类型将所述第一输出结果的存储空间变更为所述预设的存储空间。3.如权利要求2所述的方法,其特征在于,所述第一输出结果的类型为表,所述第一模块为结构化查询语言sql总接口模块;所述根据所述第一输出结果的类型将所述第一输出结果的存储空间变更为所述预设的存储空间,包括:在sql总接口模块拦截所述目标任务;将所述第一输出结果的写入表更换为测试表。4.如权利要求2所述的方法,其特征在于,所述第一输出结果的类型为路径,所述第一模块为分布式文件系统hdfs写入模块;所述根据所述第一输出结果的类型将所述第一输出结果的存储空间变更为所述预设的存储空间,包括:在hdfs写入模块拦截所述目标任务;将所述第一输出结果的输出路径更换为测试路径。5.如权利要求1-4任一项所述的方法,其特征在于,所述对所述目标任务进行解析处理包括:根据预设规则对所述目标任务的结构化查询语言sql进行分类和拆解,所述分类包括写操作或读操作;对每一段所述拆解后的sql进行分析,每一段所述拆解后的sql的输出结果的集合作为所述第一输出结果。6.如权利要求5所述的方法,其特征在于,在所述对每一段所述拆解后的sql进行分析之后,还包括:对所述目标任务进行身份验证,当验证通过时,放行所述目标任务的读写权限。7.如权利要求1所述的方法,其特征在于,所述根据所述第一输出结果和目标任务的第二输出结果进行数据校验,得到旁路测试结果,包括:当所述第一输出结果和所述第二输出结果的类型为表时,比对所述第一输出结果和所述第二输出结果的数据一致性,输出旁路测试结果。8.如权利要求1所述的方法,其特征在于,所述根据所述第一输出结果和目标任务的第
二输出结果进行数据校验,得到旁路测试结果,包括:当所述第一输出结果和所述第二输出结果的类型为路径时,将所述第一输出结果指示的数据映射为第一验证表,将所述第二输出结果指示的数据映射为第二验证表;比对所述第一验证表和所述第二验证表的数据一致性,输出旁路测试结果。9.如权利要求7或8所述的方法,其特征在于,所述方法还包括:当所述旁路测试结果为异常时,对不一致的数据进行分析,得到异常分析结果;展示所述异常分析结果。10.一种旁路测试装置,其特征在于,包括:处理模块,用于获取待测试的目标任务,对所述目标任务进行解析处理,得到所述目标任务的第一输出结果的存储空间;变更模块,用于将所述目标任务的第一输出结果的存储空间变更为预设的存储空间;所述处理模块还用于在云端处理所述目标任务,得到所述第一输出结果,将所述第一输出结果存储至所述预设的存储空间;校验模块,用于根据所述第一输出结果和目标任务的第二输出结果进行数据校验,得到旁路测试结果,所述第二输出结果是所述目标任务在迁移至所述云端之前输出的。11.一种电子设备,其特征在于,所述电子设备包括:处理器和存储器,所述存储器中存储有可执行指令;所述处理器被配置为执行所述指令时,使得所述电子设备实现如权利要求1-9任一项所述的方法。12.一种可读存储介质,其特征在于,所述可读存储介质存储有计算机程序;当所述计算机程序在如权利要求11中提供的电子设备中运行时,使得所述电子设备实现如权利要求1-9任一项所述的方法。
技术总结
本发明涉及离线测试领域,公开了一种旁路测试方法、装置、电子设备及可读存储介质。该方法包括:获取待测试的目标任务,对目标任务进行解析处理,得到目标任务的第一输出结果的存储空间。将目标任务的第一输出结果的存储空间变更为预设的存储空间。在云端处理目标任务,得到第一输出结果,将第一输出结果存储至预设的存储空间。根据第一输出结果和目标任务的第二输出结果进行数据校验,得到旁路测试结果,第二输出结果是目标任务在迁移至云端之前输出的。无需针对不同的计算引擎进行单独编程,可以应用于多种场景中,准确性更好,还能够防止污染线上数据。止污染线上数据。止污染线上数据。
技术研发人员:冯春锋 赵辉 潘丹
受保护的技术使用者:度小满科技(北京)有限公司
技术研发日:2023.05.25
技术公布日:2023/8/24
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/