1. 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
B. Kiểm thử hệ thống
C. Kiểm thử đơn vị
D. Kiểm thử chấp nhận
2. Loại tài liệu nào mô tả chi tiết cách thức kiểm thử phần mềm sẽ được thực hiện, bao gồm phạm vi, phương pháp, lịch trình và nguồn lực?
A. Báo cáo kiểm thử (Test report)
B. Kế hoạch kiểm thử (Test plan)
C. Test case (Ca kiểm thử)
D. Ma trận truy vết yêu cầu (Requirements traceability matrix)
3. Mục tiêu của 'Defect Prevention′ (Phòng ngừa lỗi) trong kiểm thử phần mềm là gì?
A. Tìm ra càng nhiều lỗi càng tốt trong giai đoạn kiểm thử
B. Giảm thiểu số lượng lỗi phát sinh trong quá trình phát triển phần mềm
C. Sửa lỗi nhanh chóng và hiệu quả sau khi phát hiện
D. Đo lường chất lượng của phần mềm
4. Khi nào thì nên thực hiện kiểm thử bảo mật (Security testing)?
A. Chỉ sau khi phần mềm đã hoàn thành và chuẩn bị phát hành
B. Chỉ khi có yêu cầu bảo mật đặc biệt từ khách hàng
C. Trong suốt vòng đời phát triển phần mềm, từ giai đoạn đầu đến giai đoạn cuối
D. Chỉ khi phát hiện thấy lỗ hổng bảo mật
5. Lỗi (Bug∕Defect) và Sai sót (Error∕Mistake) khác nhau như thế nào trong kiểm thử phần mềm?
A. Lỗi là do lập trình viên gây ra, sai sót là do tester gây ra
B. Sai sót là nguyên nhân dẫn đến lỗi, lỗi là biểu hiện của sai sót
C. Lỗi và sai sót là hai khái niệm hoàn toàn giống nhau
D. Sai sót là lỗi nhỏ, lỗi là sai sót lớn
6. Ma trận truy vết yêu cầu (Requirements traceability matrix - RTM) được sử dụng để làm gì trong kiểm thử phần mềm?
A. Quản lý lỗi và theo dõi trạng thái lỗi
B. Đảm bảo tất cả các yêu cầu đều được kiểm thử đầy đủ
C. Đo lường độ bao phủ code
D. Lập kế hoạch kiểm thử
7. Loại kiểm thử nào sau đây tập trung vào việc đánh giá trải nghiệm người dùng (User experience - UX) và tính dễ sử dụng của phần mềm?
A. Kiểm thử chức năng
B. Kiểm thử hiệu năng
C. Kiểm thử khả năng sử dụng (Usability testing)
D. Kiểm thử bảo mật
8. Phương pháp kiểm thử nào sau đây phù hợp nhất khi kiểm thử một ứng dụng web có nhiều trường nhập liệu và các quy tắc nghiệp vụ phức tạp?
A. Kiểm thử đường dẫn cơ bản
B. Kiểm thử phân vùng tương đương và giá trị biên
C. Kiểm thử ngẫu nhiên
D. Kiểm thử khói
9. Test case (ca kiểm thử) thường bao gồm những thành phần chính nào?
A. Mô tả chức năng, dữ liệu đầu vào, kết quả mong đợi
B. Mô tả chức năng, code nguồn, môi trường kiểm thử
C. Mô tả chức năng, sơ đồ luồng dữ liệu, kết quả thực tế
D. Mô tả chức năng, nhật ký kiểm thử, người thực hiện kiểm thử
10. Khái niệm 'Pesticide Paradox′ (Nghịch lý thuốc trừ sâu) trong kiểm thử phần mềm nói về điều gì?
A. Việc sử dụng quá nhiều công cụ kiểm thử tự động có thể gây hại
B. Nếu cùng một bộ test case được sử dụng lặp đi lặp lại, nó sẽ ít hiệu quả trong việc tìm lỗi mới
C. Kiểm thử quá sớm có thể làm chậm tiến độ phát triển
D. Việc sửa lỗi có thể tạo ra lỗi mới
11. 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. Lập trình viên
B. Tester chuyên nghiệp
C. Người dùng cuối hoặc đại diện người dùng cuối
D. Quản lý dự án
12. Trong quy trình kiểm thử, khi nào thì Tester nên dừng kiểm thử?
A. Khi hết thời gian dự kiến cho kiểm thử
B. Khi đã tìm thấy đủ số lượng lỗi theo kế hoạch
C. Khi đạt được các tiêu chí dừng kiểm thử đã được xác định trước (ví dụ, độ bao phủ code, tỷ lệ lỗi thấp, chấp nhận rủi ro còn lại)
D. Khi tất cả các test case đã được thực hiện
13. Độ bao phủ code (Code coverage) là một chỉ số quan trọng trong kiểm thử hộp trắng. Độ bao phủ code đo lường điều gì?
A. Số lượng lỗi được tìm thấy trong code
B. Tỷ lệ phần trăm code đã được thực thi bởi các test case
C. Thời gian cần thiết để kiểm thử toàn bộ code
D. Mức độ phức tạp của code
14. Phương pháp kiểm thử nào sau đây tập trung vào việc kiểm tra các tương tác giữa các module khác nhau của phần mềm?
A. Kiểm thử đơn vị
B. Kiểm thử tích hợp
C. Kiểm thử hệ thống
D. Kiểm thử chấp nhận
15. Trong mô hình chữ V (V-model) của quy trình phát triển phần mềm, giai đoạn kiểm thử hệ thống (System testing) tương ứng với giai đoạn phát triển nào?
A. Thu thập yêu cầu
B. Thiết kế kiến trúc
C. Thiết kế chi tiết
D. Lập trình (Coding)
16. Trong kiểm thử hiệu năng (Performance testing), loại kiểm thử nào đo lường khả năng của hệ thống khi có số lượng lớn người dùng đồng thời?
A. Kiểm thử tải (Load testing)
B. Kiểm thử độ bền (Endurance testing)
C. Kiểm thử căng thẳng (Stress testing)
D. Kiểm thử dung lượng (Volume testing)
17. Mục tiêu chính của kiểm thử hồi quy (Regression testing) là gì?
A. Tìm ra lỗi mới trong các module chưa được kiểm thử
B. Đảm bảo các thay đổi code mới không gây ra lỗi ở các chức năng đã hoạt động trước đó
C. Kiểm tra hiệu suất của phần mềm dưới tải trọng cao
D. Xác nhận phần mềm đáp ứng yêu cầu của người dùng
18. Kiểm thử thăm dò (Exploratory testing) là gì?
A. Kiểm thử dựa trên kịch bản test case được chuẩn bị sẵn
B. Kiểm thử không có kế hoạch trước, tester tự do khám phá phần mềm và tìm lỗi
C. Kiểm thử tự động hoàn toàn
D. Kiểm thử chỉ tập trung vào hiệu năng
19. Mục đích của việc lập kế hoạch kiểm thử (Test planning) là gì?
A. Viết test case chi tiết
B. 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ử
C. Thực hiện test case và ghi lại kết quả
D. Báo cáo lỗi và theo dõi quá trình sửa lỗi
20. Kỹ thuật 'Boundary Value Analysis′ (Phân tích giá trị biên) trong kiểm thử hộp đen tập trung vào kiểm tra những loại giá trị đầu vào nào?
A. Giá trị ngẫu nhiên
B. Giá trị trung bình
C. Giá trị biên của phạm vi dữ liệu hợp lệ và không hợp lệ
D. Giá trị thường xuyên sử dụng nhất
21. Test stub và Test driver được sử dụng trong loại kiểm thử nào?
A. Kiểm thử đơn vị
B. Kiểm thử tích hợp
C. Kiểm thử hệ thống
D. Kiểm thử chấp nhận
22. 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
B. Giao diện và chức năng bên ngoài
C. Hiệu suất và khả năng mở rộng
D. Tính bảo mật của hệ thống
23. Lợi ích chính của việc sử dụng công cụ tự động hóa kiểm thử (Test automation tools) là gì?
A. Loại bỏ hoàn toàn nhu cầu kiểm thử thủ công
B. Giảm thời gian và chi phí kiểm thử, tăng độ tin cậy và hiệu quả
C. Tự động phát hiện và sửa lỗi phần mềm
D. Đảm bảo 100% độ bao phủ code
24. Kiểm thử alpha và kiểm thử beta là hai loại kiểm thử chấp nhận (Acceptance testing). Sự khác biệt chính giữa chúng là gì?
A. Kiểm thử alpha do lập trình viên thực hiện, beta do tester thực hiện
B. Kiểm thử alpha thực hiện tại môi trường của nhà phát triển, beta thực hiện tại môi trường của người dùng cuối
C. Kiểm thử alpha tập trung vào chức năng, beta tập trung vào hiệu năng
D. Kiểm thử alpha là kiểm thử tự động, beta là kiểm thử thủ công
25. Kiểm thử Ad-hoc là gì?
A. Kiểm thử tự động dựa trên kịch bản
B. Kiểm thử không chính thức, không có kế hoạch cụ thể, thực hiện ngẫu nhiên
C. Kiểm thử hiệu năng dưới tải trọng cao
D. Kiểm thử bảo mật chuyên sâu
26. Kỹ thuật 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 (Basic path testing)
B. Kiểm thử phân vùng tương đương (Equivalence partitioning)
C. Kiểm thử theo điều kiện (Condition testing)
D. Kiểm thử theo dòng điều khiển (Control flow testing)
27. Trong kiểm thử hộp trắng, phương pháp 'Statement Coverage′ (Bao phủ câu lệnh) đảm bảo điều gì?
A. Tất cả các nhánh rẽ trong code đều được thực thi ít nhất một lần
B. Tất cả các câu lệnh trong code đều được thực thi ít nhất một lần
C. Tất cả các điều kiện quyết định đều được kiểm tra
D. Tất cả các đường dẫn có thể trong code đều được thực thi
28. Chỉ số 'Defect Density′ (Mật độ lỗi) đo lường điều gì?
A. Tổng số lỗi được tìm thấy trong phần mềm
B. Số lỗi trung bình trên một đơn vị kích thước phần mềm (ví dụ, lỗi trên 1000 dòng code)
C. Thời gian trung bình để sửa một lỗi
D. Mức độ nghiêm trọng trung bình của các lỗi
29. Trong quản lý lỗi (Defect management), trạng thái 'Resolved′ (Đã giải quyết) có nghĩa là gì?
A. Lỗi đã được xác nhận là tồn tại
B. Lỗi đã được gán cho một lập trình viên để sửa
C. Lỗi đã được sửa code và đã được kiểm tra lại
D. Lỗi đã được chấp nhận và sẽ không được sửa
30. Kiểm thử khói (Smoke testing) thường được thực hiện khi nào?
A. Sau khi hoàn thành kiểm thử đơn vị
B. Trước khi bắt đầu kiểm thử hồi quy
C. Sau mỗi lần build (biên dịch và tích hợp code) mới
D. Trước khi bàn giao phần mềm cho người dùng cuối