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

文档序号:18009498发布日期:2019-06-25 23:49阅读:186来源:国知局
一种数据测试方法和装置与流程

本发明涉及计算机技术领域,尤其涉及一种数据测试方法和装置。



背景技术:

随着互联网行业不断成熟,电商对于大数据的依赖也越来越大,人们对于数据型产品的需求也越来越多,这些数据型产品需要通过大数据计算才能满足需求,比如电商中的数据爬虫,数据清洗,数据整合、匹配等,数据产品系统的关键就是数据的正确性,测试同时如何才能保障系统质量,帮助开发人员更好的定位问题显得尤为重要。

目前很多大数据计算大多通过spark(专为大规模数据处理而设计的快速通用的计算引擎)或者hivesql(hive是基于hadoop构建的一套数据仓库分析系统,提供丰富的sql查询方式来分析存储在hadoop分布式文件系统中的数据,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql(结构化查询语言)查询功能,可以将sql语句转换为mapreduce(一个并行计算与运行软件框架)任务进行运行,通过自己的sql去查询分析需要的内容,这套sql简称hivesql,)计算,而这些计算对于用户来说又都是透明的,目前大数据测试的一般方法是按照需求及原定的业务逻辑,按照测试的思路将全量的数据源运行一遍,运行出期望结果,再使用开发代码运行出实际结果,将期望结果与实际结果对比,但仅通过测试结果数据只能判断结果的正确与否,但一旦测试结果不一致,对于带有复杂业务逻辑的计算无法定位到计算过程的问题(sql计算对于测试完全透明,且通过mapreduce计算更无从查起),这样对于大数据的测试就失去了测试的意义。此外,对于几百行代码的sql计算,逻辑复杂且代码不易读,目前还没有很好的办法解析sql,简化sql,分析其中的业务逻辑,必须要求sql能力很强的测试人员才能清晰分析其中的逻辑和错误,因此,这种方法通常对测试人员的代码能力要求较高,需要自行编写出可以实现的代码才能运行出期望结果。并且,计算时涉及表和字段很多,且数据量巨大,通过全量计算期望结果来验证数据的的方式计算效率过低,且当期望结果计算错误时反而会更影响测试进度,既要验证实际结果还要保证期望结果的正确,增加了测试的工作量。

当前的业务逻辑测试都是需要开发人员打印日志,在程序执行的时候,通过观察日志查看业务逻辑处理是否正确,再通过返回值和数据库保存及交接系统的处理来发现问题和定位问题。当前的业务逻辑测试方法无法应用于大数据测试,尤其是sql的测试,当前的sql测试对于其业务逻辑无法测试,也无法定位sql的问题,遇到问题需要提交开发端去查找和定位。

在实现本发明过程中,发明人发现现有技术中至少存在如下问题:

当前的大数据测试无法测试业务逻辑和定位业务逻辑计算中的问题;

对测试人员的代码能力要求较高,测试工作量大且测试效率低。



技术实现要素:

有鉴于此,本发明实施例提供一种数据测试方法和装置,能够高效清晰地找出测试字段对应的处理逻辑,克服大数据测试中无法测试业务逻辑和定位业务逻辑计算中的问题的缺陷,对于代码能力不高的测试人员也可完成业务逻辑的测试验证,降低测试工作量,提高测试效率。

为实现上述目的,根据本发明实施例的一个方面,提供了一种数据测试方法。

一种数据测试方法,包括:对被测模型的结果字段分类,并确定所述分类得到的各类结果字段对应的期望业务逻辑;解析所述被测模型中与所述各类结果字段对应的关键字,以确定所述各类结果字段对应的实际业务逻辑;确定所述实际业务逻辑与所述期望业务逻辑一致后,按照与所述期望业务逻辑一致的实际业务逻辑,验证所述被测模型的结果数据,从而完成所述被测模型的数据测试。

可选地,解析所述被测模型中与所述各类结果字段对应的关键字,以确定所述各类结果字段对应的实际业务逻辑的步骤,包括:解析与所述各类结果字段对应的关键字,以得到与所述各类结果字段相关的数据源集合、逻辑和查询条件;根据所述数据源集合、逻辑和查询条件,确定所述各类结果字段对应的实际业务逻辑。

可选地,根据预期需求对被测模型的结果字段分类,且所述分类得到的各类结果字段包括业务主字段,还包括关联所得字段和/或计算所得字段。

可选地,确定所述实际业务逻辑与所述期望业务逻辑一致的步骤,包括:若所述结果字段为业务主字段,则确定所述业务主字段对应的实际业务逻辑与该业务主字段对应的期望业务逻辑包括相同的逻辑,且该业务主字段与根据该期望业务逻辑获取到的数据源集合中的字段一致;若所述结果字段为关联所得字段,则确定所述关联所得字段与根据该关联所得字段对应的期望业务逻辑获取到的数据源集合中的字段一致;若所述结果字段为计算所得字段,则确定所述计算所得字段对应的实际业务逻辑与该计算所得字段对应的期望业务逻辑包括相同的数据源集合、逻辑和查询条件。

