九號工具站
返回列表

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 倍
ℹ️

一般聲明

本站提供之資訊僅供參考,不保證其完整性與正確性。使用者應自行判斷資訊之適用性。

意見反饋