Viblo Learning
0

Tìm hiểu về Database Testing

Trong dự án , việc kiểm thử database luôn là một phần rất quan trọng, là yếu tố quan trọng làm nên chất lượng của dự án. Bài viết này sẽ trình bày một số kiến thức cơ bản khi làm quen với Database Testing.

1. Định nghĩa Database Testing

Kiểm thử cơ sở dữ liệu là việc kiểm tra xác minh dữ liệu , sự liên kết các bảng , các tringger ,việc hiển thị dữ liệu từ database lên giao diện.....của cơ sở dữ liệu cần kiểm tra. Một số công việc liên quan thường là dùng các câu truy vấn dữ liệu để kiểm tra sự toàn vẹn và nhất quán dữ liệu.

Kiểm thử CSDL gồm hai loại:

  • Kiểm thử dữ liệu thực (Actual Data Testing): là kiểm tra nội dung của data có chính xác hay không
  • Kiểm thử ràng buộc dữ liệu (Database Integrity Testing): Là các hoạt động kiểm thử nhằm đảm bảo dữ liệu không bị hỏng, các schema dữ liệu là đúng đắn và các chức năng của các ứng dụng CSDL hoạt động đúng.

2. Quy trình kiểm thử cơ sở dữ liệu

Các bước để tiến hành kiểm thử cơ sở dữ liệu bao gồm:

  1. Chuẩn bị môi trường test
  2. Chạy test
  3. Kiểm tra kết quả
  4. Xác nhận kết quả với kết quả mong đợi
  5. Báo cáo kết quả cho các bên liên quan

Thông thường để kiểm thử cơ sở dữ liệu, các câu truy vấn SQL được sử dụng để test. Trong đó lệnh SQL được dùng hiều nhất là SELECT

Cú pháp: Select * from <tablename> where <condition> Ngoài Select, SQL còn có 3 loại lệnh quan trọng:

  • DDL: Ngôn ngữ định nghĩa dữ liệu
  • DML: Ngôn ngữ thao tác dữ liệu
  • DCL: Ngôn ngữ điều khiển dữ liệu

Data Definition language: sử dụng CREATE, ALTER, RENAME, DROP and TRUNCATE để xử lí thao tác với các bảng

Data Manipulation language: bao gồm các câu lệnh để thêm, xóa và cập nhật bản ghi. Ví dụ : có bảng NHAN_VIEN, muốn update mã nhân viên sang một mã mới, có thể sử dụng câu lệnh sau:

update NHAN_VIEN set NAME = 'Nguyen Thanh Trang'
where ID = '2';

Data control language: phân quyền cho người dùng có thể thao tác và truy cập vào cơ sở dữ liệu.

3. Các loại kiểm thử cơ sở dữ liệu

Có 3 loại kiểm thử Cơ sở dữ liệu:

  • Kiểm thử cấu trúc (Structural)
  • Kiểm thử chức năng (Functional)
  • Kiểm thử phi chức năng (Non-functional)

3.1 Kiểm thử cấu trúc (Structural)

Kiểm thử cấu trúc database bao gồm việc kiểm tra tất cả các phần tử bên trong kho lưu trữ dữ liệu , được sử dụng cho việc lưu trữ data, không cho phép người dùng cuối thao tác trực tiếp. Các truy vấn SQL được sử dụng để kiểm thử trong việc kiểm thử cấu trúc.

Kiểm tra sơ đồ (Schemas)

  • Mục đích chính của việc kiểm tra sơ đồ là để đảm bảo các sơ đồ được ánh xạ giữa front-end và back-end là như nhau.

  • Những lưu ý quan trọng trong việc kiểm tra sơ đồ:

  • Kiểm tra các kiểu dữ liệu của sơ đồ liên kết với cơ sở dữ liệu. Có thể định dạng trên các bảng trong database lại không mapping tới định dạng trên giao diện người dùng. Cần thiết kiểm tra các trường hợp: table, row, column không trùng khớp lẫn nhau.
  • Ngoài ra, cũng cần thiết phải check các trường abnormal của data (các trường hợp thay đổi hay data khác thường) trong môi trường tổng thể của ứng dụng.

Kiểm tra Bảng và Cột trong cơ sở dữ liệu

Có các loại kiểm thử khác nhau cho cột và cơ sở dữ liệu:

  • Verify sự mapping giữa các trường (field) và cột của cơ sở dữ liệu ở back-end và front-end.
  • Kiểm tra độ dài cũng như quy ước đặt tên của các trường và cột trong database đã đúng yêu cầu hay chưa.
  • Kiểm tra sự tương thích, nhất quán giữa kiểu dữ liệu và độ dài của các cột trong cơ sở dữ liệu và khi hiển thị trên ứng dụng.
  • Các trường trong cơ sở dữ liệu có cho phép người dùng cung cấp dữ liệu đầu vào mong muốn như trong tài liệu yêu cầu cụ thể hay không.

Kiểm tra khóa (key) và chỉ số (index):

Những yếu tố quan trọng trong kiểm thử khóa và chỉ số bao gồm:

  • Kiểm tra khóa chính và khóa ngoài cần thiết có được tạo trong các bảng yêu cầu hay không.
  • Kiểm tra các tham chiếu của khóa ngoài có hợp lệ hay không.
  • Kiểm tra kiểu dữ liệu của khóa chính và khóa ngoài tương ứng có giống nhau giữa các bảng hay không.
  • Kiểm tra các khóa và index có tuân thủ các quy ước đặt tên hay không.
  • Kiểm tra kích thước và độ dài của các trường và index.