可选地,按照与所述期望业务逻辑一致的实际业务逻辑,验证所述被测模型的结果数据的步骤,包括:按照与所述期望业务逻辑一致的实际业务逻辑,对所述被测模型的结果数据进行数据抽样验证和数据汇总验证,其中:以一业务主字段作为目标业务主字段,从测试数据中抽取与目标结果数据记录对应的一条测试数据,其中,所述目标结果数据记录为所述目标业务主字段的值等于预设值的一条结果数据记录;使用抽取的该条测试数据,执行与所述期望业务逻辑一致的实际业务逻辑,并将得到的结果数据与通过所述期望业务逻辑得到的期望结果数据比对,以完成所述数据抽样验证;以及,按字段计算测试数据中与目标结果数据记录集合对应的多条测试数据的汇总值,以得到汇总的测试数据,其中,所述目标结果数据记录集合为所述目标业务主字段的值等于所述预设值的所有结果数据记录的集合;使用所述汇总的测试数据,与所述期望业务逻辑一致的实际业务逻辑,并将得到的结果数据与通过所述期望业务逻辑得到的期望结果数据比对,以完成所述数据汇总验证;根据所述数据抽样验证和所述数据汇总验证的结果得到所述数据测试的结果。

根据本发明实施例的另一方面,提供了一种数据测试装置。

一种数据测试装置,包括:分类模块,用于对被测模型的结果字段分类,并确定所述分类得到的各类结果字段对应的期望业务逻辑;解析模块,用于解析所述被测模型中与所述各类结果字段对应的关键字,以确定所述各类结果字段对应的实际业务逻辑;验证模块,用于确定所述实际业务逻辑与所述期望业务逻辑一致;测试模块,用于按照与所述期望业务逻辑一致的实际业务逻辑,验证所述被测模型的结果数据,从而完成所述被测模型的数据测试。

可选地,所述解析模块还用于:解析与所述各类结果字段对应的关键字,以得到与所述各类结果字段相关的数据源集合、逻辑和查询条件;根据所述数据源集合、逻辑和查询条件,确定所述各类结果字段对应的实际业务逻辑。

可选地,所述分类模块包括分类子模块:用于根据预期需求对被测模型的结果字段分类,且所述分类得到的各类结果字段包括业务主字段,还包括关联所得字段和/或计算所得字段。

可选地,所述验证模块还用于:若所述结果字段为业务主字段,则确定所述业务主字段对应的实际业务逻辑与该业务主字段对应的期望业务逻辑包括相同的逻辑,且该业务主字段与根据该期望业务逻辑获取到的数据源集合中的字段一致;若所述结果字段为关联所得字段,则确定所述关联所得字段与根据该关联所得字段对应的期望业务逻辑获取到的数据源集合中的字段一致;若所述结果字段为计算所得字段,则确定所述计算所得字段对应的实际业务逻辑与该计算所得字段对应的期望业务逻辑包括相同的数据源集合、逻辑和查询条件。

可选地,所述测试模块还用于:按照与所述期望业务逻辑一致的实际业务逻辑,对所述被测模型的结果数据进行数据抽样验证和数据汇总验证,其中:以一业务主字段作为目标业务主字段,从测试数据中抽取与目标结果数据记录对应的一条测试数据,其中,所述目标结果数据记录为所述目标业务主字段的值等于预设值的一条结果数据记录;使用抽取的该条测试数据,执行与所述期望业务逻辑一致的实际业务逻辑,并将得到的结果数据与通过所述期望业务逻辑得到的期望结果数据比对,以完成所述数据抽样验证;以及,按字段计算测试数据中与目标结果数据记录集合对应的多条测试数据的汇总值,以得到汇总的测试数据,其中,所述目标结果数据记录集合为所述目标业务主字段的值等于所述预设值的所有结果数据记录的集合;使用所述汇总的测试数据,与所述期望业务逻辑一致的实际业务逻辑,并将得到的结果数据与通过所述期望业务逻辑得到的期望结果数据比对,以完成所述数据汇总验证;根据所述数据抽样验证和所述数据汇总验证的结果得到所述数据测试的结果。

根据本发明实施例的又一方面,提供了一种电子设备。

一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现本发明提供的数据测试方法。

根据本发明实施例的又一方面,提供了一种计算机可读介质。

一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现本发明提供的数据测试方法。

