Hướng dẫn kiểm thử Cơ Sở Dữ Liệu

1. Giới Thiệu về kiểm thử cơ sở dữ liệu

Giao diện(GUI) trong hầu hết các trường hợp đều được chú trọng bởi đội kiểm thử cũng như các thành viên trong đội phát triển phần mềm vì giao diện đồ họa(Graphic User Interface) là phần tương tác trực tiếp với người dùng trong một ứng dụng. Tuy nhiên, phần được coi là quan trọng nhất để xác thực thông tin và được coi như là trái tim của một ứng dụng đó là cơ sở dữ liệu (Database).

Chúng ta hãy xem xét nột ứng dụng ngân hàng, nơi mà người dùng thực hiện các giao dịch. Bây giờ các quan điểm(viewpoint) kiểm thử cơ sở dữ liệu sau đây là quan trọng:

  1. Ứng dụng lưu trữ thông tin giao dich trong cở sở dữ liệu của ứng dụng và hiển thị chúng một cách chính xac tới người dùng.
  2. Không có thông tin nào bị mất trong quá trình giao dịch.
  3. Không có các thông tin được thực hiện một phần hoặc hủy bỏ được lưu lại trong ứng dụng.
  4. Không cho phép các truy cập không xác thực vào thông tin của người dùng.

Để đảm bảo những tiêu chí bên trên, chúng ta cần sử dụng xác thực dữ liệu hay kiểm thử dữ liệu.

Trong hướng dẫn này, chúng ta sẽ tìm hiểu:

  • Sự khác biệt giữa kiểm thử giao diện(GUI) và cơ sở dữ liệu
  • Các loại kiểm thử cơ sở dữ liệu
  • Kiểm thử sơ đồ (schema)
  • Kiểm thử bảng và cột
  • Kiểm thử thủ tục (Stored Procedures)
  • Kiểm thử trigger
  • Xác thực máy chủ cơ sở dữ liệu
  • Kiểm thử chức năng của cơ sở dữ liệu(Functional Database testing)
  • Đăng nhập và bảo mật người dùng
  • Kiểm thử tải (Load testing)
  • Kiểm thử sự quá tải (Stress testing)
  • Quan niệm sai lầm liên quan đến kiểm thử cơ sở dữ liệu

2. Sự khác nhau căn bản giữa kiểm thử giao diện và cơ sở dữ liệu

apple.jpg

User-Interface testing Database hoặc Data testing
Đây là loại kiểm thử về giao diện đồ họa hay kiểm thử Front-end Đây là loại kiểm thử về dữ liệu hay kiểm thử về Back-end
Đây là loại kiểm thử chủ yếu về các phần có thể kiểm tra được bởi người dùng bằng các xem và tương tác như biểu mẫu, thuyết trình, đồ thị, trình đơn và báo cáo...(tạo thông qua VB, VB.net, VC++,Delphi - Công cụ Front-end) Đây là loại kiểm thử chủ yếu về các phần được ẩn đi mà người dùng không thể xem được. Nó bao gồm các quy trình bên trong và lưu trữ như Assembly, hệ quản trị cơ sở dữ liệu như Oracle, SQL Server, MYSQL...
Loại kiểm thử này bao gồm kiểm tra các text box, dropdown box, button, calendar, sự điều hướng từ trang này tới trang khác, hiển thị ảnh cũng như việc nhìn và cảm nhận toàn bộ ứng dụng Loại kiểm thử này bao gồm kiểm tra các sơ đồ, bảng cơ sở dữ liệu, các cột, khóa và index, thủ tục, trigger, xác thực máy chủ cơ sở dữ liệu và kiểm tra trùng lặp dữ liệu
Người kiểm thử phải có kiến thức hiểu biết về các yêu cầu công việc như sử dụng các công cụ phát triển, các framework về kiểm thử tự động và các công cụ liên quan Người kiểm thử để có thể thực hiện được kiểm tra back-end phải có một nền tảng hiểu biết về máy chủ dữ liệu và các khái niệm về ngôn ngữ truy vấn có cấu trúc(Structured Query Language)

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

typeofdbtest.jpg Có 3 loại kiểm thử cơ sở dữ liệu đó là:

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

4. Kiểm thử cấu trúc cơ sở dữ liệu

