小牛丨软件测试学习小牛丨软件测试学习
首页
  • 业务测试面试题
  • 数据库测试面试题
  • Linux测试环境面试题
  • 网络协议测试面试题
  • 中间件测试面试题
  • Java测试开发面试题
  • Python测试开发面试题
  • Python自动化面试题
  • Java自动化面试题
  • 性能测试面试题
  • 手撕代码
  • HR面试题
  • 系列总入口
  • 业务测试理论
  • 数据库测试
  • Linux测试环境
  • 网络协议
  • 中间件测试
  • Python编程
  • Java编程
  • 自动化测试
  • 性能测试
  • AI测试
  • HR面试
  • AI测试学习路线
  • AI测试基础面试题
  • 大模型测试面试题
  • AI自动化测开面试题
  • AI Agent测试面试题
  • AI性能与稳定性测试面试题
  • AI应用安全测试面试题
  • 互联网大厂面试真题
  • 互联网中厂面试真题
  • 手机厂商面试真题
  • 通信厂商面试真题
  • 新能源汽车面试真题
  • 银行金融面试真题
  • 项目说明
  • 电商接口文档
  • 实战项目总入口
  • 测试简历编写指南
  • 20K level 简历打磨指南
  • 测试简历模板参考
  • 简历常见问题与避坑
  • 零基础入行专题路径
  • 初中级进阶高级专题路径
  • 零基础小白入行软件测试保姆级学习路线
  • 初中级测试进阶高级测试全路线
首页
  • 业务测试面试题
  • 数据库测试面试题
  • Linux测试环境面试题
  • 网络协议测试面试题
  • 中间件测试面试题
  • Java测试开发面试题
  • Python测试开发面试题
  • Python自动化面试题
  • Java自动化面试题
  • 性能测试面试题
  • 手撕代码
  • HR面试题
  • 系列总入口
  • 业务测试理论
  • 数据库测试
  • Linux测试环境
  • 网络协议
  • 中间件测试
  • Python编程
  • Java编程
  • 自动化测试
  • 性能测试
  • AI测试
  • HR面试
  • AI测试学习路线
  • AI测试基础面试题
  • 大模型测试面试题
  • AI自动化测开面试题
  • AI Agent测试面试题
  • AI性能与稳定性测试面试题
  • AI应用安全测试面试题
  • 互联网大厂面试真题
  • 互联网中厂面试真题
  • 手机厂商面试真题
  • 通信厂商面试真题
  • 新能源汽车面试真题
  • 银行金融面试真题
  • 项目说明
  • 电商接口文档
  • 实战项目总入口
  • 测试简历编写指南
  • 20K level 简历打磨指南
  • 测试简历模板参考
  • 简历常见问题与避坑
  • 零基础入行专题路径
  • 初中级进阶高级专题路径
  • 零基础小白入行软件测试保姆级学习路线
  • 初中级测试进阶高级测试全路线
  • 数据库测试精华文章

    • 数据库测试精华文章
    • 1. 测试工程师为什么必须会数据库
    • 2. SQL 基础查询面试怎么准备
    • 3. 多表关联查询怎么讲清楚
    • 4. group by 和聚合函数怎么用于测试
    • 5. 索引面试怎么回答才不虚
    • 6. 事务 ACID 怎么结合业务理解
    • 7. 数据库锁和并发问题测试怎么讲
    • 8. 接口测试中怎么做数据库断言
    • 9. 常见手撕 SQL 题怎么准备
    • 10. 数据库测试常见问题定位思路
⌕
🛒项目实战📦资料包🛠测试神器AIAI路线CV简历测评🧭入行测评🧪测开测评🎯训练营🏆案例❤赞赏我

10. 数据库测试常见问题定位思路

数据库相关问题定位,是测试工程师非常重要的实战能力。很多 Bug 表面上是页面问题,实际根因在接口、服务逻辑、数据库状态、异步任务、缓存或定时任务。只会描述“页面不对”的测试,很难推动问题快速解决;能把页面、接口、日志、数据库串起来分析的测试,才能让开发快速定位。

数据库问题定位不是简单地“查一下表”。它需要你建立一条完整链路:用户在页面做了什么,请求参数是什么,接口返回了什么,数据库哪些表应该变化,实际变化是什么,日志有没有异常,是否有异步处理,是否有缓存延迟。这个链路越清楚,定位越快。

一、数据库相关问题有哪些表现

常见现象包括:

  • 页面提示成功,但数据库没有数据;
  • 接口返回成功,但状态没有更新;
  • 页面列表少数据或多数据;
  • 订单金额和支付流水不一致;
  • 库存扣减异常;
  • 删除后页面仍显示;
  • 报表统计数字错误;
  • 权限菜单显示异常;
  • 审批状态和审批记录不一致;
  • 自动化用例偶现失败,数据库状态不稳定。

