一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据测试方法和装置与流程

2021-12-07 20:57:00 来源:中国专利 TAG:
1.本发明涉及计算机
技术领域
:,尤其涉及一种数据测试方法和装置。
背景技术
::2.hive是大数据的最核心技术,它是一个构建在hadoop(hadoop是一个分布式系统基础架构)之上的数据仓库工具,可以把hdfs(hadoop分布式文件系统)中的结构化数据映射成表,并通过mapreduce过程进行统计分析(mapreduce是进行离线大数据处理的时候经常要使用的计算模型)。工业上对于hiveql(hiveql是hive查询语言)的使用,经常会遇到多个表的查询相结合的情况,例如从两张表中各取出部分数据,再将数据进行关联等。针对上述的复杂连接查询、嵌套查询等情况,测试人员可以通过白盒测试、黑盒测试或sql((structuredquerylanguage,结构化查询语言)对比测试等方法完成测试。3.然而,在实现本发明过程中,发明人发现现有技术中至少存在如下问题:工业中使用的复杂sql,即使对于专业研发也并不容易进行翻译理解,而对于专业能力相对薄弱的测试人员来说则更加诘曲;置信度低,在执行过程中会有误操作的风险,对原始数据造成污染、破坏;测试周期长,拖慢开发进度,增加成本。技术实现要素:4.有鉴于此,本发明实施例提供一种数据测试方法和装置,降低了对测试人员业务熟练度和专业性的要求,使非专业的测试人员也可以完成大数据测试的相应工作,同时降低了大数据测试的时间成本和人力成本;本发明实施例的数据测试方法可以自动混合、分离原始数据和测试数据,不需要人工向原始数据中插入、删除测试用例,避免了人为误操作而引起数据污染的问题,最大程度上保护原始数据。5.为实现上述目的,根据本发明实施例的一个方面,提供了一种数据测试方法,包括:6.获取原始数据、待测试的结构化查询语句、测试用例和所述测试用例对应的预期结果;7.将所述测试用例插入所述原始数据中,获得中间数据;8.基于所述中间数据,执行所述待测试的结构化查询语句,获得总执行结果;9.从所述总执行结果中筛选出所述测试用例的实际执行结果;10.比对所述测试用例对应的预期结果和所述测试用例的实际执行结果,获得测试结果。11.可选地,将所述测试用例插入所述原始数据中,获得中间数据包括:12.将所述测试用例插入所述原始数据中,获得中间数据,并在所述中间数据中添加标签字段,以通过所述标签字段区分所述中间数据中的所述测试用例和所述原始数据;13.从所述总执行结果中筛选出所述测试用例的实际执行结果包括:14.基于所述标签字段,从所述总执行结果中筛选出所述测试用例的实际执行结果。15.可选地,基于所述中间数据,执行所述待测试的结构化查询语句,获得总执行结果包括:16.将所述测试用例插入所述原始数据中,获得中间数据,并在所述中间数据中添加标签字段,以通过所述标签字段区分所述中间数据中的所述测试用例和所述原始数据;17.解析所述待测试的结构化查询语句,获得第一执行计划;18.在所述第一执行计划中添加所述标签字段,获得第二执行计划;19.基于所述中间数据,执行所述待测试的结构化查询语句,获得总执行结果包括:基于所述中间数据和所述第二执行计划,执行所述待测试的结构化查询语句,获得总执行结果。20.可选地,将所述测试用例插入所述原始数据中,获得中间数据包括:21.确定所述待测试的结构化查询语句使用的库表字段和所述测试用例中的库表字段是否相同;22.若相同,则将所述测试用例插入所述原始数据中,获得中间数据。23.可选地,确定所述待测试的结构化查询语句使用的库表字段和所述测试用例中的库表字段是否相同包括:24.解析所述待测试的结构化查询语句,获得第一数据库名、第一数据表名和第一数据字段;25.解析所述测试用例,获得第二数据库名、第二数据表名和第二数据字段;26.分别确定所述第一数据库名、第一数据表名和第一数据字段是否与所述第二数据库名、第二数据表名和第二数据字段相同。27.可选地,解析所述待测试的结构化查询语句,获得第一数据库名、第一数据表名和第一数据字段包括:28.解析所述待测试的结构化查询语句,获得第一数据库名和抽象语法树;29.利用预设的翻译模型翻译所述抽象语法树,获得第一数据表名和第一数据字段。30.可选地,比对所述测试用例对应的预期结果和所述测试用例的实际执行结果,获得测试结果包括:31.确定所述待测试的结构化查询语句的关键字;32.确定与所述关键字对应的校验规则;33.根据所述校验规则,比对所述测试用例对应的预期结果和所述测试用例的实际执行结果,获得测试结果。34.为实现上述目的,根据本发明实施例的另一个方面,提供了一种数据测试装置,包括:35.获取模块,用于获取原始数据、待测试的结构化查询语句、测试用例和所述测试用例对应的预期结果;36.混合模块,用于将所述测试用例插入所述原始数据中,获得中间数据;37.执行模块,用于基于所述中间数据,执行所述待测试的结构化查询语句,获得总执行结果;38.筛选模块,用于从所述总执行结果中筛选出所述测试用例的实际执行结果;39.比对模块,用于比对所述测试用例对应的预期结果和所述测试用例的实际执行结果,获得测试结果。40.可选地,所述混合模块还用于:将所述测试用例插入所述原始数据中,获得中间数据,并在所述中间数据中添加标签字段,以通过所述标签字段区分所述中间数据中的所述测试用例和所述原始数据;41.所述筛选模块还用于:基于所述标签字段,从所述总执行结果中筛选出所述测试用例的实际执行结果。42.可选地,所述混合模块还用于:将所述测试用例插入所述原始数据中,获得中间数据,并在所述中间数据中添加标签字段,以通过所述标签字段区分所述中间数据中的所述测试用例和所述原始数据;解析所述待测试的结构化查询语句,获得第一执行计划;在所述第一执行计划中添加所述标签字段,获得第二执行计划;43.所述执行模块还用于:基于所述中间数据和所述第二执行计划,执行所述待测试的结构化查询语句,获得总执行结果。44.可选地,所述混合模块还用于:确定所述待测试的结构化查询语句使用的库表字段和所述测试用例中的库表字段是否相同;若相同,则将所述测试用例插入所述原始数据中,获得中间数据。45.可选地,所述混合模块还用于:46.解析所述待测试的结构化查询语句,获得第一数据库名、第一数据表名和第一数据字段;47.解析所述测试用例,获得第二数据库名、第二数据表名和第二数据字段;48.分别确定所述第一数据库名、第一数据表名和第一数据字段是否与所述第二数据库名、第二数据表名和第二数据字段相同。49.可选地,所述混合模块还用于:解析所述待测试的结构化查询语句,获得第一数据库名和抽象语法树;利用预设的翻译模型翻译所述抽象语法树,获得第一数据表名和第一数据字段。50.可选地,所述比对模块还用于:确定所述待测试的结构化查询语句的关键字;确定与所述关键字对应的校验规则;根据所述校验规则,比对所述测试用例对应的预期结果和所述测试用例的实际执行结果,获得测试结果。51.为实现上述目的,根据本发明实施例的另一个方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例的数据测试方法。52.为实现上述目的,根据本发明实施例的又一个方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例的数据测试方法。53.上述发明中的一个实施例具有如下优点或有益效果:通过自动将测试用例插入原始数据中,以使测试用例与原始数据一同进入执行过程,并经历相同的数据处理逻辑,获得总执行结果。然后,从总执行结果中分离出测试用例的实际执行结果。将分离出来的测试用例的实际执行结果与该测试用例的预期结果进行比对,以获得测试结果的技术手段,降低了对测试人员业务熟练度和专业性的要求,使非专业的测试人员也可以完成大数据测试的相应工作,同时降低了大数据测试的时间成本和人力成本;本发明实施例的数据测试方法可以自动混合、分离原始数据和测试数据,不需要人工向原始数据中插入、删除测试用例,避免了人为误操作而引起数据污染的问题,最大程度上保护原始数据。由于本发明实施例的方法自动将测试用例插入原始数据以及自动从总执行结果中分离测试用例的实际执行结果,所以该方法适用于大数据测试的场景,降低了测试难度,缩短了单次测试所需的时间。54.上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。附图说明55.附图用于更好地理解本发明,不构成对本发明的不当限定。其中:56.图1是本发明实施例的数据测试方法的主要流程的示意图;57.图2是本发明另一实施例的数据测试方法的主要流程的示意图;58.图3是本发明另一实施例的数据测试方法的主要流程的示意图;59.图4是本发明实施例的数据测试方法中解析待测试的结构化查询语句的示意图;60.图5是本发明实施例的数据测试方法中的执行计划的示意图;61.图6是本发明实施例的数据测试装置的主要模块的示意图;62.图7是本发明实施例可以应用于其中的示例性系统架构图;63.图8是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。具体实施方式64.以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。65.图1是本发明实施例的数据测试方法的主要流程的示意图,如图1所示,该方法包括:66.步骤s101:获取原始数据、待测试的结构化查询语句、测试用例和所述测试用例对应的预期结果;67.步骤s102:将所述测试用例插入所述原始数据中,获得中间数据;68.步骤s103:基于所述中间数据,执行所述待测试的结构化查询语句,获得总执行结果;69.步骤s104:从所述总执行结果中筛选出所述测试用例的实际执行结果;70.步骤s105:比对所述测试用例对应的预期结果和所述测试用例的实际执行结果,获得测试结果。71.对于步骤s101,测试用例以及该测试用例对应的预期结果可以以参数文件的形式传入,也可以由用户直接输入。其中,该参数文件的格式不做限制,可以是excel、txt、csv等各种格式。在本实施例中,测试人员无需了解原始数据的具体内容,仅需根据业务需求设计测试用例及测试用例的预期结果,降低了对测试人员业务熟练度和专业性的要求。72.对于步骤s102‑s105,将测试用例插入原始数据中,以使测试用例与原始数据一同进入执行过程,并经历相同的数据处理逻辑,获得总执行结果。然后,从总执行结果中分离出测试用例的实际执行结果。将分离出来的测试用例的实际执行结果与该测试用例的预期结果进行比对,若比对一致,则测试通过,反之测试失败。73.在可选的实施例中,若测试失败,则可以将实际执行结果以及该实际执行结果与预期结果不一致的部分输出,以提示用户测试失败的原因。74.本发明实施例的数据测试方法,通过自动将测试用例插入原始数据中,以使测试用例与原始数据一同进入执行过程,并经历相同的数据处理逻辑,获得总执行结果。然后,从总执行结果中分离出测试用例的实际执行结果。将分离出来的测试用例的实际执行结果与该测试用例的预期结果进行比对,以获得测试结果的技术手段,降低了测试人员业务熟练度和专业性的要求,使非专业的测试人员也可以完成大数据测试的相应工作,同时降低了大数据测试的时间成本和人力成本;本发明实施例的数据测试方法可以自动混合、分离原始数据和测试数据,不需要人工向原始数据中插入、删除测试用例,避免了人为误操作而引起数据污染的问题,最大程度上保护原始数据。75.在大数据测试中,由于数据体量庞大,测试的难度要比少量数据困难许多,主要体现在执行时间较长(大数据单次查询的执行时间是少量数据执行时间的千万倍)、数据插入删除的操作难度较大。而本发明实施例的方法可以在执行待测试结构化查询语句之前,自动将测试用例插入原始数据,使测试用例随原始数据一同进入执行过程,并经历相同的数据处理逻辑,得到总执行结果,然后从总执行结果中分离出测试用例的实际执行结构,再将实际执行结构与预期结果比对,得到测试结果,所以该方法适用于大数据测试的场景,有效地降低了测试难度和缩短了单次测试所需的时间。76.图2是本发明另一实施例的数据测试方法的主要流程的示意图。在该实施例的方法中,通过标签控制方法,测试用例与原始数据进行混合与分离。具体的,如图2所示,该方法包括:77.步骤s201:获取原始数据、待测试的结构化查询语句、测试用例和所述测试用例对应的预期结果;78.步骤s202:将所述测试用例插入所述原始数据中,获得中间数据,并在所述中间数据中添加标签字段,以通过所述标签字段区分所述中间数据中的所述测试用例和所述原始数据;79.步骤s203:基于所述中间数据,执行所述待测试的结构化查询语句,获得总执行结果;80.步骤s204:基于所述标签字段,从所述总执行结果中筛选出所述测试用例的实际执行结果;81.步骤s205:比对所述测试用例对应的预期结果和所述测试用例的实际执行结果,获得测试结果。82.步骤s201、s203和s205与图1所示的实施例相同,本发明在此不再赘述。83.对于步骤s202,将测试用例与原始数据进行合并,即将测试用例插入原始数据,得到中间数据。插入后,对测试用例打标签,打标签的方式可以是在中间数据中插入标签字段,并使原始数据与测试用例在该标签字段下的值不同,从而区分该中间数据中的测试用例和原始数据。作为示例,该标签字段可以是test_sign,原始数据在该标签字段下的值为0,测试用例在该标签字段下的值为1。84.对于步骤s204,待测试的结构化查询语句执行完成后,获得总执行结果。在该总执行结果中既有原始数据的执行结果,也有测试用例的实际执行结果。通过标签字段,将原始数据的执行结果与测试用例的实际执行结果分离,将测试用例的实际执行结果与预期结果进行比对,得到测试结果。85.本发明实施例的数据测试方法,通过自动将测试用例插入原始数据中,以使测试用例与原始数据一同进入执行过程,并经历相同的数据处理逻辑,获得总执行结果。然后,从总执行结果中分离出测试用例的实际执行结果。将分离出来的测试用例的实际执行结果与该测试用例的预期结果进行比对,以获得测试结果的技术手段,降低了测试人员业务熟练度和专业性的要求,使非专业的测试人员也可以完成大数据测试的相应工作,同时降低了大数据测试的时间成本和人力成本;本发明实施例的数据测试方法可以自动混合、分离原始数据和测试数据,不需要人工向原始数据中插入、删除测试用例,避免了人为误操作而引起数据污染的问题,最大程度上保护原始数据。86.图3是本发明又一实施例的数据测试方法的主要流程的示意图。如图3所示,该方法包括:87.步骤s301:获取原始数据、待测试的结构化查询语句、测试用例和所述测试用例对应的预期结果;88.步骤s302:确定所述待测试的结构化查询语句使用的库表字段和所述测试用例中的库表字段是否相同;89.步骤s303:若相同,则将所述测试用例插入所述原始数据中,获得中间数据,并在所述中间数据中添加标签字段,以通过所述标签字段区分所述中间数据中的所述测试用例和所述原始数据;90.步骤s304:解析所述待测试的结构化查询语句,获得第一执行计划;91.步骤s305:在所述第一执行计划中添加所述标签字段,获得第二执行计划;92.步骤s306:基于所述中间数据和所述第二执行计划,执行所述待测试的结构化查询语句,获得总执行结果;93.步骤s307:基于所述标签字段,从所述总执行结果中筛选出所述测试用例的实际执行结果;94.步骤s308:比对所述测试用例对应的预期结果和所述测试用例的实际执行结果,获得测试结果。95.对于步骤s301,测试用例以及该测试用例对应的预期结果可以以参数文件的形式传入,也可以由用户输入。其中,该参数文件的格式不做限制,可以是excel、txt、csv等各种格式。在本实施例中,测试人员无需了解原始数据的具体内容,仅需根据业务需求设计测试用例及测试用例的预期结果。96.对于步骤s302,该步骤用于对用户输入的待测试的结构化查询语句和测试用例进行校验,判断是否满足继续执行的条件。若满足,则继续后面的步骤,若不满足,则确定测试失败。97.具体的,通过以下步骤校验待测试的结构化查询语句和测试用例:98.解析所述待测试的结构化查询语句,获得第一数据库名、第一数据表名和第一数据字段;99.解析所述测试用例,获得第二数据库名、第二数据表名和第二数据字段;100.分别确定所述第一数据库名、第一数据表名和第一数据字段是否与所述第二数据库名、第二数据表名和第二数据字段相同。101.更具体的,可以通过以下步骤获得第一数据库名、第一数据表名和第一数据字段:102.解析所述待测试的结构化查询语句,获得第一数据库名和抽象语法树;103.利用预设的翻译模型翻译所述抽象语法树,获得第一数据表名和第一数据字段。104.其中,抽象语法树(abstractsyntaxtree,ast),或简称语法树(syntaxtree),是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。在hive的执行过程中,第一步是经过parser(解析)的过程,通过该过程可以获取到解析后的抽象语法树。根据hive的运行顺序,单次hive任务提交后,首先会通过antlr3语法规则将待查询的结构化语句(待查询的sql)翻译为抽象语法树。抽象语法树会把相同语意但是写法不同的sql转化为相同的语法规则,如distinct和groupby虽然在写法上不同,但二者的抽象语法树却是相同的。105.在得到抽象语法树之后,利用预设的翻译模型翻译该抽象语法树,得到翻译文本,从该翻译文本中可以得到第一数据表名和第一数据字段。该预设的翻译模型可以通过训练神经网络模型得到。如图4所示,该翻译模型以抽象语法树作为输入,以sql执行逻辑的文字翻译作为结果输出,旨在将复杂的sql翻译为逻辑通顺的文字语言,从而可以帮助用户对待测试的结构化查询语句进行理解以及逻辑校验。106.对于步骤s303至步骤s306,首先合并原始数据和测试用例,得到中间数据,并在中间数据中添加标签字段,然后把标签字段加入第一执行计划中,得到第二执行计划。基于该中间数据和第二执行计划,执行待查询的结构化查询语句,获得总执行结果。在该总执行结果中既有原始数据的执行结果,也有测试用例的实际执行结果。通过标签字段,将原始数据的执行结果与测试用例的实际执行结果分离,将测试用例的实际执行结果与预期结果进行比对,得到测试结果。由于单个结构化查询语句可能会从多个表中获取数据,且分为多个stage(状态)来执行,因此在第一执行计划中添加标签字段需要遵循特定的命名规则,如在stage‑1中添加的标签列,命名为stage1_test_sign,在stage‑2中添加的标签列,命名为stage2_test_sign,以此类推。以这样的方式命名可以保证在查询过程中,标签列的列名是唯一且可区分的。如第一执行计划是selectnamefromtable1,经过修改的第一执行计划会变为selectname,test_signfromtable1。而标签字段test_sign也会内至外逐层添加至每一条select语句中,以确保最终运行结果中带有标签字段test_sign。107.对于步骤s307,执行完待测试的结构化语句之后,测试用例的实际执行结果会混入总执行结果中,因此,需要根据标签字段从总执行结果中将测试用例的实际执行结果分离出来。在将测试用例的实际执行结果分离出来之后,再将剩余的执行结果中删除标签列,余下的结果即为原始数据的执行结果。108.对于步骤s308,将分离出来的测试用例的实际执行结果与该测试用例的预期结果进行比对,若比对一致,则测试通过,反之测试失败。其中,对于不同的sql关键字,可以设置不同的校验规则。例如,对于带有join的sql,join用于根据两个或多个表中的列之间的关系,从这些表中查询数据,因此需要找到join前后均带有标签字段的结果,即执行结果中带有2个标签字段的数据。而若关键字为leftjoin,rightjoin或outerjoin,同样需要找到执行结果中带有2个标签字段的数据。对于带有orderby的sql,orderby语句用于根据指定的列对结果集进行排序,在比对测试用例的实际执行结果和预期结果时需要按照顺序进行比对。而若sql中没有orderby关键字,那么由于hive查询的数据顺序不定,因此只要实际执行结果与预期结果相同即可,对数据顺序没有要求。对于带有union的sql,union操作符合并两个或多个select语句的结果,因此只需要找到带有标签字段的执行结果,直接进行比对即可。109.本发明实施例的数据测试方法,通过自动将测试用例插入原始数据中,以使测试用例与原始数据一同进入执行过程,并经历相同的数据处理逻辑,获得总执行结果。然后,从总执行结果中分离出测试用例的实际执行结果。将分离出来的测试用例的实际执行结果与该测试用例的预期结果进行比对,以获得测试结果的技术手段,降低了测试人员业务熟练度和专业性的要求,使非专业的测试人员也可以完成大数据测试的相应工作,同时降低了大数据测试的时间成本和人力成本;本发明实施例的数据测试方法可以自动混合、分离原始数据和测试数据,不需要人工向原始数据中插入、删除测试用例,避免了人为误操作而引起数据污染的问题,最大程度上保护原始数据。110.在实际应用中,可以将本发明实施例的数据测试方法封装成插件或工具,在使用该插件或工具时,用户只需要确定待测试的结构化查询语句和测试用例,降低了用户使用门槛,提高了便利性。111.为使本发明实施例的数据测试方法更加清楚,以下面的实施例为例进行说明。112.(1)获取待测试的结构化查询语句(以下简称待测sql)、待测试的结构化查询语句、测试用例和所述测试用例对应的预期结果。其中,待测试sql为:113.[0114][0115]orderbyid[0116]在app_demoofnik_2表中,设计如下数据:[0117]idnameprice1cup3.513hat2.74balloon4.3[0118]在app_demoofnik_1表中,设计如下数据:[0119]namepricecup0.8hat1.1book5.9[0120]预期结果如下:[0121]idnamepricerisk_price1cup3.50.84balloon4.3null13hat2.71.1[0122](2)在完成数据准备后,本实施例开始代码执行及校验工作。与hiveql正常执行过程相同,首先生成相应的mapreduce执行计划,如图5所示。[0123]在hive执行计划中,上例sql会被划分为3个执行阶段(stage):stage‑0是根阶段,它执行的是外层父查询,并负责返回最终结果;stage‑1首先执行,而stage‑2则依赖stage‑1的执行结果,因此又会被安排到stage‑1完成之后执行;最终执行stage‑0,并返回查询结果。[0124]生成执行计划的过程同时也会产生抽象语法树,通过预设的翻译模型统将抽象语法树翻译为逻辑通顺的文字翻译返回给测试人员。此外,从文字翻译中解析出每一执行阶段的库表字段,如stage‑1中的库表app.app_demoofnik_1以及字段name,price。[0125]每一个以上的stage都是一个单独的mapreduce任务,每一个任务也对应执行其中一个表的搜索。而在生成mapreduce任务后,首先会对每一个子查询阶段的表名和字段进行校验,来判断待测试sql使用的数据表和字段是否与测试用例相同,若测试用例与待测试sql存在表名或字段的差异,则暂停执行,并提示用户错误。[0126]然后,进入hive执行阶段。在hive向物理执行器提交mapreduce执行计划的同时,将用户测试用例的数据一同提交至执行器。而在执行器拉取原始数据结束后,将测试用例的数据添加至原始数据末尾,并新增列,对所有数据进行标记,如下表所示,app_demoofnik_1表的测试数据会被添加至原始数据的末尾,并在最后添加新列test_sign,把原始数据标记为0,测试用例的数据标记为1;同样,对app_demoofnik_2的测试用例的数据也执行相同的操作。[0127][0128][0129](3)自动在执行计划中添加selecttest_sign,用来对测试用例进行持续标记,如例中sql为selectname,pricefromapp.app_demoofnik_1。经过改后,sql更新为selectname,price,test_signfromapp.app_demoofnik_1。[0130](4)在执行过程中,test_sign字段会跟随整个查询的执行,对数据进行标记,而在所有阶段的任务执行结束后,插件会在结果数据中寻找test_sign标记为1的数据进行分离,如下表:[0131]idnamepricerisk_pricestage0_test_signstage1_test_signog_1og_name_115.020.000og_2og_name_210.040.000og_3cup4.20.8011cup3.50.8114balloon4.3null1113hat2.71.111[0132]若结果表中只有一个test_sign列,则在分离阶段提取test_sign列为1的数据;若结果表中有多个test_sign,则提取出所有test_sign均为1的数据,提取的test_sign列为1的数据为测试用例的实际执行结果。在提取test_sign列为1的数据之后,删除所有test_sign列为1的数据,最后再将test_sign列删除,得到待测试sql查询原始数据的结果。[0133](5)将分离出来的测试用例的实际执行结果与该测试用例的预期结果进行比对,若比对一致,则测试通过,反之测试失败。[0134]本发明实施例的数据测试方法,通过自动将测试用例插入原始数据中,以使测试用例与原始数据一同进入执行过程,并经历相同的数据处理逻辑,获得总执行结果。然后,从总执行结果中分离出测试用例的实际执行结果。将分离出来的测试用例的实际执行结果与该测试用例的预期结果进行比对,以获得测试结果的技术手段,降低了测试人员业务熟练度和专业性的要求,使非专业的测试人员也可以完成大数据测试的相应工作,同时降低了大数据测试的时间成本和人力成本;本发明实施例的数据测试方法可以自动混合、分离原始数据和测试数据,不需要人工向原始数据中插入、删除测试用例,避免了人为误操作而引起数据污染的问题,最大程度上保护原始数据。[0135]图6是本发明实施例的一种数据测试装置600的主要模块的示意图,如图6所示,该装置600包括:[0136]获取模块601,用于获取原始数据、待测试的结构化查询语句、测试用例和所述测试用例对应的预期结果;[0137]混合模块602,用于将所述测试用例插入所述原始数据中,获得中间数据;[0138]执行模块603,用于基于所述中间数据,执行所述待测试的结构化查询语句,获得总执行结果;[0139]筛选模块604,用于从所述总执行结果中筛选出所述测试用例的实际执行结果;[0140]比对模块605,用于比对所述测试用例对应的预期结果和所述测试用例的实际执行结果,获得测试结果。[0141]可选地,所述混合模块602还用于:将所述测试用例插入所述原始数据中,获得中间数据,并在所述中间数据中添加标签字段,以通过所述标签字段区分所述中间数据中的所述测试用例和所述原始数据;[0142]所述筛选模块604还用于:基于所述标签字段,从所述总执行结果中筛选出所述测试用例的实际执行结果。[0143]可选地,所述混合模块602还用于:解析所述待测试的结构化查询语句,获得第一执行计划;在所述第一执行计划中添加所述标签字段,获得第二执行计划;[0144]所述执行模块603还用于:基于所述中间数据和所述第二执行计划,执行所述待测试的结构化查询语句,获得总执行结果。[0145]可选地,所述混合模块602还用于:确定所述待测试的结构化查询语句使用的库表字段和所述测试用例中的库表字段是否相同;若相同,则将所述测试用例插入所述原始数据中,获得中间数据。[0146]可选地,所述混合模块602还用于:解析所述待测试的结构化查询语句,获得第一数据库名、第一数据表名和第一数据字段;解析所述测试用例,获得第二数据库名、第二数据表名和第二数据字段;分别确定所述第一数据库名、第一数据表名和第一数据字段是否与所述第二数据库名、第二数据表名和第二数据字段相同。[0147]可选地,所述混合模块602还用于:解析所述待测试的结构化查询语句,获得第一数据库名和抽象语法树;利用预设的翻译模型翻译所述抽象语法树,获得第一数据表名和第一数据字段。[0148]可选地,所述比对模块605还用于:确定所述待测试的结构化查询语句的关键字;确定与所述关键字对应的校验规则;根据所述校验规则,比对所述测试用例对应的预期结果和所述测试用例的实际执行结果,获得测试结果。[0149]本发明实施例的数据测试装置,通过自动将测试用例插入原始数据中,以使测试用例与原始数据一同进入执行过程,并经历相同的数据处理逻辑,获得总执行结果。然后,从总执行结果中分离出测试用例的实际执行结果。将分离出来的测试用例的实际执行结果与该测试用例的预期结果进行比对,以获得测试结果的技术手段,降低了测试人员业务熟练度和专业性的要求,使非专业的测试人员也可以完成大数据测试的相应工作,同时降低了大数据测试的时间成本和人力成本;本发明实施例的数据测试方法可以自动混合、分离原始数据和测试数据,不需要人工向原始数据中插入、删除测试用例,避免了人为误操作而引起数据污染的问题,最大程度上保护原始数据。[0150]上述装置可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的方法。[0151]图7示出了可以应用本发明实施例的数据测试方法或数据测试装置的示例性系统架构700。[0152]如图7所示,系统架构700可以包括终端设备701、702、703,网络704和服务器705。网络704用以在终端设备701、702、703和服务器705之间提供通信链路的介质。网络704可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。[0153]用户可以使用终端设备701、702、703通过网络704与服务器705交互,以接收或发送消息等。终端设备701、702、703上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。[0154]终端设备701、702、703可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。[0155]服务器705可以是提供各种服务的服务器,例如对用户利用终端设备701、702、703所浏览的购物类网站提供支持的后台管理服务器。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息)反馈给终端设备。[0156]需要说明的是,本发明实施例所提供的数据测试方法一般由服务器705执行,相应地,数据测试装置一般设置于服务器705中。[0157]应该理解,图7中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。[0158]下面参考图8,其示出了适于用来实现本发明实施例的终端设备的计算机系统800的结构示意图。图8示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。[0159]如图8所示,计算机系统800包括中央处理单元(cpu)801,其可以根据存储在只读存储器(rom)802中的程序或者从存储部分808加载到随机访问存储器(ram)803中的程序而执行各种适当的动作和处理。在ram803中,还存储有系统800操作所需的各种程序和数据。cpu801、rom802以及ram803通过总线804彼此相连。输入/输出(i/o)接口805也连接至总线804。[0160]以下部件连接至i/o接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至i/o接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。[0161]特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(cpu)801执行时,执行本发明的系统中限定的上述功能。[0162]需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd‑rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。[0163]附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。[0164]描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括发送模块、获取模块、确定模块和第一处理模块。其中,这些模块的名称在某种情况下并不构成对该单元本身的限定,例如,发送模块还可以被描述为“向所连接的服务端发送图片获取请求的模块”。[0165]作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:[0166]获取原始数据、待测试的结构化查询语句、测试用例和所述测试用例对应的预期结果;[0167]将所述测试用例插入所述原始数据中,获得中间数据;[0168]基于所述中间数据,执行所述待测试的结构化查询语句,获得总执行结果;[0169]从所述总执行结果中筛选出所述测试用例的实际执行结果;[0170]比对所述测试用例对应的预期结果和所述测试用例的实际执行结果,获得测试结果。[0171]本发明实施例的技术方案,降低了测试人员业务熟练度和专业性的要求,使非专业的测试人员也可以完成大数据测试的相应工作,同时降低了大数据测试的时间成本和人力成本;本发明实施例的数据测试方法可以自动混合、分离原始数据和测试数据,不需要人工向原始数据中插入、删除测试用例,避免了人为误操作而引起数据污染的问题,最大程度上保护原始数据。[0172]上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献