1. Kiểm thử Ad-hoc là gì?
A. Một loại kiểm thử tự động được thực hiện định kỳ
B. Kiểm thử không chính thức, không theo kế hoạch hoặc tài liệu cụ thể, thường dựa vào kinh nghiệm và trực giác của người kiểm thử
C. Kiểm thử được thực hiện bởi người dùng cuối
D. Kiểm thử hiệu năng cao cấp
2. Kịch bản nào sau đây là một ví dụ về kiểm thử biên (Boundary Value Testing)?
A. Kiểm tra hệ thống khi có số lượng lớn người dùng đồng thời truy cập
B. Nhập các giá trị dữ liệu hợp lệ và không hợp lệ cho một trường nhập liệu, đặc biệt là các giá trị ở biên của phạm vi cho phép
C. Thực hiện kiểm thử lặp đi lặp lại để tìm ra các lỗi ngẫu nhiên
D. Kiểm tra tất cả các đường dẫn có thể có trong code
3. Đâu là một trong những thách thức chính trong kiểm thử phần mềm Agile?
A. Thiếu công cụ hỗ trợ kiểm thử tự động
B. Thời gian kiểm thử hạn chế do vòng đời phát triển ngắn và thay đổi yêu cầu liên tục
C. Khó khăn trong việc xác định phạm vi kiểm thử
D. Sự thiếu hợp tác giữa nhà phát triển và người kiểm thử
4. Nguyên tắc 'Kiểm thử sớm′ (Early testing) trong 7 nguyên tắc kiểm thử phần mềm nhấn mạnh điều gì?
A. Bắt đầu kiểm thử càng sớm càng tốt trong vòng đời phát triển phần mềm
B. Chỉ thực hiện kiểm thử sau khi code đã ổn định
C. Ưu tiên kiểm thử các chức năng quan trọng nhất trước
D. Tập trung vào kiểm thử tự động hóa ngay từ đầu
5. Đâu là lợi ích chính của việc sử dụng công cụ quản lý kiểm thử (Test Management Tools)?
A. Tự động phát hiện lỗi trong code
B. Tăng tốc độ thực hiện kiểm thử thủ công
C. Cải thiện khả năng theo dõi, quản lý và báo cáo tiến độ kiểm thử
D. Thay thế hoàn toàn vai trò của người kiểm thử
6. Đơn vị đo lường 'số lỗi trên nghìn dòng code′ (Defects per Thousand Lines of Code - D∕KLOC) thường được sử dụng trong kiểm thử phần mềm để đánh giá điều gì?
A. Hiệu suất làm việc của người kiểm thử
B. Chất lượng code và hiệu quả của quy trình phát triển
C. Thời gian cần thiết để sửa lỗi
D. Mức độ bao phủ kiểm thử
7. Lỗi (Error), Sai sót (Fault∕Defect), và Thất bại (Failure) trong kiểm thử phần mềm có mối quan hệ như thế nào?
A. Chúng là các thuật ngữ đồng nghĩa và có thể sử dụng thay thế nhau
B. Lỗi gây ra Sai sót, và Sai sót có thể dẫn đến Thất bại
C. Thất bại gây ra Sai sót, và Sai sót dẫn đến Lỗi
D. Sai sót luôn là nguyên nhân trực tiếp của Thất bại, còn Lỗi là biểu hiện bên ngoài
8. Kiểm thử thăm dò (Exploratory testing) phù hợp nhất trong tình huống nào?
A. Khi yêu cầu phần mềm được xác định rõ ràng và đầy đủ
B. Khi có nhiều thời gian và nguồn lực cho việc kiểm thử
C. Khi tài liệu đặc tả yêu cầu không đầy đủ hoặc thay đổi thường xuyên, và cần sự linh hoạt
D. Khi cần kiểm thử tự động hóa một cách toàn diện
9. Trong kiểm thử phần mềm, 'test stub′ và 'test driver′ được sử dụng để làm gì?
A. Để tạo ra dữ liệu kiểm thử tự động
B. Để mô phỏng các thành phần phụ thuộc hoặc thành phần gọi đến module đang được kiểm thử, giúp cô lập và kiểm thử module đó một cách độc lập
C. Để ghi lại các bước thực hiện của test case
D. Để quản lý và theo dõi lỗi
10. Kiểm thử tích hợp (Integration testing) thường tập trung vào việc kiểm tra điều gì?
A. Chức năng của từng module riêng lẻ
B. Sự tương tác và giao tiếp giữa các module khác nhau của phần mềm
C. Hiệu suất của toàn bộ hệ thống
D. Giao diện người dùng và trải nghiệm người dùng
11. Loại kiểm thử nào sau đây đượ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)
12. Mục đích của việc lập kế hoạch kiểm thử (Test planning) là gì?
A. Thực hiện các test case và ghi lại kết quả
B. Xác định phạm vi, mục tiêu, nguồn lực, lịch trình và chiến lược kiểm thử cho dự án
C. Phân tích yêu cầu và thiết kế test case
D. Báo cáo kết quả kiểm thử và theo dõi lỗi
13. Trong kiểm thử chấp nhận của người dùng (User Acceptance Testing - UAT), ai là người thực hiện kiểm thử chính?
A. Nhà phát triển phần mềm
B. Người kiểm thử chuyên nghiệp (Tester)
C. Người dùng cuối (End-users) hoặc đại diện của họ
D. Quản lý dự án
14. Kiểm thử khói (Smoke testing) thường được thực hiện khi nào?
A. Trước khi phát hành phần mềm cho người dùng cuối
B. Sau khi hoàn thành tất cả các giai đoạn kiểm thử khác
C. Sau mỗi lần build (biên dịch) code mới
D. Chỉ khi có yêu cầu đặc biệt từ khách hàng
15. Kiểm thử hiệu năng (Performance testing) nhằm mục đích gì?
A. Kiểm tra tính đúng đắn của chức năng phần mềm
B. Đánh giá khả năng đáp ứng, độ ổn định và tốc độ của phần mềm dưới các điều kiện tải khác nhau
C. Tìm kiếm các lỗ hổng bảo mật trong phần mềm
D. Đảm bảo phần mềm dễ sử dụng và thân thiện với người dùng
16. Giả sử bạn có một hàm tính toán giai thừa với điều kiện đầu vào là số nguyên không âm. Để đạt được độ bao phủ quyết định (Decision Coverage) 100%, bạn cần tối thiểu bao nhiêu test case?
17. Trong kiểm thử bảo mật (Security testing), 'SQL injection′ là loại tấn công nào?
A. Tấn công từ chối dịch vụ (Denial of Service)
B. Tấn công leo thang đặc quyền (Privilege Escalation)
C. Tấn công bằng cách chèn mã SQL độc hại vào các truy vấn cơ sở dữ liệu
D. Tấn công giả mạo (Spoofing)
18. Mô hình chữ V (V-model) trong kiểm thử phần mềm thể hiện mối quan hệ giữa các giai đoạn phát triển và kiểm thử như thế nào?
A. Kiểm thử được thực hiện tuần tự sau khi phát triển hoàn tất
B. Mỗi giai đoạn phát triển tương ứng với một giai đoạn kiểm thử song song
C. Kiểm thử chỉ được thực hiện ở giai đoạn cuối của dự án
D. Mô hình chữ V không liên quan đến kiểm thử phần mềm
19. Độ bao phủ code (Code coverage) là một chỉ số quan trọng trong kiểm thử hộp trắng. Độ bao phủ nhánh (Branch coverage) đo lường điều gì?
A. Tỷ lệ các dòng code đã được thực thi
B. Tỷ lệ các nhánh (quyết định rẽ nhánh) trong code đã được thực thi
C. Số lượng test case đã được thực hiện
D. Mức độ phức tạp của code
20. Trong ngữ cảnh kiểm thử API (Application Programming Interface), kiểm thử hợp đồng (Contract testing) dùng để làm gì?
A. Kiểm tra hiệu suất của API dưới tải nặng
B. Đảm bảo rằng API và các consumer (ứng dụng sử dụng API) tuân thủ theo hợp đồng (specifications) đã định trước về dữ liệu và giao thức
C. Tìm kiếm các lỗ hổng bảo mật trong API
D. Kiểm tra tính dễ sử dụng của API
21. Điều gì KHÔNG phải là một loại kiểm thử phi chức năng (Non-functional testing)?
A. Kiểm thử hiệu suất (Performance testing)
B. Kiểm thử bảo mật (Security testing)
C. Kiểm thử chức năng (Functional testing)
D. Kiểm thử khả năng sử dụng (Usability testing)
22. Đâu là nhược điểm chính của kiểm thử thủ công (Manual testing) so với kiểm thử tự động (Automated testing)?
A. Kiểm thử thủ công không thể phát hiện lỗi phức tạp
B. Kiểm thử thủ công tốn thời gian hơn, dễ xảy ra lỗi do con người và khó thực hiện lặp lại
C. Kiểm thử thủ công không phù hợp với các dự án lớn
D. Kiểm thử thủ công đắt đỏ hơn kiểm thử tự động
23. Mục tiêu chính của kiểm thử hồi quy (Regression testing) là gì?
A. Tìm ra các lỗi mới trong phần mềm
B. Đảm bảo phần mềm đáp ứng yêu cầu người dùng
C. Xác nhận rằng các thay đổi code không gây ra lỗi ở các chức năng đã hoạt động trước đó
D. Đánh giá hiệu suất của phần mềm dưới tải nặng
24. Test case (ca kiểm thử) tốt cần có những đặc điểm nào sau đây?
A. Rõ ràng, ngắn gọn, dễ hiểu, có khả năng tái sử dụng, và bao phủ được nhiều chức năng
B. Phức tạp, chi tiết, bao gồm nhiều bước và dữ liệu đầu vào khác nhau
C. Chỉ tập trung vào các chức năng quan trọng nhất của phần mềm
D. Được viết bằng ngôn ngữ tự nhiên, không cần tuân theo cấu trúc nhất định
25. Sự khác biệt chính giữa kiểm thử alpha và kiểm thử beta là gì?
A. Kiểm thử alpha do nhà phát triển thực hiện, beta do người dùng cuối 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ử hộp trắng, beta là kiểm thử hộp đen
26. 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à tốc độ xử lý
D. Mức độ bảo mật của hệ thống
27. Chiến lược kiểm thử 'Big Bang′ trong kiểm thử tích hợp có ưu điểm và nhược điểm gì?
A. Ưu điểm: Dễ thực hiện, Nhược điểm: Khó xác định vị trí lỗi khi tích hợp thất bại
B. Ưu điểm: Phát hiện lỗi sớm, Nhược điểm: Tốn nhiều thời gian
C. Ưu điểm: Kiểm thử toàn diện, Nhược điểm: Chi phí cao
D. Ưu điểm: Phù hợp với dự án lớn, Nhược điểm: Khó quản lý
28. Kiểm thử tương thích (Compatibility testing) nhằm đảm bảo phần mềm hoạt động tốt trên những yếu tố nào?
A. Các phiên bản hệ điều hành, trình duyệt web, phần cứng và môi trường khác nhau
B. Các loại dữ liệu đầu vào khác nhau
C. Các ngôn ngữ lập trình khác nhau
D. Các múi giờ khác nhau
29. Ma trận truy vết yêu cầu (Requirements Traceability Matrix - RTM) được sử dụng để làm gì?
A. Quản lý lỗi và theo dõi tiến độ sửa lỗi
B. Đảm bảo rằng tất cả các yêu cầu của khách hàng đều được kiểm thử đầy đủ
C. Đo lường độ bao phủ code trong kiểm thử hộp trắng
D. Lập kế hoạch và quản lý các hoạt động kiểm thử
30. Kỹ thuật kiểm thử hộp trắng (White-box testing) nào sau đây tập trung vào việc đảm bảo mọi đường dẫn điều khiển trong code đều được thực thi ít nhất một lần?
A. Kiểm thử nhánh (Branch coverage)
B. Kiểm thử câu lệnh (Statement coverage)
C. Kiểm thử đường dẫn (Path coverage)
D. Kiểm thử điều kiện (Condition coverage)