这些问题可能发生在不同层。测试要做的是逐层排查,而不是直接猜。

二、通用定位顺序

1. 复现页面现象

先确认问题是否稳定复现,操作步骤是否清楚,测试数据是否明确。很多问题是因为数据状态不满足前置条件。

2. 抓接口请求和响应

通过浏览器 DevTools、Charles、Fiddler、Postman 等工具查看请求参数、响应状态码、响应体。确认前端是否传了正确参数,接口是否返回成功。

3. 查数据库实际状态

根据业务 ID 查询相关表。不要只查一张表,要按业务链路查多张表。

4. 看日志

如果接口返回失败或数据库状态异常,要看服务端日志。关注异常堆栈、SQL 错误、事务回滚、消息发送失败。

5. 判断问题归属

结合页面、接口、数据库、日志判断:是前端展示问题、接口参数问题、后端逻辑问题、数据库数据问题、异步任务问题,还是缓存问题。

三、场景 1:页面提示成功但数据库没数据

可能原因:

  • 前端只是显示成功,接口实际失败;
  • 接口返回成功但事务回滚;
  • 数据写入异步处理,还没执行;
  • 查错数据库或查错环境;
  • 查询条件不对;
  • 数据写到另一张表或分库分表。

定位步骤:

  1. 抓接口确认是否真的返回成功;
  2. 查看响应里是否有业务 ID;
  3. 用业务 ID 查数据库;
  4. 如果查不到,看日志是否有异常;
  5. 如果是异步任务,看消息队列或任务日志;
  6. 确认当前连接的是正确环境数据库。

面试表达:

我不会只根据页面提示判断成功,会先抓接口看请求和响应,再用接口返回的业务 ID 查数据库。如果数据库没有数据,我会继续确认是否异步写入、是否事务回滚、是否查错环境,并结合服务端日志定位。

四、场景 2:接口返回成功但状态没更新

例如取消订单接口返回成功,但订单仍是待支付。

可能原因:

  • 后端只返回成功但没有执行更新;
  • 更新条件不满足,比如状态不是待支付;
  • SQL 执行影响行数为 0 但代码没处理;
  • 事务回滚;
  • 查了旧缓存或读写分离延迟;
  • 状态字段有多个,查错字段。

定位 SQL:

select order_no, status, pay_status, update_time
from t_order
where order_no = 'NO202604300001';

如果状态没变,要看日志中更新 SQL 的影响行数。如果影响行数为 0,通常是 where 条件不匹配。

五、场景 3:页面列表数据不对

列表问题非常常见,比如少数据、多数据、排序错、筛选错。

定位思路:

  1. 确认页面筛选条件;
  2. 抓接口请求参数;
  3. 查接口响应数据;
  4. 用 SQL 按同样条件查询;
  5. 比较页面、接口、数据库三者差异。

如果数据库有、接口没有,问题多在后端查询条件、权限过滤、分页逻辑;如果接口有、页面没有,问题多在前端展示;如果数据库没有,问题在数据准备或上游流程。

常用 SQL:

select order_no, status, create_time
from t_order
where status = 'PAID'
  and create_time >= '2026-04-01 00:00:00'
  and create_time < '2026-05-01 00:00:00'
order by create_time desc
limit 0, 20;

六、场景 4:金额不一致

金额问题优先级很高。比如订单金额和支付流水金额不一致。

定位步骤:

  1. 查订单主表金额;
  2. 查订单明细金额合计;
  3. 查优惠券、积分、运费;
  4. 查支付流水金额;
  5. 确认页面展示口径;
  6. 判断是计算逻辑、优惠规则、精度还是数据同步问题。

SQL 示例:

select o.order_no, o.total_amount, sum(i.price * i.quantity) as item_amount
from t_order o
join t_order_item i on o.order_no = i.order_no
where o.order_no = 'NO202604300001'
group by o.order_no, o.total_amount;

金额问题还要注意小数精度,不能用浮点误差大的方式计算。

七、场景 5:报表统计错误

报表问题定位重点是“统计口径”。页面数字和 SQL 不一致时,不要马上说页面错,先确认口径。

要问清楚:

  • 统计时间按创建时间还是支付时间?
  • 是否只统计成功状态?
  • 是否包含退款?
  • 是否过滤取消订单?
  • 是否过滤测试数据?
  • 是否按用户去重?
  • 是否有缓存或定时任务延迟?

例如今日支付金额:

