Kiểm tra cơ sở dữ liệu - Câu hỏi phỏng vấn
Kiểm tra cơ sở dữ liệu bao gồm thực hiện tính hợp lệ của dữ liệu, kiểm tra tính toàn vẹn của dữ liệu, kiểm tra hiệu suất liên quan đến cơ sở dữ liệu và kiểm tra các thủ tục, trình kích hoạt và chức năng trong cơ sở dữ liệu.
Có nhiều lý do tại sao kiểm tra cơ sở dữ liệu được thực hiện. Cần phải thực hiện kiểm tra tính toàn vẹn dữ liệu, xác thực và tính nhất quán dữ liệu trên cơ sở dữ liệu vì hệ thống phụ trợ chịu trách nhiệm lưu trữ dữ liệu và được truy cập cho nhiều mục đích.
Một số lý do phổ biến khiến người ta cần thực hiện kiểm thử Cơ sở dữ liệu như sau:
Để giảm bớt sự phức tạp của các lệnh gọi đến phần phụ trợ cơ sở dữ liệu, các nhà phát triển tăng cường sử dụng View và Stored Các thủ tục.
Những Stored thủ tục và Viewschứa các tác vụ quan trọng như chèn chi tiết khách hàng (tên, thông tin liên hệ, v.v.) và dữ liệu bán hàng. Các nhiệm vụ này cần được kiểm tra ở nhiều cấp độ.
Kiểm tra hộp đen được thực hiện trên giao diện người dùng là quan trọng, nhưng gây khó khăn cho việc cô lập vấn đề. Thử nghiệm tại hệ thống phụ trợ làm tăng độ chắc chắn của dữ liệu. Đó là lý do tại sao kiểm tra cơ sở dữ liệu được thực hiện trên hệ thống back end.
Trong cơ sở dữ liệu, dữ liệu đến từ nhiều ứng dụng và có khả năng dữ liệu có hại hoặc không chính xác được lưu trữ trong cơ sở dữ liệu. Do đó, cần phải kiểm tra các thành phần cơ sở dữ liệu thường xuyên. Ngoài ra, tính toàn vẹn và nhất quán của dữ liệu cần được kiểm tra thường xuyên.
Các bước bạn cần làm theo khi thực hiện kiểm tra cơ sở dữ liệu như sau:
- Dữ liệu đang có trong cơ sở dữ liệu phải được xác minh.
- Xác minh xem các ràng buộc có được duy trì hay không.
- Việc thực hiện các thủ tục và việc thực thi các trình kích hoạt phải được kiểm tra.
- Cuộn lại và cam kết giao dịch phải được kiểm tra.
Trên cơ sở chức năng và cấu trúc của cơ sở dữ liệu, thử nghiệm DB có thể được phân loại thành các loại sau:
Structural Database testing - Nó liên quan đến kiểm tra bảng và cột, kiểm tra lược đồ, kiểm tra các thủ tục và chế độ xem được lưu trữ, kiểm tra trình kích hoạt, v.v.
Functional Testing- Nó liên quan đến việc kiểm tra chức năng của cơ sở dữ liệu theo quan điểm của người dùng. Loại kiểm thử chức năng phổ biến nhất là kiểm thử hộp trắng và hộp đen.
Nonfunctional Testing - Nó liên quan đến kiểm tra tải, kiểm tra rủi ro trong cơ sở dữ liệu, kiểm tra căng thẳng, yêu cầu hệ thống tối thiểu và đề cập đến hiệu suất hoạt động của cơ sở dữ liệu.
Các công cụ phổ biến nhất được sử dụng để thực hiện kiểm tra các thủ tục được lưu trữ là LINQ, công cụ Kiểm tra SP, v.v.
Các phép nối được sử dụng để kết nối hai hoặc nhiều bảng theo một số cách hợp lý. Các loại liên kết phổ biến bao gồm: Tham gia bên trong, Tham gia không tương đương, Tham gia ngoài, Tự tham gia và Kết nối chéo.
Bạn có thể tham gia một bảng với chính nó. Trong trường hợp này, bạn đang sử dụng cùng một bảng hai lần.
Step 1 - Kết nối với cơ sở dữ liệu
db_connect(query1 DRIVER {drivername};SERVER server_name;UID uidname;
PWD password;DBQ database_name );
Step 2 - Thực hiện truy vấn của cơ sở dữ liệu -
db_excecute_query (write the required query that is to execute); Specify the appropriate condition
Step 3 - Ngắt kết nối cơ sở dữ liệu bằng cách sử dụng
db_disconnect(query);
Sử dụng các điểm kiểm tra cơ sở dữ liệu Đầu ra, các tùy chọn truy vấn thủ công SQL phải được chọn. Tại đây, truy vấn chọn có thể được viết.
Đầu tiên, hãy kiểm tra yêu cầu của thủ tục được lưu trữ. Bước tiếp theo là kiểm tra xem các chỉ mục, nối, xóa, cập nhật có chính xác không so với các bảng được đề cập trong thủ tục lưu trữ.
Tiếp theo, thực hiện các tác vụ sau:
Xác thực tên thủ tục gọi, tham số gọi và phản hồi mong đợi cho các tập hợp tham số đầu vào khác nhau.
Thực thi quy trình với TOAD hoặc MySQL hoặc Trình phân tích truy vấn.
Thực hiện lại các thủ tục có sẵn bằng cách gửi các tham số khác nhau và kiểm tra kết quả so với các giá trị mong đợi.
Kết thúc quá trình, tự động hóa các bài kiểm tra với WinRunner.
Người kiểm tra nên gọi thủ tục được lưu trữ trong cơ sở dữ liệu bằng lệnh EXEC. Nếu bất kỳ tham số nào được yêu cầu, chúng phải được chuyển. Các giá trị khác nhau của các tham số phải được chuyển để xác nhận xem thủ tục được lưu trữ có được thực thi hay không. Khi gọi lệnh này, nó phải kiểm tra và xác minh bản chất và hành vi của cơ sở dữ liệu.
Example - Nếu thủ tục được lưu trữ được viết để điền một số bảng, thì các giá trị của bảng phải được kiểm tra.
Chúng ta có ba loại câu lệnh SQL:
- Ngôn ngữ thao tác dữ liệu (DML)
- Ngôn ngữ định nghĩa dữ liệu (DDL)
- Ngôn ngữ kiểm soát dữ liệu (DCL)
Các câu lệnh DDL được sử dụng để xác định cấu trúc cơ sở dữ liệu hoặc lược đồ. Một số ví dụ -
CREATE - để tạo các đối tượng trong cơ sở dữ liệu
ALTER - thay đổi cấu trúc của cơ sở dữ liệu
DROP - xóa các đối tượng khỏi cơ sở dữ liệu
Các toán tử được sử dụng để chỉ định các điều kiện trong một câu lệnh SQL và dùng làm các liên từ cho nhiều điều kiện trong một câu lệnh.
- Toán tử số học
- Toán tử so sánh / quan hệ
- Toán tử logic
- Đặt toán tử
- Các toán tử được sử dụng để phủ định các điều kiện
Union được sử dụng để kết hợp các kết quả của hai hoặc nhiều câu lệnh Chọn. Tuy nhiên nó sẽ loại bỏ các hàng trùng lặp. Union là một toán tử tập hợp.
Unionđược sử dụng để kết hợp các kết quả của hai hoặc nhiều câu lệnh Chọn. Tuy nhiên nó sẽ loại bỏ các hàng trùng lặp
Union All hoạt động tương tự như Union, nhưng nó cũng hiển thị các hàng trùng lặp.
Trigger được sử dụng để duy trì tính toàn vẹn của cơ sở dữ liệu. Để kiểm tra Trigger có được kích hoạt hay không, bạn có thể kiểm tra nhật ký kiểm tra.
Không thể gọi kích hoạt theo yêu cầu. Chúng được gọi khi một hành động liên kết (chèn, xóa và cập nhật) xảy ra trên bảng mà chúng được xác định. Các trình kích hoạt được sử dụng để áp dụng các quy tắc kinh doanh, kiểm toán và cũng để kiểm tra tính toàn vẹn tham chiếu.
Đầu tiên, lấy yêu cầu chức năng. Sau đó, hiểu cấu trúc bảng, Nối, Con trỏ và Trình kích hoạt, Thủ tục được lưu trữ được sử dụng và các tham số khác. Tiếp theo, bạn có thể viết một test-case với các giá trị khác nhau làm đầu vào cho các đối tượng này.
Kiểm tra DB liên quan đến việc kiểm tra các thành phần back-end không hiển thị cho người dùng. Nó bao gồm các thành phần cơ sở dữ liệu và các hệ thống DBMS như MySQL và Oracle.
Kiểm thử front-end bao gồm việc kiểm tra các chức năng của ứng dụng và các thành phần của nó như biểu mẫu, đồ thị, menu, báo cáo, v.v. Những thành phần này được tạo bằng cách sử dụng các công cụ phát triển front-end như VB.net, C #, Delphi, v.v.
Quá trình thực hiện kiểm thử cơ sở dữ liệu tương tự như kiểm thử các ứng dụng khác. Thử nghiệm DB có thể được mô tả bằng các quy trình chính sau:
- Thiết lập môi trường
- Chạy thử nghiệm
- Kiểm tra kết quả thử nghiệm
- Xác thực theo kết quả mong đợi
- Báo cáo kết quả cho các bên liên quan tương ứng
Các câu lệnh SQL khác nhau được sử dụng để phát triển các trường hợp Kiểm thử. Câu lệnh SQL phổ biến nhất được sử dụng để thực hiện kiểm tra DB là câu lệnh select. Ngoài các câu lệnh DDL, DML, DCL khác nhau này cũng có thể được sử dụng.
Example - Tạo, Chèn, Chọn, Cập nhật, v.v.
Một khung nhìn là một bảng không thực sự tồn tại theo đúng nghĩa của nó mà thay vào đó nó được dẫn xuất từ một hoặc nhiều bảng cơ sở. Nói cách khác, không có tệp được lưu trữ nào đại diện trực tiếp cho chế độ xem thay vào đó một định nghĩa về chế độ xem được lưu trữ trong từ điển dữ liệu.
Sự tăng trưởng và tái cấu trúc của các bảng cơ sở không được phản ánh trong các lượt xem. Do đó, khung nhìn có thể cách ly người dùng khỏi những thay đổi trong cơ sở dữ liệu. Do đó, tính độc lập dữ liệu lôgic.
Nó chỉ định chế độ xem của người dùng và ánh xạ của họ tới lược đồ khái niệm.
Nó là một quá trình phân tách một bảng thành nhiều bảng mà không làm mất bất kỳ thông tin nào. Quá trình chuẩn hóa được thực hiện để đạt được các mục tiêu sau:
- Để giảm thiểu sự dư thừa.
- Để giảm thiểu việc chèn, xóa và cập nhật các bất thường.
Lập chỉ mục là một kỹ thuật để xác định dữ liệu cụ thể có thể được tìm thấy nhanh như thế nào. Nó được sử dụng để tối ưu hóa hiệu suất truy vấn. Lập chỉ mục có thể thuộc các loại sau:
- Lập chỉ mục kiểu tìm kiếm nhị phân
- Lập chỉ mục B-Tree
- Lập chỉ mục danh sách đảo ngược
- Bảng thường trú bộ nhớ
- Lập chỉ mục bảng
SQL là ngôn ngữ Truy vấn có cấu trúc được thiết kế đặc biệt cho các hoạt động truy cập dữ liệu trên cấu trúc cơ sở dữ liệu quan hệ được chuẩn hóa.
Sự khác biệt cơ bản giữa SQL và các ngôn ngữ lập trình thông thường khác là các câu lệnh SQL chỉ định những thao tác dữ liệu nào nên được thực hiện hơn là cách thực hiện chúng.
Các thủ tục được lưu trữ được sử dụng để thực hiện một hoạt động do người dùng xác định. Một thủ tục được lưu trữ có thể có một tập hợp các câu lệnh SQL phức hợp. Một thủ tục được lưu trữ thực thi các lệnh SQL và trả về kết quả cho máy khách.
PL / SQL sử dụng con trỏ cho tất cả các câu lệnh truy cập thông tin cơ sở dữ liệu. Ngôn ngữ hỗ trợ sử dụng hai loại con trỏ - ngầm định và rõ ràng.
Cold Backup- Cold back được gọi là sao lưu các tệp cơ sở dữ liệu, làm lại nhật ký và tệp điều khiển khi phiên bản bị tắt. Đây là một bản sao tập tin, thường từ đĩa trực tiếp sang băng. Bạn phải tắt phiên bản để đảm bảo một bản sao nhất quán.
Nếu sao lưu lạnh được thực hiện, tùy chọn duy nhất có sẵn trong trường hợp mất tệp dữ liệu là khôi phục tất cả các tệp từ bản sao lưu mới nhất. Tất cả các thay đổi được thực hiện sau lần sao lưu cuối cùng sẽ bị mất.
Hot Backup- Một số cơ sở dữ liệu không thể tắt trong khi tạo bản sao lưu của các tệp, vì vậy sao lưu lạnh không phải là một tùy chọn khả dụng. Đối với những loại cơ sở dữ liệu, chúng tôi sử dụng sao lưu nóng.
Truy vấn con SQL là một phương tiện truy vấn hai hoặc nhiều bảng cùng một lúc. Bản thân truy vấn con là một câu lệnh SQL SELECT nằm trong mệnh đề WHERE của một câu lệnh SQL SELECT khác và được phân tách bằng cách đặt trong dấu ngoặc đơn. Một số truy vấn con có cấu trúc nối SQL tương đương, nhưng các truy vấn con tương quan không thể được sao chép bởi một phép nối
Trong trường hợp này, bạn cần kiểm tra các khía cạnh sau:
- Phụ thuộc nhiều giá trị
- Phụ thuộc chức năng
- Chìa khóa ứng viên
- Khóa chính
- Khóa ngoại
Bạn có thể truy cập cơ sở dữ liệu và chạy một truy vấn SQL có liên quan. Trong WinRunner, bạn có thể sử dụng chức năng điểm kiểm tra cơ sở dữ liệu. Nếu ứng dụng cung cấp chức năng xem, thì bạn có thể xác minh điều tương tự từ giao diện người dùng.
Kiểm thử theo hướng dữ liệu được định nghĩa là một quy trình kiểm thử tự động hóa trong đó ứng dụng sẽ được kiểm tra với nhiều dữ liệu kiểm tra. Nó đơn giản và dễ dàng hơn việc kiểm tra lại khi người kiểm tra chỉ cần ngồi trước hệ thống và nhập các giá trị đầu vào mới khác nhau theo cách thủ công từ giao diện front-end.
Sau khi bạn thực hiện các trường hợp thử nghiệm và tìm thấy các lỗi đã được phát hiện và sửa chữa. Việc thực hiện lại cùng một bài kiểm tra với các giá trị đầu vào khác nhau để xác nhận lỗi ban đầu đã được loại bỏ thành công được gọi là Kiểm tra lại.
Thử nghiệm lại còn được gọi là Thử nghiệm theo hướng dữ liệu với một sự khác biệt nhỏ -
Retesting - Đây là một quá trình kiểm thử thủ công trong khi kiểm thử ứng dụng được thực hiện với toàn bộ tập dữ liệu mới.
Data-driven Testing- Đây là một quá trình kiểm thử tự động, nơi ứng dụng sẽ được kiểm tra với nhiều dữ liệu kiểm tra. Nó đơn giản và dễ dàng hơn việc kiểm tra lại khi người kiểm tra chỉ cần ngồi trước hệ thống và nhập các giá trị đầu vào mới khác nhau theo cách thủ công từ giao diện front-end.
Có bốn loại kiểm tra theo hướng dữ liệu -
- Gửi dữ liệu thử nghiệm động thông qua bàn phím
- Kiểm tra theo hướng dữ liệu thông qua tệp phẳng .txt, .doc
- Kiểm tra theo hướng dữ liệu thông qua các đối tượng front-end
- Kiểm tra theo hướng dữ liệu qua trang tính excel
Kiểm thử hiệu suất là một kỹ thuật kiểm tra phần mềm để xác định cách một hệ thống hoạt động về tốc độ, độ nhạy và độ ổn định dưới một khối lượng công việc nặng.
Các điểm chính sau đây cần được xem xét khi thực hiện kiểm tra khôi phục cơ sở dữ liệu:
Khoảng thời gian khi các thay đổi hoặc sửa đổi xảy ra trong hệ thống cơ sở dữ liệu.
The period by which you want your recovery plan conducted.
The sensitivity of data in database system. More critical the data is, the more regularly you will need to test the software.
The following tools are used to generate test data −
- Data Factory
- DTM Data Generator
- Turbo Data
There are two types of backup that can be used −
Physical Backups − Physical backup includes taking back up using 3rd party backup tools like Veritas net back, IBM Tivoli Manager or user manager backups using OS utilities.
Logical Backups − Logical backup of database includes taking back up of logical objects like tables, indexes, procedures, etc.
A common tool to take data backup is Oracle Recovery Manager (RMAN) that is an Oracle utility to take database backup.
The following actions are performed in database recovery testing −
- Testing of database system
- Testing of the SQL files
- Testing of partial files
- Testing of data backup
- Testing of Backup tool
- Testing log backups
Database security testing is performed to find the loop holes in security mechanisms and also about finding the vulnerabilities or weaknesses of database system.
Database security testing is performed to check the following aspects −
- Authentication
- Authorization
- Confidentiality
- Availability
- Integrity
- Resilience
SQL Injection threat is the most common type of attack in a database system where malicious SQL statements are inserted in database system and executed to get critical information from database system. This attack takes advantage of loopholes in implementation of user applications. To prevent this user inputs fields should be carefully handled.
The following tools can be used to perform database security testing: Zed Attack Proxy, Paros, Social Engineer Toolkit, Skipfish, Vega, Wapiti, and Web Scarab.
The common challenges that one faces while performing database testing are as follows −
- Testing scope is too large
- Scaled-down test database
- Changes in database structure
- Complex Test Plans
- Good understanding of SQL