[QA-QC] Database Testing
Why? - Mục đích
Data mapping
Đảm bảo tính chất của CSDL ACID => Việc đảm bảo ACID nhằm tránh trường hợp dữ liệu tại các bước của 1 trans không khớp, dẫn đến tình trạng thất thoát dữ liệu
Đảm bảo tính toàn vẹn
Đảm bảo tuân thủ quy tắc kinh doanh
What? - Checklist
Check tính hợp lệ của dữ liệu
Check transactions:
Check sự hợp lệ của dữ liệu theo các common: tương tự như Check GUI nhưng là thực hiện trên DB
Check theo tiêu chuẩn ACID
Check tính toàn vẹn của dữ liệu
Database Schemas
Định nghĩa: namesapce để gom nhóm các đối tượng giúp dễ dàng quản lý; thuận lợi cho việc tách, quản lý, sở hữu các đối tượng
1 số lệnh khi thao tác Schemas:
Tạo: CREATE SCHEMAS <tên schemas>
Xóa: DROP SCHEMAS <tên schemas>
Cấp quyền sử dụng schemas: GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: <tên_schema> TO <tên_user>
Xóa quyền sử dụng schemas: GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: <tên_schema> TO <tên_user>
Constraint- Ràng buộc: các quy tắc đặt cho cột dữ liệu trên table. Một số ràng buộc:
NOT NULL
DEFAULT
UNIQUE
PRIMARY Key
FOREIGN Key
CHECK: đảm bảo giá trị trong cột thỏa mãn 1 điều kiện nào đó
INDEX: tạo và lấy dữ liệu 1 cách nhanh chóng theo ID
Trigger
Định nghĩa: là mã thủ tục được thực hiện tự động để đáp ứng sự kiện nhất định trên 1 bảng hoặc 1 view
Tự động thực thi khi có thao tác insert, update, delete → Thường được sử dụng để kiểm tra tính toàn vẹn
Ví dụ:
Tạo trigger để lấy log
Ktra các ràng buộc giữa các đối tượng như Khi tạo nhân viên thì tụ động tạo bản ghi về lương, bh….
Check hiệu năng
Check thủ tục (Stored Proceduce- Thủ tục lưu trữ): tương tự như 1 hàm trong ngôn ngữ lập trình.
Tái sử dụng (viết 1 lần, sử dụng nhiều lần)
Giảm tải hiệu suất → tăng performence
=> Hoạt động kiểm thử dữ liệu:
Đảm bảo data mapping theo đúng requirement:
Mapping Bảng, cột, kiểu dữ liệu
Mapping dữ liệu khi tìm kiếm
CRUD success
CRUD is correct
Đảm bảo theo đúng Thuộc tính ACID
Đảm bảo dữ liệu được toàn vẹn
Check nếu 1 số dữ liệu đã tồn tại không đúng
Check case insert khi dữ liệu không đúng
Check case insert đối tượng con trước khi insert đối tượng cha
Check case xóa bản ghi khi bản ghi đó có liên kết trong các bảng khác
Check case đồng bộ dữ liệu
…
Đảm bảo theo quy tắc kinh doanh
How? - Quy trình thực hiện
Các loại kiểm thử dữ liệu
Kiểm thử cấu trúc
Kiểm thử schemas
Kiểm thử bảng,cột (constraint)
Kiểm thử thủ tục
Kiểm thử trigger
Kiểm thử chức năng
Kiểm thử phi chức năng
Các phương pháp kiểm thử dữ liệu
Kiểm thử hộp trắng (thường do dev thực hiện)
Kiểm tra mã nguồn (dev thực hiện)
Thực hiện tuần tự các câu lệnh (Unit test - Dev thực hiện)
Test các store procedure
Phân tích dữ liệu và ràng buộc của các tham số
Gọi store procedure với số lượng bản ghi ít - nhiều
Thực thi store procedure bằng cách truyền vào tham số khác nhau và so sánh KQ với expect
Kiểm tra trigger
Kiểm thử hộp đen (QC thực hiện)
Step:
Chuẩn bị môi trường
Run test
Check test result
Validate according to the expected results
Report the findings to the respective stakeholders
Các lỗi thường phát sinh trong Kiểm thử dữ liệu
Lỗi toàn vẹn dữ liệu
Sai lệch dữ liệu khi lưu trữ: mất dữ liệu, dữ liệu không chính xác
Lỗi đầu ra:
Có lỗi trong việc truy vấn, thực hiện thao tác xử lý… dù dữ liệu nguồn là chính xác
Ví dụ: Không kết nối được CSDL, ko đủ bộ nhớ nên ko lưu được data
Một số lỗi phổ biến
Tạo bảng sai (sai tên, kiểu dữ liệu, max length,…)
Khởi tạo sai giá trị mặc định
Select, insert… không đúng theo yêu cầu
Kết nối CSDL bị thất bại: mất mạng, server bị mã hóa, ko đủ bộ nhớ
Sai sót trong các lệnh thao tác: Xử lý sai dấu phẩy, nháy đơn, kiểu dữ liệu, chính tả…