select sum(pay_amount)
from t_pay_record
where pay_status = 'SUCCESS'
  and pay_time >= '2026-04-30 00:00:00'
  and pay_time < '2026-05-01 00:00:00';

如果页面数据来自离线统计表,还要查统计任务是否执行。

八、场景 6:权限数据异常

用户看不到菜单或看到了不该看的数据,通常要查用户、角色、权限、数据范围。

select u.username, r.role_name, m.menu_name
from t_user u
join t_user_role ur on u.id = ur.user_id
join t_role r on ur.role_id = r.id
join t_role_menu rm on r.id = rm.role_id
join t_menu m on rm.menu_id = m.id
where u.username = 'tester';

如果权限表有数据但页面没显示,看接口是否返回;接口返回但页面没显示,看前端;权限表没有数据,则是配置问题。

九、场景 7:异步任务导致数据延迟

有些业务不是接口同步写完,比如支付成功后发消息,消费者异步更新订单状态。此时接口返回成功后,数据库可能短时间内还没变化。

测试时要确认系统是同步还是异步。如果是异步,可以做轮询等待,但要设置超时时间。例如 10 秒内每 1 秒查一次数据库。如果超时仍未更新,就是问题。

还要看消息队列是否积压、消费者是否异常、补偿任务是否执行。

十、问题定位时的证据怎么整理

一个高质量 Bug 报告应该包含:

  • 操作步骤;
  • 测试账号和测试数据;
  • 请求 URL 和参数;
  • 接口响应;
  • 数据库查询 SQL 和结果;
  • 期望结果与实际结果;
  • 日志关键异常;
  • 初步判断。

比如:

取消订单接口返回成功,但数据库 t_order.status 仍为 WAIT_PAY,接口响应 code=0。查询 SQL 和结果见附件。初步判断后端更新订单状态未生效或事务回滚。

这样的 Bug 开发更容易定位。

十一、面试回答模板

如果面试官问“数据库问题怎么定位”,可以这样回答:

我会按页面、接口、数据库、日志的链路定位。先复现页面现象,确认操作步骤和测试数据;再抓接口看请求参数和响应结果;然后根据业务 ID 查询相关数据库表,确认数据是否落库、状态是否正确、金额是否一致;如果接口成功但数据库不对,会继续看服务端日志、事务回滚、异步消息或定时任务。如果数据库正确但页面不对,就看接口返回和前端展示。比如订单支付问题,我会查订单表、支付流水表、库存表和优惠券表,判断是支付逻辑、状态同步还是页面展示问题。

十二、常见追问

追问:接口成功但数据库没变化怎么办?

确认是否异步;确认查库环境和条件;看事务是否回滚;看日志异常;看更新 SQL 影响行数;看消息队列或定时任务。

追问:页面和数据库不一致一定是 Bug 吗?

不一定。可能页面读缓存、异步延迟、统计口径不同、权限过滤不同。要先确认需求和数据来源。

追问:你怎么判断前端还是后端问题?

如果数据库和接口都正确但页面错误,多半是前端;如果数据库正确但接口没返回,多半是后端查询或权限;如果接口成功但数据库错误,多半是后端逻辑、事务或异步处理。

十三、练习清单

  1. 定位注册成功但用户表无数据;
  2. 定位订单列表少一条数据;
  3. 定位支付成功但订单未更新;
  4. 定位订单金额和明细金额不一致;
  5. 定位库存扣减异常;
  6. 定位删除后页面仍显示;
  7. 定位报表今日金额错误;
  8. 定位用户看不到菜单;
  9. 定位异步任务延迟更新;
  10. 写一份包含 SQL 证据的 Bug 报告。

数据库问题定位的核心是链路思维。不要只盯页面,也不要只查一张表。把页面、接口、数据库、日志和异步任务串起来,你才能真正把问题讲清楚、定位准。

配套刷题:

  • 数据库测试面试题
  • 电商订单测试实战项目
相关推荐

下一步可以看这些

面试通关软件测试面试通关系列精华文章

把面试题、项目、简历和训练营串成一套求职准备路径。

入行路线零基础入行软件测试专题路径

从测评、学习路线、项目、简历到面试,按顺序入行。

进阶路线初中级测试进阶高级专题路径

接口自动化、性能测试、CI/CD、复杂业务质量保障进阶路线。

AI 方向AI 测试学习路线专题页

大模型评测、RAG 测试、Agent 测试和 AI 自动化路线。

求职结果Offer 案例 / 学员案例展示

看看真实学员 Offer 案例,判断目标和学习投入是否匹配。

资料 / 交流群添加小牛微信

备注:资料、简历、AI 或找工作,领取对应资料或进交流群。

添加小牛微信
Prev
9. 常见手撕 SQL 题怎么准备