上述发明中的一个实施例具有如下优点或有益效果:根据预期需求对被测模型的结果字段分类,并确定分类得到的各类结果字段对应的期望业务逻辑;解析被测模型中与所述各类结果字段对应的关键字,以确定各类结果字段对应的实际业务逻辑;确定实际业务逻辑与期望业务逻辑一致后,按照与期望业务逻辑一致的实际业务逻辑,验证被测模型的结果数据,从而完成所述被测模型的数据测试。能够高效清晰地找出测试字段对应的处理逻辑,使复杂的代码变得清晰有条理,克服大数据测试中无法测试业务逻辑和定位业务逻辑计算中的问题的缺陷,对于代码能力不高的测试人员,只要清楚需求及表字段说明就可以完成业务逻辑的测试验证,无需编写大量测试代码运行期望结果,只需要在保证业务逻辑正确的基础上做抽样测试和汇总测试即可,降低测试工作量,提高测试效率。

上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。

附图说明

附图用于更好地理解本发明,不构成对本发明的不当限定。其中:

图1是根据本发明实施例的数据测试方法的主要步骤示意图;

图2是根据本发明实施例的数据测试方法的一个优选流程示意图;

图3是根据本发明实施例的数据测试使用的结果表的示意图;

图4是根据本发明实施例的sql解析后的结果字段的业务逻辑图;

图5是根据本发明实施例的数据测试装置的主要模块示意图;

图6是本发明实施例可以应用于其中的示例性系统架构图;

图7是适于用来实现本发明实施例的服务器的计算机系统的结构示意图。

具体实施方式

以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

图1是根据本发明实施例的数据测试方法的主要步骤示意图。

如图1所示,本发明实施例的数据测试方法主要包括如下的步骤s101至步骤s103。

步骤s101:根据预期需求对被测模型的结果字段分类,并确定分类得到的各类结果字段对应的期望业务逻辑。

步骤s102:解析被测模型中与各类结果字段对应的关键字,以确定各类结果字段对应的实际业务逻辑。

步骤s102具体可以包括:解析与各类结果字段对应的关键字,以得到与各类结果字段相关的数据源集合、逻辑和查询条件;根据数据源集合、逻辑和查询条件,确定各类结果字段对应的实际业务逻辑(可简称业务逻辑)。结果字段对应的实际业务逻辑例如为:集合c+wc+逻辑3,其中,集合c为与结果字段相关的数据源集合,可以是结果字段所在的数据源集合,或计算该结果字段所使用的字段所在的数据源集合,也可以是与结果字段相关的与上述数据源集合的关联数据源集合;wc为查询条件,可以通过where子句来限定;逻辑3为该结果字段的逻辑,结果字段的逻辑可以是表达式,由关键字和字段组成,例如结果字段的if...case条件表达式,sum、avg等计算表达式等。

步骤s103:确定实际业务逻辑与期望业务逻辑一致后,按照与期望业务逻辑一致的实际业务逻辑,验证被测模型的结果数据,从而完成被测模型的数据测试。

结果字段具体可包括业务主字段,还可以包括关联所得字段和/或计算所得字段。

确定实际业务逻辑与期望业务逻辑一致的步骤,具体可包括:若结果字段为业务主字段,则确定业务主字段对应的实际业务逻辑与该业务主字段对应的期望业务逻辑包括相同的逻辑,且该业务主字段与根据该期望业务逻辑获取到的数据源集合中的字段一致;若结果字段为关联所得字段,则确定关联所得字段与根据该关联所得字段对应的期望业务逻辑获取到的数据源集合中的字段一致;若结果字段为计算所得字段,则确定计算所得字段对应的实际业务逻辑与该计算所得字段对应的期望业务逻辑包括相同的数据源集合、逻辑和查询条件。

按照与期望业务逻辑一致的实际业务逻辑,验证被测模型的结果数据的步骤,具体可以包括:按照与期望业务逻辑一致的实际业务逻辑,对被测模型的结果数据进行数据抽样验证和数据汇总验证,其中:以一业务主字段作为目标业务主字段,从测试数据中抽取与目标结果数据记录对应的一条测试数据,其中,所述目标结果数据记录为目标业务主字段的值等于预设值的一条结果数据记录;使用抽取的该条测试数据,执行与期望业务逻辑一致的实际业务逻辑,并将得到的结果数据与通过期望业务逻辑得到的期望结果数据比对,以完成数据抽样验证;以及,按字段计算测试数据中与目标结果数据记录集合对应的多条测试数据的汇总值,以得到汇总的测试数据,其中,目标结果数据记录集合为目标业务主字段的值等于预设值的所有结果数据记录的集合;使用汇总的测试数据,与期望业务逻辑一致的实际业务逻辑,并将得到的结果数据与通过期望业务逻辑得到的期望结果数据比对,以完成数据汇总验证;根据数据抽样验证和数据汇总验证的结果得到数据测试的结果。

