什么是数据测试?

数据测试,是对数据在业务系统中“产生—传输—处理—存储—展示”等生命周期过程进行验证,目的是确保数据的准确性、完整性、一致性、安全性和时效性。

它不仅是软件测试中的一个重要分支,也是保障数据驱动业务正确运行的关键环节。

与传统功能测试相比,数据测试更强调与数据库、接口、数据模型、ETL流程、日志、文件等数据源打交道,对测试人员的逻辑能力、SQL能力、数据敏感性和业务理解力要求更高。

数据测试关注的主要方面

01、数据采集阶段

主要验证系统是否正确地采集到源数据。

测试点:

数据源是否正确:

数据是从哪个系统、接口、第三方来源拉取的?数据源是否合法、稳定?

字段是否齐全:

需要采集的字段是否都采集到了?是否有缺失?

字段类型与格式是否一致:

如时间字段是YYYY-MM-DD还是时间戳?金额是否为浮点?

数据是否实时/定时采集:

系统是否定时抓取?实时数据是否延迟?调度频率是否匹配需求?

02、数据传输阶段

数据从一个系统传送到另一个系统,如API传输、文件传输、消息队列等。

测试点:

数据是否丢失或重复:

例如数据分页传输是否漏页或重复发送?

网络异常时是否支持重试/补偿?:

例如MQ是否配置了幂等机制或异常处理逻辑?

数据编码问题:

中文是否乱码?特殊字符(如 emoji、换行)是否传输正常?

接口结构是否稳定:

字段是否变更过?是否存在老版本兼容问题?

03、数据转换/清洗阶段(ETL)

该阶段是数据测试最容易出现问题的环节,涉及大量字段映射、规则处理、数据计算、格式转化等操作。

常见问题:

字段名称映射错误:

源字段 A 应该映射到目标字段 B,结果误映射为 C。

数值计算错误:

如金额单位转换错误(万元与元混淆)、百分比与小数搞反。

业务逻辑不准确:

如身份证号校验位缺失、信用评级算法使用旧版本等。

数据清洗不充分:

如去重失败、非法值未剔除、空字段未赋默认值。

源系统:投资比例 investRate = "12.3456%"

目标系统要求:小数格式保留 4 位 => 0.1235

测试应检查是否正确去除百分号并转换格式。

04、数据存储阶段(落库)

数据库是最终落地的地方,落库正确性是保障数据质量的核心。

重点校验:

字段类型匹配:

varchar 对应字符串,decimal 对应金额,datetime 对应时间等。

精度问题:

特别是金额、百分比、比率,需关注小数点位数(2位、4位等)。

主键/唯一约束:

是否有重复数据写入?是否出现主键冲突、唯一性违背?

入库时间与创建时间一致性:

例如一些系统生成时间字段,是否准确落库?

数据归档/更新/删除策略正确:

如逻辑删除字段是否设置正确?

可以到我的个人号:atstudy-js

这里有10W+ 热情踊跃的测试小伙伴们,一起交流行业热点、测试技术各种干货,一起共享面试经验、跳槽求职各种好用的。        

多行业测试学习交流群,内含直播课+实战+面试资料

AI测试、 车载测试、自动化测试、银行、金融、游戏、AIGC.

SQL 示例校验语句:

-- 校验唯一性SELECT credit_code, COUNT(*) FROM ent_base GROUP BY credit_code HAVING COUNT(*) > 1;-- 校验空值SELECT * FROM t_data WHERE important_field IS NULL;-- 精度检查SELECT investRate FROM t_data WHERE LENGTH(SUBSTRING_INDEX(investRate, '.', -1)) > 4;

05、数据展示阶段(报表/大屏/查询)

这是用户直观看到数据的地方,测试不能只看“页面上对不对”,还需要校验页面背后的数据来源。

测试点:

  • 报表数字是否与数据库一致;

  • 筛选/搜索/分页功能是否正常;

  • 合计/平均值计算是否准确;

  • 时间维度、单位、格式是否明确清晰;

  • 图表数据是否对应文本数据。

06、数据变更、回滚、删除等操作

特别注意:

  • 数据更新是否正确覆盖旧值;

  • 撤销操作是否能完整还原;

  • 删除操作是否物理删除还是逻辑删除;

  • 有无数据日志或审计记录保留?

常用的数据测试方法

1. SQL脚本:

JOIN、COUNT、HAVING等进行数据比对。

-- 校验源表和目标表的数据一致性SELECT * FROM source_table aLEFT JOIN target_table b ON a.code = b.codeWHERE a.value != b.value;
-- 校验数据条数一致SELECT COUNT(*) FROM source_table;SELECT COUNT(*) FROM target_table;

2. Excel 比对:

VLOOKUP、条件格式等快速分析差异。

对于小批量的样本数据,可使用 Excel 的公式辅助检查:

  • VLOOKUP、IF 判断值是否一致;

  • 条件格式高亮差异;

  • 数据透视表查看聚合一致性。

3. Python脚本:

使用pandas处理大数据文件并比对字段值。​​​​​​​

import pandas as pddf1 = pd.read_excel('source.xlsx')df2 = pd.read_excel('target.xlsx')
# 对比某字段是否一致diff = df1[df1['code'] != df2['code']]diff.to_excel('差异数据.xlsx')

数据测试用例设计建议

从业务、数据、技术、时效、边界等五个维度设计用例,注重数据完整性、正确性和覆盖面,配合SQL脚本与样本文件。

图片

建议:每个测试用例要说明输入来源、处理逻辑、期望输出,配套 SQL 脚本或 Excel 样例。

数据测试中常见的易错点

1. 字段误映射

2. 小数精度错误

3. 编码处理异常

4. 状态码理解偏差

5. 缺乏异常/边界数据

6. 测试数据不具代表性

数据测试人员能力要求

要做好数据测试,测试人员建议具备以下能力:

  • 熟练掌握 SQL,能进行复杂查询、字段对比、统计分析;

  • 会使用 Python 做简单的数据处理(推荐学习 pandas);

  • 了解常见 ETL 工具

    (如 DataX、Kettle、Flink);

  • 熟悉数据表结构、字段类型和业务逻辑;

  • 对数据细节敏感,有一定容错心理和排查技巧;

  • 能编写规范的测试用例和对比脚本。

Logo

欢迎加入我们的广州开发者社区,与优秀的开发者共同成长!

更多推荐