单元测试要求

用例小类 测试要点 说明 是否已检查(Y/N)
规范性 命名规范检查(表、视图、工作流、字段) 是否符合MaxCompute数仓建设规范管理指南中命名规范的表命名规范。
代码格式和注释规范性 是否符合MaxCompute数仓建设规范管理指南中的编码规范。
表引用规范性 数据不允许跨层引用。
表更新策略规范 建议临时表均为非分区表,正式表均为分区表。
是否支持重跑 代码必须支持重跑。
源数据质量 非空值检查 检查所用字段是否存在空值,以及代码对空值处理的策略是否正确。
字段枚举值检查 字段的枚举值是否都在代码考虑范围内,是否有可能会出现新值。
主键检查 物理主键或逻辑主键是否成立。
数据完整性检查 代码中引用的数据能否支撑实际需求。
字段间逻辑检查 字段间的业务逻辑关系是否在数据上成立,例如余额=总的发放-总的回收。
代码质量/BUG检查 历史拉链表检查断链/交叉链 使用标准SQL进行检验。
数据倾斜检查 是否存在倾斜的情况,是否有大表join小表未用mapjoin等。
表分区选择检查 代码对表分区的选择是否正确。
关联条件检查 关联条件是否正确,是否会产生意料外的结果,例如多对多关联、笛卡尔积。
字段类型检查 字段类型是否正确,例如:金额字段必须为X数据类型,编号字段必须为X数据类型。
执行效率检查 单条SQL执行时间不超过30分钟,单个脚本执行时间不超过60分钟。
数仓特殊需求 脏数据检查 检查是否有脏数据。
增量/全量数据抽取规范 抽取时间大于X分钟的,则考虑更改为增量抽取。
数仓抽取时间点检查 数仓抽取时业务系统是否ready,抽取的数据是否完整。
指标特性检查 细分指标趋势检查 例如会员拉链表记录数相比前一天必须是正增长、当日累计值-上日累计值必须大于0。
不同粒度数据转换正确性 例如细粒度向粗粒度汇总,通常使用最大/最高/最小/最低等过滤条件,如:支用层逾期天数转换到客户层指标(最高逾期天数)。最高逾期天数 = Max(支用层逾期天数)。
值域范围检查 检查字段值的范围是否正确,如:金额>=0,比率<=1,天数<=业务起始日期至今,还款日期>=放款日期。
代码值分布检查 从业务逻辑考量字段值的分布情况是否合理。
可累加值与不可累加值检查 检查可累加值和不可累加值的处理逻辑正确性,如:计算客户数总计时需要做去重处理,金额则可以累加。

单元测试用例记录

序号 用例大类 测试要点 字段 自定义表达式 备注
1 规范性 命名规范检查(表、视图、工作流、字段) jrcdm_agt_ovd_ins_detail_fact_dd
2 规范性 是否支持重跑 jrcdm_agt_ovd_ins_detail_fact_dd
3 源数据质量 主键检查 afclms_clms_loan_contract contract_no
4 指标特性检查 值域范围检查 jrcdm_cust_drawndn_fact_ds prin_max_ovd_days, inte_max_ovd_days prin_max_ovd_days>=inte_max_ovd_days 检验逾期天数的业务逻辑。
5 指标特性检查 值域范围检查 x_jredw_da_drawndn_ovd_date_info Prin_Ovd_Start_Dt Prin_Ovd_Start_Dt<=Prin_Ovd_End_Dt, Inte_Ovd_Start_Dt <=Inte_Ovd_End_Dt 检查业务逻辑正确性。
测试结果 测试结果备注 是否转化监控 监控阈值 创建日期 创建人 所属项目名称
通过 2013/7/16 XXX 某项目
通过 2013/7/16 XXX 某项目
通过 2013/7/16 XXX 某项目
通过 <1 2013/7/16 XXX 某项目
未通过 开发代码中存在以下两个问题:
  • 未对期次还款日大于当前日期的记录进行过滤,这部分为未到期记录,需要排除。
  • 未对记录中创建时间小于期次还款日的、未结清的期次记录的逾期结束时间,赋予与逾期开始时间一致的处理。
<1 2013/7/16 XXX 某项目