1、应该测什么?
1.1 了解数仓分层
我们先要了解数仓是如何分层的。业界的分层概念如下图所示:
ODS:数据运营层,也叫 ODS 层,数据运营层,也叫 ODS 层,是最接近数据源中数据的一层,数据源中的数据,经过抽取、洗净、传输,也就说传说中的 ETL 之后,装入本层。
DW:数据仓库层是数据仓库核心设计的一层。这里数据根据不同的主题进行了划分,再根据 DW 内部的细分 DWD(Data Warehouse Detail)、DWM(Data WareHouse Middle)、DWS(Data WareHouse Servce)层来进行聚合、降纬、汇总成宽表等数据层面的操作。
APP:数据应用层。最终形成的数据表(宽表)就会落在这一层。可以提供封装的 api 提供给业务方使用、也可能会提供给自己的报表系统、邮件报表使用。
详细了解见:数据仓库的分层方法
1.2 主要测试内容
1.2.1 在 ODS 层
- 测试应该需要关注同步过来同步表的数据质量、时间、稳定性
表的备注信息是否规范(不规范时可能会误导数据开发过程中造成不必要的问题)
1.2.2 在 DW 层
数据的准确性(口径一致、合理的业务逻辑,例如:订单商品价格不应该从商品库表取。应该从订单快照上取。因为商品库同一个 sku 的价格是可能调整的)
- HiveQL 的语句规范性(例如: 在 HiveQL 中 String 类型的字段若是空 (empty) 字符串, 即长度为0, 那么对它进行 IS NULL 的判断结果是 False)
- 字段类型是否一致,是否出现了中间表导致字段类型的转换 (int->String,).
- HiveQL 的性能问题。
-
1.2.3 在 APP 层
对外暴露的 resfulapi/grpc (性能、鉴权等)
-
2、大数据测试工程师还能做什么?
数据团队内部有许多的支撑平台,例如调度系统、监控系统。作为测试工程师,这些系统都可以合理的进行介入。
离线数据的产出链路长,在这中间如何去层层保障数据的一致性、完整性、准确性、及时性,测试工程师都是需要去考虑的。例如:合理的监控、在资源有限的情况下保证资源最大化利用。因地制宜制定规范的发版流程。
实时数据一般作为公司大屏作为展示,实时反馈公司现在状况,不仅需要去保证一致性、完整性、准确性、及时性。作为测试更需要的是考虑容灾这种极端场景。3、需要拥有的技能
一个合格的数据工程师需要具备以下技术栈:
接口测试能力 (resfulApi/grpc)。独立完成接口的自动化
- 良好的关系型数据库知识储备 (Mysql、SqlServer、Oracle)
- 非关系型数据的一定知识储备 (ES、Redis、Mongo)
- 大数据库相关知识包括但不限 Hive 基础、Hbase、建模
- Linux shell
- 独立的代码阅读、编写能力 (JAVA、Python)。具备一定的白盒测试基础
- 对于 Kafka、MQ 有一定的了解。最好能自己尝试搭建环境进行消息处理
- 良好的自我学习能力,自我驱动能力。
- 具有细心、敏锐的数据敏感性。
大部分公司在数据测试工程师都还处于探索阶段。在小公司大部分可能更偏功能、业务报表层的测试。这个岗位还有一段路需要走。测试不光是测,需要去做更多的质量方案考虑。如何保证数据质量,过程中可以多与开发、项目负责人进行沟通。
