数据处理类系统功能测试方法
信息技术的广泛应用使得企业生产经营变得更加高效,同时也沉淀了大量的数据。随着大数据、数据挖掘、人工智能等技术的快速发展,企业愈加重视数据资产的价值,将数据中隐藏的信息与规律转化为企业的生产力,使数据成为企业的决策依据。
当前,数据应用能力已成为企业的核心竞争力,支撑经营决策、客户营销、产品创新、绩效管理、风险管控、监管报送及信息披露等诸多场景。因此,各企业积极打造从数据采集、汇总、处理加工至应用的闭环,建设大数据平台、数据仓库、数据集市、数据湖等各种形式的“数据中台”,实现海量数据的快速聚集汇总与处理加工,为企业发展增速提供动力。
数据处理类系统是指根据业务目标与需求对数据进行汇集、拼接、整合、统计、加工等直接处理的纯后台系统,例如大数据平台、数据仓库、数据集市、数据湖等。此类项目无前台界面,多为批量程序,由调度系统控制定期运行,处理结果以及数据文件或数据库表等形式存储,供下游应用使用。
数据是数据应用的基础,数据质量对于数据应用至关重要,数据处理类系统是数据质量的重要影响因素,测试作为系统质量保障的最后一道防线,面对繁杂海量的数据加工规则需求,如何在有限资源的条件下兼顾测试质量与测试效率值得探讨。
本文根据过往项目经验整理了一套数据处理类系统的功能测试方法,对其中重要的目标表检查进行详细梳理,根据检查点来源将目标表检查内容分为了技术层面与业务层面,建议测试人员按照从技术层面到业务层面、从简单到复杂、从宏观到微观的测试执行策略。
一、数据处理类系统功能测试
目前数据处理类系统常用的功能测试方法主要有两类:
一是白盒测试,主要使用代码检查方法,由测试人员根据业务需求对系统批量程序的代码或脚本进行检查,较容易发现一些直观的问题,比如判断条件中的比较符号写反、判断条件的遗漏、边界值的遗漏等。此外,代码检查有助于加深测试人员对数据处理功能的理解,进行黑盒测试案例设计时更有针对性。
二是黑盒测试,即运行批量程序,在运行过程中检查是否出现报错信息与中断,运行结束后对生成的数据表或数据文件,即目标表检查。目标表检查是数据处理类系统测试最主要的内容,通过检查间接验证系统实现的加工逻辑是否正确满足业务需求。目标表检查一般是通过编写 SQL 语句查询的方式实现。
本文根据检查点的来源将此部分内容分为技术层面和业务层面,详细阐述如下。
(一)技术层面检查内容
技术层面检查内容主要是对“接口”格式的检查。数据处理类系统的处理结果供下游应用使用,可以视作与下游系统的“接口”,因此最基本的要求是满足系统间“接口”格式约定以及因约定导致的技术约束。具体检查内容包括:
(1)目标表齐全,表名与约定一致;
(2)目标表字段齐全,字段名、字段类型、长度精度等属性与约定一致;
(3)目标表主键设置与约定一致,以及由此导致的技术约束即不存在主键重复的记录、不存在主键字段为空值的记录;
(4)时间拉链与约定一致,以及由此导致的技术约束即时间拉链不存在断链、倒链和交叉链。这部分测试内容执行简单,容易发现错误,且错误的影响范围广。
(二)业务层面检查内容
业务层面检查内容是根据业务规则与业务经验设计的检查,可以分为两部分:
一是对根据业务规则与经验得到的简单业务约束的检查
具体包括:
(1)目标表记录数的数量级是否与业务经验一致,例如客户信息表的记录数大致与企业客户约十万人一致;
(2)目标表字段的空值比例满足业务预期,例如客户编号、交易金额等字段空值比例为 0,客户地址字段空值比例小于 50%;
(3)目标表字段的默认值比例满足预期,例如客户学历字段默认值为初中,业务预期客户学历为初中的记录数占比小于 30%;
(4)目标表字段数据取值范围是否合理,数值型字段的最小值、最大值在业务预期范围内,如取款金额满足预期取值范围(0,50000],离散型字段的取值符合业务规定,简单的如客户性别、客户学历、年龄段等,复杂的如客户标签、产品标签等,文本型字段的字符串格式符合业务规定,如贵宾客户编号以 VIP 开头、时间字段满足YYYY-MM-DD-HH;
(5)字段间简单的业务逻辑关系是否满足,例如开始时间早于结束时间、持有产品总数等于各类产品持有数之和。对简单业务约束的测试结果与测试数据密不可分,建议使用脱敏的历史数据,但需注意脱敏时不破坏数据的有效性。
二是对具体加工规则的检查
即测试人员根据具体加工规则,对输入数据处理类系统的源数据进行计算,获得正确计算结果,与目标表进行比对。对于记录数较少的目标表可以进行全表核对,对于记录数较多的目标表可以进行表级汇总属性核对,例如表记录数是否一致、数值型字段的表级加总值是否一致、离散型字段的分布比例是否一致等,进一步抽取部分记录进行核对,抽样时可根据等价类划分法、边界值法等有针对性的抽取。
例如功能需求为汇总统计各子机构的A产品营销额,可先测试汇总后目标表记录数是否于子机构数量一致、目标表A产品营销额总计字段的表级加总值是否与A产品总营销额一致,测试通过后进一步从目标表中抽取小部分样本测试对应子机构的A产品营销额是否计算正确。
二、测试执行策略
在执行测试时可以按照从技术层面到业务层面、从简单到复杂、从宏观到微观的测试执行策略。技术层面的测试内容执行较简单耗时短,容易发现影响范围广的错误,例如批量程序执行后发现缺失某张目标表,即可说明批量程序存在问题,反馈开发人员进行排查并修复,无需进行业务层面的测试。从简单到复杂是指先进行简单业务约束的检查,进而执行具体复杂业务规则的检查。从宏观到微观,在具体业务规则检查中先执行表记录数、表级加总值等表级属性的核对,再抽样核对具体记录。
三、总结
上面介绍了一套数据处理类系统的功能测试方法,通过项目经验,将目标表检查内容分为技术层面与业务层面,其中技术层面主要进行接口格式以及主键约束、外键约束等技术约束的检查,业务层面主要进行取值范围、逻辑关系、加工规则等业务约束的检查。测试人员可遵循从技术层面到业务层面、从简单到复杂、从宏观到微观的测试执行策略,避免遗漏测试点,同时耗费最小代价尽可能多的发现缺陷,从而极大提高测试质量与测试效率。