Kiểm tra thủ tục (Stored procedures)

Những nội dung quan trong nhất đối với kiểm tra thủ tục bao gồm:

  1. Đội phát triển đã đáp ứng đúng yêu cầu hay chưa? Coding theo đúng qui ước tiêu chuẩn? Xử lý các ngoại lệ và lỗi cho tất cả các thủ tục, module của toàn bộ ứng dụng đang được test.
  2. Đội phát triển đã đảm bảo cho các điều kiện/vòng lặp bằng cách áp dụng các dữ liệu đầu vào cần thiết cho ứng dụng đang được test hay chưa
  3. Đội phát triển đã thực hiện đúng việc TRIM dữ liệu bất cứ khi nào lấy data từ các bản cần thiết trong database hay chưa.
  4. Kết quả của việc thực hiện chạy bằng tay các thủ tục có đúng với yêu cầu hay không
  5. Việc thực hiện chạy bằng tay các thủ tục có đảm bảo các trường trong bảng được update theo đúng yêu cầu của ứng dụng hay không
  6. Việc thực hiện các thủ tục bằng cách gọi thông qua trigger có đúng hay không
  7. Kiểm tra việc có phép điều kiện Null hay không trong cơ sở dữ liệu hay không
  8. Kiểm tra xem thực tế tất cả các thủ tục và chức năng có chạy đúng khi cơ sở dữ liệu là trống hay không...

Xác thực máy chủ cơ sở dữ liệu

  • Kiểm tra cấu hình của máy chủ cơ sở dữ liệu đã đúng với tài liệu đặc tả yêu cầu chưa
  • Kiểm tra việc xác thực người dùng được thực hiện khi có các yêu cầu từ phía ứng dụng
  • Kiểm tra xem các máy chủ cơ sở dữ liệu có thể phục vụ được cho nhu cầu số lượng giao dịch tối đa theo tài liệu đặc tả nghiệp vụ hay không

3.2 Kiểm thử chức năng (Functional)

Kiểm thử chức năng của cơ sở dữ liệu để đảm bảo tất cả các chức năng và hoạt động được thực hiện bởi người dùng cuối là phù hợp với yêu cầu của ứng dụng. Dưới đây là các điều kiện cơ bản cần được kiểm tra khi thực hiện kiểm thử cơ sở dữ liệu:

  1. Những trường có giá trị là bắt buộc nhưng lại cho phép null hay không
  2. Độ dài của mỗi trường có hải là kích thước đầy đủ hay không
  3. Những trường tương tự nhau có tên giống nhau ở các bảng không
  4. Có bất kỳ các trường được tính toán (computed fields) nào xuất hiện trong cơ sở dữ liệu hay không

Kiểm tra tính nhất quán và toàn vẹn dữ liệu

Các nội dụng quan trọng cần kiểm tra bao gồm:

  • Dữ liệu có được tổ chức hợp lý hay không
  • Dữ liệu được lưu trong các bảng có chính xác và đúng yêu cầu hay không
  • Các dữ liệu không cần thiết có xuất hiện trong ứng dụng hay không
  • Dữ liệu đã được lưu trữ có giống với các dữ liệu được cập nhật trên giao diện người dùng hay không
  • Thao tác TRIM có được thực hiện trên dữ liệu trước khi trèn vào cơ sở dữ liệu hay không
  • Các giao dịch được thực hiện đúng theo các yêu cầu được tả và kết quả có chính xác hay không
  • Dữ liệu có chính xác nếu giao dịch được chạy thành công đúng như yêu cầu hay không
  • Dữ liệu có được phục hồi lại thành công nếu giao dịch của người dùng cuối thất bại hay không

Ngoài ra còn loại kiểm thử chức năng khác như: kiểm thử đăng nhập và bảo mật người dùng

3.3 Kiểm thử phi chức năng (Non-functional)

  • Kiểm thử phi chức năng trong kiểm thử cơ sở dữ liệu có thể được chia thành rất nhiều loại dựa trên yêu cầu đặc tả.
  • Nó có thể là :
    • Kiểm thử về tải (load testing)
    • Kiểm thử sự quá tải (stress testing),
    • Kiểm thử tính bảo mật (security testing),
    • Kiểm thử tính ổn định (usability testing)
    • Kiểm thử tính tương thích (compatibility testing).
  • Load testing và stress testing có thể được nhóm vào loại kiểm thử về hiệu năng (performance testing) để phục vụ hai mục đích khác nhau khi nói đến vai trò của kiểm thử phi chức năng.

Trên đây là một vài kiến thức cơ bản mà tester cần biết khi mới tìm hiểu về Database testing. Mong rằng sẽ giúp mọi người có cái nhìn tổng quan và dễ tiếp cận hơn.

Để tìm hiểu thêm về một số câu lệnh truy vấn SQL cơ bản dùng cho việc kiểm thử Database, mọi người có thể tham khảo thêm tại link: https://viblo.asia/p/kien-thuc-sql-co-ban-can-thiet-cho-tester-L4x5xRvaZBM

Tài liệu tham khảo:

[1] http://www.softwaretestinghelp.com/database-testing-process/ [2] https://www.guru99.com/data-testing.html


All Rights Reserved