Tester Học SQL Bắt Đầu Từ Đâu Cho Đúng?



Vì Sao Tester "Mù" SQL Sẽ Thiệt Thòi?
Dashboard test xanh lè, test case pass gần hết, release đúng lịch, nhưng tiền vẫn "bay" vì dữ liệu sai ở tầng dưới UI. Đây không phải chuyện hiếm, Chúng ta đã từng mổ xẻ một case y hệt.
Không có SQL, bạn chỉ kiểm tra được cái UI cho bạn thấy. Có SQL, bạn tự vào database, gõ một câu query, và có bằng chứng rõ ràng ngay trước mắt.
Vài lợi ích thấy ngay:
- Tự verify dữ liệu test thay vì chờ backend xác nhận
- Report bug kèm bằng chứng SQL, tăng độ tin cậy
- Phát hiện lỗi ẩn mà UI không bao giờ hiển thị
- Rút ngắn thời gian điều tra lỗi từ hàng giờ xuống vài phút
Tip: Bạn không cần giỏi SQL như DBA. Chỉ cần đủ để tự trả lời câu hỏi "dữ liệu này đúng hay sai?".

Mô Hình Dữ Liệu Tester Hay Đụng Nhất: Users – Orders – Order Items
Hầu hết hệ thống thương mại điện tử, edtech hay fintech đều xoay quanh 3 bảng lõi này. Nắm được chúng, bạn đọc hiểu phần lớn schema thực tế.
| Bảng | Tester dùng để kiểm tra gì? |
|---|---|
users | Đăng ký, trạng thái tài khoản, trùng email |
orders | Đơn hàng có được lưu đúng, tổng tiền đúng không |
order_items | Từng dòng sản phẩm, đối chiếu ngược ra tổng đơn |
Nếu bạn đang test song song cả API lẫn database, khóa học API Testing cơ bản sẽ giúp bạn nối được request/response với dữ liệu thực tế trong 3 bảng này.
Bộ Lệnh SQL Tester Cần Thành Thạo
Không cần học hết một cuốn giáo trình Database dày cộp. Tester chỉ cần nắm vững một nhóm lệnh nhỏ nhưng dùng lại liên tục mỗi ngày.
| Cần học ngay | Chưa cần vội |
|---|---|
| SELECT, WHERE, ORDER BY | Stored Procedure |
| JOIN (INNER, LEFT) | Trigger |
| GROUP BY, HAVING | Transaction phức tạp |
| LIKE, BETWEEN, IS NULL | Tối ưu performance query |
Ví dụ một câu query thực chiến để tìm đơn hàng có tổng tiền bất thường:
Thử sức với câu hỏi nhanh này trước khi qua phần thực hành:
JOIN nào trả về TẤT CẢ user, kể cả user chưa từng có đơn hàng nào?
Chọn một đáp án
Thực Hành: Đối Chiếu Tổng Tiền Đơn Hàng Có Đúng Không?
Đây là bài toán tester gặp gần như mỗi sprint có tính năng thanh toán tương tự case test thanh toán từng phân tích: Số tiền hiển thị trên UI có thực sự khớp với tổng các dòng sản phẩm trong đơn không?
Query đối chiếu (reconciliation query), tự chạy thử bên dưới:
Bất kỳ dòng nào query trả về đều là nghi phạm. Ghi lại thành test case rõ ràng, đừng chỉ nói "sai số tiền":
Nếu query trả về danh sách dài, cách điều tra root cause bug production sẽ giúp bạn khoanh vùng nhanh hơn thay vì report tràn lan.

Lỗi Tester Hay Gặp Khi Học SQL (Và Cách Né)
Phần lớn Tester học SQL bị nản vì học sai cách: Học như đang đào tạo để làm DBA, không phải để test.
So Sánh Cách Học SQL
❌ Học như Dev/DBA
Lao vào Stored Procedure, Transaction, tối ưu Index ngay từ đầu. Kết quả: nản vì không đụng tới trong công việc thực tế.
✅ Học như Tester
Ưu tiên SELECT, WHERE, JOIN, GROUP BY để tự verify dữ liệu trước khi report bug. Học tới đâu, dùng ngay tới đó.
Với công việc test hàng ngày, bạn chỉ cần thành thạo INNER JOIN và LEFT JOIN để nối 2-3 bảng liên quan.
Các loại JOIN phức tạp hơn như SELF JOIN hay CROSS JOIN thường chỉ Dev hoặc Data Analyst mới cần dùng sâu.
Nếu schema công ty phức tạp, hãy nhờ Dev vẽ sơ đồ ERD thay vì tự đoán mối quan hệ giữa các bảng.
Lộ Trình Học SQL Cho Tester + Lời Kết
| Giai đoạn | Nội dung | Mục tiêu |
|---|---|---|
| 1 | SELECT, WHERE, ORDER BY | Tự lọc dữ liệu cần kiểm tra |
| 2 | JOIN, khóa ngoại | Đọc hiểu quan hệ giữa các bảng |
| 3 | GROUP BY, HAVING | Đối chiếu số liệu tổng hợp |
| 4 | Reconciliation query | Report bug có bằng chứng cụ thể |
Trong lúc chờ khóa SQL Cơ Bản Cho Tester/QA của T5Edu ra mắt, bạn có thể bắt đầu ngay với khóa Testing cơ bản để chắc nền tảng kiểm thử, hoặc đọc thêm Lộ Trình Học Tester: Từ Zero Đến Chuyên Nghiệp và 7 ngày thử nghề Tester để định hình lộ trình tổng thể.
Vài điều cần nhớ:
- Tester không cần giỏi SQL như DBA, chỉ cần đủ để tự verify dữ liệu
- Ưu tiên SELECT, WHERE, JOIN, GROUP BY trước khi học thứ phức tạp hơn
- Report bug kèm reconciliation query sẽ tăng độ tin cậy ngay lập tức
Nếu tuần sau bạn có đợt regression test cho tính năng thanh toán, hãy thử tự chạy 1 câu query đối chiếu tổng tiền trước khi report bug thay vì chỉ tin vào UI.
Còn bạn, hiện tại bạn đang gặp khó nhất ở JOIN hay ở việc tự tin đọc schema database?
Bình luận (0)