下面以大数据测试中的sql测试为例,介绍本发明实施例的数据测试方法。

图2是根据本发明实施例的数据测试方法的一个优选流程示意图。

如图2所示,本发明实施例的数据测试方法的一个优选流程包括如下的步骤s201至步骤s209。

步骤s201:根据预期需求将结果表字段分类,并确定分类得到的各类结果字段对应的期望业务逻辑。

结果表字段即被测模型的结果表中的各字段,也可称为结果字段。根据预期需求,结果字段可以分为三类:业务主字段、关联所得字段、计算所得字段。每个结果表中包括至少一个业务主字段,根据预期需求,结果表中还可包括关联所得字段、计算所得字段之中的一者或两者。本发明实施例的数据测试使用的结果表的示意图可如图3所示,图3中,t0,t2为业务主字段,t3,t4,t5为计算所得字段,t6,t8,t9为关联所得字段。

业务主字段为与预期需求紧密相关的结果字段,例如:某结果表为品类店铺地域宽表,则可以品类、店铺和地域字段为业务主字段;某结果表为品类商品宽表,则可以品类和商品字段为业务主字段。通过业务主字段可以进行结果表的其他结果字段的数据统计计算,例如上述品类商品宽表中,对应商品这一业务主字段的字段值为商品id,该结果表中其他字段例如为商品销售额,那么可利用sql的“groupby”语句对商品这一业务主字段进行商品分组,并利用sum函数对每个商品id下的各店铺的商品销售额进行统计。

关联所得字段是通过直接关联的得来的字段,即数据源表中存在该字段而不需要计算,但会经过业务逻辑和筛选得到该字段。关联所得字段可以是为了后续其他业务使用该字段而从数据源表关联过来,例如,某结果表为品类商品宽表,其中有一个结果字段为商品的价格,该字段不是业务主字段,也不需要通过对数据源表进行计算,而是直接从数据源表中的价格字段关联而来,即属于关联所得字段。

计算所得字段是由计算得来的字段,即数据源表中没有该字段,需要经过groupby,sum,avg等函数或语句计算得来。例如,某结果表为品类商品宽表,其中一个结果字段为商品的总销售额(总gmv),该字段(总gmv)在数据源表中没有,而是根据数据源表中的商品销售额字段进行统计计算得来,属于计算所得字段。

根据预期需求确定分类得到的各类结果字段对应的期望业务逻辑,例如,假设预期需求为从店铺表中获取地址,则通过对结果表字段的分类,可以确定与该预期需求相应的各类结果字段对应的期望业务逻辑,即对应相应类结果字段的从店铺表中获取地址的期望业务逻辑。

步骤s202:解析被测模型中与各类结果字段对应的关键字,以确定各类结果字段对应的实际业务逻辑。

关键字具体可以是sql关键字,sql中的关联和字段都是对应sql关键字的,sql关键字例如select,from,leftjoin,where,groupby,if(,,),case...when等,本发明实施例通过解析sql关键字可以确定与每个结果字段对应的实际业务逻辑。

结果字段对应的实际业务逻辑即为得到该结果字段所需要执行的业务逻辑,具体可以包括:数据源集合、逻辑和查询条件。

通过解析关键字(以sql关键字为例),可以将sql变成以字段为主体的线性逻辑,从而追踪到每个结果字段对应的实际业务逻辑。以结果字段t1为例,以字段为主体的线性逻辑为:通过select,from,leftjoin等sql关键字得到与t1相关的数据源集合;通过where等sql关键字可以确定对t1字段的查询条件(即查询逻辑);进行来源表的关联表筛选;通过groupby,sum、avg、case...when等关键字确定t1字段的逻辑;根据数据源集合、查询条件、逻辑得到t1字段对应的实际业务逻辑。

图4是根据本发明实施例的sql解析后的结果字段的业务逻辑图。如图4所示,以电商行业的爬虫(即网页信息抓取)后的数据处理为例,虚线框i中为将爬虫的数据进行数据整合,友商sku(库存量单位)的销售数据整合,并将对应品类、上级品类及店铺品牌地域信息对应形成的品类商品销售宽表的各结果字段,虚线框ii中为品类店铺地域销售宽表的各结果字段。逻辑1至逻辑8为各结果字段的逻辑,逻辑中包括if(,,),case...when,sum,count,avg等关键字,集合a、集合b、集合c、集合d为结果字段相关的数据源集合,where条件wa、wb、wc、wd、wt为查询条件,结果字段涉及的关键字还包括但不限于select,from,leftjoin、innerjoin,groupby等,通过groupby可对t0t2t6等字段分组以进行一些统计计算,以t0为店铺字段为例,groupbyt0表示按照店铺进行分组,可以用于进一步结合合计函数(如sum等)来统计每个店铺的例如总销售额等数据,因此,通过groupby可以得到相应的结果字段与groupby相关的业务逻辑,包括对哪些业务主字段执行了“groupby”,以及通过sum等函数统计了哪些字段的数据。

