大数据测试分类功能测试、性能测试、其他非功能性测试(兼容、安全等)。
功能测试
功能测试常用的方法有:数据完整性测试、数据一致性测试、数据准确性测试、数据及时性测试、数据约束检查、数据存储检查、SQL 文件检查、数据处理逻辑验证、shell 脚本测试和调度任务测试等。
## 数据完整性测试
数据完整性指数据记录和信息完整,不存在缺失情况。数据确实主要有记录缺失和记录中某个字段信息缺失,这俩都会导致统计结果不准确。
## 数据一致性测试
数据一致性主要包括数据记录规范一致、数据逻辑一致和多节点 数据一致。数据记录规范一致指编码和数据格式。如订单 id,从业务来源表到数仓每一层的表的订单 id 都是同一种数据类型且长度保持一致。数据逻辑一致指多数据间的逻辑处理一致。
## 数据准确性测试
数据准确性测试包括数值检查、时间维度对比和空间维度对比。数值检查通常验证数值是否在常规范围,如在渠道唯一情况下,商品搜索的人数应该大于或者等于该商品购买的人数。时间维度对比指 对同一组数在不同时间的波动情况。空间维度对比指固定时间维度,将当前数据与其他数据进行对比,主要有上下游数据对比、与系统内的其他数据对比、与系统外的数据对比。
## 数据及时性测试
数据及时性指数据从生产到可以查看的时间间隔(即数据的延时时长)在可以接受的范围。及时性对大数据离线项目影响不大,对实时项目影响大。
## 数据 约束 检查
数据约束检查主要检查 数据 类型、长度、索引、主键是否符合要求。
## 数据存储检查
数据存储检查主要检查数据的存储是否合理、正确。具体:评估是否需要以压缩文件形式存储;hive 表类型的选择是否合理(内部表、外部表、分区表和分桶表);代码中读取和写入的文件及目录是否正确。
##SQL 文件检查
主要指对开发规范、SQL 语法进行检查 。开发规范如尽量少使用 distinct,降低资源消耗;SQL 语法如合理使用 orderby、sortby 等。
## 数据处理逻辑验证
需要关注:1、验证过程是否符合业务逻辑;2、对异常值、脏数据、极值、特殊数据的处理是否符合预期;3、字段类型与实际数据是否一致;4、去重记录是否按照驱虫规则处理;5、数据的输入和输出是否符合规定。
##shell 脚本测试
常见测试点:1、验证脚本的中 jar 包引入是否正确;2、验证脚本的中的 mapper、reducer、及 mapreduce 以来文件和输入输出的路径是否正确;验证脚本执行是否正确,过程的日志输出是否符合预期。
## 调度任务测试
需要关注 1、任务本身是否支持重跑;2、依赖的父任务是否配置合理;3、任务依赖层次是否合理;4、任务是否在规定时间内完成。
性能测试
性能测试有:基准测试、并发测试、负载测试、压力测试、容量测试、稳定性测试。
其他非功能测试
除功能测试、性能测试外,大数据测试还有以下类型测试:
易用性测试、安全性测试、容错性测试、扩展性测试、部署方式、高可用性测试、混沌工程等。