九号工具站
返回列表

QA 必学 SQL 实战指南:20 个测试场景的查询语法与应用技巧

QA 工程师必备的 SQL 技能完全教学,涵盖资料验证、测试资料准备、Bug 根因排查等 20 个实际测试场景,附可直接套用的 SQL 语法范例。

SQL QA 资料验证 测试资料 数据库 Bug 排查 技能

最后更新:2026-05-24

1. 为什么 QA 一定要学 SQL?

很多 QA 工程师觉得 SQL 是后端的事,跟自己无关。但现实是:每次你需要确认「资料有没有正确写入」「这笔订单的状态对不对」「为什么前端显示跟预期不一样」时,如果不会 SQL,你只能开 ticket 请后端帮查,然后等。会 SQL 的 QA 可以自己直接查,30 秒搞定。

  • 测试效率:不需要等后端帮查资料,自己 30 秒就能验证
  • Bug 定位:看到前端异常时,直接查资料库判断是前端 Bug 还是后端 Bug
  • 测试资料准备:自己建立和清理测试资料,不依赖其他人
  • 回归验证:修 Bug 后直接查资料库确认资料已修正
  • 职涯竞争力:会 Sql 的 Qa 在面试和薪资谈判上有明显优势

2. 环境准备:5 分钟开始练习

不需要安装资料库,以下免费工具让你立刻开始练 SQL。

  • 线上练习:Sqlfiddle(Sqlfiddle.Com)或 Db Fiddle(Db-Fiddle.Com)——打开浏览器就能写 Sql
  • 本地工具:Dbeaver(免费、支援所有主流资料库)——Qa 最推荐的资料库管理工具
  • 公司环境:请 Dba 或后端开通测试环境的唯读(Read Only)权限。强调你只需要 Select 权限,不会改资料
  • 练习资料库:用 Sqlite 建一个本地练习库,或用公司的 Staging 环境

小提示

  • 第一次连公司资料库前,确认你连的是测试环境而非正式环境
  • 永远只用 SELECT,不要在正式环境跑 UPDATE/DELETE/INSERT

注意事项

在正式(Production)环境执行 SQL 查询必须经过授权,且只使用 SELECT 语句。误操作 UPDATE 或 DELETE 可能造成资料损坏。如有疑问请先咨询 DBA。

3. 场景 1-5:基础资料验证

QA 最常用的基础查询,用来验证功能测试的结果。

  • 场景 1 — 验证资料是否写入:Select * From Orders Where User_Id = 123 Order By Created_At Desc Limit 5; → 确认下单后资料库有没有新增订单
  • 场景 2 — 验证栏位值正确性:Select Status, Total_Amount, Payment_Method From Orders Where Order_Id = 'Ord-456'; → 核对订单状态、金额和付款方式是否正确
  • 场景 3 — 验证资料删除:Select Count(*) From Users Where Email = '[email protected]'; → 删除帐号后确认资料库中该笔资料已被移除(结果应为 0)
  • 场景 4 — 验证资料更新:Select Name, Email, Updated_At From Users Where User_Id = 789; → 修改个人资料后确认资料库中的值已更新
  • 场景 5 — 验证唯一性约束:Select Email, Count(*) From Users Group By Email Having Count(*) > 1; → 检查是否有重复的 Email(结果应为空)

4. 场景 6-10:测试资料准备与清理

在测试环境中准备和管理测试资料的 SQL 技巧。

  • 场景 6 — 查询可用的测试帐号:Select User_Id, Email, Status From Users Where Email Like 'Test%' And Status = 'Active' Limit 10; → 找到可用的测试帐号
  • 场景 7 — 检查测试资料状态:Select Status, Count(*) From Orders Where Created_At > '2026-05-01' Group By Status; → 查看这个月的测试订单分布
  • 场景 8 — 找特定条件的测试资料:Select * From Products Where Price Between 100 And 500 And Stock > 0 And Category = 'Electronics' Limit 5; → 找到符合测试条件的商品
  • 场景 9 — 确认关联资料完整性:Select O.Order_Id, O.Status, P.Payment_Status From Orders O Left Join Payments P On O.Order_Id = P.Order_Id Where O.Order_Id = 'Ord-456'; → 确认订单和付款资料是否对应
  • 场景 10 — 计算测试覆盖的资料量:Select Count(Distinct User_Id) As Tested_Users, Count(Distinct Product_Id) As Tested_Products From Orders Where Created_At > '2026-05-20'; → 统计测试触及了多少用户和商品

5. 场景 11-15:Bug 根因排查