以t3,t4,t5字段为例,通过解析关键字找到对应的数据源集合c,根据数据源集合、查询条件、对应的逻辑即可确定字段t3,t4,t5的实际业务逻辑,从而无需考虑其他代码,就可根据需求验证结果字段的实际业务逻辑数据筛选是否正确。图4的品类商品销售宽表中,与t3,t4,t5字段相关的数据源集合为集合c,则t3,t4,t5字段对应的实际业务逻辑为:

逻辑3+集合c+where条件wc;

品类店铺地域宽表中,与t3,t4,t5字段相关的数据源集合为集合d和集合c,则t3,t4,t5字段对应的实际业务逻辑为:

逻辑8+集合c+where条件wc+集合d+where条件wd;

通常,大数据计算尤其是数据整合的sql计算,代码量都大到几百行代码,按照约定的业务流程过滤、筛选、匹配、计算,最后得到计算结果数据存至数据表。本发明实施例通过解析与结果字段对应的关键字,得到与结果字段相关的数据源集合、逻辑和查询条件,再根据数据源集合、逻辑和查询条件,确定结果字段对应的实际业务逻辑。实现了将sql变成以字段为主体的线性逻辑,可以很轻松地简化sql代码,使复杂的sql代码变得清晰易懂。

步骤s203:判断实际业务逻辑与相应期望业务逻辑是否一致,若是,则执行步骤s204,否则,执行步骤s208。

如上述图4中示例,品类商品销售宽表中,与t3,t4,t5字段相关的数据源集合为集合c,根据需求,

t3,t4,t5字段对应的期望业务逻辑为:count,sum,*+数据源表c+条件(例如不为空,上柜等);

实际确定的t3,t4,t5字段对应的业务逻辑为:逻辑3+集合c+where条件wc;

品类店铺地域宽表中t3,t4,t5字段,与t3,t4,t5字段相关的数据源集合为集合d和集合c,根据需求,

t3,t4,t5字段对应的期望业务逻辑为:count,sum,*+数据源表c+条件(例如不为空,上柜等)+数据源表d+where条件wd;

实际确定的t3,t4,t5字段对应的业务逻辑为:逻辑8+集合c+where条件wc+集合d+where条件wd;

通过将实际确定的t3,t4,t5字段对应的业务逻辑与t3,t4,t5字段对应的期望业务逻辑比对,即可得知计算的实际业务逻辑是否符合需求。

在验证实际业务逻辑是否与相应期望业务逻辑一致时,可根据结果表字段的分类,具体可以对不同类别的结果字段对应的实际业务逻辑分别利用不同的方法进行验证。其中:

若结果字段为业务主字段,则验证业务主字段对应的实际业务逻辑与该业务主字段对应的期望业务逻辑是否包括相同的逻辑,例如品牌销售表中,对品牌主业务字段进行销售量统计,则按照期望业务逻辑,利用groupby对品牌业务主字段分组,那么需要验证品牌业务主字段的逻辑与“groupby”是否为相同的逻辑。还需验证该业务主字段与根据该期望业务逻辑获取到的数据源集合中的字段是否一致,例如假设结果表中t3,t4,t5字段为业务主字段,按照期望业务逻辑,希望t3,t4,t5字段是分别从品类源表、商品信息源表、商品销售源表获取的相关字段,则需验证业务主字段t3,t4,t5是否是从该三个源数据表获取的字段。如果业务主字段对应的实际业务逻辑与该业务主字段对应的期望业务逻辑包括相同的逻辑,且该业务主字段与根据该期望业务逻辑获取到的数据源集合中的字段一致,则该业务主字段对应的实际业务逻辑与相应期望业务逻辑一致。

若结果字段为关联所得字段,则验证关联所得字段与根据该关联所得字段对应的期望业务逻辑获取到的数据源集合中的字段是否一致,例如,假设结果表中t3,t4,t5字段为关联所得字段,按照期望业务逻辑,希望t3,t4,t5字段是分别从品类源表、商品信息源表、商品销售源表获取的相关字段,则需验证t3,t4,t5是否是从该三个源数据表获取的字段。若一致,则该关联所得字段对应的实际业务逻辑与相应期望业务逻辑一致,否则二者不一致。

若结果字段为计算所得字段,则验证计算所得字段对应的实际业务逻辑与该计算所得字段对应的期望业务逻辑是否包括相同的数据源集合、逻辑和查询条件,例如,图4的品类商品销售宽表中,t3,t4,t5字段为计算所得字段,则验证“逻辑3+集合c+where条件wc”与期望业务逻辑“count,sum,*+数据源表c+条件”是否对应相同。若二者包括相同的数据源集合、逻辑和查询条件,则该计算所得字段的实际业务逻辑与相应期望业务逻辑一致,否则二者不一致。