Kiểm thử cấu trúc dữ liệu bao gồm việc kiểm tra tất cả các thành phần bên trong kho lưu trữ dữ liệu mà được sử dụng chính để lưu trữ dữ liệu mà không được phép trực tiếp truy xuất bới người dùng cuối. Việc kiểm tra cơ sở dữ liệu cũng là một loại kiểm thử rất quan trọng. Sự thành công trong giai đoạn này của người kiểm thử bao gồm việc làm chủ trong các câu lệnh truy vấn SQL.

Kiểm tra sơ đồ(schema)

Các khía cạnh chính của việc kiểm thử sơ đồ là đảm bảo các sơ đồ được ánh xạ giữa front-end và back-end là tương tự. Do đó, chúng ta cũng có thể tham chiếu kiểm thử sơ đồ như kiểm thử ánh xạ(maping testing).

Hãy cùng thảo luận các điểm quan trọng trong kiểm thử sơ đồ.

  1. Kiểm tra các kiểu dữ liệu của sơ đồ liên kết với cơ sơ dữ liệu. Nhiều khi việc ánh xạ định dạng của bảng có thể không tương thích với việc ánh xạ định dạng được mô tả trong cấp độ giao diện người dùng của ứng dụng.
  2. Cần thiết phải kiểm tra trường hợp không tương thích, trùng khớp (unmapped) các bảng/view/cột
  3. Cũng cần phải xác minh xem cơ sở dữ liệu có đồng nhất hay không trong một môi trường thích hợp với việc ánh xạ toàn bộ ứng dụng.

Một số các công cụ hữu dụng cho việc kiểm thử sơ đồ của cơ sở dữ liệu:

  • DBUnit đã được tích hợp với Ant rất phù hợp cho việc kiểm thử ánh xạ.
  • SQL Server chô phép người kiểm thử có thể kiểm tra và truy vấn sơ đồ của cơ sở dữ liệu bằng cách viết các câu truy vấn đơn giản mà không thông qua code.

Ví dụ, nếu các lập trình viên muốn thay đổi cấu trúc một bảng hoặc xóa nó, người kiểm thử nên kiểm tra toàn bộ các thủ tục và các View mà sử dụng trong bảng tương thích với các thay đổi. Ví dụ khác là người kiểm thử muốn kiểm tra sơ đồ thay đổi giữa 2 cơ sở dữ liệu, họ có thể làm như vậy với một câu truy vấn đơn giản.

Kiểm thử bảng, cột của cơ sở dữ liệu

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

  1. Việc ánh xạ của các trường và cột của cơ sở dữ liệu trong back-end và front-end có tương thích hay không.
  2. Kiểm tra độ dài và quy ước đặt tên của các trường và cột trong cơ sở dữ liệu có đúng với yêu cầu hay không.
  3. Kiểm tra sự hiện diện của bất kỳ cột/bảng trong cơ sở dữ liệu chưa được sử dụng/ánh xạ.
  4. Kiểm tra sự tương thích 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.
  5. 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 văn bản đặc tả yêu cầu hay không.

Các kiểu kiểm thử quan trọng cho khóa và index:

  1. 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.
  2. Kiểm tra các tham chiếu của khóa ngoại có hợp lệ hay không.
  3. 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 hai bảng hay không.
  4. Kiểm tra các khóa và index có tuân thủ các quy ước đặt tên hay không.
  5. Kiểm tra kích thước và độ dài của các trường và index.
  6. Kiểm tra xem clustered index và non-clustered index có được tạo trên các bảng như được yêu cầu hay không.

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

Danh sách các kiểm tra quan trọng khi kiểm tra thủ tục:

  1. Nhóm phát triển có áp dụng các yêu cầu về mã hóa quy ước chuẩn và xử lý ngoại lệ và lỗi cho tất cả các thủ tục của các mô-đun trong ứng dụng hay không.
  2. Nhóm phát triển có bao quát tất cả 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 hay không.
  3. Nhóm phát triển có thực hiện các thao tác TRIM với bất cứ dữ liệu nào được lấy ra từ các bảng yêu cầu trong cơ sở dữ liệu hay không.
  4. Việc chạy thủ công các thủ tục có cung cấp tới người dùng các kết quả như được yêu cầu hay không.
  5. Việc chạy thủ công các thủ tục có đảm bảo các trường trong bảng được cập nhật như yêu cầu trong ứng dụng hay không.
  6. Kiểm tra khi chạy các thủ tục có tự động gọi các trigger như yêu cầu hay không.
  7. Kiểm tra xem có sự hiện diện của các thủ tục không được sử dụng hay không.
  8. 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.
  9. 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.
  10. Kiểm tra việc tích hợp chạy nhiều thủ tục của các mô-đun có đúng như yêu cầu của ứng dụng hay không.

