1. Một lập trình viên viết một đoạn mã xử lý chuỗi, nhưng khi chuỗi đầu vào chứa ký tự đặc biệt, chương trình lại bị lỗi. Vấn đề này có thể thuộc về loại lỗi nào?
A. Lỗi cú pháp (Syntax error)
B. Lỗi logic (Logic error)
C. Lỗi logic (Logic error)
D. Lỗi cú pháp (Syntax error)
2. Việc kiểm thử hộp đen (black-box testing) tập trung vào điều gì?
A. Cấu trúc mã nguồn và thuật toán
B. Chức năng và hành vi của chương trình mà không cần biết mã nguồn bên trong
C. Hiệu suất của cơ sở dữ liệu
D. Chức năng và hành vi của chương trình mà không cần biết mã nguồn bên trong
3. Việc kiểm thử hộp trắng (white-box testing) dựa trên cơ sở nào?
A. Chỉ dựa trên yêu cầu chức năng
B. Dựa trên cấu trúc nội bộ, thiết kế và mã nguồn của chương trình
C. Chỉ dựa vào giao diện người dùng
D. Dựa trên cấu trúc nội bộ, thiết kế và mã nguồn của chương trình
4. Khi phát hiện một lỗi, điều quan trọng nhất cần làm là gì để hỗ trợ quá trình gỡ lỗi sau này?
A. Chỉ cần sửa lỗi ngay lập tức
B. Ghi lại chi tiết các bước để tái hiện lỗi
C. Xóa bỏ phần mã có khả năng gây lỗi
D. Bỏ qua lỗi nếu nó không ảnh hưởng đến chức năng chính
5. Mục đích chính của việc kiểm thử hồi quy (regression testing) là gì?
A. Kiểm tra các chức năng mới được thêm vào
B. Đảm bảo rằng việc sửa lỗi hoặc thêm tính năng mới không làm hỏng các chức năng đã hoạt động trước đó
C. Kiểm tra hiệu suất của chương trình dưới tải nặng
D. Kiểm tra khả năng tương thích với các hệ điều hành khác nhau
6. Trong ngôn ngữ lập trình Python, một lỗi như `TypeError: unsupported operand type(s) for +: int and str` là loại lỗi gì?
A. Lỗi cú pháp (Syntax error)
B. Lỗi logic (Logic error)
C. Lỗi kiểu dữ liệu (Type error) - một dạng lỗi thực thi
D. Lỗi cú pháp (Syntax error)
7. Một lập trình viên viết một chương trình tính tổng hai số, nhưng khi nhập 5 và 3, chương trình lại xuất ra 7. Đây là loại lỗi nào?
A. Lỗi cú pháp (Syntax error)
B. Lỗi logic (Logic error)
C. Lỗi cú pháp (Syntax error)
D. Lỗi cú pháp (Syntax error)
8. Trong các bước của quy trình phát triển phần mềm, kiểm thử và gỡ lỗi thường diễn ra ở giai đoạn nào?
A. Chỉ ở giai đoạn lập kế hoạch
B. Chỉ ở giai đoạn thiết kế
C. Trong và sau giai đoạn viết mã (coding)
D. Chỉ sau khi chương trình đã hoàn thành và bàn giao
9. Công cụ nào giúp lập trình viên theo dõi luồng thực thi của chương trình, xem xét giá trị biến và xác định điểm dừng?
A. Trình biên dịch (Compiler)
B. Trình gỡ lỗi (Debugger)
C. Trình biên dịch (Compiler)
D. Trình biên dịch (Compiler)
10. Gỡ lỗi (debugging) là quá trình gì?
A. Viết mã nguồn mới cho chương trình
B. Tìm kiếm, xác định và sửa chữa lỗi trong chương trình
C. Thiết kế giao diện người dùng cho phần mềm
D. Tối ưu hóa hiệu suất của chương trình
11. Khi một chương trình hiển thị kết quả không mong muốn nhưng không có thông báo lỗi nào xuất hiện, bạn nên nghi ngờ vấn đề ở đâu trước tiên?
A. Trình biên dịch
B. Hệ điều hành
C. Logic hoặc thuật toán xử lý dữ liệu
D. Logic hoặc thuật toán xử lý dữ liệu
12. Khi một chương trình hoạt động không đúng như mong đợi, hành động đầu tiên cần thực hiện để tìm ra nguyên nhân là gì?
A. Viết lại toàn bộ chương trình
B. Kiểm tra lại các yêu cầu và thiết kế
C. Thực hiện kiểm thử để quan sát hành vi và ghi lại kết quả
D. Thực hiện kiểm thử để quan sát hành vi và ghi lại kết quả
13. Kỹ thuật chia để trị (divide and conquer) trong gỡ lỗi nghĩa là gì?
A. Chia nhỏ chương trình thành nhiều phần để viết lại
B. Chia vấn đề lớn thành các vấn đề nhỏ hơn để dễ dàng cô lập và giải quyết lỗi
C. Chia mã nguồn thành các tệp tin riêng biệt
D. Chia vấn đề lớn thành các vấn đề nhỏ hơn để dễ dàng cô lập và giải quyết lỗi
14. Mục tiêu chính của việc kiểm thử đơn vị (unit testing) là gì?
A. Kiểm tra toàn bộ hệ thống hoạt động cùng nhau
B. Kiểm tra sự tương tác giữa các module khác nhau
C. Kiểm tra từng đơn vị mã (ví dụ: hàm, phương thức) một cách độc lập
D. Kiểm tra giao diện người dùng cuối cùng
15. Một lập trình viên sử dụng một biến chưa được khởi tạo giá trị trong chương trình. Điều này có khả năng dẫn đến loại lỗi nào?
A. Lỗi cú pháp (Syntax error)
B. Lỗi logic (Logic error) hoặc lỗi thực thi (Runtime error)
C. Lỗi cú pháp (Syntax error)
D. Lỗi cú pháp (Syntax error)
16. Khi một chương trình yêu cầu nhập tên người dùng, nhưng lại cho phép nhập một chuỗi rất dài mà không có giới hạn, điều này có thể dẫn đến lỗi gì?
A. Lỗi cú pháp (Syntax error)
B. Lỗi logic (Logic error)
C. Lỗi tràn bộ đệm (Buffer overflow) hoặc lỗi thực thi
D. Lỗi cú pháp (Syntax error)
17. Trong quá trình kiểm thử phần mềm, loại lỗi nào thường được phát hiện sớm nhất và dễ sửa nhất?
A. Lỗi cú pháp (Syntax errors)
B. Lỗi logic (Logic errors)
C. Lỗi cú pháp (Syntax errors)
D. Lỗi cú pháp (Syntax errors)
18. Trong các kỹ thuật gỡ lỗi, in ra biến (printing variables) nhằm mục đích gì?
A. Tăng tốc độ thực thi của chương trình
B. Hiểu rõ giá trị của các biến tại các thời điểm khác nhau trong quá trình chạy
C. Thay đổi kết quả đầu ra của chương trình
D. Giảm dung lượng bộ nhớ mà chương trình sử dụng
19. Việc kiểm thử tích hợp (integration testing) nhằm mục đích gì?
A. Kiểm tra từng module riêng lẻ
B. Kiểm tra sự tương tác và kết nối giữa các module hoặc thành phần khác nhau của hệ thống
C. Kiểm tra toàn bộ hệ thống từ góc độ người dùng cuối
D. Kiểm tra sự tương tác và kết nối giữa các module hoặc thành phần khác nhau của hệ thống
20. Khi kiểm thử một chức năng, nếu chương trình gặp lỗi và dừng đột ngột, đó có thể là dấu hiệu của loại lỗi nào?
A. Lỗi logic (Logic error)
B. Lỗi cú pháp (Syntax error)
C. Lỗi thực thi/Lỗi runtime (Runtime error)
D. Lỗi cú pháp (Syntax error)
21. Khi kiểm thử một chức năng tìm kiếm, nếu người dùng nhập một từ khóa không tồn tại trong cơ sở dữ liệu, chương trình nên hiển thị thông báo gì?
A. Thông báo lỗi nghiêm trọng và dừng chương trình
B. Thông báo rằng không tìm thấy kết quả nào
C. Thông báo rằng không tìm thấy kết quả nào
D. Hiển thị một kết quả tìm kiếm ngẫu nhiên
22. Một lập trình viên cần kiểm tra xem chức năng lưu file có hoạt động đúng không. Lập trình viên này nên tạo các trường hợp kiểm thử như thế nào?
A. Chỉ kiểm tra khi lưu với tên file có sẵn
B. Kiểm tra lưu với tên file mới, tên file đã tồn tại, tên file chứa ký tự đặc biệt, và khi không có đủ quyền ghi
C. Chỉ kiểm tra khi lưu với tên file có ký tự đặc biệt
D. Kiểm tra lưu với tên file mới, tên file đã tồn tại, tên file chứa ký tự đặc biệt, và khi không có đủ quyền ghi
23. Bước nào sau đây KHÔNG phải là một phần của quy trình gỡ lỗi điển hình?
A. Tái hiện lỗi
B. Xác định nguyên nhân lỗi
C. Viết tài liệu hướng dẫn sử dụng mới
D. Sửa lỗi
24. Việc xác minh rằng phần mềm đáp ứng đúng các yêu cầu và mong đợi của người dùng được gọi là gì?
A. Gỡ lỗi (Debugging)
B. Kiểm định (Verification)
C. Kiểm thử (Testing)
D. Kiểm định (Verification)
25. Loại lỗi nào là phổ biến nhất và thường khó phát hiện nhất trong quá trình phát triển phần mềm?
A. Lỗi cú pháp (Syntax errors)
B. Lỗi logic (Logic errors)
C. Lỗi cú pháp (Syntax errors)
D. Lỗi cú pháp (Syntax errors)