Hướng dẫn kiểm thử Cơ Sở Dữ Liệu (Database Testing)
I. GIỚI THIỆU
Cơ sở dữ liệu là một trong những phần không thể thiếu của phần mềm. Ngày nay, khi độ phức tạp và dữ liệu của ứng dụng tăng lên, đòi hỏi nhu cầu về Cơ sở dữ liệu mạnh hơn và an toàn. Tương tự như vậy, đối với các ứng dụng có tần suất giao dịch cao (Ví dụ: ứng dụng Ngân hàng), sự cần thiết của cơ sở dữ liệu có hiệu năng tốt là điều thực sự cấp thiết. Việc đảm bảo cơ sở dữ liệu hoạt động tốt là một công việc trong lĩnh vực Database Testing.
Suy ra, kiểm thử cơ sở dữ liệu là quá trình đánh giá tính đúng đắn, hiệu suất, bảo mật và tính ổn định của hệ thống cơ sở dữ liệu. Mục tiêu chính là đảm bảo rằng cơ sở dữ liệu hoạt động đúng cách và đáp ứng được yêu cầu của hệ thống.
II. ĐỊNH NGHĨA / PHÂN LOẠI / GIẢI THÍCH CHI TIẾT
A. Database Testing là gì?
Kiểm thử cơ sở dữ liệu (Database Testing) là một loại kiểm thử phần mềm nhằm kiểm tra lược đồ (schema), bảng (table), trình kích hoạt (trigger), v.v. của database (DB). Nó cũng kiểm tra tính toàn vẹn và nhất quán của dữ liệu. Nó có thể liên quan đến việc tạo các truy vấn từ đơn giản đến phức tạp để kiểm tra tải của DB và kiểm tra khả năng phản hồi của nó.
Kiểm thử cơ sở dữ liệu ( có thể gọi là backend testing, data testing) khác với UI Testing ở chỗ hoàn toàn không quan tâm đến giao diện trực quan của phần mềm hệ thống. Mối quan tâm chính của nó là kiểm tra xem tất cả các quy trình nội bộ có chạy đúng cách và có thể truy xuất dữ liệu nhanh chóng, chính xác và an toàn hay không.
Kiểm thử cơ sở dữ liệu bao gồm kiểm thử hộp đen, kiểm thử hộp trắng và ACID (tính nguyên tử, tính nhất quán, tính cách ly và độ bền). Trong hướng dẫn này, tôi sẽ cung cấp cho bạn định nghĩa, cách thực hiện và ví dụ.
Có một số công cụ quản lý Cơ sở dữ liệu có sẵn trên thị trường và phổ biến mà tôi dùng và thường gặp. Ví dụ: MS-Access, MS SQL Server, SQL Server, Oracle, Oracle Financial, MySQL, PostgreSQL...
B. Tại sao Database Testing lại cần thiết đến vậy?
Kiểm thử cơ sở dữ liệu rất quan trọng vì:
- Một số lỗi chỉ có thể được tìm thấy thông qua Database Testing
- Database Testing cải thiện tính ổn định và bảo mật
- Database Testing đảm bảo tính nhất quán
- Đảm bảo tính đúng đắn và chính xác của dữ liệu được phản ánh
- Kiểm Soát Hiệu Suất: Đánh giá hiệu suất của cơ sở dữ liệu để đảm bảo nó có thể xử lý một lượng lớn dữ liệu và các truy vấn một cách hiệu quả.
- Bảo Mật Dữ Liệu: Kiểm thử giúp xác minh rằng cơ sở dữ liệu được bảo vệ khỏi các mối đe dọa bảo mật và chỉ người dùng có quyền truy cập được phép.
- Đảm Bảo Ổn Định Hệ Thống: Kiểm thử cơ sở dữ liệu dưới áp lực tải lớn giúp đảm bảo tính ổn định của hệ thống.
- Kiểm Soát Sao Lưu và Phục Hồi: Xác nhận quá trình sao lưu và phục hồi dữ liệu hoạt động đúng cách để có thể khôi phục hệ thống trong trường hợp sự cố.
C. Nguyên tắc kiểm thử cơ sở dữ liệu Database Testing:
Những nguyên tắc dưới đây khi được kiểm thử đúng đắn giúp đảm bảo rằng hệ thống cơ sở dữ liệu duy trì một trạng thái an toàn và đáng tin cậy, ngay cả trong điều kiện xấu nhất như sự cố hệ thống hoặc mất điện
Thuộc tính ACID :
- Tính nguyên tử
- Tính nhất quán và toàn vẹn
- Sự cách ly
- Độ bền
1. Tính Nguyên Tử (Atomicity):
Một giao dịch được thực hiện hoặc không được thực hiện toàn bộ. Nếu một phần của giao dịch gặp sự cố, toàn bộ giao dịch sẽ bị hủy.
Ví dụ: Một ngân hàng chuyển tiền từ tài khoản A sang tài khoản B. Nếu quá trình chuyển tiền không thành công (ví dụ: mất kết nối), thì cả giao dịch sẽ bị hủy và số tiền không thay đổi.
2. Tính Nhất Quán và Toàn Vẹn (Consistency):
- Dữ liệu phải tuân thủ các quy tắc và ràng buộc để đảm bảo tính nhất quán của cơ sở dữ liệu sau mỗi giao dịch.
Ví dụ: Trong cơ sở dữ liệu về đăng ký môn học, nếu một sinh viên đăng ký một lớp học, thì số lượng sinh viên trong lớp và số lượng chỗ còn lại phải được cập nhật đồng thời để đảm bảo tính nhất quán.
- Đảm bảo rằng dữ liệu trong cơ sở dữ liệu luôn đảm bảo tính toàn vẹn, tức là không có giá trị nào bị mất hoặc bị thay đổi mà không có sự cho phép.
Để có mức độ toàn vẹn dữ liệu cao, QA phải xác nhận rằng:
- Dữ liệu có thể kiểm chứng được
- Dữ liệu có thể truy xuất được
- Dữ liệu chính xác
- Dữ liệu đã hoàn tất
Ví dụ: Trong hệ thống quản lý thư viện, nếu một sách được mượn, số lượng sách còn lại và trạng thái của sách phải được duy trì để đảm bảo tính toàn vẹn của dữ liệu.
3. Sự Cách Ly (Isolation):
Mỗi giao dịch đang diễn ra phải không ảnh hưởng đến các giao dịch khác, tức là các giao dịch phải thực hiện độc lập với nhau.
Ví dụ: Nếu hai người cùng thực hiện giao dịch chuyển tiền từ hai tài khoản khác nhau, thì cả hai giao dịch phải diễn ra độc lập. Giao dịch của một người không nên ảnh hưởng đến giao dịch của người kia.
4. Độ Bền (Durability):
Một khi giao dịch đã được hoàn tất thành công, thì kết quả của nó phải được lưu trữ và không bao giờ bị mất, ngay cả trong trường hợp sự cố hệ thống.
Ví dụ: Khi một đơn đặt hàng trực tuyến được xác nhận, thông tin đơn hàng và thanh toán phải được lưu trữ bền vững, ngay cả khi hệ thống gặp sự cố sau đó. Khi phục hồi, người dùng vẫn kiểm tra được đơn hàng có tồn tại.
D. Các loại Kiểm thử cơ sở dữ liệu - Database Testing
Có 3 loại kiểm thử cơ sở dữ liệu:
- Cấu trúc - Structural
- Chức năng - Functional
- Phi chức năng - Non-functional
1. Kiểm thử cấu trúc - Structural
Structural Database Testing là quá trình kiểm thử cấu trúc của cơ sở dữ liệu. Nó tập trung vào việc xác nhận tính đúng đắn và hiệu quả của các thành phần cơ sở dữ liệu như bảng, cột, ràng buộc, quan hệ và các đối tượng khác. Tester kiểm thử cơ sở dữ liệu sẽ thực hiện các thử nghiệm này bằng cách viết các truy vấn SQL.
Các Tester sẽ thực hiện các hoạt động sau:
A. Data Mapping Testing: Kiểm thử Ánh Xạ Dữ Liệu:
Data Mapping Testing là quá trình kiểm tra để đảm bảo rằng hai cấu trúc dữ liệu khác nhau (Data model) có thể trao đổi thông tin một cách chính xác. Kiểm thử ánh xạ dữ liệu cũng sẽ xác minh dữ liệu được truyền qua lại giữa giao diện người dùng UI và phía backend. Đảm bảo rằng cả hai đang "giao tiếp" với nhau đúng cách.
Nó tập trung vào việc kiểm tra xem dữ liệu được chuyển đổi, biến đổi và ánh xạ từ nguồn đến đích có đúng theo quy tắc và logic đã được xác định hay không.
Trong quá trình kiểm thử Data Mapping, Tester sẽ thực hiện các hoạt động sau:
-
Xác định các quy tắc ánh xạ: Đánh giá và hiểu các quy tắc và quy trình ánh xạ dữ liệu đã được xác định. Điều này bao gồm việc xác định trường hợp đầu vào, quy tắc biến đổi, quy tắc kiểm tra và trường hợp đầu ra mong đợi.
-
Kiểm tra ánh xạ dữ liệu: Kiểm tra quá trình ánh xạ dữ liệu để đảm bảo rằng dữ liệu từ nguồn được chuyển đổi và ánh xạ chính xác đến đích theo quy tắc đã xác định. Điều này bao gồm việc kiểm tra các trường dữ liệu, quan hệ giữa chúng, quy tắc biến đổi và kết quả ánh xạ khi có các thao tác khác nhau như CRUD...
-
Kiểm tra tính toàn vẹn dữ liệu: Đảm bảo rằng dữ liệu được chuyển đổi và ánh xạ giữa các hệ thống không bị mất mát, sai sót hoặc biến đổi không mong muốn. Điều này có thể bao gồm kiểm tra kiểu dữ liệu, giá trị mặc định, xử lý dữ liệu bị thiếu và phân tách dữ liệu.
-
Kiểm tra hiệu suất: Đánh giá hiệu suất của quá trình ánh xạ dữ liệu để đảm bảo rằng nó hoạt động trong các thời gian và tải trọng dữ liệu dự kiến. Điều này bao gồm việc đo lường thời gian xử lý, tải dữ liệu và tài nguyên hệ thống sử dụng.
Ví dụ: nếu bạn đang điền vào biểu mẫu đăng ký trên một trang web, việc ánh xạ dữ liệu thích hợp sẽ lấy biểu mẫu web và chuyển nó vào cơ sở dữ liệu. Tên, email và mật khẩu của bạn sẽ được lưu trữ ở vị trí tương ứng. Kiểm tra ánh xạ dữ liệu xác nhận rằng quá trình đang hoạt động.
Hoặc, hãy tưởng tượng bạn có một ứng dụng di động và một cơ sở dữ liệu trên máy chủ. Data Mapping Testing sẽ giúp bạn đảm bảo rằng dữ liệu từ ứng dụng di động được chuyển đến cơ sở dữ liệu một cách chính xác và không bị thay đổi. Nó đảm bảo rằng thông tin như tên, địa chỉ và số điện thoại được truyền đúng cách giữa hai phía.
B. Database Schema Testing: Kiểm thử lược đồ cơ sở dữ liệu:
Bao gồm kiểm thử Table, Colum, Row, Trigger, Stored Procedure...Mọi thứ của Schema
Kiểm thử Table:
- Kiểm tra xem bảng đã được tạo đúng cách và có các trường (cột) cần thiết.
- Đảm bảo rằng tên bảng và các trường đáp ứng các quy tắc về đặt tên và hợp lệ.
- Xác minh tính chính xác của các ràng buộc (constraints) như khóa chính (primary key), khóa ngoại (foreign key), ràng buộc NOT NULL, UNIQUE, CHECK.
Kiểm thử Column:
- Kiểm tra xem các trường (cột) đã được định nghĩa đúng kiểu dữ liệu, kích thước và thuộc tính.
- Đảm bảo tính hợp lệ và hợp lý của các ràng buộc dữ liệu (constraints) như NOT NULL, UNIQUE, CHECK cho từng trường (cột).
Kiểm thử Row:
- Kiểm tra tính chính xác của dữ liệu trong từng hàng (row) của bảng.
- Xác minh rằng các giá trị trong các cột đáp ứng các ràng buộc dữ liệu và quy tắc logic.
- Kiểm tra xem các quan hệ giữa các hàng (row) trong các bảng có được duy trì đúng các
Kiểm thử Trigger:
- Xác minh tính chính xác và hiệu quả của các trigger đã được định nghĩa.
- Kiểm tra các hành động (actions) được kích hoạt bởi trigger và đảm bảo rằng chúng hoạt động theo đúng quy tắc và yêu cầu.
Kiểm thử Stored Procedure:
- Kiểm tra tính chính xác và hiệu quả của các stored procedure đã được định nghĩa.
- Đảm bảo rằng các thủ tục đã được triển khai đúng cách, và kết quả trả về và các thao tác trên dữ liệu là chính xác.
- Đảm bảo rằng cấu trúc cơ sở dữ liệu được định nghĩa chính xác và tuân thủ các quy tắc và nguyên tắc thiết kế cơ sở dữ liệu.
C. Kiểm thử xác thực server:
1. Xử lý giao dịch:
Kiểm tra khả năng xử lý số lượng giao dịch dự kiến theo yêu cầu nghiệp vụ. Đánh giá hiệu suất của máy chủ cơ sở dữ liệu trong việc xử lý các tác vụ như truy vấn dữ liệu, cập nhật, thêm mới, xóa và các hoạt động khác.
2. Cấu hình máy chủ:
Xác minh rằng chi tiết cấu hình của máy chủ cơ sở dữ liệu đáp ứng yêu cầu nghiệp vụ. Kiểm tra các thông số quan trọng như dung lượng lưu trữ, bộ nhớ, băng thông mạng, số lượng kết nối đồng thời và các cấu hình khác để đảm bảo rằng chúng phù hợp và đủ mạnh mẽ để đáp ứng yêu cầu của hệ thống.
3. Ủy quyền người dùng:
Kiểm tra xem ủy quyền người dùng được duy trì theo yêu cầu. Đảm bảo rằng quyền truy cập và quyền hạn của người dùng được cấu hình đúng cách và tuân thủ các chính sách bảo mật của hệ thống. Kiểm tra các cơ chế xác thực và phân quyền để đảm bảo rằng chỉ những người dùng được ủy quyền mới có thể truy cập và thực hiện các hoạt động trên cơ sở dữ liệu.
2. Kiểm thử chức năng - Functional
Functional Database Testing là quá trình kiểm thử chức năng của cơ sở dữ liệu để đảm bảo rằng các chức năng và quy trình liên quan đến cơ sở dữ liệu hoạt động đúng và tuân thủ yêu cầu nghiệp vụ.
Bao gồm hàng loạt hoạt động: Kiểm tra truy vấn dữ liệu (Data Retrieval Testing), Kiểm tra cập nhật dữ liệu (Data Modification Testing), Kiểm tra giao dịch (Transaction Testing), Kiểm tra ràng buộc dữ liệu (Data Constraints Testing)...nhằm xác minh tính chính xác dữ liệu, ràng buộc dữ liệu tương ứng với nghiệp vụ...
1. Kiểm tra hộp đen - Blackbox Testing
Kiểm tra hộp đen được thực hiện trong quá trình kiểm tra cơ sở dữ liệu vì nó tìm thấy các lỗi trong các đường dẫn phổ biến mà người dùng cuối có thể gặp phải. Đây là lần chạy thử cuối cùng với tư cách là người dùng cuối.
2. Kiểm tra hộp trắng - Whitebox Testing
Kiểm thử hộp trắng là đối cực của kiểm thử hộp đen. Trong kiểm thử hộp trắng, thành viên QA hiểu đầy đủ cấu trúc và thiết kế bên trong của phần mềm đang được kiểm thử.
Họ tiếp cận bài kiểm tra với tư cách là một thanh tra viên. Kiểm thử hộp trắng đôi khi được gọi là kiểm thử hộp rõ ràng vì người kiểm thử quan sát sự tương tác giữa các đơn vị khi họ kiểm thử phần mềm. Không giống như thử nghiệm hộp đen, người thử nghiệm hộp trắng gần như không quan tâm đến trải nghiệm người dùng.
3. Kiểm tra đơn vị - Unit Testing
Kiểm thử đơn vị là một kỹ thuật kiểm thử phần mềm bao gồm việc kiểm thử các đơn vị hoặc thành phần riêng lẻ của ứng dụng một cách tách biệt với phần còn lại của hệ thống. Loại thử nghiệm này để kiểm tra các đối tượng cơ sở dữ liệu riêng lẻ như bảng, dạng xem, thủ tục được lưu trữ và hàm. Bằng cách thử nghiệm các đối tượng này một cách riêng biệt, nhà phát triển có thể đảm bảo rằng mỗi đối tượng hoạt động như dự kiến.
Kiểm thử đơn vị cho cơ sở dữ liệu thường liên quan đến việc viết các kiểm thử tự động thực thi các lệnh SQL cụ thể đối với một đối tượng hoặc mô-đun cơ sở dữ liệu và xác minh rằng các kết quả mong đợi được trả về.
Ví dụ: kiểm thử đơn vị cho một thủ tục được lưu trữ có thể liên quan đến việc chuyển một tập hợp các tham số đầu vào cho thủ tục và xác minh rằng đầu ra là chính xác. Bằng cách sử dụng các bài kiểm tra đơn vị theo cách này, các nhà phát triển có thể đảm bảo rằng mỗi đối tượng cơ sở dữ liệu hoạt động như mong đợi và mọi thay đổi đối với lược đồ cơ sở dữ liệu.
3. Kiểm thử phi chức năng - Non-functional
1. Load Testing:
Kiểm tra tải cơ sở dữ liệu là một loại kiểm tra hiệu suất cơ sở dữ liệu nhằm kiểm tra xem tải của người dùng có tác động tiêu cực đáng kể đến hiệu suất cơ sở dữ liệu hay không.
- Thiết kế và thực hiện các kịch bản kiểm thử tải, đại diện cho các hoạt động và truy vấn thường xuyên của người dùng.
- Tạo một tải người dùng ảo bằng cách thực hiện các truy vấn tải đồng thời từ nhiều nguồn khác nhau.
- Theo dõi và đánh giá hiệu suất của cơ sở dữ liệu trong điều kiện tải cao để xác định xem nó có đáp ứng được yêu cầu về thời gian phản hồi và khả năng xử lý dữ liệu hay không.
- Đo lường các chỉ số hiệu suất như thời gian phản hồi, tải trung bình, tài nguyên hệ thống sử dụng và các độ trễ liên quan.
2. Stress Testing:
Cũng giống Load Testing nhưng mạnh hơn. Kiểm thử vượt ngưỡng chịu của database. Giống như Monkey Test vậy.
- Tạo ra một tải lưu lượng truy cập đột ngột và bất ngờ lên cơ sở dữ liệu để đánh giá sự ổn định và khả năng phục hồi của nó.
- Tăng tải lên mức cao nhất có thể để xem cơ sở dữ liệu có thể chịu được áp lực đó hay không.
- Theo dõi hiệu suất và tình trạng của cơ sở dữ liệu trong quá trình kiểm thử căng để xác định các vấn đề như quá tải, thời gian phản hồi tăng lên đáng kể, lỗi hệ thống hoặc mất dữ liệu.
Cả kiểm thử tải và kiểm thử căng cơ sở dữ liệu đều nhằm đảm bảo rằng hệ thống cơ sở dữ liệu có khả năng xử lý và phục hồi từ tải lưu lượng người dùng cao, đồng thời tiếp tục hoạt động ổn định và đáng tin cậy.
3. Security Testing:
Kiểm tra bảo mật hệ thống cơ sở dữ liệu Kiểm tra bảo mật là một quá trình đánh giá các chính sách bảo mật của công ty theo định kỳ để xác định xem các tiêu chuẩn cần thiết có được tuân thủ hay không. Các tiêu chuẩn bảo mật khác nhau có thể được tuân theo theo yêu cầu kinh doanh để xác định chính sách bảo mật và sau đó có thể thực hiện đánh giá các chính sách đã đặt theo các tiêu chuẩn đó.
Kỹ thuật này liên quan đến một số hoạt động:
- Kiểm thử thâm nhập
- Tìm kiếm rủi ro
- Kiểm tra tiêm SQL
- Bẻ khóa mật khẩu
Bạn có thể tham khảo thêm bài viết của tôi: (https://viblo.asia/p/cu-the-hoa-ky-thuat-tan-cong-sql-injection-danh-cho-dev-va-tester-W13VM8xDLY7)
III. CÁCH TRIỂN KHAI DATABASE TESTING
Triển khai kiểm thử cơ sở dữ liệu (Database Testing) đòi hỏi một quy trình cụ thể và bước đi nhất định để đảm bảo rằng các khía cạnh chức năng và phi chức năng của cơ sở dữ liệu được kiểm tra một cách toàn diện. Dưới đây là một phương pháp tổng quát để triển khai kiểm thử cơ sở dữ liệu:
A. CÁC BƯỚC TIẾN HÀNH:
1. Xác định yêu cầu kiểm thử: Đầu tiên, xác định mục tiêu và yêu cầu kiểm thử cơ sở dữ liệu nhờ vào nghiệp vụ, yêu cầu của khách hàng, cấp trên. Điều này bao gồm việc xác định các chức năng cần được kiểm tra, các bộ dữ liệu mẫu, nguồn tải và các kịch bản kiểm thử.
2. Xây dựng môi trường kiểm thử:
Thiết lập một môi trường kiểm thử độc lập để thực hiện các kịch bản kiểm thử. Đảm bảo rằng môi trường này phù hợp với môi trường sản xuất và có đủ tài nguyên để chạy các truy vấn và thao tác cơ sở dữ liệu.
- Xác định yêu cầu phần cứng và phần mềm cho môi trường kiểm thử. Điều này bao gồm hệ điều hành, hệ quản trị cơ sở dữ liệu và các công cụ hỗ trợ kiểm thử.
- Cài đặt và cấu hình phần mềm cần thiết, bao gồm cả hệ quản trị cơ sở dữ liệu và các công cụ kiểm thử.
- Tạo một môi trường cô lập để thực hiện kiểm thử, đảm bảo rằng môi trường này không ảnh hưởng đến môi trường sản xuất và có thể được khôi phục lại sau mỗi kiểm thử.
Ví dụ: Tải xuống và cài đặt MySQL Server trên máy tính của bạn. Cấu hình MySQL Server với các thông số cần thiết như cổng kết nối, người dùng và mật khẩu
3. Chuẩn bị dữ liệu kiểm thử:
Tạo và chuẩn bị dữ liệu kiểm thử trong cơ sở dữ liệu. Điều này có thể bao gồm việc tạo bảng, thêm dữ liệu mẫu, cập nhật ràng buộc dữ liệu và thiết lập quyền truy cập.
- Xác định các tình huống kiểm thử khác nhau và các trường hợp sử dụng để xác định loại dữ liệu cần thiết.
- Tạo dữ liệu mẫu hoặc sử dụng dữ liệu thực có sẵn để tạo các bộ dữ liệu kiểm thử. Đảm bảo rằng dữ liệu kiểm thử bao gồm các trường hợp biên và các kịch bản kiểm thử đặc biệt.
- Thiết lập dữ liệu kiểm thử trong cơ sở dữ liệu, bao gồm cả việc tạo bảng, chèn dữ liệu và cập nhật các ràng buộc dữ liệu.
Ví dụ: Xác định các trường hợp sử dụng và tình huống kiểm thử cần thiết. Ví dụ: tạo tài khoản mới, cập nhật thông tin người dùng, tìm kiếm sản phẩm, v.v.
4. Thiết kế các kịch bản kiểm thử:
Xây dựng các kịch bản kiểm thử dựa trên yêu cầu đã xác định. Các kịch bản này bao gồm các truy vấn cơ sở dữ liệu, các thao tác cập nhật, truy vấn giao dịch và các thủ tục lưu trữ.
5. Thực hiện kiểm thử:
Chạy các kịch bản kiểm thử trên cơ sở dữ liệu và ghi lại kết quả. Kiểm tra việc thực thi các truy vấn, thao tác và các chức năng khác để xác định xem chúng hoạt động đúng và trả về kết quả chính xác.
- Xác định các kịch bản kiểm thử cần thực hiện, bao gồm các truy vấn, thao tác cập nhật dữ liệu và các chức năng khác.
- Thiết lập một kế hoạch thực thi kiểm thử chi tiết, bao gồm lịch trình thực hiện, các bước cần thiết và các tài nguyên cần sử dụng.
- Chạy các kịch bản kiểm thử và ghi lại kết quả. Kiểm tra việc thực thi truy vấn, thao tác cập nhật và chức năng khác để xác định xem chúng hoạt động đúng và trả về kết quả chính xác.
- Kiểm tra hiệu suất của cơ sở dữ liệu trong quá trình thực hiện kiểm thử, bao gồm việc đo lường thời gian phản hồi, tải trung bình và tài nguyên hệ thống sử dụng.
6. Đánh giá kết quả:
Xem xét kết quả kiểm thử và so sánh chúng với kết quả dự kiến. Đánh giá hiệu suất của cơ sở dữ liệu, độ tin cậy và tính đúng đắn của dữ liệu.
7. Ghi lại và báo cáo:
Ghi lại kết quả kiểm thử và tạo báo cáo chi tiết về các vấn đề phát hiện, lỗi và cải thiện được đề xuất. Báo cáo này cung cấp thông tin hữu ích cho nhóm phát triển và quản lý cơ sở dữ liệu để thực hiện các biện pháp sửa chữa và tối ưu hóa.
B: TỰ ĐỘNG HÓA TRONG KIỂM THỬ DATABASE - AUTOMATION TESTING:
Trong phạm vi bài viết này, tôi sẽ giới thiệu khái quát cho các bạn cách kiểm thử Database dùng Selenium và TestNG:
1. Chuẩn bị môi trường: Cài đặt Java Development Kit (JDK) trên máy tính của bạn. Tải xuống và cài đặt Eclipse hoặc một IDE khác để phát triển mã tự động kiểm thử. Thêm thư viện Selenium WebDriver và TestNG vào dự án của bạn.
2. Xác định kịch bản kiểm thử: Xác định các trường hợp kiểm thử và các thao tác cần tự động hóa trên cơ sở dữ liệu. Ví dụ: thêm dữ liệu mới, cập nhật dữ liệu, truy vấn dữ liệu, v.v. Xác định các bước cần thiết để thực hiện mỗi kịch bản kiểm thử, bao gồm các truy vấn SQL hoặc thao tác trên giao diện người dùng.
3. Sử dụng TestNG:
Định nghĩa các phương thức kiểm thử và xác định các điều kiện thành công hoặc thất bại. Xác định các bước chuẩn bị dữ liệu kiểm thử, bao gồm việc tạo bảng, chèn dữ liệu mẫu, v.v. Thực thi các bước kiểm thử và kiểm tra kết quả trả về từ cơ sở dữ liệu hoặc giao diện người dùng. Chạy mã tự động kiểm thử bằng cách sử dụng TestNG để thực thi các phương thức kiểm thử.
Ví dụ demo: chúng ta sẽ thực hiện kiểm thử chức năng thêm một người dùng mới vào cơ sở dữ liệu.
public class DatabaseTestingExample { private WebDriver driver;
@BeforeClass
public void setUp() { // Thiết lập WebDriver System.setProperty("webdriver.chrome.driver", "path/to/chromedriver"); driver = new ChromeDriver();
} @Test
public void testAddNewUser() { // Mở trang web hoặc ứng dụng có giao diện người dùng để thêm người dùng mới driver.get("http://example.com"); // Điền thông tin người dùng mới vào các trường nhập liệu driver.findElement(By.id("username")).sendKeys("newuser"); driver.findElement(By.id("password")).sendKeys("password123"); driver.findElement(By.id("email")).sendKeys("newuser@example.com"); // Bấm nút "Thêm người dùng" driver.findElement(By.id("addUserButton")).click(); // Kiểm tra kết quả String successMessage = driver.findElement(By.id("successMessage")).getText(); Assert.assertEquals(successMessage, "Người dùng đã được thêm thành công."); // Kiểm tra dữ liệu trong cơ sở dữ liệu // Sử dụng JDBC để kết nối và thực thi truy vấn SQL // Ví dụ: SELECT COUNT(*) FROM users WHERE username = 'newuser'; // Kiểm tra xem số lượng bản ghi có giá trị 'newuser' đã tăng lên sau khi thêm người dùng mới // Xóa người dùng vừa thêm để đảm bảo sạch sẽ trạng thái cơ sở dữ liệu sau mỗi lần kiểm thử // Ví dụ: DELETE FROM users WHERE username = 'newuser';
} @AfterClass
public void tearDown() { // Đóng trình duyệt driver.quit();
}
IV.THÁCH THỨC TRONG DỰ ÁN CỦA DATABASE TESTING
Việc kiểm thử cơ sở dữ liệu đặt ra một số thách thức đáng chú ý. Dưới đây là một số trong số những thách thức phổ biến khi thực hiện kiểm thử cơ sở dữ liệu:
-
Phức tạp về cấu trúc dữ liệu: Cơ sở dữ liệu thường có cấu trúc phức tạp với nhiều bảng, quan hệ và ràng buộc. Điều này làm cho việc xác định các tình huống kiểm thử và chuẩn bị dữ liệu trở nên phức tạp hơn.
-
Ràng buộc dữ liệu: Cơ sở dữ liệu thường áp dụng các ràng buộc dữ liệu như khóa chính, khóa ngoại và ràng buộc kiểm soát. Phải đảm bảo rằng các ràng buộc này được thực thi và không xảy ra lỗi khi thực hiện các thao tác cơ sở dữ liệu.
-
Hiệu năng: Kiểm thử hiệu năng cơ sở dữ liệu là một thách thức khác. Phải đảm bảo rằng cơ sở dữ liệu có thể xử lý tải lớn và đáp ứng yêu cầu hiệu suất trong môi trường sản xuất.
-
Dữ liệu thực tế: Đối với kiểm thử cơ sở dữ liệu, việc sử dụng dữ liệu thực tế và đại diện là quan trọng. Việc tạo dữ liệu kiểm thử có thể tốn nhiều thời gian và công sức để đảm bảo rằng nó phản ánh đúng các tình huống thực tế.
-
Đồng bộ dữ liệu: Trong môi trường có nhiều phiên bản cơ sở dữ liệu, việc đồng bộ dữ liệu và kiểm tra sự tương thích giữa các phiên bản có thể là một thách thức. Đảm bảo rằng các phiên bản cơ sở dữ liệu tương thích và không có mất mát dữ liệu khi tiến hành nâng cấp hoặc chuyển đổi phiên bản.
-
Bảo mật dữ liệu: Kiểm thử cơ sở dữ liệu cần phải xác định và kiểm tra các vấn đề liên quan đến bảo mật dữ liệu. Điều này bao gồm kiểm tra quyền truy cập, kiểm tra lỗ hổng bảo mật và xác thực người dùng.
-
Kỹ năng và công cụ: Kiểm thử cơ sở dữ liệu đòi hỏi kiến thức chuyên môn về cơ sở dữ liệu và các công cụ kiểm thử. Đảm bảo rằng người thực hiện kiểm thử có đủ kiến thức và kỹ năng để đối phó với các thách thức đặc thù của kiểm thử cơ sở dữ liệu.
-
Tương tác với giao diện người dùng: Trong nhiều trường hợp, để thao tác trên cơ sở dữ liệu, bạn cần tương tác với giao diện người dùng. Điều này có thể đòi hỏi việc xác định các phần tử HTML, điền thông tin và bấm các nút hoặc liên kết. Đôi khi, xử lý các yêu cầu AJAX hay kiểm tra việc tải lại trang có thể làm phức tạp quá trình tự động hóa.
-
Handle lỗi và vấn đề: Trong quá trình kiểm thử, có thể xảy ra lỗi hoặc vấn đề, bao gồm việc xác định và ghi lại các lỗi, hiểu nguyên nhân gốc rễ và đề xuất cải tiến. Xử lý các vấn đề này đòi hỏi sự hiểu biết về cơ sở dữ liệu và khả năng debug mã tự động kiểm thử.
-
Đồng bộ hoá: Khi tương tác với cơ sở dữ liệu hoặc giao diện người dùng, đồng bộ hoá là một thách thức quan trọng. Đảm bảo rằng các hành động được thực hiện đúng thứ tự và đúng thời điểm cần thiết để tránh các lỗi không đồng bộ.
Để vượt qua các thách thức này, quan trọng để có một kế hoạch kiểm thử cơ bản, sử dụng các công cụ và phần mềm hỗ trợ, và chú ý đến các khía cạnh quan trọng như đảm bảo tính toàn vẹn dữ liệu, hiệu suất và bảo mật..
Có nhiều công cụ hỗ trợ việc kiểm thử cơ sở dữ liệu. Dưới đây là một số công cụ phổ biến được sử dụng trong lĩnh vực kiểm thử cơ sở dữ liệu: DBeaver, Navicat,DbUnit ...
Author: PoppinKhiem