Những câu hỏi phổ biến và câu trả lời về Database Testing dành cho QA
Trong quá trình làm công việc QA, chúng ta thường phải làm việc với Cơ sở dữ liệu. Do đó, đối với những bạn muốn ứng tuyển vào vị trí QA hoặc Tester, thì việc trải qua cuộc phỏng vấn là điều tất yếu. Trong quá trình phỏng vấn, nhà tuyển dụng sẽ đề cập tới những nội dung liên quan tới CSDL. Dưới ...
Trong quá trình làm công việc QA, chúng ta thường phải làm việc với Cơ sở dữ liệu. Do đó, đối với những bạn muốn ứng tuyển vào vị trí QA hoặc Tester, thì việc trải qua cuộc phỏng vấn là điều tất yếu. Trong quá trình phỏng vấn, nhà tuyển dụng sẽ đề cập tới những nội dung liên quan tới CSDL. Dưới đây là một số những câu hỏi về Database và câu trả lời gợi ý chi tiết.**
Câu hỏi 1: Kiểm thử cơ sở dữ liệu là gì?
Trả lời: Kiểm thử cơ sở dữ liệu (Kiểm thử Back-end) là một quá trình kiểm tra tác động của hoạt động của cơ sở dữ liệu back-end trên ứng dụng web hoặc thiết bị đầu cuối. Thử nghiệm cơ sở dữ liệu được chia thành các loại khác nhau sau đây:
- Kiểm tra tính hợp lệ của dữ liệu: Trong khi thực hiện kiểm thử này, người kiểm thử cần phải có kiến thức tốt về các truy vấn SQL.
- Kiểm thử tính toàn vẹn dữ liệu: Trong khi thực hiện kiểm thử này, người kiểm thử hoặc nhà phát triển nên biết tính toàn vẹn tham chiếu và các ràng buộc khác nhau.
- Kiểm thử hiệu suất cơ sở dữ liệu: Trong khi thực hiện việc kiểm thử này, người kiểm thử hoặc nhà phát triển phải có khả năng thiết kế cấu trúc bảng.
- Kiểm thử thủ tục, kích hoạt và chức năng: Trong khi thực hiện kiểm thử này, người kiểm thử hoặc nhà phát triển phải có hiểu biết đầy đủ về thủ tục, trình kích hoạt và chức năng thử nghiệm.
Câu hỏi 2: Tại sao việc kiểm thử cơ sở dữ liệu lại quan trọng?
Trả lời: Mặc dù, tất cả chúng ta đều biết rằng cơ sở dữ liệu không giống như một bảng nhỏ, nó là một kho chứa nhiều bảng và đầy dữ liệu, cung cấp dữ liệu cùng lúc cho nhiều ứng dụng web hoặc máy tính để bàn.
- Quá trình kiểm tra cơ sở dữ liệu đảm bảo rằng các dữ liệu chính xác và duy nhất (không có lỗi) cung cấp đến vị trí chính xác.
- Nếu dữ liệu không chính xác có thể gây ra một số vấn đề nghiêm trọng như: Chết khoá, hư hỏng dữ liệu, hiệu năng kém, không thống nhất, ....
Câu hỏi 3: Trong quá trình kiểm tra cơ sở dữ liệu, chúng ta thường kiểm tra những gì?
Trả lời: Kiểm tra cơ sở dữ liệu đòi hỏi một số kiến thức chuyên sâu và có kế hoạch tiếp cận được xác định để kiểm tra dữ liệu của một ứng dụng cụ thể. Trong quá trình kiểm tra cơ sở dữ liệu chúng ta thường kiểm tra:
- Xác nhận kích thước trường
- Kiểm tra ràng buộc.
- Chỉ mục được thực hiện hay không (đối với các vấn đề liên quan đến hiệu suất)
- Thủ tục lưu giữ
- Kích thước trường được xác định trong ứng dụng phù hợp với thuộc tính trong Database.
Câu hỏi 4: Bạn có thể kiểm thử cơ sở dữ liệu thủ công không? Nếu có thể, hãy giải thích bằng ví dụ?
Trả lời: Để kiểm thử cơ sở dữ liệu, ta cần phải làm:
- Theo dõi hoạt động
- Quan sát các hoạt động của front-end và ảnh hưởng của nó trên cơ sở dữ liệu back-end.
- Trong khi thêm một bản ghi (XYZ) từ front-end vào cơ sở dữ liệu back-end,
- Kiểm tra bằng tay xem thông tin đã bị ảnh hưởng trên cơ sở dữ liệu back-end hay không. Tương tự, nó sẽ làm việc để xóa, cập nhật, ... Ví dụ cụ thể: Yêu cầu : Ghi hồ sơ sinh viên đang thi Ta sẽ làm: Nhập thông tin chi tiết của sinh viên vào hệ thống front-end và sau đó tự kiểm tra việc bổ sung này trên cơ sở dữ liệu back-end.
Câu hỏi 5: Làm thế nào để kiểm tra Procedures và Triggers?
Trả lời: Quá trình kiểm tra Procedures và Triggers yêu cầu kiến thức về các tham số đầu vào, các tham số đầu ra, và câu lệnh EXEC. Câu lệnh EXEC giúp ích trong việc chạy các thủ tục và quan sát hành vi tại các bảng. Cùng xem, làm thế nào để kiểm thử Procedures và Triggers:
- Trước tiên, mở project CSDL sẽ được hiển thị trong cửa sổ explorer
- Một khi dự án đã được mở ra, hãy vào trình đơn View, nhấp vào Database schema, mở thư mục dự án từ trình đơn schema View
- Nhấp chuột phải vào đối tượng đã được kiểm thử, và sau đó click vào Create Unit Tests. Một hộp thoại "Create Unit Tests" sẽ mở ra và hiển thị tất cả các thư mục và các đối tượng CSDL của dự án và tick chọn checkbox cho đối tượng cần chọn.
- Tiếp theo, tạo mới ngôn ngữ thử nghiệm
- Chọn hoặc chèn các đơn vị thử nghiệm vào một lớp kiểm thử hiện có hoặc tạo ra một lớp kiểm thử mới, nhấp vào OK
- Để cấu hình dự án, hộp thoại Project configuration sẽ xuất hiện để cấu hình các thiết lập dự án thử nghiệm. Quá trình này yêu cầu kết nối cơ sở dữ liệu và kế hoạch tạo dữ liệu. Kết nối cơ sở dữ liệu là để hoàn thành kiểm tra kết quả
- Cuối cùng, nhấp vào OK.
Câu hỏi 6: Bạn có suy nghĩ gì về data-driven test?
Trả lời:
- Data-driven test là một thuật ngữ được sử dụng trong quá trình thử nghiệm, trong đó các test script khi thực hiện đọc dữ liệu thử nghiệm và (hoặc) đưa ra giá trị từ các tệp dữ liệu (Data pools, tệp Excel, các đối tượng ADO, tệp tin CSV, các nguồn ODBC) thay thế việc đọc giá trị mã hoá cứng cho mỗi lần.
- Thử nghiệm này giúp người kiểm thử có khả năng kiểm thử ứng dụng trong việc xử lý nhiều đầu vào khác nhau.
Câu hỏi 7: Database Trigger là gì, làm thế nào để xác định Trigger được kích hoạt hay không và bạn có thể gọi Trigger theo yêu cầu?
Trả lời:
- Database Trigger: Trigger về cơ bản là một thủ tục lưu trữ được sử dụng để duy trì tính toàn vẹn của dữ liệu có trong cơ sở dữ liệu, được thực hiện tự động để đáp ứng một sự kiện nhất định của một bảng hoặc View trong cơ sở dữ liệu.
- Để xác minh Trigger được kích hoạt hay không; Sử dụng truy vấn nhật ký kiểm tra chung sẽ hiển thị trigger của bảng dữ liệu.
- Trigger hoạt không thể được gọi theo yêu cầu, nó được gọi ra khi bảng hiển thị một hành động (chèn, xóa và cập nhật) được định nghĩa cụ thể trên bảng đó.
Câu hỏi 8: Sau khi nhập dữ liệu từ giao diện ứng dụng Front-end, làm thế nào để bạn kiểm tra xem dữ liệu được cập nhật hay không?
Trả lời: Nó hoàn toàn phụ thuộc vào giao diện ứng dụng mà bạn đang sử dụng. Sau đây là một số cách :
- Bạn chỉ có thể xác minh từ giao diện người dùng khi giao diện ứng dụng hiển thị chức năng xem của dữ liệu bạn nhập vào. => Chủ yếu, các kỹ sư kiểm tra hộp đen thử nghiệm xác minh chức năng này theo cách này.
- Nếu giao diện ứng dụng không cung cấp chức năng xem dữ liệu đã nhập vào, thì ta có thể kiểm tra cập nhật cơ sở dữ liệu bằng cách sử dụng truy vấn SQL hoặc Oracle có liên quan.
- Có thể sử dụng Checkpoint một chức năng của WinRunner hoặc QTP để kiểm tra cập nhật cơ sở dữ liệu.
Câu hỏi 9: Làm thế nào để kiểm tra các thủ tục lưu trữ (Store Procedure) ?
Trả lời: Kỹ sư kiểm thử cần làm theo một số bước sau để kiểm thử Store Procedure:
- B1: Kỹ sư kiểm tra phải hiểu được yêu cầu và cũng là mục đích của một Store Procedure cụ thể.
- B2: Kiểm tra xem tất cả các chỉ mục, kết nối, cập nhật, xóa có chính xác so với các bảng được đề cập trong Store và cũng đảm bảo rằng Store có định dạng như chuẩn chung như: nhận xét, cập nhật ...
- B3: Sau đó, đối với các bộ tham số đầu vào khác nhau, xác minh tên gọi, tham số gọi và kết quả mong muốn trả về
- B4: Chạy các thủ tục thủ công, với các chương trình cơ sở dữ liệu khách hàng như; TOAD, mysql, hoặc Query Analyzer.
- B5: Kiểm tra kết quả so với giá trị dự kiến. Tiếp tục chạy thủ tục bằng cách đưa ra các thông số khác nhau.
- B6: Cuối cùng, kiểm thử tự động với QTP.
Câu hỏi 10: Joins là gì, các loại hình Joins?
Trả lời: Joins được sử dụng để kết hợp hai hoặc nhiều hơn 2 bảng và hiển thị dưới dạng một tập hợp dữ liệu. Trong SQL, có các loại Joins:
- Inner Join
- Outer Join
- Left Join
- Right Join Trong ORACLE / PLSQL, có bốn loại joins:
- Inner Join
- Left-Outer Join
- Right-Outer Join
- Full-Outer Join
Câu hỏi 11: Bạn có suy nghĩ gì về Index và các loại Index?
Trả lời: Index là một đối tượng của cơ sở dữ liệu, được tạo ra trên một cột của bảng để tìm dữ liệu nhanh hơn và hiệu quả hơn (hoặc chúng ta có thể nói, nó được sử dụng để tăng tốc độ cho các tìm kiếm hoặc truy vấn). Các loại chỉ số gồm:
- B-Tree index
- Bitmap index
- Clustered index
- Covering index
- Non-unique index
- Unique index
Câu hỏi 12: DBMS là gì?
Trả lời:
- DBMS (Database management system) - Hệ thống quản lý cơ sở dữ liệu: là một ứng dụng phần mềm máy tính tạo ra kênh giao tiếp giữa người dùng, các ứng dụng và cơ sở dữ liệu khác để lưu trữ, sửa đổi và trích xuất thông tin từ cơ sở dữ liệu.
- Các DBMS nổi tiếng là My SQL , Postgre SQL, Microsoft SQL Server, Oracle, SAP và IBM DB2.
Câu hỏi 13: DML của là gì?
Trả lời:
- DML (Data manipulation language) - là ngôn ngữ thao tác dữ liệu là một thành viên của ngôn ngữ lập trình máy tính giúp chúng ta chọn, chèn, xóa và cập nhật dữ liệu trong cơ sở dữ liệu.
- DML về cơ bản là tham gia vào ngôn ngữ truy vấn SQL (Structured Query Language ), tạo điều kiện cho người dùng truy xuất và sử dụng dữ liệu trong cơ sở dữ liệu quan hệ.
Câu hỏi 14: Ý nghĩa của lệnh DCL và giải thích các lệnh được sử dụng bởi DCL?
Trả lời: Ngôn ngữ kiểm soát dữ liệu DCL (Data Control Language) là một thành phần của SQL, kiểm soát việc sử dụng dữ liệu được lưu trữ trong cơ sở dữ liệu. Có hai loại lệnh DCL,
- Grant = Lệnh tạo điều kiện cho người dùng có quyền truy cập vào cơ sở dữ liệu
- Revoke = Ngừng cho phép người dùng truy cập cơ sở dữ liệu
Câu hỏi 15: Ý nghĩa kiểm tra hộp trắng (white box testing) và kiểm tra hộp đen (black box testing)?
Trả lời:
-
Kiểm tra hộp đen là kỹ thuật kiểm tra phần mềm để kiểm tra hành vi, chức năng của một ứng dụng mà không cần phải đi vào cấu trúc nội bộ của ứng dụng, chức năng đó. Không yêu cầu hiểu biết về việc bên trong của ứng dụng làm gì cũng như cấu trúc nội bộ, không yêu cầu kiến thức về lập trình để thử nghiệm hộp đen, nhưng cần phải có kiến thức về yêu cầu của chức năng ứng dụng để kiểm tra ứng dụng.
-
Thử nghiệm Hộp trắng (White Box Testing - WBT) còn được gọi là Thử nghiệm dựa trên Mã hoặc Kiểm tra kết cấu để kiểm tra cấu trúc nội bộ của một ứng dụng phần mềm. Trong trường hợp thử nghiệm hộp trắng, người kiểm tra phải hiểu rõ cấu trúc bên trong của một ứng dụng cũng như kiến thức tốt về kỹ năng lập trình để thiết kế các trường hợp thử nghiệm và cấu trức bên trong của ứng dụng.
Câu hỏi 16: Liệu QTP có hỗ trợ truy vấn SQL, làm thế nào để sử dụng các truy vấn SQL trong QTP?
Trả lời:
- Dù QTP (QuickTest Professional) không mang bất kỳ chức năng tích hợp nào cho kết nối cơ sở dữ liệu, nhưng tester sử dụng ngôn ngữ VBScript để kết nối và tương tác với các cơ sở dữ liệu sử dụng các đối tượng ADODB.
- Các đối tượng ADODB được chia thành bốn thuộc tính, phương thức khác nhau sẽ giúp tạo thành công kết nối cơ sở dữ liệu:
- Kết nối: Rất hữu ích trong việc tạo kết nối với Cơ sở dữ liệu
- Lệnh: Hữu ích trong việc thực hiện một lệnh SQL (Queries / Stored Procedures)
- Trường: Hữu ích trong việc lấy ra một cột cụ thể từ một tập hợp sau khi thực hiện một truy vấn, Thủ tục lưu trữ.
- Recordset: Được sử dụng để lấy dữ liệu từ cơ sở dữ liệu
Câu hỏi 17: Các câu lệnh SQL nào có thể được sử dụng trong kiểm thử cơ sở dữ liệu?
Trả lời: Tất cả các câu lệnh DDL, DML, DCL, và TCL của SQL có thể được sử dụng để kiểm tra cơ sở dữ liệu
- DDL (Data Definition Language) - ngôn ngữ định nghĩa dữ liệu: Tất cả các câu lệnh có liên quan đến việc này có thể được sử dụng trong việc định nghĩa cấu trúc hoặc lược đồ cơ sở dữ liệu. Các câu lệnh: CREATE, ALTER, DROP, TRUNCATE, COMMENT, and RENAME
- DML (Data Manipulation Language) - ngôn ngữ thao tác dữ liệu: Tất cả các câu lệnh có liên quan đến việc này có thể được sử dụng để quản lý dữ liệu trong các đối tượng lược đồ.
- Các câu lệnh: SELECT, INSERT, UPDATE, DELETE, MERGE, CALL, GIẢI THÍCH KẾ HOẠCH, VÀ LOCK TABLE.
- DCL (Data Control Language) - ngôn ngữ kiểm soát dữ liệu: Các câu lệnh: GRANT và REVOKE
- TCL (Tool Command Language) - ngôn ngữ thông dịch: Chính là những câu lệnh dùng dể chuyueenr đổi từ ngôn ngữ lập trình sang ngôn ngữ máy trước khi thi hành. Các câu lệnh: COMMIT, SAVEPOINT, ROLLBACK, và SET TRANSACTION.
Câu hỏi 18 : Trong thử nghiệm cơ sở dữ liệu, làm thế nào để làm các thử nghiệm tải dữ liệu (Data load)?
Trả lời: Để kiểm tra tải dữ liệu:
- Bạn cần có kiến thức về cơ sở dữ liệu nguồn (các bảng dữ liệu, các cột, các ràng buộc liên quan, các kiểu dữ liệu) và cơ sở dữ liệu đích (các bảng dữ liệu, các cột, các loại dữ liệu, và các ràng buộc).
- Bạn cần phải kiểm tra sự tương thích giữa cơ sở dữ liệu nguồn và cơ sở dữ liệu đích qua gói DTS (Data Transformation Service) - dịch vụ chuyển đổi cơ sở dữ liệu.
- Bạn cần mở gói DTS tương ứng trong SQL Enterprise Manager và chạy gói DTS (nếu bạn đang sử dụng SQL Server).
- Sau đó, bạn cần phải so sánh dữ liệu tất cả cột của Nguồn và Đích
- Bạn phải kiểm tra số hàng của Nguồn và Đích
- Sau khi cập nhật dữ liệu trong cơ sở dữ liệu Source, bạn cần phải kiểm tra xem những thay đổi đã được phản ánh trên cơ sở dữ liệu đích hay không.
- Bạn cần phải kiểm tra về ký tự rác và NULLs.
- Kiểm tra tải cơ sở dữ liệu, kiểm tra dung lượng của máy chủ cơ sở dữ liệu để xử lý các truy vấn, và cũng kiểm tra thời gian phản hồi của máy chủ cơ sở dữ liệu và máy khách.
Câu hỏi 19: "Tỷ lệ truy xuất cơ sở dữ liệu nhanh" là một yêu cầu có khả năng kiểm chứng hay không?
Trả lời:
- Không
- Vì yêu cầu dường như không rõ ràng. SRS cần hiển thị rõ ràng yêu cầu về hiệu suất hoặc giao dịch, nghĩa là cần đề cập đến; "Tỷ lệ truy xuất cơ sở dữ liệu là 5 microseconds".
Câu hỏi 20: Bỏ qua CSDL, làm thế nào bạn có thể kiểm tra một Truy vấn SQL trong QTP?
Trả lời: Chúng ta có thể sử dụng script dưới đây để kết nối với cơ sở dữ liệu nơi chúng ta có thể kiểm tra cả Cơ sở dữ liệu và các truy vấn.
- Thủ tục cho kết nối cơ sở dữ liệu: db_connect(“query1”,DRIVER={driver name};SERVER=server_name; UID=uidname;PWD=password;DBQ=database_name “);
- Các thủ tục để thực hiện các truy vấn: db_excecute_query(“query1″,”write query u want to execute”); -Condition to be mentioned-
- Các thủ tục để ngắt kết nối với cơ sở dữ liệu: db_disconnect(“query”);
Câu hỏi 21: Trong thử nghiệm cơ sở dữ liệu, Những thứ cần thiết cho việc viết các testcase tốt là gì?
Trả lời: Cần phải có kiến thức về những điều sau trước khi viết các trường hợp kiểm tra cơ sở dữ liệu:
- Trước hết, hãy hiểu hoàn toàn ứng dụng và yêu cầu của ứng dụng.
- Thứ hai, kiểm tra các thực thể đã được sử dụng trong ứng dụng: Các bảng dữ liệu back-end, kết nối giữa các bảng, các con trỏ (nếu có), các Triggers (nếu có), các Store Procedures (nếu có), tham số đầu, các tham số đầu ra để phát triển yêu cầu đó.
- Sau khi thu thập tất cả các thông tin cần thiết, viết ra các trường hợp thử nghiệm với các giá trị đầu vào khác nhau để kiểm tra tất cả các nguồn
- Viết các trường hợp thử nghiệm để kiểm tra kết thúc ngược lại để kiểm tra chức năng, ta nên sử dụng kỹ thuật kiểm tra hộp trắng.
Câu hỏi 22: Retesting là gì? Nó khác gì với Data Driven Testing?
Trả lời:
- Sau khi thực hiện thử nghiệm tìm lỗi, đã được phát hiện và đã sửa lại. Thực hiện lại cùng một phép thử với các giá trị đầu vào khác nhau để xác nhận lỗi ban đầu đã được xoá thành công được gọi là Retesting hoặc Confirmation Testing.
- Retesting còn được gọi là Data Driven Testing, Tuy nhiên có sự khác biệt giữa cả hai: Retesting: Đó là một quá trình thử nghiệm thủ công trong khi ứng dụng thử nghiệm được thực hiện với toàn bộ tập dữ liệu mới. DataDriven Testing (DDT): Đây là một quá trình thử nghiệm tự động, ứng dụng sẽ được kiểm tra với nhiều dữ liệu thử nghiệm. Nó đơn giản và dễ dàng hơn retesting, nơi mà người kiểm tra chỉ ngồi trước hệ thống và nhập các giá trị đầu vào mới khác nhau bằng tay từ giao diện đầu cuối.
Câu hỏi 23: Ý nghĩa của Record trong cơ sở dữ liệu là gì?
Trả lời:
- Trong cơ sở dữ liệu, một bản ghi (record) là tập các giá trị hoặc các trường của một thực thể cụ thể.
- Ví dụ: Bản ghi Văn phòng Nhân viên , Sách Thì trong đó: 1 Bản ghi Văn phòng Nhân viên gồm: Mã Phòng, tên phòng, địa chỉ… 1 Bản ghi Sách gồm: Mã sách, tên sách, tác giả, nhà xuất bản…
Câu hỏi 24: Làm thế nào để viết một truy vấn để có được giá trị lớn thứ hai từ một cột cho trước trong một bảng?
Trả lời:
- Dưới đây là truy vấn để nhận giá trị lớn thứ hai từ một cột nhất định của một bảng: SELECT MAX(COLUMN_NAME) FROM TABLE_NAME WHERE COLUMN_NAME (SELECT MAX(COLUMN_NAME) FROM TABLE_NAME) Ví dụ: Để có được nhãn hiệu lớn thứ hai từ cột "Marks" của bảng "Students" Select Max(Marks) from Students Where Marks< (Select Max(Marks) from students)
Câu hỏi 25: Làm thế nào để viết một truy vấn để nhận mức lương cao thứ 10 từ bảng Employee?
Trả lời: Dưới đây là truy vấn để có mức lương cao thứ n từ bảng nhân viên: SELECT * FROM Employee Emp1 WHERE ( n ) = (SELECT COUNT( DISTINCT (Emp2.Employee_Salary ) ) FROM Employee Emp2 WHERE Emp2.Employee_Salary >= Emp1.Employee_Salary) Sau đó, ta có thể thay thế n bằng bất kỳ số nào. Cụ thể muốn nhận được mức lương cao thứ 10, thay n với 10. SELECT * FROM Employee Emp1 WHERE (10) = (SELECT COUNT( DISTINCT ( Emp2.Employee_Salary ) ) FROM Employee Emp2 WHERE Emp2.Employee_Salary >= Emp1.Employee_Salary)
Câu hỏi 26: Kiểm tra hiệu năng và những trở ngại của nó là gì?
Trả lời:
- Kiểm tra hiệu năng là một kỹ thuật kiểm tra phần mềm để xác định hiệu suất của hệ thống như: tốc độ, độ nhạy và sự ổn định theo khối lượng công việc lớn.
- Việc kiểm tra hiệu suất gặp những trở ngại:
- Các công cụ hỗ trợ đắt tiền
- Người kiểm thử phải được đào tạo bài bản
- Người kiểm thử phải có kinh nghiệm để vận hành.
Tham khảo: http://www.softwaretestinghelp.com/31-best-database-testing-interview-questions-and-answers-for-qa-testers/