对于来源相同且使用相同处理逻辑的字段可以合并验证,以计算所得字段为例,字段t2,t3,t4对应相同的数据源集合,处理逻辑均为计算逻辑(如sum,count,avg等),则可将三者合并验证。

本发明实施例将结果字段进行分类,不同类别的结果字段有不同的业务逻辑验证方法,将sql代码解析分堆,一一验证字段的实际业务逻辑,简化sql代码,使复杂的sql代码变得清晰易懂。并且,可以拆解出对于使用相同处理逻辑的字段合并验证测试,简化了测试流程。通过结果表的数据字段反推,简化sql,使对于结果字段的处理逻辑显而易见,便可以根据业务要求很容易验证业务逻辑是否正确(即是否符合预期需求)。

步骤s204:对字段数据做数据抽样测试。

字段数据即被测模型的结果数据,数据抽样测试也可称为数据抽样验证,数据抽样测试无需运行大量数据,只需抽取字段的某几个有代表性的值校验该字段的字段是否符合需求即可,即对数据抽样计算,与通过期望业务逻辑得到的期望结果数据比对,验证测试结果,例如对于品类商品表,可以抽取某个品类的一个商品查询验证;对于品类店铺区域销售可以抽取某个品类下某个店铺下某个地域的销售数据验证。

数据抽样测试的具体过程包括:以一业务主字段作为目标业务主字段,从测试数据中抽取与目标结果数据记录对应的一条测试数据,其中,所述目标结果数据记录为目标业务主字段的值等于预设值的一条结果数据记录;使用抽取的该条测试数据,执行与期望业务逻辑一致的实际业务逻辑,并将得到的结果数据与通过期望业务逻辑得到的期望结果数据比对,以完成数据抽样测试。以品牌店铺区域表为例,品牌、店铺、区域为业务主字段,品牌如品牌a,品牌b等,店铺如店铺1,店铺2等,销售区域如北京,上海等,可以品牌业务主字段作为目标业务主字段,以品牌字段值=品牌a的其中一条结果数据记录(例如品牌a-店铺1-北京)作为目标结果数据记录,从测试数据中抽取与“品牌a-店铺1-北京”对应的一条测试数据,执行业务逻辑以进行数据抽样测试。

步骤s205:判断数据抽样测试是否通过,若是,则执行步骤s206,否则,执行步骤s209。

将数据抽样测试的结果与按照期望业务逻辑运行的结果数据进行比对,如果比对一致,则数据抽样测试通过,否则不通过。

步骤s206:对字段数据做数据汇总测试。

数据汇总测试也可称为数据汇总验证,进行数据汇总测试是对于大量数据的测试,对整体数据做数据条数及计算数据总和验证,具体可与通过期望业务逻辑得到的期望结果数据比对,而数据汇总验证的结果。如果只做数据抽样测试,对于很多join及groupby等逻辑的验证仍不够稳妥,按所有主业务字段做汇总测试,如品类地域店铺宽表,将某个品类下所有数据求和、某个店铺下所有求和、与相关的数据源集合中品类下所有数据求和,验证否有丢失数据或有隐藏的逻辑问题,能够保证更好地验证数据的完整性。

按上例的品牌店铺区域表,品牌、店铺、区域为业务主字段,数据汇总测试过程即:以品牌字段值=品牌a的所有结果数据记录(即品牌a的所有店铺、品牌a店铺在所有销售区域的结果数据记录,如品牌a-店铺1-北京;品牌a-店铺2-北京,……,品牌a-店铺1-上海;品牌a-店铺2-上海,……,等等)作为目标结果数据记录集合,按字段计算测试数据中与目标结果数据记录集合对应的多条测试数据的汇总值,得到汇总的测试数据,然后使用汇总的测试数据,执行与期望业务逻辑一致的实际业务逻辑,并将得到的结果数据与通过期望业务逻辑得到的期望结果数据比对,以完成数据汇总验证。

步骤s207:判断数据汇总测试是否通过,若是,则结束流程,否则,执行步骤s209。

将数据汇总测试的结果与按照期望业务逻辑运行的结果数据进行比对,如果比对一致,则数据汇总测试通过,否则不通过。

通过数据汇总测试,使测试覆盖更全面,对于有复杂逻辑的大数据计算程序,sql复杂且代码繁琐的场景下也能够容易地发现并定位问题。

上述数据抽样测试和数据汇总测试中,另对于特殊字段值如null,0等需额外验证。例如,期望销售量为空或零的店铺数据不选取,需额外验证实际确定的实际业务逻辑中是否包括这些店铺的数据。

