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

一种数据回传后的数据核对自动化测试方法及工具与流程

2022-02-22 17:29:20 来源:中国专利 TAG:
1.本发明属于信息
技术领域
:,具体涉及一种数据回传后的数据核对自动化测试方法及工具。
背景技术
::2.本世纪以来,我国的科技不断发展进步,互联网的出现产生了大量的数据信息,人类已进入“大数据”时代。在这样一个时代背景下,依靠大数据展开的数据挖掘、机器学习等算法应用于各行各业,那么如何进行数据软件产品的测试,保证数据的准确性就显得尤为重要。3.在传统软件测试体系中,对功能、性能、稳定性等测试方法描述比较完善,但很少有涉及大数据的测试方法。因此,本发明针对大数据测试方法,梳理出一类数据回传核对数据准确性,并提供自动化测试工具,为大数据测试体系的完善提供有力支撑,同时在提高数据测试效率方面迈出坚实的一步。技术实现要素:4.本发明的目的在于针对现有软件测试体系对大数据测试方法的不足,提出并开发一种数据回传后的数据核对自动化测试方法及工具。5.本发明解决其技术问题所采用的技术方案如下:6.本发明可支持的测试场景包含:7.场景1:通过请求客户提供的接口将a系统的数据回传到b系统,不同的项目请求接口的报文存在个性化;8.场景2:通过直接访问b系统的后台数据库,将回传数据直接落到b系统的中间表中,不同的项目中间表的数据字典存在个性化;9.基于所述可支持的推数场景,本发明具体测试的实现方式:10.步骤1:完成数据回传动作:11.首先,在a系统里选中并提交需要回传的数据;12.然后,在airflow调度平台执行数据回传任务,将数据推送到b系统(客户系统);13.步骤2:根据项目的个性化,对参数进行配置;14.所包含的配置主要包含5个模块:a系统pg库的连接信息[db_conf]、项目信息[project_msg]、b系统数据库的连接信息[log_db_conf]、项目上需要核对的推数字段[field]、项目上个性化的查询sql[sql],具体如下:[0015]模块1:a系统pg库的连接信息[db_conf]:[0016]db_database:a系统pg库的数据库database名称;[0017]db_user:a系统pg数据库的登录用户名;[0018]db_password:a系统pg数据库的登录密码;[0019]db_host:a系统pg数据库的ip地址;[0020]db_port:a系统pg数据库的ip地址对应的端口;[0021]模块2:项目信息[project_msg][0022]project_id:客户对应项目在a系统中的租户号[0023]scene_code:客户对应项目在a系统中参与的业务场景编码[0024]brand_code:客户商品存在的品牌编码列表[0025]模块3:b系统数据库的连接信息[log_db_conf][0026]db_database:b系统数据库database的名称[0027]db_user:b系统数据库的登录用户名[0028]db_password:b系统数据库的登录密码[0029]db_host:b系统数据库的ip地址[0030]db_port:b系统数据库的ip地址对应的端口[0031]db_type:b系统系统的数据库类型[0032]模块4:项目上需要核对的推数字段[field][0033]test_field:b系统数据库中中间表里需要核对的字段[0034]comp_field:a系统中pg数据库里需要核对的字段[0035]模块5:项目上个性化的查询sql[sql][0036]target_table_name:b系统数据库里的中间表的表名,必须配置;[0037]schema:b系统数据库里的日志表所在的schema,不存在就不需要配置;[0038]test_where_pg:a系统pg库中查询数据的筛选条件,亦可测试单条或多条,和配置项test_where_cus对应;[0039]test_where_cus:b系统数据库中查询数据的筛选条件,亦可测试单条或多条,和配置项test_where_pg对应;[0040]test_with_pg:a系统pg库中查询数据的需要额外增加的临时表,项目个性化开发,不存在就不需要配置;[0041]test_select_pg:a系统pg库中查询数据的需要额外增加返回的字段,项目个性化开发,不存在就不需要配置;[0042]test_join_pg:a系统pg库中查询数据的需要额外关联的表,项目个性化开发,不存在就不需要配置。[0043]步骤3:读取步骤2关于a系统配置文件中的模块信息:[0044]读取a系统pg库的连接信息[db_conf]下的参数,用来获得a系统pg库的连接信息,创建数据库连接;[0045]读取项目信息[project_msg]、项目上个性化的查询sql[sql]下的参数,用来构建查询sql;[0046]执行sql句获得a系统在步骤1中推送到系统b的数据;[0047]进一步的,所述的查询sql语句模板为:[0048]withdtas(/dt临时表;[0049]selectbrand_code,max(day_date)asday_date/读取项目品牌信息对应的最新决策日期(brand_code,项目品牌信息);[0050]fromtenant_{project_id}_rst.rst_ra_sku_org_detail/回传数据在a系统存放的表;[0051]wherescene_codein({scene_code})/筛选条件,规定的项目业务场景(scene_code,业务场景字段;{scene_code},配置参数配置的业务场景);[0052]andcommit_status=2/筛选条件,数据状态是已提交回传的;[0053]andhuman_ra_qty>0/筛选条件,数据的提交补调单的个数是大于0的;[0054]groupbybrand_code/根据项目品牌信息进行分组;[0055])[0056]{test_with}/配置参数,创建sql临时表;[0057]selectsku.order_idasuuid,/获取项目的商品信息:补调单号;[0058]sku.brand_code,/获取项目的商品信息:项目品牌信息;[0059]sku.day_date,/获取项目决策日期;[0060]to_char(sku.update_time,’yyyy-mm-ddhh24:mi:ss’)ascommit_time,/获取数据的更新时间;[0061]commit_user_nameascommit_user,/获取数据的更新用户;[0062]sku.scene_codeastype_code,/获取项目的业务场景;[0063]sku.sku_code,/获取项目的商品信息:款色码编码;[0064]sku.product_code,/获取项目的商品信息:款编码;[0065]sku.color_code,/获取项目的商品信息:颜色编码;[0066]sku.size_code,/获取项目的商品信息:尺码编码;[0067]dim_in_org.stockorg_codeasreceive_org_code,/获取项目的组织信息:接收门店或仓库的编码;[0068]dim_out_org.stockorg_codeassend_org_code,/获取项目的组织信息:发出门店或仓库的编码;[0069]dim_in_org.stockorg_typeasreceive_stockorg_type,/获取项目的组织信息:接收门店或仓库的类型;[0070]dim_out_org.stockorg_typeassend_stockorg_type,/获取项目的组织信息:发出门店或仓库的类型;[0071]dim_in_org.org_typeasreceive_org_type,/获取项目的组织信息:接收区域的类型;[0072]dim_out_org.org_typeassend_org_type,/获取项目的组织信息:发出区域的类型;[0073]sku.human_ra_qtyassend_qty/获取项目的商品信息:[0074]{test_select}/配置参数,带补充的其他数据字段;[0075]fromtenant_{project_id}_rst.rst_ra_sku_org_detailassku/回传数据在a系统存放的表;[0076]innerjointenant_{project_id}_rst.dim_stockorgasdim_in_org/回传数据对应接收组织在a系统存放的表;onsku.human_allot_in_org_sk=dim_in_org.stockorg_sk/表关联的条件,组织的代理键要相同;[0077]innerjointenant_{project_id}_rst.dim_stockorgasdim_out_org/回传数据对应发出组织在a系统存放的表;onsku.human_allot_out_org_sk=dim_out_org.stockorg_sk/表关联的条件,组织的代理键要匹配上;[0078]innerjoindtonsku.brand_code=dt.brand_codeandsku.day_date=dt.day_date/关联上述品牌对应最新决策日期临时表,表关联的条件,日期要匹配上;[0079]{test_join}/配置参数,可补充的表关联;[0080]wheresku.scene_codein({scene_code})/筛选条件,规定的项目业务场景(scene_code,业务场景字段;{scene_code},配置参数配置的业务场景);[0081]andsku.is_effective=1/筛选条件,商品的状态要是有效的[0082]andsku.brand_codein({brand_code})/筛选条件,规定的项目品牌(brand_code,品牌字段;{brand_code},配置参数配置的品牌信息);[0083]andsku.commit_status=2/筛选条件,数据状态是已提交回传的;[0084]andsku.human_ra_qty>0/筛选条件,数据的提交补调单的个数是大于0的;[0085]{test_where}/配置参数,可补充的筛序条件;[0086]其中{project_id}、{scene_code}、{brand_code}、{test_with}、{test_select}、{test_join}、{test_where}参数通过读取配置文件获得;当项目个性化取数,模板sql句不满足需求时,需要回传其他字段数据时,可配置参数{test_select};需要关联其他表时,可配置参数{test_join};需要增加筛选条件时,可配置参数{test_where};更复杂逻辑需要再创建临时表时,可配置参数{test_with}。[0087]模板sql句中,rst_ra_sku_org_detail表为a系统的主数据表,需要获取的状态是已提交对应业务场景下的有效数据,dim_stockorg表为a系统的组织维表;[0088]步骤4:读取步骤2关于b系统配置文件中的模块信息:[0089]读取b系统数据库的连接信息[log_db_conf]下的参数,从而获得b系统数据库的连接信息,创建数据库连接;[0090]读取b系统项目上个性化的查询sql[sql]下的参数,从而构建查询sql;[0091]执行sql句获得在步骤1中b系统接收到的数据;[0092]进一步的,sql句模板为:[0093]select*from{log_table_name}where1=1{test_where};[0094]其中{log_table_name}、{test_where}}参数通过读取配置文件获得,{log_table_name}为b系统数据库的中间表,{test_where}为查询的筛选条件;[0095]步骤5:核对步骤3和步骤4获得的数据;[0096]由于存在步骤3和步骤4获得的数据的内容一致,当核对的结果为false的情况,导致该结果的原因包括:1、每条记录中字段的排序不一致;2、在多条记录时,数据的排序不一致;3、数据的类型不一样,所以在数据核对前对数据的类型进行转换,数据的类型进行转换的依据:按照项目上需要核对的推数字段[field]下的参数要求进行取值排序。[0097]核对数据,得到如下的测试结果:[0098]结果一:对比结果为true,即测试通过,已提交的数据和已推数的数据的条数和推数内容一致;[0099]结果二:对比结果为false,即测试不通过,已提交的数据和已推数的数据的条数一致,但推数内容存在差异;[0100]结果三:不存在已提交的数据,即测试不通过,未提交数据,测试无效;[0101]结果四:已提交的数据和已推数的数据的条数一致,但推数内容存在差异,即测试不通过,日志会分别输出商品通已提交的数据和b系统日志表中的数据的差集;[0102]结果五:已提交的数据和已推数的数据的条数不一致,即测试不通过,日志会分别输出商品通已提交的数据和b系统日志表中的数据的条数、交集的条数、差集;[0103]步骤6:根据项目租户号project_id,执行测试脚本,并在关键步骤打印日志;[0104]所述的关键步骤包括:[0105]①执行时输入的参数校验;[0106]②获取测试sql;[0107]③获取对比的数据;[0108]④执行的测试结果。[0109]步骤7:测试人员可在对应的日志文件或控制台内查看测试结果。[0110]所述可支持的推数场景的自动化测试工具的技术架构包括5大模块:读取配置文件模块、获取a系统回传的数据、获取b系统接收的数据、数据核对模块、日志模块。[0111]所述的读取配置文件模块,将通过传参获取配置文件名称,然后获取指定配置文件各模块的参数;[0112]所述的获取a系统回传的数据,通过将参数填充到模板sql句里,创建a系统pg数据库的连接,执行对应的sql句,获得a系统回传的数据;[0113]所述的获取b系统接收的数据,通过将参数填充到模板sql句里,创建b系统数据库的连接,执行对应的sql句,获得b系统接收的数据;[0114]所述的数据核对模块,将获取的a系统回传的数据,与获取的b系统接收的数据做对比,如果一致则测试通过,不一致则测试不通过;[0115]所述的日志模块,将控制台的日志写到对应项目租户号下对应日期的log文件中;[0116]所述可支持的推数场景的测试执行方法及日志存储:[0117]在linezone_qa-_data_push_test_1根目录下,执行execute_case.py测试脚本,执行命令为pythonexecute_case[-cf租户号],命令示例:pythonexecute_case-cf1000000659[0118]参数:-cf(‑‑config_file)表示为配置文件的文件名,当传参时,工具根据入参的文件名称加载配置信息,文件夹不存在则报错。当未入参时,则默认读取配置文件config.ini加载配置信息。[0119]执行结束后日志存储在log文件中,用户可自行查看,能够显示执行的sql、获取的a系统回传的数据、获取的b系统接收的数据、数据核对结果等执行信息。[0120]本发明有益效果:[0121]本发明通过梳理、总结大数据测试方法,提出一种数据回传后的数据核对自动化测试方法,针对两个系统间的数据回传,对数据准确性的测试,并实现了自动化测试工具。完善大数据测试体系,有利于提升数据测试效率。[0122]本数据回传后的数据核对自动化测试方法及工具的优势:从测试配置层面,根据个性化项目需求,通过修改配置文件,可以适配90%以上的测试场景,也可以实现多个测试场景兼容于工具中,参数配置具有灵活性,便捷性和易操作性;从测试实施层面,只需安装python语言/pycharm开发工具,就可以执行测试工具,具有较强的可实施性;从测试时间层面,在pycharm中进行run执行,即可开始自动化测试,从配置参数、执行命令到判断测试结果的整个测试过程时间可以控制在10分钟以内,相比较于原始的手工测试,耗时在几个小时以内,该工具从测试速率上得到了很大的提升;从测试准确度层面,可根据程序遍历大批量数据进行核对,相比较纯粹的肉眼核对,在核对的准确性和核对的数据量级上,有很大的跨越。附图说明[0123]图1是本发明实施例采用该数据回传后的数据核对自动化测试方法及工具的具体流程图;[0124]图2是本发明实施例采用该数据回传后的数据核对自动化测试方法及工具的配置文件的示例;[0125]图3是本发明实施例采用该数据回传后的数据核对自动化测试方法及工具的配置文件的示例。具体实施方式[0126]下面结合附图详细描述本发明,本发明的目的和结果将变得更加明显。本实例是本发明的一个类型实施例,具体操作流程如图1所示。[0127]步骤1:在a系统里选中并提交需要回传的数据;然后,在airflow调度平台执行数据回传任务,将数据推送到b系统系统;[0128]步骤2:根据对应项目增添配置文件,完善以下5个配置模块:a系统pg库的连接信息[db_conf]、项目信息[project_msg]、b系统数据库的连接信息[log_db_conf]、项目上需要核对的推数字段[field]、项目上个性化的查询sql[sql],示例如图2、图3;[0129]步骤3:然后执行自动化测试脚本execute_case.py;[0130]步骤4:在关键步骤打印日志;[0131]步骤5:测试人员可在对应的日志文件或控制台内查看测试结果。[0132]本发明不仅局限于上述具体实施方式,本领域一般技术人员根据本发明公开的内容,可以采用其它多种具体实施方案实施本发明。因此,凡是采用本发明的设计结构和思路,做一些简单的变化或更改的设计,都落入本发明保护范围。当前第1页12当前第1页12
再多了解一些

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

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

相关文献