SQL đối với tester

6 min read

Với một Tester thì yêu cầu chuyên môn về SQL phụ thuộc vào tính chất của từng dự án. Nếu dự án chuyên về dữ liệu thì việc kiểm thử là tập trung vào tính chính xác của dữ liệu, như vậy tester cần phải có các kiến thức về SQL mới có thể kiểm tra được. Nếu dự án chỉ cần kiểm tra về giao diện hiển thị thì yêu cầu kiến thức về SQL không cần thiết.

1. SQL là gì?

SQL là viết tắt của Structured Query Language, tạm dịch là “Ngôn ngữ truy vấn có cấu trúc”.

SQL là ngôn ngữ được sử dụng để thực hiện các thao tác lên dữ liệu: xem, thêm, sửa, xóa, … trong cơ sở dữ liệu, …

Tất cả các hệ quản trị cơ sở dữ liệu như SQL Server, MySQL, Oracle, Postgres, …. sử dụng SQL làm ngôn ngữ cơ sở dữ liệu chuẩn.

2. Mục đích sử dụng SQL trong testing

SQL được sử dụng để truy vấn dữ liệu trong database phục vụ cho các mục đích test khác nhau liên quan đến dữ liệu của hệ thống. Ví dụ SQL được sử dụng trong Actual Data Testing (Kiểm thử dữ liệu thực) để kiểm tra nội dung của data có đúng như kết quả mong muốn không.

Đối với 1 tester, có 2 nhóm lệnh SQL chính mà chúng ta cần quan tâm:

  • Nhóm truy vấn dữ liệu: Gồm lệnh truy vấn lựa chọn (Select) và một số mệnh đề bổ trợ (Group, Join, …) để lấy dữ liệu theo một điều kiện nào đó nhưng không làm thay đổi dữ liệu gốc trong các bảng.
  • Nhóm thao tác dữ liệu: Gồm các lệnh làm thay đổi dữ liệu (Insert, Delete, Update, …) được lưu trong các bảng

Dưới đây là một số lý do tại sao SQL lại quan trọng đối với tester:

  • Kiểm tra tính chính xác của dữ liệu: Tester sẽ dùng SQL để truy vấn cơ sở dữ liệu (CSDL) và kiểm tra xem dữ liệu có đáp ứng các yêu cầu và ràng buộc đã được đưa ra hay không.
  • Xác minh tính toàn vẹn dữ liệu: SQL cho phép định nghĩa các ràng buộc như khó chính (primary key), khóa ngoại (foreign key) và các ràng buộc kiểm tra.
  • Kiểm tra hiệu suất của truy vấn: Tester có thể sử dụng các câu SQL phức tạp để đo lường thời gian thực thi, tối ưu hóa truy vấn và đảm bảo rằng hệ quản trị CSDL hoạt động hiệu quả trong môi trường test.
  • Khôi phục dữ liệu: Trong quá trình kiểm thử, có thể xảy ra các tình huống mất mát dữ liệu hoặc lỗi gây ảnh hưởng đến dữ liệu. Có thể sử dụng SQL để khôi phục dữ liệu hoặc thay đổi, đảm bảo tính nhất quán.
  • Tạo dữ liệu mẫu: SQL cung cấp các câu lệnh để tạo dữ liệu mẫu phù hợp với các kịch bản kiểm thử.
  • Hiểu cấu trúc hệ thống: Biết SQL giúp tester hiểu rõ về cấu trúc tổng thể của hệ thống gồm các bảng, quan hệ và ràng buộc giữa các bảng.

3. Các câu lệnh SQL cơ bản

Câu lệnh SELECT

  • Truy vấn lựa chọn một số trường của bảng:
    • SELECT column1, column2, ... FROM TableName;
  • Truy vấn lựa chọn tất cả các trường của bảng (lưu ý: truy vấn này ít dùng với database lớn)
    • SELECT * FROM TableName

Lưu ý : Để trả về bản ghi không trùng lặp nhau ta có dùng câu lệnh DISTINCT như sau:

SELECT DISTINCT column1, column2, ...
FROM TableName;