本发明实施例在对业务逻辑进行测试之后,还需进行上述的数据抽样测试和数据汇总测试,是由于在一些情形中,业务逻辑验证正确(即实际业务逻辑与相应期望业务逻辑一致)之后通过测试数据进行数据测试之后,仍然可能出现测试不通过的情况,例如sql语句导致的运行结果错误;或者在另一些情形中,通过验证业务逻辑无法测试运行结果是否符合需求,例如数据源表字符串拆分得到结果表的情况,需要通过数据抽样测试和数据汇总测试来验证运行结果,从而保证业务逻辑和运行结果都不存在异常。通过上述的数据抽样测试和数据汇总测试,可以使得在逻辑验证正确的基础上进一步对数据测试的结果进行验证,提高数据测试的准确性。

步骤s208:输出业务逻辑异常的提示消息,然后结束流程。

当结果字段对应的实际业务逻辑与该结果字段对应的期望业务逻辑比对不一致,则可输出异常业务逻辑的提示消息。

步骤s209:输出数据结果异常的提示消息,然后结束流程。

当数据测试的结果与按照期望业务逻辑运行的结果数据比对不一致,则数据数据结果异常的提示消息。

本发明实施例提出了一种高效的sql大数据计算的数据验证(数据测试)方法,来验证某个复杂的sql数据计算。解决在sql计算时无法测试业务流程,不易定位问题的问题。通过字段分类反推即可简单有效的将复杂的sql简化分堆,对每个字段验证其来源及计算逻辑是否正确,只要比对期望业务逻辑就达到验证sql计算的实际业务逻辑的目的。无需运行全量数据,只需要通过验证字段对应的实际业务逻辑正确后做数据抽样验证(即数据抽样测试)和数据汇总验证(即数据汇总测试)即可,简单有效,定位问题准确,为测试和开发节省大量时间和资源。通过将复杂代码图形化为线性逻辑,方便sql能力弱的测试人员轻松分析代码逻辑,也使计算的业务逻辑清晰明了。并可以支持hadoop(一个由apache基金会所开发的分布式系统基础架构)、spark、hbase(一个分布式的、面向列的开源数据库)等多种大数据测试场景,对于常规的数据库数据测试也适用。

图5是根据本发明实施例的数据测试装置的主要模块示意图。

如图5所示,本发明实施例的数据测试装置500主要包括:分类模块501、解析模块502、验证模块503、测试模块504。

分类模块501,用于根据预期需求对被测模型的结果字段分类,并确定分类得到的各类结果字段对应的期望业务逻辑。

分类模块501包括分类子模块,该分类子模块用于根据预期需求对被测模型的结果字段分类,分类得到的各类结果字段包括业务主字段,还可包括关联所得字段和/或计算所得字段。

业务主字段为与预期需求紧密相关的结果字段,例如:某结果表为品类店铺地域宽表,则可以品类、店铺和地域字段为业务主字段;某结果表为品类商品宽表,则可以品类和商品字段为业务主字段。通过业务主字段可以进行结果表的其他结果字段的数据统计计算,例如上述品类商品宽表中,对应商品这一业务主字段的字段值为商品id,该结果表中其他字段例如为商品销售额,那么可利用“groupby”语句对商品这一业务主字段进行商品分组,并利用sum函数对每个商品id下的各店铺的商品销售额进行统计。

关联所得字段是通过直接关联的得来的字段,即数据源表中存在该字段而不需要计算,但会经过业务逻辑和筛选得到该字段。关联所得字段可以是为了后续其他业务使用该字段而从数据源表关联过来,例如,某结果表为品类商品宽表,其中有一个结果字段为商品的价格,该字段不是业务主字段,也不需要通过对数据源表进行计算,而是直接从数据源表中的价格字段关联而来,即属于关联所得字段。

计算所得字段是由计算得来的字段,即数据源表中没有该字段,需要经过groupby,sum,avg等函数或语句计算得来。例如,某结果表为品类商品宽表,其中一个结果字段为商品的总销售额(总gmv),该字段(总gmv)在数据源表中没有,而是根据数据源表中的商品销售额字段进行统计计算得来,属于计算所得字段。

解析模块502,用于解析被测模型中与各类结果字段对应的关键字,以确定各类结果字段对应的实际业务逻辑。

解析模块502具体用于:解析与各类结果字段对应的关键字,以得到与各类结果字段相关的数据源集合、逻辑和查询条件;根据数据源集合、逻辑和查询条件,确定各类结果字段对应的实际业务逻辑。

验证模块503,用于确定实际业务逻辑与期望业务逻辑一致。

