测试中你一般怎么用 SQL?
测试开发第 11 / 15 题答题框架
参考思路:造数据(insert/存储过程)→核对数据(多表 join 对账)→排查(update/delete 前先 select 备份)→慢查询辅助定位。举一个对账实例。
五个经典回答示范
回答一 · 校招应届版
我在测试里用 SQL 做四件事:造数据——用 insert 批量构造不同状态的订单与用户;结果校验——接口返回后 join 多表对账,确认金额、状态、时间正确;排查——复现问题时查日志表与流水表定位;数据分析——统计某类缺陷影响的存量数据规模,为优先级提供依据。
回答二 · 1-3年经验版
我讲一个例子:资金对账测试。下单接口返回成功后,我写 SQL 校验订单表、余额表、流水表三表金额一致且方向正确,一次回归跑几百个用例全部自动对账,曾抓到一个并发下流水重复插入的缺陷。另外造数我用临时存储过程生成边界数据组合,比手工插入效率高一个量级。我也坚持 update 前先 select 备份、测试库与生产库物理隔离的红线。
回答三 · 资深版
SQL 在测试中的高级用法我讲三点:一是基于数据模型设计测试——直接从表结构与约束推导测试点,唯一约束、枚举字段、外键关系都是用例来源;二是用 SQL 做影响面分析——需求变更时反查涉及的表与数据量评估回归范围;三是慢查询辅助定位——接口慢时 explain 帮测试把『很慢』翻译成『缺索引』,给开发更精确的信息。
回答四 · 追问应对
追问『怎么用 SQL 找重复数据』:group by 加 having count 大于 1,或 row_number 开窗取大于 1 的;『测试数据怎么清理』:按造数批次标记列删除,或每次事务回滚,避免污染环境;『join 和子查询性能』:早期版本 join 常更优,但优化器会改写,以执行计划为准。
回答五 · 反面示范
『测试不太需要 SQL,点点点就够了,要看数据就找开发帮忙查,测试只要把界面上显示的数字看对就行。』——点评:界面数字对不代表落库对——恰恰是看不见的数据层最容易藏缺陷;依赖开发查数会拖慢定位节奏,SQL 是测试的基本功不是加分项。
怎么练这道题
- 打开 模拟练习,选择「测试开发」方向,限时 3 分钟作答本题。
- 对照上方答题框架,逐点检查:哪些要素没覆盖、哪里表达啰嗦。
- 用自己项目的真实经历替换框架中的占位内容,重讲一遍并录音回听。
这类题在真实面试中常被追问细节,
建议进入限时模式练一遍。