1. Khi một chương trình không đưa ra kết quả mong đợi, nhưng không có thông báo lỗi nào hiển thị, thì lỗi có khả năng cao nhất là loại nào?
A. Lỗi cú pháp.
B. Lỗi thời gian chạy.
C. Lỗi logic.
D. Lỗi biên dịch.
2. Đâu là một ví dụ về kiểm thử hộp trắng (white-box testing)?
A. Kiểm tra xem người dùng có thể đăng nhập bằng mật khẩu đúng không.
B. Kiểm tra xem chương trình có xử lý đúng tất cả các trường hợp của câu lệnh if-else không.
C. Kiểm tra xem giao diện người dùng có thân thiện không.
D. Kiểm tra xem chương trình có chạy nhanh dưới tải cao không.
3. Đâu là một nguyên nhân phổ biến dẫn đến lỗi thời gian chạy (runtime error) trong lập trình?
A. Thiếu dấu chấm phẩy ở cuối câu lệnh.
B. Sử dụng biến chưa được khai báo.
C. Truy cập một phần tử mảng với chỉ số nằm ngoài phạm vi cho phép.
D. Đặt tên biến không theo quy tắc.
4. Công cụ nào thường được sử dụng để hỗ trợ quá trình gỡ lỗi, cho phép người lập trình xem xét giá trị biến, theo dõi luồng thực thi và đặt điểm dừng?
A. Trình biên dịch (Compiler).
B. Trình soạn thảo văn bản (Text Editor).
C. Trình gỡ lỗi (Debugger).
D. Trình thông dịch (Interpreter).
5. Khi sử dụng trình gỡ lỗi, hành động step over (bước qua) khác với step into (bước vào) ở điểm nào?
A. Step over thực thi toàn bộ một hàm, còn step into chỉ thực thi một dòng lệnh.
B. Step over thực thi dòng lệnh hiện tại và dừng lại, còn step into sẽ đi vào thực thi hàm nếu lệnh đó là gọi hàm.
C. Step over chỉ dùng cho các lệnh điều kiện, còn step into dùng cho các vòng lặp.
D. Không có sự khác biệt cơ bản giữa hai hành động này.
6. Việc kiểm tra xem chương trình có hoạt động đúng với các yêu cầu của người dùng hay không được gọi là gì?
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 (Acceptance Testing).
7. Đâu là một ví dụ về lỗi logic?
A. Chương trình báo Lỗi cú pháp khi thiếu dấu chấm phẩy.
B. Chương trình dừng đột ngột khi chia cho 0.
C. Chương trình tính tổng hai số a và b, nhưng lại trả về a - b.
D. Chương trình không hiển thị được cửa sổ chương trình.
8. Đâu là một loại kiểm thử nhằm đảm bảo rằng các thay đổi hoặc sửa lỗi mới không gây ra các lỗi mới hoặc làm hỏng các chức năng hiện có?
A. Kiểm thử hồi quy (Regression Testing).
B. Kiểm thử hiệu năng (Performance Testing).
C. Kiểm thử bảo mật (Security Testing).
D. Kiểm thử khả năng sử dụng (Usability Testing).
9. Trong quá trình phát triển phần mềm, mục đích chính của việc kiểm thử là gì?
A. Để đảm bảo phần mềm chạy nhanh nhất có thể.
B. Để tìm và sửa lỗi trong phần mềm trước khi phát hành.
C. Để làm cho giao diện người dùng hấp dẫn hơn.
D. Để giảm dung lượng của tệp tin chương trình.
10. Việc kiểm tra xem chương trình có hoạt động đúng với các yêu cầu phi chức năng (như hiệu năng, bảo mật, khả năng sử dụng) hay không được gọi là gì?
A. Kiểm thử chức năng (Functional Testing).
B. Kiểm thử hồi quy.
C. Kiểm thử phi chức năng (Non-functional Testing).
D. Kiểm thử tích hợp.
11. Việc kiểm thử một chương trình trên nhiều nền tảng hệ điều hành và trình duyệt khác nhau được gọi là gì?
A. Kiểm thử đơn vị.
B. Kiểm thử tích hợp.
C. Kiểm thử tương thích (Compatibility Testing).
D. Kiểm thử hiệu năng.
12. Đâu là một kỹ thuật kiểm thử phần mềm tập trung vào việc kiểm tra các hàm hoặc các thành phần riêng lẻ của chương trình?
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).
13. Đâu là một loại lỗi phổ biến thường gặp trong lập trình, xuất phát từ việc chương trình không xử lý đúng các trường hợp ngoại lệ hoặc dữ liệu không hợp lệ?
A. Lỗi cú pháp (Syntax Error).
B. Lỗi logic (Logic Error).
C. Lỗi thời gian chạy (Runtime Error).
D. Lỗi biên dịch (Compile Error).
14. Trong quá trình gỡ lỗi, khi bạn nghi ngờ một biến nào đó có giá trị không chính xác tại một thời điểm nhất định, bạn nên sử dụng chức năng nào của trình gỡ lỗi?
A. Breakpoints (Điểm dừng).
B. Watch expressions (Giám sát biểu thức).
C. Call stack (Ngăn xếp gọi).
D. Step over (Bước qua).
15. Khi một lỗi được báo cáo, thông tin nào là quan trọng nhất để người lập trình có thể tái hiện và sửa lỗi?
A. Tên của người báo cáo lỗi.
B. Mô tả chi tiết các bước để gây ra lỗi và kết quả mong đợi/thực tế.
C. Ngày và giờ báo cáo lỗi.
D. Phiên bản hệ điều hành của người dùng.
16. Khi một chương trình gặp lỗi và hiển thị một thông báo lỗi kèm theo mã lỗi cụ thể, hành động tiếp theo của người lập trình nên là gì?
A. Bỏ qua thông báo lỗi và tiếp tục chạy chương trình.
B. Tìm kiếm ý nghĩa của mã lỗi trên Internet hoặc tài liệu của ngôn ngữ lập trình.
C. Giả định rằng lỗi là không quan trọng.
D. Viết lại toàn bộ chương trình.
17. Đâu là một kỹ thuật kiểm thử tập trung vào việc kiểm tra các trường hợp biên (boundary cases) của dữ liệu đầu vào?
A. Kiểm thử dựa trên kinh nghiệm.
B. Kiểm thử giá trị biên (Boundary Value Analysis).
C. Kiểm thử phân vùng tương đương.
D. Kiểm thử trạng thái.
18. Trong quá trình gỡ lỗi, nếu bạn muốn xem giá trị của một biến chỉ khi nó thay đổi, bạn có thể sử dụng chức năng nào trong trình gỡ lỗi?
A. Call stack.
B. Breakpoints.
C. Step over.
D. Watch expressions (với tùy chọn thay đổi).
19. Trong ngôn ngữ lập trình, lỗi cú pháp (syntax error) thường được phát hiện ở giai đoạn nào?
A. Khi chương trình đang chạy.
B. Sau khi chương trình đã biên dịch thành công.
C. Trong quá trình biên dịch hoặc thông dịch mã nguồn.
D. Khi người dùng nhập dữ liệu sai.
20. Khi sử dụng trình gỡ lỗi, hành động step into (bước vào) có ý nghĩa gì?
A. Thực thi toàn bộ một hàm hoặc một khối mã.
B. Thực thi dòng lệnh hiện tại và dừng lại ở dòng tiếp theo.
C. Thực thi dòng lệnh hiện tại, nếu là lệnh gọi hàm thì đi vào thực thi hàm đó.
D. Tiếp tục thực thi chương trình cho đến khi gặp điểm dừng tiếp theo.
21. Khi một chương trình máy tính hoạt động không như mong đợi do sai sót trong thuật toán hoặc cách triển khai, loại lỗi này được gọi là gì?
A. Lỗi cú pháp.
B. Lỗi logic.
C. Lỗi ngoại lệ.
D. Lỗi biên dịch.
22. Đâu là một kỹ thuật kiểm thử hộp đen (black-box testing)?
A. Kiểm tra xem một hàm có trả về giá trị đúng khi nhận đầu vào là số âm không.
B. Kiểm tra xem vòng lặp for có thực hiện đúng số lần lặp không.
C. Kiểm tra xem việc nhập một chuỗi ký tự rỗng vào ô văn bản có gây ra lỗi không.
D. Kiểm tra xem cấu trúc dữ liệu nội bộ có được duy trì đúng không.
23. Việc kiểm tra cách các module hoặc thành phần khác nhau của phần mềm tương tác với nhau được gọi là gì?
A. Kiểm thử đơn vị.
B. Kiểm thử tích hợp.
C. Kiểm thử hồi quy.
D. Kiểm thử hiệu năng.
24. Trong quá trình gỡ lỗi, nếu bạn muốn xem lịch sử các lệnh gọi hàm đã dẫn đến điểm hiện tại, bạn nên kiểm tra công cụ nào?
A. Output window.
B. Call stack.
C. Breakpoint list.
D. Watch window.
25. Quá trình gỡ lỗi (debugging) bao gồm những bước chính nào?
A. Viết mã, chạy thử, sửa lỗi, tối ưu hóa.
B. Phân tích yêu cầu, thiết kế, lập trình, kiểm thử.
C. Xác định lỗi, cô lập lỗi, sửa lỗi, kiểm tra lại.
D. Lập trình, biên dịch, chạy, báo cáo lỗi.