Một vài công cụ hữu ích cho việc kiểm thử thủ tục như LINQ, SP Test tool...

Kiểm tra Trigger

  1. Kiểm tra xem các quy ước mã hóa có được tuân theo trong giải đoạn coding của các Trigger hay không.
  2. Kiểm tra xem các trigger có được chạy cho các giao dịch DML tương ứng thỏa mãn các điều kiện hay không.
  3. Kiểm tra xem trigger có cập nhật dữ liệu chính xác khi được chạy hay không.
  4. Kiểm tra các Update/Insert/Delete trigger được yêu cầu có chạy trong ứng dụng hay không.

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

  1. Kiểm tra cấu hình của máy chủ cơ sở dữ liệu có giống yêu cầu hay không.
  2. 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.
  3. Kiểm tra cơ sở dữ liệu có cho phép cung cấp tối đa số lượng giao dịch như yêu cầu của tài liệu đặc tả hay không.

5. Kiểm thử chức năng của cơ sở dữ liệu

Kiểm thử chức năng của cơ sở dữ liệu được chỉ định bởi yêu cầu đặc tả cần để đảm bảo tất cả các giao dịch và thao tác được thực hiện bởi người dùng đầu cuối phù hợp với các yêu cầu trong tài liệu đặc tả.

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:

  • Các trường có bắt buộc phải có trong khi cho phép giá trị NULL trong trường đó hay không.
  • Độ dài của mỗi trường có hải là kích thước đầy đủ hay không.
  • Các trường có cùng tên có xuất hiện giữa các bảng hay không.
  • 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.

Quy trình cụ thể được kiểm tra của các trường ánh xạ từ quan điểm của người dùng cuối. Trong các trường hợp cụ thể, người kiểm thử có thể thực hiện các thao tác ở cấp độ dữ liệu cơ sở và sau đó chuyên sang giao diện người dùng để quan sát và kiểm tra xem các trường có chính xác hay không.

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

Các kiểm tra sau là quan trọng:

  1. Dữ liệu có được tổ chức hợp lý hay không.
  2. Dữ liệu được lưu trong các bảng có chính xác và tuân theo yêu cầu đặc tả hay không.
  3. Các dữ liệu không cần thiết có xuất hiện trong ứng dụng hay không.
  4. 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.
  5. 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.
  6. Các giao dịch được thực hiện đún theo các yêu cầu được tả và kết quả có chính xác hay không.
  7. Dữ liệu có chính xác nếu giao dịch được chạy thành công như trong yêu cầu đặc tả hay không.
  8. Dữ liệu có được phục hồi lại thành công nếu giao dịch không được chạy thành công bởi người dùng cuối hay không.
  9. Dữ liệu có được phục hồi lại toàn bộ trong điều kiện giao dịch không được chạy thành công và nhiều cơ sở dữ liệu không đồng nhất được gọi trong một giao dịch hay không.
  10. Giao dịch có được chạy bằng cách sử dụng các thủ tục được chỉ định như trong yêu cầu đặc tả hay không.

Đăng nhập và bảo mật người dùng

Kiểm thử đăng nhập và bảo mật người dùng cần lưu ý đến những điểm sau đây:

  1. Kiểm tra xem ứng dụng có ngăn cản người dùng thực hiên thêm các thao tác trong các trường hợp sau hay không:
  • Username không hợp lệ nhưng mật khẩu hợp lệ
  • Username hợp lệ nhưng mật khẩu không hợp lệ
  • Cả username và mật khẩu không hợp lệ
  • Cả username và mật khẩu hợp lệ
  1. Kiểm tra xem người dùng có được quy định chỉ thực hiện một số thao tác cụ thể được chỉ định trong yêu cầu đặc tả hay không.
  2. Kiểm tra xem dữ liệu có được bảo vệ khi có một truy cập trái phép hay không.
  3. Kiểm tra xem các user có các quyền khác nhau khi được phân các permission khác nhau hay không.
  4. Kiểm tra xem tất cả các user có thể truy cập ở các cấp độ khác nhau trên cơ sở dữ liệu như được chỉ định trong yêu cầu đặc tả.
  5. Kiểm tra các dữ liệu nhậy cảm như mật khẩu, số tài khoản có được mã hóa và không được lưu dưới dạng văn bản thô hay không. Sẽ tốt hơn nếu đảm bảo tất cả các tài khoản có mật khẩu phức tạp và khó đoán.
  • Kiểm thử phi chức năng

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) và 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.

  • Định lượng rủi ro