遇到 Bug 时,用 SQL 快速定位问题出在哪一层。

  • 场景 11 — 前端 Vs 后端 Bug:Select Actual_Field From Table Where Id = X; → 前端显示 A 但预期是 B,直接查资料库:如果资料库是 A,Bug 在后端;如果资料库是 B,Bug 在前端
  • 场景 12 — 排序异常排查:Select * From Products Order By Price Asc Limit 20; → 前端排序不对时,确认资料库的排序逻辑是否正确
  • 场景 13 — 分页异常排查:Select Count(*) From Products Where Category = 'Shoes'; → 前端显示总页数不对时,确认资料库的实际笔数
  • 场景 14 — 时区相关 Bug:Select Created_At, Created_At At Time Zone 'Asia/Taipei' From Orders Where Order_Id = 'Ord-456'; → 时间显示不正确时,检查资料库储存的时区
  • 场景 15 — 金额计算 Bug:Select Unit_Price, Quantity, Unit_Price * Quantity As Expected_Total, Actual_Total From Order_Items Where Order_Id = 'Ord-456'; → 金额不对时,逐项验算

小提示

  • 养成习惯:回报 Bug 时附上 SQL 查询结果截图,开发者会更快理解问题
  • Bug Report 加上「资料库状态」区块,写明你查到的实际值,比单纯描述更有说服力

6. 场景 16-20:进阶分析与报告

用 SQL 产出有价值的测试分析报告,提升你在团队中的影响力。

  • 场景 16 — 统计各状态的资料分布:Select Status, Count(*) As Count, Round(Count(*) * 100.0 / Sum(Count(*)) Over(), 2) As Percentage From Orders Group By Status; → 产出订单状态分布表
  • 场景 17 — 找出异常资料:Select * From Orders Where Total_Amount < 0 Or Total_Amount > 1000000; → 找出金额异常的订单(可能的 Bug 或攻击)
  • 场景 18 — 时间趋势分析:Select Date(Created_At) As Date, Count(*) As Order_Count From Orders Where Created_At > Current_Date - Interval '7 Days' Group By Date(Created_At) Order By Date; → 分析最近 7 天的订单量趋势
  • 场景 19 — Null 值检查:Select Column_Name, Count(*) As Null_Count From Orders Where Column_Name Is Null; → 检查必填栏位是否有漏写(常见的后端 Bug)
  • 场景 20 — 效能相关查询:Select Count(*) From Large_Table Where Indexed_Column = 'Value'; → 测试时注意查询时间,太慢可能暗示缺少索引

7. QA 常用 SQL 速查表

把这张表存下来,日常工作随时查阅。

操作 SQL 语法 QA 用途
查询资料 SELECT ... FROM ... WHERE ... 验证测试结果
计数 SELECT COUNT(*) FROM ... 确认资料笔数
去重计数 SELECT COUNT(DISTINCT col) FROM ... 确认不重复的数量
排序 ORDER BY col ASC/DESC 验证排序功能
分页 LIMIT n OFFSET m 验证分页逻辑
分组统计 GROUP BY col 产出分布报告
条件筛选 HAVING COUNT(*) > 1 找重复资料
关联查询 JOIN ... ON ... 验证跨表关联
NULL 检查 WHERE col IS NULL 找缺失资料
模糊搜寻 WHERE col LIKE '%keyword%' 验证搜寻功能

8. 学习路线与推荐资源

按以下顺序学习,两周内就能在日常工作中使用 SQL。

  • Week 1:Select、Where、Order By、Limit — 能查资料就够应付 70% 的场景
  • Week 2:Join、Group By、Count/Sum/Avg — 能做关联查询和统计分析
  • Week 3-4:子查询、Case When、日期函式 — 能处理进阶分析
  • 推荐练习:Sqlzoo(Sqlzoo.Net)免费互动教学、Leetcode Sql 题目(由易到难)
  • 推荐工具:Dbeaver(免费 Gui 工具)、Datagrip(Jetbrains 付费但很强大)

小提示

  • 不需要学会所有 SQL 语法。 QA 日常用到的大概只占 SQL 全部功能的 20%,先学这 20% 就够了
  • 每次遇到需要查资料的场景,强迫自己用 SQL 查而不是请别人帮查。两周后你就会很熟练

重点整理

  • 1 SQL 是 QA 工程师最被低估的技能——能直接查资料库验证结果,不需要等后端帮你查
  • 2 本指南涵盖 20 个 QA 实际测试场景的 SQL 语法,可直接复制修改使用
  • 3 从基础查询到进阶分析,按 QA 日常工作流程排列,循序渐进
  • 4 学会 SQL 的 QA 工程师在 Bug 排查效率上平均提升 3-5 倍
ℹ️

一般声明

本站提供之资讯仅供参考,不保证其完整性与正确性。使用者应自行判断资讯之适用性。

意见反馈