Câu lệnh INSERT

  • Khi thực hiện các câu lệnh truy vấn này cần rõ cấu trúc dữ liệu, mối quan hệ giữa các bảng và chỉ trong trường hợp không tạo được dữ liệu ngoài site thì mới nên dùng INSERT
    • INSERT INTO table_name (column1, column2) VALUES (value1, value2);

Câu lệnh UPDATE

  • Câu lệnh này giúp cập nhật dữ liệu trong 1 bảng nào đó. Và lưu ý khi thực hiện luôn phải có điều kiện khi update dữ liệu và chú ý hạn chế update dữ liệu bởi vì có thể gây ra sai sót về dữ liệu.
    • UPDATE table_name SET column1 = value1 WHERE condition;

Câu lệnh DELETE

  • Trước khi thực hiện câu lệnh này, bạn cần nhớ phải luôn có điều kiện khi thực hiện delete và phải hiểu rõ các ràng buộc trước khi thực hiện delete.
    • DELETE FROM table_name WHERE condition;

Câu lệnh JOIN

Câu lệnh này được dùng để nối các cột giữa hai bảng dựa trên một cột có liên quan giữa các bảng này.

Câu lệnh JOIN có một số dạng bao gồm:

  • Inner Join (Equi-join, Natural Join)
  • Outer Join (Left outer Join, Right outer join, Full outer join)
  • Cross Join – Self Join

2 loại join được dùng nhiều nhất đó là Inner Join (kết nối trong) và Outer Join( kết nối ngoài)

Các loại JOIN trong SQL
  • Inner Join: Sẽ được sử dụng khi chỉ muốn lấy data giao giữa các bảng
    • SELECT column_names,..
    • FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name;
  • Full Join: Sẽ được dùng khi muốn lấy tất cả data của các bảng
    • SELECT column_name(s)
    • FROM table1
    • FULL OUTER JOIN table2 ON table1.column_name = table2.column_name;
  • Left Join: Sẽ được dùng khi muốn lấy tất cả data của bảng bên trái
    • SELECT column_name(s)
    • FROM table1
    • LEFT JOIN table2 ON table1.column_name = table2.column_name;
  • Right Join: Sẽ được dùng khi muốn lấy tất cả data của bảng bên phải
    • SELECT column_name(s)
    • FROM table1
    • RIGHT JOIN table2 ON table1.column_name = table2.column_name;

Mệnh đề WHERE – AND, OR, BETWEEN và LIKE

  • Mệnh đề WHERE được sử dụng để lọc các bản ghi theo điều kiện trong câu lệnh SELECT, còn được sử dụng trong câu lệnh UPDATE, DELETE…
  SELECT column1, column2, ...  FROM table_name
  WHERE condition;

Mệnh đề ORDER BY

Mệnh đề này cho phép sắp xếp kết quả truy vấn theo cột.

SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;

Mệnh đề GROUP BY

Mệnh đề GROUP BY dùng để nhóm các hàng dữ liệu có giá trị giống nhau thành một nhóm.

    SELECT column_name(s)
	FROM table_name
	WHERE condition
	GROUP BY column_name(s);

Một số hàm khác thường được sử dụng

  • Hàm MAX(column) – Tìm giá trị lớn nhất trong cột
    • SELECT MAX(column_name) FROM table_name WHERE condition;
  • Hàm MIN(column) – Tìm giá trị nhỏ nhất trong cột
    • SELECT MIN(column_name) FROM table_name WHERE condition;
  • Hàm AVG(column) – Tìm giá trị trung bình của cột
    • SELECT AVG(column_name) FROM table_name WHERE condition;
  • Hàm COUNT – Hàm đếm số lượng bản ghi của một cột
    • SELECT COUNT(column_name) FROM table_name WHERE condition;
  • Hàm SUM(column) – Tổng các giá trị của một cột
    • SELECT SUM(column_name) FROM table_name WHERE condition;

Để có thể tìm hiểu sâu thêm về SQL và làm các ví dụ cụ thể mọi người có thể lên www.w3schools.com/sql/default.asp để thực hành ạ

Avatar photo

Leave a Reply

Your email address will not be published. Required fields are marked *