1. Khái niệm `Test oracle` (Tiên tri kiểm thử) dùng để chỉ điều gì?
A. Một chuyên gia kiểm thử có kinh nghiệm lâu năm.
B. Cơ chế để xác định kết quả mong đợi của một test case.
C. Một công cụ tự động tạo test case.
D. Báo cáo tổng kết kết quả kiểm thử.
2. Kiểm thử Alpha và Beta khác nhau chủ yếu ở điểm nào?
A. Alpha test do lập trình viên thực hiện, Beta test do người dùng cuối thực hiện.
B. Alpha test thực hiện tại môi trường của nhà phát triển, Beta test tại môi trường của người dùng.
C. Alpha test tập trung vào chức năng, Beta test tập trung vào hiệu suất.
D. Alpha test là kiểm thử hộp trắng, Beta test là kiểm thử hộp đen.
3. Điểm khác biệt chính giữa `Verification` và `Validation` trong kiểm thử phần mềm là gì?
A. Verification kiểm tra `chúng ta xây dựng sản phẩm đúng cách`, Validation kiểm tra `chúng ta xây dựng đúng sản phẩm`.
B. Verification thực hiện trước Validation trong quy trình kiểm thử.
C. Verification tập trung vào code, Validation tập trung vào yêu cầu người dùng.
D. Cả 3 đáp án trên.
4. Mục tiêu của `Test closure` (Kết thúc kiểm thử) là gì?
A. Bắt đầu giai đoạn kiểm thử tiếp theo.
B. Xác nhận rằng các mục tiêu kiểm thử đã đạt được và quá trình kiểm thử đã hoàn tất.
C. Phát hành phần mềm cho người dùng cuối.
D. Lập kế hoạch kiểm thử cho phiên bản phần mềm tiếp theo.
5. Mục tiêu chính của kiểm thử hồi quy (Regression testing) là gì?
A. Đảm bảo phần mềm đáp ứng tất cả các yêu cầu chức năng.
B. Tìm ra các lỗi mới phát sinh sau khi sửa lỗi hoặc thay đổi mã nguồn.
C. Đánh giá hiệu suất và khả năng chịu tải của phần mềm.
D. Xác minh rằng phần mềm tương thích với các môi trường khác nhau.
6. Trong quy trình quản lý lỗi (Defect management), bước `Defect triage` (Phân loại lỗi) có vai trò gì?
A. Sửa chữa lỗi và kiểm tra lại sau khi sửa.
B. Xác định nguyên nhân gốc rễ của lỗi.
C. Đánh giá mức độ nghiêm trọng và ưu tiên sửa chữa lỗi.
D. Ghi nhận và theo dõi trạng thái của lỗi từ khi phát hiện đến khi đóng.
7. Trong kiểm thử API (API testing), chúng ta thường kiểm tra điều gì?
A. Giao diện người dùng và trải nghiệm người dùng.
B. Tính năng bảo mật của ứng dụng web trên trình duyệt.
C. Khả năng giao tiếp và trao đổi dữ liệu giữa các thành phần phần mềm thông qua API.
D. Hiệu suất của cơ sở dữ liệu và truy vấn dữ liệu.
8. Kỹ thuật `State transition testing` (Kiểm thử chuyển trạng thái) phù hợp nhất cho loại hệ thống nào?
A. Hệ thống tính toán phức tạp với nhiều thuật toán.
B. Hệ thống có giao diện người dùng đồ họa phong phú.
C. Hệ thống có hành vi phụ thuộc vào trạng thái và sự kiện.
D. Hệ thống quản lý cơ sở dữ liệu lớn.
9. Kiểm thử hộp đen (Black-box testing) tập trung chủ yếu vào khía cạnh nào của phần mềm?
A. Cấu trúc code bên trong và logic thuật toán.
B. Giao diện người dùng và chức năng bên ngoài.
C. Hiệu suất và khả năng mở rộng của hệ thống.
D. Mức độ bảo mật và khả năng chống chịu tấn công.
10. Phương pháp kiểm thử dựa trên kinh nghiệm (Experience-based testing) phụ thuộc vào yếu tố nào là chủ yếu?
A. Các đặc tả yêu cầu chi tiết và rõ ràng.
B. Kinh nghiệm và kiến thức của người kiểm thử về hệ thống và loại lỗi thường gặp.
C. Các công cụ kiểm thử tự động và script kiểm thử được chuẩn bị trước.
D. Ma trận truy vết yêu cầu và các tài liệu thiết kế hệ thống.
11. Kỹ thuật `Equivalence partitioning` (Phân vùng tương đương) giúp giảm số lượng test case bằng cách nào?
A. Chọn ngẫu nhiên các test case từ toàn bộ phạm vi đầu vào.
B. Phân chia dữ liệu đầu vào thành các vùng tương đương và chọn test case đại diện.
C. Tập trung vào kiểm thử các đường dẫn quan trọng nhất trong code.
D. Sử dụng công cụ tự động để tạo và thực thi test case.
12. Lợi ích chính của việc sử dụng kiểm thử tự động (Test automation) là gì?
A. Loại bỏ hoàn toàn sự cần thiết của kiểm thử thủ công.
B. Giảm thời gian và chi phí kiểm thử trong dài hạn, đặc biệt cho kiểm thử hồi quy.
C. Đảm bảo 100% độ bao phủ code và không còn lỗi trong phần mềm.
D. Tăng cường khả năng giao tiếp giữa nhóm phát triển và nhóm kiểm thử.
13. Trong kiểm thử hiệu suất, `Stress testing` (Kiểm thử chịu tải) nhằm mục đích gì?
A. Đo thời gian phản hồi trung bình của hệ thống.
B. Xác định điểm giới hạn chịu tải của hệ thống bằng cách tăng tải trọng vượt quá mức dự kiến.
C. Kiểm tra khả năng xử lý số lượng lớn giao dịch trong thời gian ngắn.
D. Đánh giá hiệu suất của hệ thống trong điều kiện mạng chậm.
14. Loại kiểm thử nào sau đây thường được thực hiện đầu tiên trong quy trình kiểm thử phần mềm?
A. Kiểm thử tích hợp (Integration testing).
B. Kiểm thử hệ thống (System testing).
C. Kiểm thử đơn vị (Unit testing).
D. Kiểm thử chấp nhận (Acceptance testing).
15. Công cụ `Test runner` được sử dụng để làm gì trong kiểm thử tự động?
A. Ghi lại các hành động của người dùng để tạo script kiểm thử.
B. Quản lý và thực thi các bộ test case tự động.
C. Phân tích kết quả kiểm thử và tạo báo cáo.
D. So sánh kết quả kiểm thử thực tế với kết quả mong đợi.
16. Kiểm thử khói (Smoke testing) thường được thực hiện khi nào?
A. Trước khi bắt đầu kiểm thử tích hợp.
B. Sau mỗi thay đổi nhỏ trong code.
C. Sau khi tích hợp các module chính của phần mềm.
D. Trước khi phát hành phiên bản beta cho người dùng.
17. Lỗi `Boundary value` (Giá trị biên) thường xuất hiện ở đâu trong quá trình kiểm thử?
A. Trong các vòng lặp và cấu trúc điều khiển phức tạp.
B. Tại các điểm giao nhau giữa các module khác nhau.
C. Xung quanh các giá trị đầu vào và đầu ra giới hạn.
D. Trong các đoạn code xử lý ngoại lệ và lỗi.
18. Kiểm thử ad-hoc (Ad-hoc testing) còn được gọi là gì?
A. Kiểm thử theo kịch bản (Scripted testing).
B. Kiểm thử ngẫu nhiên hoặc kiểm thử khám phá (Exploratory testing).
C. Kiểm thử dựa trên rủi ro (Risk-based testing).
D. Kiểm thử theo hướng dữ liệu (Data-driven testing).
19. Kỹ thuật `Decision table testing` (Kiểm thử bảng quyết định) hữu ích trong trường hợp nào?
A. Khi logic nghiệp vụ của hệ thống rất đơn giản và dễ hiểu.
B. Khi có nhiều điều kiện đầu vào và hành động đầu ra phức tạp, có mối quan hệ logic ràng buộc.
C. Khi cần kiểm thử giao diện người dùng đồ họa.
D. Khi dữ liệu đầu vào có phạm vi giá trị liên tục.
20. Trong mô hình chữ V (V-model), giai đoạn `Unit testing` tương ứng với giai đoạn nào của phát triển phần mềm?
A. Giai đoạn thiết kế hệ thống (System design).
B. Giai đoạn phân tích yêu cầu (Requirements analysis).
C. Giai đoạn thiết kế kiến trúc (Architectural design).
D. Giai đoạn lập trình (Coding).
21. Sự khác biệt giữa `Severity` (Mức độ nghiêm trọng) và `Priority` (Mức độ ưu tiên) của lỗi là gì?
A. Severity chỉ mức độ ảnh hưởng của lỗi đến người dùng, Priority chỉ mức độ khẩn cấp cần sửa lỗi.
B. Severity do lập trình viên xác định, Priority do người kiểm thử xác định.
C. Severity liên quan đến chức năng, Priority liên quan đến hiệu suất.
D. Severity chỉ áp dụng cho lỗi chức năng, Priority áp dụng cho mọi loại lỗi.
22. Trong kiểm thử bảo mật (Security testing), `Penetration testing` (Kiểm thử xâm nhập) nhằm mục đích gì?
A. Đánh giá hiệu suất của hệ thống khi bị tấn công từ chối dịch vụ (DoS).
B. Xác định các lỗ hổng bảo mật bằng cách mô phỏng các cuộc tấn công thực tế.
C. Kiểm tra tính toàn vẹn của dữ liệu khi có truy cập trái phép.
D. Đảm bảo hệ thống tuân thủ các tiêu chuẩn và quy định về bảo mật.
23. Kiểm thử song song (Concurrency testing) nhằm mục đích phát hiện lỗi gì?
A. Lỗi liên quan đến giao diện người dùng không nhất quán.
B. Lỗi xảy ra khi nhiều người dùng hoặc tiến trình truy cập tài nguyên chung đồng thời.
C. Lỗi do sai sót trong logic nghiệp vụ của ứng dụng.
D. Lỗi liên quan đến bảo mật dữ liệu khi truyền qua mạng.
24. Mục đích của `Test plan` (Kế hoạch kiểm thử) trong dự án phần mềm là gì?
A. Ghi lại tất cả các lỗi đã được phát hiện.
B. Mô tả chi tiết các test case cần thực hiện.
C. Xác định phạm vi, mục tiêu, nguồn lực và lịch trình cho hoạt động kiểm thử.
D. Đánh giá chất lượng tổng thể của phần mềm sau khi kiểm thử.
25. Kiểm thử chấp nhận của người dùng (User Acceptance Testing - UAT) được thực hiện bởi ai?
A. Nhóm phát triển phần mềm.
B. Nhóm kiểm thử chuyên nghiệp.
C. Người dùng cuối hoặc đại diện của người dùng cuối.
D. Quản lý dự án và các bên liên quan.
26. Trong kiểm thử hiệu suất (Performance testing), `Load testing` được sử dụng để làm gì?
A. Đo thời gian phản hồi của hệ thống dưới tải trọng cao nhất dự kiến.
B. Xác định điểm mà hệ thống bắt đầu hoạt động kém hiệu quả.
C. Đánh giá khả năng phục hồi của hệ thống sau sự cố.
D. Kiểm tra khả năng xử lý số lượng lớn người dùng đồng thời.
27. Trong kiểm thử hiệu suất, `Endurance testing` (Kiểm thử độ bền) được sử dụng để làm gì?
A. Đo thời gian phản hồi của hệ thống dưới tải trọng tăng dần.
B. Xác định khả năng của hệ thống duy trì hiệu suất ổn định trong thời gian dài dưới tải trọng dự kiến.
C. Kiểm tra khả năng phục hồi của hệ thống sau sự cố phần cứng.
D. Đánh giá hiệu suất của hệ thống khi có số lượng lớn dữ liệu.
28. Kiểm thử thăm dò (Exploratory testing) thường được thực hiện tốt nhất bởi ai?
A. Người kiểm thử tự động hóa.
B. Người kiểm thử có kinh nghiệm và am hiểu sâu về hệ thống.
C. Người kiểm thử mới vào nghề với kiến thức cơ bản.
D. Bất kỳ ai có kiến thức về kiểm thử phần mềm đều có thể thực hiện tốt.
29. Phương pháp kiểm thử nào sau đây KHÔNG thuộc nhóm kiểm thử hộp trắng (White-box testing)?
A. Kiểm thử đường dẫn cơ bản (Basis path testing).
B. Kiểm thử phân vùng tương đương (Equivalence partitioning).
C. Kiểm thử độ bao phủ quyết định (Decision coverage).
D. Kiểm thử độ bao phủ câu lệnh (Statement coverage).
30. Độ bao phủ quyết định (Decision coverage) đo lường điều gì?
A. Tỷ lệ phần trăm số dòng code đã được thực thi.
B. Tỷ lệ phần trăm số quyết định (nhánh rẽ) trong code đã được thực hiện theo cả hai hướng (true/false).
C. Tỷ lệ phần trăm số yêu cầu chức năng đã được kiểm thử.
D. Tỷ lệ phần trăm số lỗi đã được phát hiện và sửa chữa.