验证模块503具体用于:若结果字段为业务主字段,则确定业务主字段对应的实际业务逻辑与该业务主字段对应的期望业务逻辑包括相同的逻辑,且该业务主字段与根据该期望业务逻辑获取到的数据源集合中的字段一致;若结果字段为关联所得字段,则确定关联所得字段与根据该关联所得字段对应的期望业务逻辑获取到的数据源集合中的字段一致;若结果字段为计算所得字段,则确定计算所得字段对应的实际业务逻辑与该计算所得字段对应的期望业务逻辑包括相同的数据源集合、逻辑和查询条件。

测试模块504,用于按照与期望业务逻辑一致的实际业务逻辑,验证被测模型的结果数据,从而完成被测模型的数据测试。

测试模块504具体用于:按照与期望业务逻辑一致的实际业务逻辑,对被测模型的结果数据进行数据抽样验证和数据汇总验证,其中:以一业务主字段作为目标业务主字段,从测试数据中抽取与目标结果数据记录对应的一条测试数据,其中,所述目标结果数据记录为目标业务主字段的值等于预设值的一条结果数据记录;使用抽取的该条测试数据,执行与期望业务逻辑一致的实际业务逻辑,并将得到的结果数据与通过期望业务逻辑得到的期望结果数据比对,以完成数据抽样验证;以及,按字段计算测试数据中与目标结果数据记录集合对应的多条测试数据的汇总值,以得到汇总的测试数据,其中,目标结果数据记录集合为所述目标业务主字段的值等于预设值的所有结果数据记录的集合;使用所述汇总的测试数据,与期望业务逻辑一致的实际业务逻辑,并将得到的结果数据与通过期望业务逻辑得到的期望结果数据比对,以完成数据汇总验证;根据数据抽样验证和数据汇总验证的结果得到数据测试的结果。

另外,在本发明实施例中数据测试装置的具体实施内容,在上面所述数据测试方法中已经详细说明了,故在此重复内容不再说明。

图6示出了可以应用本发明实施例的数据测试方法或数据测试装置的示例性系统架构600。

如图6所示,系统架构600可以包括终端设备601、602、603,网络604和服务器605。网络604用以在终端设备601、602、603和服务器605之间提供通信链路的介质。网络604可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。

用户可以使用终端设备601、602、603通过网络604与服务器605交互,以接收或发送消息等。终端设备601、602、603上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。

终端设备601、602、603可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。

服务器605可以是提供各种服务的服务器,例如对用户利用终端设备601、602、603所浏览的购物类网站提供支持的后台管理服务器。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息等)反馈给终端设备。

需要说明的是,本发明实施例所提供的数据测试方法一般由服务器605执行,相应地,数据测试装置一般设置于服务器605中。

应该理解,图6中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。

下面参考图7,其示出了适于用来实现本申请实施例的服务器的计算机系统700的结构示意图。图7示出的服务器仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。

如图7所示,计算机系统700包括中央处理单元(cpu)701,其可以根据存储在只读存储器(rom)702中的程序或者从存储部分708加载到随机访问存储器(ram)703中的程序而执行各种适当的动作和处理。在ram703中,还存储有系统700操作所需的各种程序和数据。cpu701、rom702以及ram703通过总线704彼此相连。输入/输出(i/o)接口705也连接至总线704。

以下部件连接至i/o接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至i/o接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。

特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(cpu)701执行时,执行本申请的系统中限定的上述功能。

需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括分类模块501、解析模块502、验证模块503、测试模块504。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,分类模块501还可以被描述为“用于根据预期需求对被测模型的结果字段分类,并确定分类得到的各类结果字段对应的期望业务逻辑的模块”。

作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:根据预期需求对被测模型的结果字段分类,并确定分类得到的各类结果字段对应的期望业务逻辑;解析所述被测模型中与各类结果字段对应的关键字,以确定各类结果字段对应的实际业务逻辑;确定实际业务逻辑与所述期望业务逻辑一致后,按照与期望业务逻辑一致的实际业务逻辑,验证被测模型的结果数据,从而完成被测模型的数据测试。

根据本发明实施例的技术方案,根据预期需求对被测模型的结果字段分类,并确定分类得到的各类结果字段对应的期望业务逻辑;解析被测模型中与各类结果字段对应的关键字,以确定各类结果字段对应的实际业务逻辑;确定实际业务逻辑与期望业务逻辑一致后,按照与期望业务逻辑一致的实际业务逻辑,验证被测模型的结果数据,从而完成被测模型的数据测试。能够高效清晰地找出测试字段对应的处理逻辑,使复杂的代码变得清晰有条理,克服大数据测试中无法测试业务逻辑和定位业务逻辑计算中的问题的缺陷,对于代码能力不高的测试人员,只要清楚需求及表字段说明就可以完成业务逻辑的测试验证,无需编写大量测试代码运行期望结果,只需要在保证业务逻辑正确的基础上做抽样测试和汇总测试即可,降低测试工作量,提高测试效率。

上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1