1. Trong kiểm thử phần mềm, `bug report` (báo cáo lỗi) cần chứa những thông tin gì?
A. Mô tả chi tiết lỗi, các bước tái hiện, và môi trường kiểm thử.
B. Ý kiến cá nhân của tester về lỗi.
C. Ước tính thời gian để sửa lỗi.
D. Tất cả các code đã được viết.
2. Khi nào nên sử dụng kiểm thử thăm dò (Exploratory testing)?
A. Khi có yêu cầu rõ ràng và đầy đủ.
B. Khi có ít thời gian và yêu cầu không rõ ràng.
C. Khi cần kiểm tra hiệu năng của phần mềm.
D. Khi cần kiểm tra bảo mật của phần mềm.
3. Trong kiểm thử dựa trên rủi ro (risk-based testing), việc ưu tiên kiểm thử dựa trên yếu tố nào?
A. Độ phức tạp của code.
B. Mức độ quan trọng của chức năng và khả năng xảy ra lỗi.
C. Thời gian cần thiết để thực hiện kiểm thử.
D. Số lượng dòng code.
4. Đâu là mục tiêu chính của kiểm thử phần mềm?
A. Chứng minh rằng phần mềm không có lỗi.
B. Tìm càng nhiều lỗi càng tốt trước khi phát hành.
C. Đảm bảo phần mềm tuân thủ mọi yêu cầu thiết kế.
D. Cải thiện hiệu suất của phần mềm.
5. Phương pháp kiểm thử nào sau đây là phù hợp nhất để kiểm tra một chức năng tìm kiếm?
A. Kiểm thử hộp trắng.
B. Kiểm thử hộp đen.
C. Kiểm thử hiệu năng.
D. Kiểm thử bảo mật.
6. Vai trò của `test manager` trong một dự án kiểm thử phần mềm là gì?
A. Viết code cho phần mềm.
B. Thiết kế và thực hiện test case.
C. Lập kế hoạch, điều phối và quản lý các hoạt động kiểm thử.
D. Báo cáo lỗi cho lập trình viên.
7. Đâu là lợi ích của việc tự động hóa kiểm thử?
A. Giảm chi phí kiểm thử.
B. Tăng tốc độ kiểm thử.
C. Cải thiện độ chính xác và nhất quán của kiểm thử.
D. Tất cả các đáp án trên.
8. Đâu là lợi ích của việc sử dụng công cụ quản lý kiểm thử?
A. Tự động viết test case.
B. Giảm chi phí kiểm thử bằng cách loại bỏ tester.
C. Cải thiện khả năng theo dõi và quản lý các hoạt động kiểm thử.
D. Đảm bảo phần mềm không có lỗi.
9. Đâu là một ví dụ về công cụ kiểm thử tĩnh (static testing)?
A. Công cụ kiểm thử hiệu năng.
B. Công cụ phân tích code (code analysis).
C. Công cụ quản lý test case.
D. Công cụ tự động hóa kiểm thử giao diện người dùng.
10. Mục tiêu của kiểm thử bảo mật (security testing) là gì?
A. Đảm bảo phần mềm chạy nhanh.
B. Đảm bảo phần mềm dễ sử dụng.
C. Tìm các lỗ hổng bảo mật và đảm bảo dữ liệu được bảo vệ.
D. Đảm bảo phần mềm tương thích với nhiều hệ điều hành.
11. Kiểm thử chấp nhận (Acceptance testing) được thực hiện bởi ai?
A. Các lập trình viên.
B. Các tester.
C. Người dùng cuối hoặc khách hàng.
D. Quản lý dự án.
12. Phương pháp kiểm thử hộp đen tập trung vào yếu tố nào?
A. Cấu trúc code bên trong của phần mềm.
B. Yêu cầu và chức năng của phần mềm.
C. Hiệu suất và khả năng mở rộng của phần mềm.
D. Mức độ sử dụng tài nguyên hệ thống của phần mềm.
13. Kiểm thử hiệu năng (Performance testing) nhằm mục đích gì?
A. Kiểm tra tính bảo mật của phần mềm.
B. Kiểm tra khả năng đáp ứng của phần mềm dưới các điều kiện tải khác nhau.
C. Kiểm tra tính dễ sử dụng của phần mềm.
D. Kiểm tra tính tương thích của phần mềm với các hệ điều hành khác nhau.
14. Loại lỗi nào sau đây thường được tìm thấy trong quá trình kiểm thử giao diện người dùng (UI testing)?
A. Lỗi cú pháp trong code.
B. Lỗi về bố cục, hiển thị không đúng, hoặc trải nghiệm người dùng kém.
C. Lỗi liên quan đến hiệu suất của cơ sở dữ liệu.
D. Lỗi bảo mật.
15. Kiểm thử hồi quy (Regression testing) được thực hiện khi nào?
A. Khi một tính năng mới được thêm vào.
B. Khi có sự thay đổi code để sửa lỗi hoặc cải tiến.
C. Khi phần mềm được triển khai lên môi trường production.
D. Tất cả các đáp án trên.
16. Điểm 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, kiểm thử beta do người dùng cuối thực hiện.
B. Kiểm thử alpha thực hiện trong môi trường được kiểm soát, kiểm thử beta thực hiện trong môi trường thực tế.
C. Kiểm thử alpha tập trung vào chức năng, kiểm thử beta tập trung vào hiệu năng.
D. Tất cả các đáp án trên.
17. Đâu là một thách thức phổ biến trong kiểm thử phần mềm hiện đại?
A. Sự phức tạp của phần mềm và hệ thống.
B. Thiếu công cụ kiểm thử phù hợp.
C. Chi phí kiểm thử quá cao.
D. Khó tìm được tester có kinh nghiệm.
18. Đâu là một ví dụ về kiểm thử phi chức năng?
A. Kiểm tra xem một nút trên giao diện người dùng có hoạt động đúng không.
B. Kiểm tra xem hệ thống có thể xử lý bao nhiêu người dùng đồng thời.
C. Kiểm tra xem phần mềm có tuân thủ các yêu cầu nghiệp vụ không.
D. Kiểm tra xem phần mềm có tính năng đăng nhập không.
19. Đâu là một kỹ thuật kiểm thử hộp trắng?
A. Phân tích giá trị biên (Boundary Value Analysis).
B. Phân vùng tương đương (Equivalence Partitioning).
C. Kiểm thử đường dẫn (Path Testing).
D. Kiểm thử dựa trên bảng quyết định (Decision Table Testing).
20. Việc sử dụng `stub` và `mock` trong kiểm thử đơn vị (unit testing) nhằm mục đích gì?
A. Thay thế các phần code chưa được phát triển hoặc khó kiểm soát.
B. Tăng tốc độ thực thi của test case.
C. Giảm chi phí kiểm thử.
D. Đơn giản hóa việc viết test case.
21. Trong kiểm thử phần mềm, độ bao phủ code (code coverage) là gì?
A. Phần trăm code đã được viết bởi các lập trình viên.
B. Phần trăm code đã được kiểm tra bởi các test case.
C. Số lượng lỗi được tìm thấy trong code.
D. Độ phức tạp của code.
22. Đâu là một thách thức trong kiểm thử phần mềm nhúng (embedded software)?
A. Thiếu công cụ kiểm thử phù hợp cho phần cứng đặc biệt.
B. Dễ dàng mô phỏng môi trường thực tế.
C. Chi phí kiểm thử thấp.
D. Có nhiều tester có kinh nghiệm.
23. Khi nào nên sử dụng mô hình chữ V (V-model) trong kiểm thử phần mềm?
A. Khi dự án có yêu cầu thay đổi liên tục.
B. Khi dự án có yêu cầu rõ ràng và ổn định.
C. Khi dự án cần phát triển nhanh chóng.
D. Khi dự án có ít nguồn lực.
24. Kỹ thuật `pairwise testing` (kiểm thử cặp) được sử dụng để làm gì?
A. Kiểm tra tất cả các kết hợp có thể có của các đầu vào.
B. Kiểm tra tất cả các cặp kết hợp của các đầu vào.
C. Kiểm tra các giá trị biên của các đầu vào.
D. Kiểm tra các đường dẫn thực thi của code.
25. Trong kiểm thử phần mềm, `test case` là gì?
A. Một điều kiện hoặc biến số được sử dụng để kiểm tra một phần của phần mềm.
B. Một tập hợp các hành động để xác minh một tính năng cụ thể của phần mềm.
C. Một tài liệu mô tả tất cả các lỗi đã được tìm thấy trong phần mềm.
D. Một báo cáo về hiệu suất của phần mềm.
26. Mục đích của `smoke testing` là gì?
A. Kiểm tra chi tiết tất cả các chức năng của phần mềm.
B. Đảm bảo rằng các chức năng cốt lõi của phần mềm hoạt động ổn định sau khi build.
C. Kiểm tra hiệu năng của phần mềm dưới tải cao.
D. Kiểm tra tính bảo mật của phần mềm.
27. Trong kiểm thử Agile, vai trò của tester là gì?
A. Chỉ thực hiện kiểm thử sau khi code được viết.
B. Tham gia vào tất cả các giai đoạn của dự án, từ lập kế hoạch đến triển khai.
C. Chỉ tập trung vào việc tìm lỗi.
D. Viết tất cả các test case trước khi code được viết.
28. Điều gì KHÔNG phải là một nguyên tắc của kiểm thử phần mềm?
A. Kiểm thử sớm.
B. Kiểm thử toàn diện là khả thi.
C. Tập trung vào các cụm lỗi.
D. Kiểm thử phụ thuộc vào ngữ cảnh.
29. Sự khác biệt giữa `error`, `fault` và `failure` trong kiểm thử phần mềm là gì?
A. Chúng là các thuật ngữ đồng nghĩa.
B. `Error` là hành động sai của con người, `fault` là lỗi trong code, và `failure` là sự sai lệch so với yêu cầu.
C. `Error` là lỗi trong code, `fault` là hành động sai của con người, và `failure` là sự sai lệch so với yêu cầu.
D. `Error` là sự sai lệch so với yêu cầu, `fault` là lỗi trong code, và `failure` là hành động sai của con người.
30. Trong ngữ cảnh kiểm thử hiệu năng, `load testing` khác với `stress testing` như thế nào?
A. `Load testing` kiểm tra hiệu năng dưới tải bình thường, còn `stress testing` kiểm tra hiệu năng dưới tải cực đại.
B. `Load testing` kiểm tra chức năng, còn `stress testing` kiểm tra bảo mật.
C. `Load testing` tự động, còn `stress testing` thủ công.
D. Không có sự khác biệt.