Định lượng của rủi ro giúp các bên liên quan xác định được yêu cầu về thời gian đáp ứng của hệ thống trên các mức độ phụ tải yêu cầu. Đây là nhiệm vụ đầu tiên của bất kỳ công việc đảm bảo chất lượng nào. Chúng ta cần phải lưu ý load testing không làm giảm các rủi ro trực tiếp, nhưng thông qua quá trình xác định và định lượng rủi ro, sẽ có những biện pháp để khắc phục và phòng tránh các rủi ro.

  • Cấu hình tối thiểu của hệ thống

Sự hiểu biết mà chúng ta có được thông qua việc kiểm thử thực tế, cấu hình tối thiểu của hệ thống sẽ cho phép hệ thống đáp ứng được các hiệu suất như được yêu cầu bởi các bên liên quan. Ngoài phần cứng và phần mềm, các chi phí liên quan đến quyền sở hữu cũng có thể giảm thiểu. Các yêu cầu cụ thể có tể được phân loại nhằm tối ưu hóa chi phí.

Kiểm thử tải (Load testing)

Mục đích của bất kỳ nhiệm vụ kiểm tra tải nào đều phải được hiểu và ghi rõ bằng văn bản.

Dưới đây là các lưu ý bắt buộc cho việc kiểm tra tải:

  1. Các giao dịch được sử dụng thường xuyên có khả năng tác động đến hiêu suất của tất cả các giao dịch khác nếu nó không hiệu quả.
  2. Nên có ít nhất một giao dịch mà người dùng không thể sửa ở trong bộ thử nghiệm cuối cùng, để có thể phân biệt được hiệu suất của các giao dịch khác nhau từ những giao dịch phức tạp
  3. Các giao dịch có tầm quan trọng trong việc xử lý các yêu cầu cốt lõi của hệ thống nên được ưu tiên hơn các giao dịch khác.
  4. Ít nhất một giao dịch có thể chỉnh sửa nên được thêm vào để so sánh hiệu suất với các giao dịch khác.
  5. Quan sát và chỉ ra thời gian phản hồi tối ư cho một số lượng lớn người dùng để phục vụ cho các yêu cầu trong tương lai.
  6. Quan sát hiệu suất thời gian lấy các bản ghi khác nhau trong cơ sở dữ liệu.

Một số các công cụ kiểm thử tải là load runner, win runner và JMeter.

Kiểm thử sự quá tải (Stress testing)

Kiểm tra sự quá tải cũng được coi như là kiểm tra sức chịu được của ứng dụng với lượng lớn công việc phải xử lý mà có thể dẫn tới hệ thống bị bị lỗi. Điều này giúp xác định nơi gặp sự cố của hệ thống.

Một số công cụ quan trọng để kiểm thử sự quá tải là load runner, wun runner và JMeter.

truth.png

6. Những quan niệm sai lầm liên quan đến kiểm thử cơ sở dữ liệu

  1. Kiểm thử cơ sở dữ liệu đòi hỏi nhiều kiến thức chuyên môn và nó là một công việc rất tẻ nhạt
  • Sự thât: Kiểm thử cơ sở dữ liệu một cách hiệu quả cung cấp sự ổn định lâu dài cho các chức năng của ứng dụng và nó cần thiết phải làm việc thật sự chăm chỉ.
  1. Kiểm thử cơ sở dữ liệu làm cho công việc bị quá tải
  • Sự thật: Ngược lại, kiểm thử cơ sở dữ liệu bổ sung thêm giá trị cho công việc tổng thể bằng cách tìm ra các vấn đề tiềm ẩn và giúp cải thiện chất lượng của ứng dụng.
  1. Kiểm thử cơ sở dữ liệu làm chậm toàn bộ quá trình phát triển sản phẩm
  • Sự thật: Kiểm thử cơ sở dữ liệu cải thiện đáng kể chất lượng cơ sở dữ liệu của ứng dụng.
  1. Kiểm thử cơ sở dữ liệu rất tốn kém
  • Sự thật: Bất kỳ chi phí về kiểm thử cơ sở dữ liệu là một khoản đầu tư dài hạn dẫn đến sự ổn định lâu dài và manh mẽ của ứng dụng. Như vậy, chi phí về kiểm thử cơ sở dữ liệu là cần thiết.

Bài viết được tham khảo từ nguồn: http://www.guru99.com/data-testing.html


All Rights Reserved