Đề Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Đề 01

Đề 02

Đề 03

Đề 04

Đề 05

Đề 06

Đề 07

Đề 08

Đề 09

Đề 10

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình - Đề 01

Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình - Đề 01 được xây dựng với nhiều câu hỏi chất lượng, sát với nội dung chương trình học, giúp bạn dễ dàng ôn tập và kiểm tra kiến thức hiệu quả. Hãy cùng bắt đầu làm bài tập trắc nghiệm ngay để nâng cao hiểu biết và chuẩn bị tốt cho kỳ thi sắp tới!

Câu 1: Khi phát triển phần mềm, giai đoạn nào sau đây đóng vai trò quan trọng nhất trong việc đảm bảo chất lượng và độ tin cậy của chương trình trước khi đưa vào sử dụng?

  • A. Thiết kế giao diện
  • B. Kiểm thử và gỡ lỗi
  • C. Viết tài liệu hướng dẫn
  • D. Phân tích yêu cầu

Câu 2: Lỗi nào sau đây thường xảy ra khi chương trình đang chạy và gặp phải một tình huống bất thường (ví dụ: chia cho không, truy cập phần tử ngoài phạm vi mảng)?

  • A. Lỗi cú pháp (Syntax Error)
  • B. Lỗi logic (Semantic/Logic Error)
  • C. Lỗi ngoại lệ (Runtime Error/Exception)
  • D. Lỗi biên dịch (Compilation Error)

Câu 3: Xem xét đoạn mã Python sau:

count = 10
while count > 0:
 print(count)
 count += 1


Đoạn mã này có khả năng gây ra lỗi gì khi thực thi?

  • A. ZeroDivisionError
  • B. IndexError
  • C. TypeError
  • D. Lặp vô hạn (Infinite loop)

Câu 4: Một phương pháp kiểm thử chương trình tập trung vào việc kiểm tra chức năng của chương trình dựa trên đặc tả yêu cầu, mà không quan tâm đến cấu trúc mã nguồn bên trong. Phương pháp này được gọi là gì?

  • A. Kiểm thử hộp đen (Black-box testing)
  • B. Kiểm thử hộp trắng (White-box testing)
  • C. Kiểm thử hồi quy (Regression testing)
  • D. Kiểm thử đơn vị (Unit testing)

Câu 5: Khi gỡ lỗi một chương trình Python, việc sử dụng lệnh `print()` để hiển thị giá trị của các biến tại các điểm khác nhau trong quá trình thực thi nhằm mục đích gì?

  • A. Thay đổi giá trị của biến để sửa lỗi.
  • B. Theo dõi giá trị của biến tại các bước thực thi để khoanh vùng lỗi.
  • C. Tăng tốc độ thực thi của chương trình.
  • D. Kiểm tra lỗi cú pháp của chương trình.

Câu 6: Bạn đang kiểm thử một hàm tính căn bậc hai nhận đầu vào là một số. Bộ dữ liệu kiểm thử nào sau đây là quan trọng nhất để kiểm tra các trường hợp biên (boundary cases)?

  • A. Các số dương lớn (ví dụ: 100, 1000)
  • B. Các số dương nhỏ (ví dụ: 0.1, 0.001)
  • C. Số 0 và một số âm (ví dụ: 0, -4)
  • D. Các số nguyên lớn và số nguyên nhỏ.

Câu 7: Lỗi nào sau đây không thể được phát hiện bởi trình thông dịch (interpreter) Python trước khi chương trình bắt đầu chạy?

  • A. Lỗi cú pháp (Syntax Error)
  • B. Lỗi tên biến chưa khai báo (NameError - nếu biến được dùng ngay lập tức)
  • C. Lỗi thụt lề (IndentationError)
  • D. Lỗi logic (Semantic/Logic Error)

Câu 8: Bạn nhận được thông báo lỗi `ZeroDivisionError: division by zero` khi chạy chương trình. Lỗi này thuộc loại lỗi nào và nguyên nhân phổ biến nhất là gì?

  • A. Lỗi ngoại lệ; Số chia có giá trị bằng 0.
  • B. Lỗi cú pháp; Sử dụng sai toán tử chia.
  • C. Lỗi logic; Kết quả phép chia không mong muốn.
  • D. Lỗi tên; Tên biến số chia không tồn tại.

Câu 9: Phương pháp kiểm thử hộp trắng (White-box testing) tập trung vào khía cạnh nào của chương trình?

  • A. Chỉ giao diện người dùng.
  • B. Chỉ chức năng hoạt động từ bên ngoài.
  • C. Cấu trúc mã nguồn, luồng điều khiển và đường đi dữ liệu bên trong chương trình.
  • D. Hiệu suất và khả năng chịu tải của chương trình.

Câu 10: Khi gỡ lỗi, nếu bạn nghi ngờ một đoạn mã cụ thể gây ra lỗi, công cụ nào trong môi trường phát triển tích hợp (IDE) giúp tạm dừng chương trình ngay trước khi thực thi đoạn mã đó để bạn có thể kiểm tra trạng thái của các biến?

  • A. Công cụ biên dịch.
  • B. Điểm dừng (Breakpoint).
  • C. Công cụ định dạng mã nguồn.
  • D. Trình quản lý dự án.

Câu 11: Bạn đang kiểm thử một hàm nhận vào danh sách và trả về phần tử ở vị trí index `i`. Nếu danh sách có 5 phần tử (index từ 0 đến 4) và bạn gọi hàm với `i = 5`, loại lỗi ngoại lệ nào có khả năng xảy ra?

  • A. IndexError
  • B. TypeError
  • C. ValueError
  • D. KeyError

Câu 12: Xem xét đoạn mã Python sau:

def calculate_area(radius):
 return 3.14 * radius ** 2

area = calculate_area(
  • A. ZeroDivisionError
  • B. IndexError
  • C. TypeError
  • D. NameError
Câu 13: Khi thực hiện kiểm thử, việc sử dụng các bộ dữ liệu ngẫu nhiên (random test data) trong miền hợp lệ của đầu vào có ưu điểm gì?
  • A. Đảm bảo kiểm thử tất cả các đường đi trong mã nguồn.
  • B. Chỉ tập trung vào các trường hợp biên.
  • C. Giảm thiểu số lượng bộ dữ liệu test cần thiết.
  • D. Tăng khả năng phát hiện các lỗi tiềm ẩn trong các trường hợp đầu vào không ngờ tới.
Câu 14: Trong quá trình gỡ lỗi, nếu bạn gặp lỗi `NameError: name "my_variable" is not defined`, bạn nên kiểm tra điều gì đầu tiên?
  • A. Kiểu dữ liệu của biến `my_variable`.
  • B. Chính tả của tên `my_variable` và đảm bảo nó đã được khai báo/gán giá trị trước khi sử dụng.
  • C. Giá trị hiện tại của biến `my_variable`.
  • D. Phép toán đang được thực hiện với biến `my_variable`.
Câu 15: Mục tiêu chính của giai đoạn gỡ lỗi (debugging) là gì?
  • A. Tìm và sửa chữa các lỗi đã được phát hiện trong chương trình.
  • B. Thiết kế các bộ dữ liệu kiểm thử mới.
  • C. Ngăn chặn lỗi xảy ra trong tương lai.
  • D. Đánh giá hiệu suất tổng thể của chương trình.
Câu 16: Khi kiểm thử một chương trình tính toán, việc kiểm tra với các giá trị đầu vào lớn hoặc rất nhỏ nằm gần giới hạn của kiểu dữ liệu (ví dụ: số nguyên lớn nhất, số thực gần 0) nhằm mục đích gì?
  • A. Kiểm tra giao diện người dùng.
  • B. Kiểm tra lỗi cú pháp.
  • C. Kiểm tra khả năng xử lý các giá trị biên và các vấn đề liên quan đến kiểu dữ liệu (ví dụ: tràn số).
  • D. Đánh giá tốc độ thực thi chương trình.
Câu 17: Bạn đang gỡ lỗi một chương trình và nghi ngờ một biến có giá trị không chính xác sau một loạt phép tính. Kỹ thuật gỡ lỗi nào sau đây hiệu quả nhất để theo dõi sự thay đổi giá trị của biến đó qua từng bước thực thi?
  • A. Chạy lại chương trình nhiều lần với cùng một đầu vào.
  • B. Đọc lại toàn bộ mã nguồn từ đầu.
  • C. Xóa bớt các đoạn mã mà bạn cho là không liên quan.
  • D. Sử dụng trình gỡ lỗi (debugger) để chạy từng bước và theo dõi biến.
Câu 18: Loại lỗi nào sau đây khó phát hiện nhất chỉ bằng cách nhìn vào mã nguồn mà không chạy thử?
  • A. Lỗi cú pháp (Syntax Error).
  • B. Lỗi logic (Semantic/Logic Error).
  • C. Lỗi tên biến (NameError).
  • D. Lỗi thụt lề (IndentationError).
Câu 19: Khi thiết kế bộ dữ liệu kiểm thử cho một chương trình, tại sao việc bao gồm các trường hợp đầu vào không hợp lệ (invalid input) lại quan trọng?
  • A. Để kiểm tra cách chương trình xử lý các tình huống ngoại lệ hoặc dữ liệu không mong muốn.
  • B. Để đảm bảo chương trình luôn đưa ra kết quả đúng.
  • C. Để tăng tốc độ thực thi của chương trình.
  • D. Để đơn giản hóa quá trình gỡ lỗi.
Câu 20: Xem xét đoạn mã Python sau:
def divide(a, b):
 return a / b

result = divide(10, 2)
print(result)


Nếu bạn thay đổi dòng `result = divide(10, 2)` thành `result = divide(10, 0)`, lỗi ngoại lệ nào sẽ xảy ra?

  • A. TypeError
  • B. IndexError
  • C. NameError
  • D. ZeroDivisionError

Câu 21: Quá trình gỡ lỗi thường bao gồm các bước theo thứ tự nào sau đây?

  • A. Sửa lỗi → Tìm lỗi → Kiểm tra lại → Phân tích nguyên nhân.
  • B. Phân tích nguyên nhân → Sửa lỗi → Tìm lỗi → Kiểm tra lại.
  • C. Tìm lỗi/Xác định vị trí → Phân tích nguyên nhân → Sửa lỗi → Kiểm tra lại.
  • D. Kiểm tra lại → Tìm lỗi → Phân tích nguyên nhân → Sửa lỗi.

Câu 22: Công cụ sinh dữ liệu kiểm thử (Test data generator) có vai trò gì trong quá trình kiểm thử chương trình?

  • A. Tự động sửa chữa lỗi trong mã nguồn.
  • B. Tạo ra các bộ dữ liệu đầu vào để kiểm thử chương trình.
  • C. Phân tích hiệu suất của chương trình.
  • D. Viết báo cáo về các lỗi đã tìm thấy.

Câu 23: Khi kiểm thử một chức năng tìm kiếm trong một danh sách, bộ dữ liệu kiểm thử nào sau đây ít hữu ích nhất để phát hiện lỗi liên quan đến các trường hợp đặc biệt?

  • A. Tìm kiếm một phần tử ở đầu danh sách.
  • B. Tìm kiếm một phần tử không có trong danh sách.
  • C. Tìm kiếm trong một danh sách rỗng.
  • D. Tìm kiếm một phần tử ở giữa danh sách.

Câu 24: Lỗi nào sau đây là kết quả của việc viết mã sai quy tắc ngữ pháp của ngôn ngữ lập trình?

  • A. Lỗi cú pháp (Syntax Error)
  • B. Lỗi logic (Logic Error)
  • C. Lỗi ngoại lệ (Runtime Error)
  • D. Lỗi biên giới (Boundary Error)

Câu 25: Xem xét đoạn mã Python sau:

numbers = [1, 2, 3]
for i in range(4):
 print(numbers[i])


Khi thực thi, đoạn mã này sẽ gây ra lỗi gì và tại dòng nào?

  • A. TypeError tại dòng 2.
  • B. ZeroDivisionError tại dòng 3.
  • C. IndexError tại dòng 3.
  • D. Syntax Error tại dòng 2.

Câu 26: Trong quá trình gỡ lỗi, sau khi xác định được nguyên nhân của lỗi, bước tiếp theo quan trọng nhất là gì?

  • A. Bỏ qua lỗi đó và tiếp tục viết code.
  • B. Thông báo cho người khác biết về lỗi.
  • C. Xóa toàn bộ đoạn mã gây lỗi.
  • D. Thực hiện sửa chữa và kiểm thử lại chương trình.

Câu 27: Việc thiết kế các bộ dữ liệu kiểm thử nên được thực hiện vào thời điểm nào trong vòng đời phát triển phần mềm?

  • A. Song song hoặc ngay sau giai đoạn phân tích yêu cầu và thiết kế.
  • B. Chỉ sau khi hoàn thành việc viết toàn bộ mã nguồn.
  • C. Chỉ sau khi chương trình đã được triển khai cho người dùng cuối.
  • D. Không quan trọng thời điểm, chỉ cần có bộ test trước khi bàn giao.

Câu 28: Bạn đang viết một chương trình xử lý ngày tháng. Bộ dữ liệu kiểm thử nào sau đây là ví dụ về kiểm thử trường hợp biên (boundary case) cho ngày trong tháng?

  • A. Ngày 15 hàng tháng.
  • B. Ngày 1, ngày 31, và ngày 32 của tháng 1.
  • C. Một ngày ngẫu nhiên trong tháng.
  • D. Chỉ kiểm tra ngày hiện tại của hệ thống.

Câu 29: Xem xét đoạn mã Python sau:

def process_list(data):
 total = 0
 for item in data:
 total += item
 return total / len(data)

result = process_list([])
print(result)


Khi chạy đoạn mã này với danh sách rỗng `[]`, lỗi ngoại lệ nào sẽ xảy ra tại dòng `return total / len(data)`?

  • A. ZeroDivisionError
  • B. IndexError
  • C. TypeError
  • D. ValueError

Câu 30: Công cụ nào sau đây không phải là một công cụ hoặc kỹ thuật trực tiếp hỗ trợ quá trình gỡ lỗi (debugging)?

  • A. Sử dụng các lệnh in (print statements) để hiển thị giá trị biến.
  • B. Sử dụng trình gỡ lỗi (debugger) để chạy từng bước và đặt điểm dừng.
  • C. Ghi log (logging) các sự kiện và giá trị quan trọng.
  • D. Công cụ biên dịch (Compiler).

1 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 01

Câu 1: Khi phát triển phần mềm, giai đoạn nào sau đây đóng vai trò quan trọng nhất trong việc đảm bảo chất lượng và độ tin cậy của chương trình trước khi đưa vào sử dụng?

2 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 01

Câu 2: Lỗi nào sau đây thường xảy ra khi chương trình đang chạy và gặp phải một tình huống bất thường (ví dụ: chia cho không, truy cập phần tử ngoài phạm vi mảng)?

3 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 01

Câu 3: Xem xét đoạn mã Python sau:

count = 10
while count > 0:
  print(count)
  count += 1


Đoạn mã này có khả năng gây ra lỗi gì khi thực thi?

4 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 01

Câu 4: Một phương pháp kiểm thử chương trình tập trung vào việc kiểm tra chức năng của chương trình dựa trên đặc tả yêu cầu, mà không quan tâm đến cấu trúc mã nguồn bên trong. Phương pháp này được gọi là gì?

5 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 01

Câu 5: Khi gỡ lỗi một chương trình Python, việc sử dụng lệnh `print()` để hiển thị giá trị của các biến tại các điểm khác nhau trong quá trình thực thi nhằm mục đích gì?

6 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 01

Câu 6: Bạn đang kiểm thử một hàm tính căn bậc hai nhận đầu vào là một số. Bộ dữ liệu kiểm thử nào sau đây là *quan trọng nhất* để kiểm tra các trường hợp biên (boundary cases)?

7 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 01

Câu 7: Lỗi nào sau đây *không thể* được phát hiện bởi trình thông dịch (interpreter) Python trước khi chương trình bắt đầu chạy?

8 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 01

Câu 8: Bạn nhận được thông báo lỗi `ZeroDivisionError: division by zero` khi chạy chương trình. Lỗi này thuộc loại lỗi nào và nguyên nhân phổ biến nhất là gì?

9 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 01

Câu 9: Phương pháp kiểm thử hộp trắng (White-box testing) tập trung vào khía cạnh nào của chương trình?

10 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 01

Câu 10: Khi gỡ lỗi, nếu bạn nghi ngờ một đoạn mã cụ thể gây ra lỗi, công cụ nào trong môi trường phát triển tích hợp (IDE) giúp tạm dừng chương trình ngay trước khi thực thi đoạn mã đó để bạn có thể kiểm tra trạng thái của các biến?

11 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 01

Câu 11: Bạn đang kiểm thử một hàm nhận vào danh sách và trả về phần tử ở vị trí index `i`. Nếu danh sách có 5 phần tử (index từ 0 đến 4) và bạn gọi hàm với `i = 5`, loại lỗi ngoại lệ nào có khả năng xảy ra?

12 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 01

Câu 12: Xem xét đoạn mã Python sau:

def calculate_area(radius):
  return 3.14 * radius ** 2

area = calculate_area("5")
print(area)


Khi chạy đoạn mã này, lỗi ngoại lệ nào có khả năng xảy ra tại dòng `area = calculate_area("5")`?

13 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 01

Câu 13: Khi thực hiện kiểm thử, việc sử dụng các bộ dữ liệu ngẫu nhiên (random test data) trong miền hợp lệ của đầu vào có ưu điểm gì?

14 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 01

Câu 14: Trong quá trình gỡ lỗi, nếu bạn gặp lỗi `NameError: name 'my_variable' is not defined`, bạn nên kiểm tra điều gì đầu tiên?

15 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 01

Câu 15: Mục tiêu chính của giai đoạn gỡ lỗi (debugging) là gì?

16 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 01

Câu 16: Khi kiểm thử một chương trình tính toán, việc kiểm tra với các giá trị đầu vào lớn hoặc rất nhỏ nằm gần giới hạn của kiểu dữ liệu (ví dụ: số nguyên lớn nhất, số thực gần 0) nhằm mục đích gì?

17 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 01

Câu 17: Bạn đang gỡ lỗi một chương trình và nghi ngờ một biến có giá trị không chính xác sau một loạt phép tính. Kỹ thuật gỡ lỗi nào sau đây hiệu quả nhất để theo dõi sự thay đổi giá trị của biến đó qua từng bước thực thi?

18 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 01

Câu 18: Loại lỗi nào sau đây khó phát hiện nhất chỉ bằng cách nhìn vào mã nguồn mà không chạy thử?

19 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 01

Câu 19: Khi thiết kế bộ dữ liệu kiểm thử cho một chương trình, tại sao việc bao gồm các trường hợp đầu vào không hợp lệ (invalid input) lại quan trọng?

20 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 01

Câu 20: Xem xét đoạn mã Python sau:

def divide(a, b):
  return a / b

result = divide(10, 2)
print(result)


Nếu bạn thay đổi dòng `result = divide(10, 2)` thành `result = divide(10, 0)`, lỗi ngoại lệ nào sẽ xảy ra?

21 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 01

Câu 21: Quá trình gỡ lỗi thường bao gồm các bước theo thứ tự nào sau đây?

22 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 01

Câu 22: Công cụ sinh dữ liệu kiểm thử (Test data generator) có vai trò gì trong quá trình kiểm thử chương trình?

23 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 01

Câu 23: Khi kiểm thử một chức năng tìm kiếm trong một danh sách, bộ dữ liệu kiểm thử nào sau đây *ít hữu ích nhất* để phát hiện lỗi liên quan đến các trường hợp đặc biệt?

24 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 01

Câu 24: Lỗi nào sau đây là kết quả của việc viết mã sai quy tắc ngữ pháp của ngôn ngữ lập trình?

25 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 01

Câu 25: Xem xét đoạn mã Python sau:

numbers = [1, 2, 3]
for i in range(4):
  print(numbers[i])


Khi thực thi, đoạn mã này sẽ gây ra lỗi gì và tại dòng nào?

26 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 01

Câu 26: Trong quá trình gỡ lỗi, sau khi xác định được nguyên nhân của lỗi, bước tiếp theo quan trọng nhất là gì?

27 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 01

Câu 27: Việc thiết kế các bộ dữ liệu kiểm thử nên được thực hiện vào thời điểm nào trong vòng đời phát triển phần mềm?

28 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 01

Câu 28: Bạn đang viết một chương trình xử lý ngày tháng. Bộ dữ liệu kiểm thử nào sau đây là ví dụ về kiểm thử trường hợp biên (boundary case) cho ngày trong tháng?

29 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 01

Câu 29: Xem xét đoạn mã Python sau:

def process_list(data):
  total = 0
  for item in data:
    total += item
  return total / len(data)

result = process_list([])
print(result)


Khi chạy đoạn mã này với danh sách rỗng `[]`, lỗi ngoại lệ nào sẽ xảy ra tại dòng `return total / len(data)`?

30 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 01

Câu 30: Công cụ nào sau đây *không* phải là một công cụ hoặc kỹ thuật trực tiếp hỗ trợ quá trình gỡ lỗi (debugging)?

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình - Đề 02

Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình - Đề 02 được xây dựng với nhiều câu hỏi chất lượng, sát với nội dung chương trình học, giúp bạn dễ dàng ôn tập và kiểm tra kiến thức hiệu quả. Hãy cùng bắt đầu làm bài tập trắc nghiệm ngay để nâng cao hiểu biết và chuẩn bị tốt cho kỳ thi sắp tới!

Câu 1: Mục đích chính của quá trình kiểm thử (testing) chương trình là gì?

  • A. Tìm ra lỗi và các khuyết điểm trong chương trình.
  • B. Sửa chữa các lỗi đã được phát hiện.
  • C. Nâng cao tốc độ thực thi của chương trình.
  • D. Thêm các tính năng mới cho chương trình.

Câu 2: Khi nào thì quá trình gỡ lỗi (debugging) được thực hiện?

  • A. Trước khi viết mã chương trình.
  • B. Song song với quá trình viết mã lần đầu.
  • C. Sau khi kiểm thử phát hiện ra lỗi.
  • D. Chỉ khi chương trình đã hoàn thành và triển khai.

Câu 3: Xem xét đoạn mã Python sau:
```python
x = 10
y = 0
z = x / y
print(z)
```
Khi chạy đoạn mã này, loại lỗi nào có khả năng xảy ra nhất?

  • A. Syntax Error
  • B. Runtime Error
  • C. Logic Error
  • D. Name Error

Câu 4: Một chương trình được viết bằng Python báo lỗi `TypeError`. Điều này thường có nghĩa là gì?

  • A. Có lỗi về cú pháp trong mã nguồn.
  • B. Chương trình cố gắng truy cập một biến chưa được khai báo.
  • C. Chương trình thực hiện phép chia cho số không.
  • D. Một thao tác được áp dụng cho kiểu dữ liệu không tương thích.

Câu 5: Lỗi logic (Logic Error) là loại lỗi khó phát hiện nhất bằng các công cụ tự động vì:

  • A. Chương trình vẫn chạy mà không báo lỗi, nhưng cho kết quả sai.
  • B. Lỗi chỉ xảy ra trên một hệ điều hành cụ thể.
  • C. Lỗi liên quan đến phần cứng máy tính.
  • D. Lỗi chỉ xuất hiện khi kết nối mạng bị gián đoạn.

Câu 6: Để kiểm thử một hàm tính căn bậc hai, ngoài các số dương thông thường, bạn nên sử dụng bộ dữ liệu kiểm thử nào để tăng khả năng phát hiện lỗi?

  • A. Chỉ các số dương lớn.
  • B. Số 0 và các số âm.
  • C. Chỉ các số nguyên dương.
  • D. Chỉ các số thực dương.

Câu 7: Khi một bộ dữ liệu kiểm thử (test case) cho kết quả đầu ra khác với kết quả mong đợi, bước tiếp theo trong quy trình gỡ lỗi là gì?

  • A. Phân tích lỗi để xác định nguyên nhân.
  • B. Tạo thêm nhiều bộ dữ liệu kiểm thử khác.
  • C. Viết lại toàn bộ chương trình.
  • D. Bỏ qua lỗi nếu nó không nghiêm trọng.

Câu 8: Công cụ nào sau đây thường được sử dụng trong phần mềm soạn thảo lập trình (IDE) để giúp gỡ lỗi bằng cách cho phép chạy từng dòng mã và kiểm tra giá trị biến?

  • A. Trình biên dịch (Compiler)
  • B. Trình thông dịch (Interpreter)
  • C. Công cụ tối ưu hóa mã nguồn.
  • D. Công cụ gỡ lỗi (Debugger).

Câu 9: Việc sử dụng lệnh `print()` để in giá trị của các biến tại các điểm khác nhau trong chương trình nhằm mục đích gì trong quá trình gỡ lỗi?

  • A. Làm cho chương trình chạy nhanh hơn.
  • B. Tạo giao diện người dùng cho chương trình.
  • C. Theo dõi giá trị của các biến tại các thời điểm thực thi.
  • D. Thay đổi luồng thực thi của chương trình.

Câu 10: Khi kiểm thử một chương trình xử lý dữ liệu đầu vào từ người dùng, việc sử dụng các bộ dữ liệu ngẫu nhiên trong miền xác định của chương trình có ý nghĩa gì?

  • A. Đảm bảo chương trình luôn cho kết quả đúng.
  • B. Tăng khả năng phát hiện các lỗi tiềm ẩn ở các trường hợp ít gặp.
  • C. Giảm thiểu số lượng bộ dữ liệu kiểm thử cần thiết.
  • D. Chỉ áp dụng cho kiểm thử lỗi cú pháp.

Câu 11: Xem xét đoạn mã Python sau:
```python
my_list = [1, 2, 3]
print(my_list[3])
```
Đoạn mã này sẽ gây ra loại lỗi nào khi thực thi?

  • A. IndexError
  • B. KeyError
  • C. AttributeError
  • D. SyntaxError

Câu 12: Một chương trình tính tổng các số từ 1 đến N. Người lập trình viết:
```python
n = int(input())
tong = 0
for i in range(n):
tong = tong + i
print(tong)
```
Nếu nhập N=3, chương trình in ra 3 (thay vì 6). Đây là loại lỗi gì và nó xảy ra ở đâu?

  • A. Syntax Error ở dòng 4.
  • B. Runtime Error (TypeError) ở dòng 4.
  • C. Name Error ở dòng 4.
  • D. Logic Error do sử dụng `range(n)` thay vì `range(1, n+1)`.

Câu 13: Khi sử dụng công cụ gỡ lỗi (debugger) trong IDE, "bước qua" (step over) một dòng lệnh gọi hàm có nghĩa là gì?

  • A. Thực thi từng dòng lệnh bên trong hàm được gọi.
  • B. Thực thi toàn bộ hàm được gọi như một khối duy nhất và dừng lại ở dòng tiếp theo sau lời gọi hàm.
  • C. Bỏ qua không thực thi dòng lệnh gọi hàm đó.
  • D. Dừng chương trình ngay lập tức.

Câu 14: Tại sao việc kiểm thử với các giá trị đầu vào nằm ở ranh giới (boundary values) của miền giá trị hợp lệ lại quan trọng?

  • A. Các giá trị ranh giới làm chương trình chạy nhanh hơn.
  • B. Các giá trị ranh giới luôn là các giá trị hợp lệ.
  • C. Lỗi thường có xu hướng xảy ra tại hoặc gần các giá trị ranh giới.
  • D. Kiểm thử giá trị ranh giới giúp phát hiện lỗi cú pháp.

Câu 15: Xem xét đoạn mã Python sau:
```python
def calculate_discount(price, percentage):
if percentage > 100:
return price
discount_amount = price * (percentage / 100)
return price - discount_amount

final_price = calculate_discount(100, 150)
print(final_price)
```
Đoạn mã này có loại lỗi nào?

  • A. Syntax Error
  • B. Runtime Error (ZeroDivisionError)
  • C. Logic Error
  • D. Name Error

Câu 16: Công việc nào sau đây KHÔNG phải là một phần của quá trình gỡ lỗi (debugging)?

  • A. Xác định vị trí lỗi trong mã nguồn.
  • B. Tìm hiểu nguyên nhân gây ra lỗi.
  • C. Sửa đổi mã nguồn để khắc phục lỗi.
  • D. Thiết kế các bộ dữ liệu kiểm thử mới.

Câu 17: Khi gặp lỗi `NameError` trong Python, nguyên nhân phổ biến nhất là gì?

  • A. Sử dụng một biến hoặc hàm chưa được định nghĩa.
  • B. Chia một số cho không.
  • C. Truy cập một chỉ số ngoài phạm vi của danh sách.
  • D. Thực hiện thao tác với kiểu dữ liệu không phù hợp.

Câu 18: Sau khi đã sửa một lỗi trong chương trình, bước quan trọng tiếp theo để đảm bảo chất lượng là gì?

  • A. Chỉ cần kiểm thử lại riêng phần mã vừa sửa.
  • B. Chuyển sang làm việc khác mà không cần kiểm thử lại.
  • C. Kiểm thử lại chương trình với bộ dữ liệu đã phát hiện ra lỗi và các bộ dữ liệu quan trọng khác.
  • D. Xóa bỏ bộ dữ liệu kiểm thử đã phát hiện ra lỗi.

Câu 19: Đâu là sự khác biệt cốt lõi giữa lỗi cú pháp (Syntax Error) và lỗi thời gian chạy (Runtime Error)?

  • A. Lỗi cú pháp làm sai kết quả, lỗi thời gian chạy dừng chương trình.
  • B. Lỗi cú pháp được phát hiện trước khi chạy, lỗi thời gian chạy phát hiện khi đang chạy.
  • C. Lỗi cú pháp do sai logic, lỗi thời gian chạy do sai cú pháp.
  • D. Lỗi cú pháp chỉ xảy ra với biến, lỗi thời gian chạy chỉ xảy ra với hàm.

Câu 20: Bạn đang gỡ lỗi một chương trình và nghi ngờ một biến `count` có giá trị không đúng tại một điểm nhất định. Công cụ hoặc kỹ thuật nào giúp bạn kiểm tra giá trị của `count` tại điểm đó mà không làm chương trình dừng lại?

  • A. Chèn lệnh `print(count)` vào mã nguồn tại điểm đó.
  • B. Đặt một điểm dừng (breakpoint) tại điểm đó.
  • C. Sử dụng tính năng "step into" trong debugger.
  • D. Xóa bỏ biến `count`.

Câu 21: Một bộ dữ liệu kiểm thử (test case) bao gồm những thành phần cơ bản nào?

  • A. Chỉ dữ liệu đầu vào.
  • B. Chỉ kết quả đầu ra mong đợi.
  • C. Mã nguồn của chương trình.
  • D. Dữ liệu đầu vào và kết quả đầu ra mong đợi.

Câu 22: Khi cố gắng cô lập một lỗi (isolate a bug) trong chương trình, kỹ thuật nào sau đây thường hiệu quả?

  • A. Chạy lại toàn bộ chương trình nhiều lần.
  • B. Chia nhỏ chương trình và kiểm tra từng phần một.
  • C. Thay đổi ngẫu nhiên các dòng mã.
  • D. Tăng tốc độ thực thi của chương trình.

Câu 23: Giả sử bạn có một hàm tính diện tích hình chữ nhật nhận hai tham số `chieu_dai` và `chieu_rong`. Bạn nên kiểm thử hàm này với bộ dữ liệu nào để kiểm tra các trường hợp đặc biệt?

  • A. Các cặp số dương lớn.
  • B. Các cặp số dương nhỏ.
  • C. Một hoặc cả hai tham số có giá trị 0 hoặc âm.
  • D. Chỉ các cặp số nguyên dương.

Câu 24: Xem xét đoạn mã Python sau:
```python
my_dict = {"a": 1, "b": 2}
print(my_dict["c"])
```
Đoạn mã này sẽ gây ra loại lỗi nào khi thực thi?

  • A. KeyError
  • B. IndexError
  • C. NameError
  • D. TypeError

Câu 25: Quá trình "step into" trong công cụ gỡ lỗi (debugger) có nghĩa là gì?

  • A. Bỏ qua không thực thi dòng lệnh hiện tại.
  • B. Thực thi toàn bộ chương trình cho đến khi gặp lỗi.
  • C. Thực thi toàn bộ hàm được gọi và dừng lại sau lời gọi hàm.
  • D. Nếu dòng lệnh hiện tại là lời gọi hàm, đi vào thực thi dòng đầu tiên của hàm đó.

Câu 26: Tại sao việc ghi chép lại các lỗi đã tìm thấy và cách khắc phục lại hữu ích?

  • A. Để làm cho chương trình chạy nhanh hơn.
  • B. Giúp học hỏi kinh nghiệm, tránh lặp lại lỗi cũ và gỡ lỗi hiệu quả hơn trong tương lai.
  • C. Để chia sẻ lỗi với người khác.
  • D. Để làm tăng kích thước của mã nguồn.

Câu 27: Khi kiểm thử một chương trình tính toán phức tạp, nếu kết quả sai, chiến lược nào giúp bạn nhanh chóng thu hẹp phạm vi tìm kiếm lỗi?

  • A. Kiểm tra các giá trị trung gian tại các bước tính toán khác nhau.
  • B. Thêm nhiều vòng lặp vào chương trình.
  • C. Thay đổi kiểu dữ liệu của các biến ngẫu nhiên.
  • D. Xóa bớt các dòng mã không cần thiết.

Câu 28: Giả sử bạn đã viết một hàm sắp xếp danh sách và đã kiểm thử với một vài danh sách mẫu. Để kiểm thử kỹ lưỡng hơn, bạn nên tạo các bộ dữ liệu kiểm thử như thế nào?

  • A. Chỉ các danh sách có kích thước lớn.
  • B. Chỉ các danh sách chứa số nguyên dương.
  • C. Chỉ các danh sách đã được sắp xếp.
  • D. Danh sách rỗng, danh sách một phần tử, danh sách đã sắp xếp, danh sách ngược thứ tự, danh sách có phần tử trùng lặp.

Câu 29: Xem xét đoạn mã Python sau:
```python
def divide(a, b):
return a / b

result = divide(10, 2)
print(result)
```
Nếu thay `result = divide(10, 2)` bằng `result = divide(10,

  • A. ZeroDivisionError
  • B. SyntaxError
  • C. TypeError
  • D. NameError

Câu 30: Quá trình kiểm thử và gỡ lỗi là một vòng lặp lặp đi lặp lại (iterative process). Điều này có nghĩa là gì?

  • A. Sau khi sửa lỗi, chương trình cần được kiểm thử lại, và quá trình tìm lỗi/sửa lỗi có thể lặp lại nhiều lần.
  • B. Chương trình chỉ cần được kiểm thử một lần duy nhất.
  • C. Gỡ lỗi chỉ được thực hiện sau khi toàn bộ chương trình đã hoàn thành.
  • D. Kiểm thử và gỡ lỗi không liên quan đến nhau.

1 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 02

Câu 1: Mục đích chính của quá trình kiểm thử (testing) chương trình là gì?

2 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 02

Câu 2: Khi nào thì quá trình gỡ lỗi (debugging) được thực hiện?

3 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 02

Câu 3: Xem xét đoạn mã Python sau:
```python
x = 10
y = 0
z = x / y
print(z)
```
Khi chạy đoạn mã này, loại lỗi nào có khả năng xảy ra nhất?

4 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 02

Câu 4: Một chương trình được viết bằng Python báo lỗi `TypeError`. Điều này thường có nghĩa là gì?

5 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 02

Câu 5: Lỗi logic (Logic Error) là loại lỗi khó phát hiện nhất bằng các công cụ tự động vì:

6 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 02

Câu 6: Để kiểm thử một hàm tính căn bậc hai, ngoài các số dương thông thường, bạn nên sử dụng bộ dữ liệu kiểm thử nào để tăng khả năng phát hiện lỗi?

7 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 02

Câu 7: Khi một bộ dữ liệu kiểm thử (test case) cho kết quả đầu ra khác với kết quả mong đợi, bước tiếp theo trong quy trình gỡ lỗi là gì?

8 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 02

Câu 8: Công cụ nào sau đây thường được sử dụng trong phần mềm soạn thảo lập trình (IDE) để giúp gỡ lỗi bằng cách cho phép chạy từng dòng mã và kiểm tra giá trị biến?

9 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 02

Câu 9: Việc sử dụng lệnh `print()` để in giá trị của các biến tại các điểm khác nhau trong chương trình nhằm mục đích gì trong quá trình gỡ lỗi?

10 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 02

Câu 10: Khi kiểm thử một chương trình xử lý dữ liệu đầu vào từ người dùng, việc sử dụng các bộ dữ liệu ngẫu nhiên trong miền xác định của chương trình có ý nghĩa gì?

11 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 02

Câu 11: Xem xét đoạn mã Python sau:
```python
my_list = [1, 2, 3]
print(my_list[3])
```
Đoạn mã này sẽ gây ra loại lỗi nào khi thực thi?

12 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 02

Câu 12: Một chương trình tính tổng các số từ 1 đến N. Người lập trình viết:
```python
n = int(input())
tong = 0
for i in range(n):
tong = tong + i
print(tong)
```
Nếu nhập N=3, chương trình in ra 3 (thay vì 6). Đây là loại lỗi gì và nó xảy ra ở đâu?

13 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 02

Câu 13: Khi sử dụng công cụ gỡ lỗi (debugger) trong IDE, 'bước qua' (step over) một dòng lệnh gọi hàm có nghĩa là gì?

14 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 02

Câu 14: Tại sao việc kiểm thử với các giá trị đầu vào nằm ở ranh giới (boundary values) của miền giá trị hợp lệ lại quan trọng?

15 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 02

Câu 15: Xem xét đoạn mã Python sau:
```python
def calculate_discount(price, percentage):
if percentage > 100:
return price
discount_amount = price * (percentage / 100)
return price - discount_amount

final_price = calculate_discount(100, 150)
print(final_price)
```
Đoạn mã này có loại lỗi nào?

16 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 02

Câu 16: Công việc nào sau đây KHÔNG phải là một phần của quá trình gỡ lỗi (debugging)?

17 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 02

Câu 17: Khi gặp lỗi `NameError` trong Python, nguyên nhân phổ biến nhất là gì?

18 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 02

Câu 18: Sau khi đã sửa một lỗi trong chương trình, bước quan trọng tiếp theo để đảm bảo chất lượng là gì?

19 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 02

Câu 19: Đâu là sự khác biệt cốt lõi giữa lỗi cú pháp (Syntax Error) và lỗi thời gian chạy (Runtime Error)?

20 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 02

Câu 20: Bạn đang gỡ lỗi một chương trình và nghi ngờ một biến `count` có giá trị không đúng tại một điểm nhất định. Công cụ hoặc kỹ thuật nào giúp bạn kiểm tra giá trị của `count` tại điểm đó mà không làm chương trình dừng lại?

21 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 02

Câu 21: Một bộ dữ liệu kiểm thử (test case) bao gồm những thành phần cơ bản nào?

22 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 02

Câu 22: Khi cố gắng cô lập một lỗi (isolate a bug) trong chương trình, kỹ thuật nào sau đây thường hiệu quả?

23 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 02

Câu 23: Giả sử bạn có một hàm tính diện tích hình chữ nhật nhận hai tham số `chieu_dai` và `chieu_rong`. Bạn nên kiểm thử hàm này với bộ dữ liệu nào để kiểm tra các trường hợp đặc biệt?

24 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 02

Câu 24: Xem xét đoạn mã Python sau:
```python
my_dict = {'a': 1, 'b': 2}
print(my_dict['c'])
```
Đoạn mã này sẽ gây ra loại lỗi nào khi thực thi?

25 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 02

Câu 25: Quá trình 'step into' trong công cụ gỡ lỗi (debugger) có nghĩa là gì?

26 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 02

Câu 26: Tại sao việc ghi chép lại các lỗi đã tìm thấy và cách khắc phục lại hữu ích?

27 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 02

Câu 27: Khi kiểm thử một chương trình tính toán phức tạp, nếu kết quả sai, chiến lược nào giúp bạn nhanh chóng thu hẹp phạm vi tìm kiếm lỗi?

28 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 02

Câu 28: Giả sử bạn đã viết một hàm sắp xếp danh sách và đã kiểm thử với một vài danh sách mẫu. Để kiểm thử kỹ lưỡng hơn, bạn nên tạo các bộ dữ liệu kiểm thử như thế nào?

29 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 02

Câu 29: Xem xét đoạn mã Python sau:
```python
def divide(a, b):
return a / b

result = divide(10, 2)
print(result)
```
Nếu thay `result = divide(10, 2)` bằng `result = divide(10, "abc")`, loại lỗi nào sẽ xảy ra?

30 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 02

Câu 30: Quá trình kiểm thử và gỡ lỗi là một vòng lặp lặp đi lặp lại (iterative process). Điều này có nghĩa là gì?

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình - Đề 03

Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình - Đề 03 được xây dựng với nhiều câu hỏi chất lượng, sát với nội dung chương trình học, giúp bạn dễ dàng ôn tập và kiểm tra kiến thức hiệu quả. Hãy cùng bắt đầu làm bài tập trắc nghiệm ngay để nâng cao hiểu biết và chuẩn bị tốt cho kỳ thi sắp tới!

Câu 1: Trong quy trình phát triển phần mềm, kiểm thử (testing) đóng vai trò quan trọng nhất ở giai đoạn nào?

  • A. Thiết kế hệ thống
  • B. Viết mã nguồn ban đầu
  • C. Phân tích yêu cầu
  • D. Xuyên suốt các giai đoạn, đặc biệt là sau khi viết mã

Câu 2: Lỗi cú pháp (Syntax Error) là loại lỗi gì trong chương trình?

  • A. Lỗi do viết sai quy tắc ngôn ngữ lập trình, khiến chương trình không thể dịch hoặc chạy.
  • B. Lỗi xảy ra khi chương trình đang chạy do các điều kiện không mong muốn.
  • C. Lỗi do thuật toán sai, chương trình chạy nhưng cho kết quả không đúng.
  • D. Lỗi do thiếu tài nguyên hệ thống.

Câu 3: Xem xét đoạn mã Python sau:
```python
def tinh_tong(a, b):
return a + b

ket_qua = tinh_tong(5,

  • A. SyntaxError
  • B. TypeError
  • C. NameError
  • D. ZeroDivisionError

Câu 4: Loại lỗi nào sau đây xảy ra khi chương trình chạy đúng cú pháp, nhưng gặp phải một điều kiện không thể xử lý được trong quá trình thực thi, ví dụ chia cho 0 hoặc truy cập phần tử ngoài phạm vi mảng?

  • A. Lỗi cú pháp (Syntax Error)
  • B. Lỗi logic (Semantic/Logic Error)
  • C. Lỗi ngoại lệ (Runtime Error/Exception)
  • D. Lỗi thiết kế (Design Error)

Câu 5: Gỡ lỗi (debugging) là quá trình gì?

  • A. Viết mã nguồn chương trình.
  • B. Chạy thử chương trình với dữ liệu mẫu.
  • C. Thiết kế giao diện người dùng.
  • D. Tìm kiếm, phân tích và sửa chữa các lỗi trong chương trình.

Câu 6: Tại sao việc kiểm thử chương trình với các bộ dữ liệu biên (boundary data) lại quan trọng?

  • A. Vì lỗi thường có xu hướng xảy ra tại hoặc gần các giá trị giới hạn của dữ liệu đầu vào.
  • B. Vì dữ liệu biên là loại dữ liệu dễ nhập nhất.
  • C. Vì kiểm thử dữ liệu biên giúp tăng tốc độ thực thi chương trình.
  • D. Vì dữ liệu biên đại diện cho hầu hết các trường hợp sử dụng thông thường.

Câu 7: Phương pháp kiểm thử hộp đen (Black-box Testing) là gì?

  • A. Kiểm thử dựa vào cấu trúc nội bộ của mã nguồn.
  • B. Kiểm thử dựa vào đặc tả chức năng và yêu cầu, không quan tâm đến cấu trúc mã nguồn.
  • C. Kiểm thử chỉ bởi người dùng cuối.
  • D. Kiểm thử tự động bằng công cụ phần mềm.

Câu 8: Xem xét đoạn mã Python sau:
```python
def kiem_tra_tuoi(tuoi):
if tuoi < 18: print(

  • A. 2 bộ dữ liệu (ví dụ: 17 và 18)
  • B. 1 bộ dữ liệu (ví dụ: 20)
  • C. 3 bộ dữ liệu (ví dụ: 10, 18, 30)
  • D. Không thể xác định được.

Câu 9: Công cụ hoặc kỹ thuật nào sau đây giúp tạm dừng chương trình tại một dòng mã cụ thể để kiểm tra giá trị của các biến tại thời điểm đó?

  • A. Sử dụng hàm `input()`.
  • B. Viết lại toàn bộ chương trình.
  • C. Chỉ chạy chương trình một lần duy nhất.
  • D. Đặt điểm dừng (breakpoint) trong môi trường phát triển tích hợp (IDE).

Câu 10: Lỗi logic (Semantic/Logic Error) là loại lỗi nào?

  • A. Chương trình không thể biên dịch hoặc chạy.
  • B. Chương trình bị dừng đột ngột do ngoại lệ.
  • C. Chương trình chạy bình thường nhưng cho kết quả sai lệch so với yêu cầu.
  • D. Chương trình tiêu tốn quá nhiều bộ nhớ.

Câu 11: Khi gặp lỗi `NameError` trong Python, nguyên nhân phổ biến nhất là gì?

  • A. Sử dụng một biến hoặc hàm chưa được định nghĩa.
  • B. Thực hiện phép chia cho số 0.
  • C. Truy cập phần tử ngoài phạm vi của danh sách.
  • D. Sai kiểu dữ liệu trong một phép toán.

Câu 12: Một chương trình tính diện tích hình chữ nhật nhận vào chiều dài `dai` và chiều rộng `rong`. Lập trình viên viết công thức là `dien_tich = (dai + rong) * 2`. Chương trình này mắc loại lỗi gì?

  • A. Lỗi cú pháp (Syntax Error)
  • B. Lỗi logic (Semantic/Logic Error)
  • C. Lỗi ngoại lệ (Runtime Error/Exception)
  • D. Không có lỗi.

Câu 13: Kỹ thuật gỡ lỗi nào hiệu quả nhất để theo dõi giá trị của các biến và luồng thực thi của chương trình từng bước một?

  • A. Chỉ đọc lại mã nguồn.
  • B. Xóa bỏ tất cả các hàm `print()`.
  • C. Sử dụng trình gỡ lỗi (debugger) với các chức năng như bước qua lệnh (step over), bước vào lệnh (step into), kiểm tra biến.
  • D. Chạy chương trình nhiều lần với cùng một bộ dữ liệu.

Câu 14: Xem xét đoạn mã Python sau:
```python
danh_sach = [1, 2, 3]
print(danh_sach[3])
```
Khi chạy đoạn mã này, loại lỗi nào sẽ xảy ra?

  • A. IndexError
  • B. KeyError
  • C. ValueError
  • D. AttributeError

Câu 15: Tại sao việc kiểm thử hồi quy (Regression Testing) lại cần thiết sau khi sửa lỗi hoặc thêm tính năng mới vào chương trình?

  • A. Để kiểm tra các tính năng mới hoạt động đúng.
  • B. Để đảm bảo các thay đổi không gây ra lỗi mới hoặc làm hỏng các tính năng hiện có.
  • C. Để tăng tốc độ thực thi của chương trình.
  • D. Để kiểm tra hiệu suất của chương trình.

Câu 16: Trong quá trình gỡ lỗi, bước đầu tiên và quan trọng nhất là gì?

  • A. Xác định và cô lập vị trí xảy ra lỗi.
  • B. Sửa lỗi ngay lập tức khi nghi ngờ.
  • C. Chạy lại chương trình nhiều lần.
  • D. Hỏi người khác cách sửa lỗi.

Câu 17: Xem xét đoạn mã Python sau được dùng để tính trung bình cộng các số dương trong một danh sách:
```python
def tinh_trung_binh_duong(danh_sach):
tong = 0
dem = 0
for so in danh_sach:
if so > 0:
tong += so
dem -= 1 # Lỗi logic
return tong / dem

data = [1, -2, 3, 0, 4]
print(tinh_trung_binh_duong(data))
```
Chương trình này có lỗi logic. Bộ dữ liệu test nào sau đây KHÔNG giúp phát hiện ra lỗi logic này (tức là vẫn chạy nhưng cho kết quả sai)?

  • D.

Câu 18: Khi kiểm thử một hàm xử lý nhập liệu từ người dùng, bạn nên chuẩn bị những bộ dữ liệu test như thế nào?

  • A. Chỉ các giá trị đúng theo yêu cầu.
  • B. Chỉ các giá trị sai hoặc không hợp lệ.
  • C. Chỉ các giá trị biên của miền hợp lệ.
  • D. Bao gồm cả giá trị hợp lệ, giá trị biên, và giá trị không hợp lệ hoặc bất thường.

Câu 19: Công cụ nào sau đây có thể tự động tạo ra các bộ dữ liệu test dựa trên các quy tắc hoặc mô hình nhất định?

  • A. Công cụ sinh dữ liệu test tự động.
  • B. Trình soạn thảo văn bản đơn giản.
  • C. Trình duyệt web.
  • D. Phần mềm nghe nhạc.

Câu 20: Xem xét đoạn mã Python sau:
```python
def chia_hai_so():
try:
a = float(input(

  • A. Loi: Khong the chia cho khong!
  • B. Ket qua: ... (một số nào đó)
  • C. Loi: Du lieu nhap vao khong hop le!
  • D. Chương trình bị dừng đột ngột không báo lỗi.

Câu 21: Mục đích chính của việc sử dụng khối `try...except` trong Python là gì?

  • A. Để tăng tốc độ thực thi chương trình.
  • B. Để định nghĩa các hàm mới.
  • C. Để lặp lại một khối lệnh nhiều lần.
  • D. Để xử lý các lỗi ngoại lệ (exception) có thể xảy ra trong quá trình chạy chương trình một cách có kiểm soát.

Câu 22: Khi phát hiện một lỗi trong chương trình, bước tiếp theo trong quy trình gỡ lỗi hiệu quả là gì?

  • A. Ngừng viết mã và bỏ qua lỗi đó.
  • B. Phân tích nguyên nhân gốc rễ của lỗi.
  • C. Thử sửa lỗi bằng cách thay đổi ngẫu nhiên mã nguồn.
  • D. Thông báo lỗi cho người dùng cuối.

Câu 23: Phương pháp kiểm thử hộp trắng (White-box Testing) tập trung vào khía cạnh nào của chương trình?

  • A. Cấu trúc nội bộ của mã nguồn, bao gồm các đường đi thực thi, nhánh lệnh, vòng lặp.
  • B. Chức năng và yêu cầu của chương trình từ góc nhìn người dùng.
  • C. Hiệu suất của chương trình.
  • D. Giao diện người dùng.

Câu 24: Xem xét đoạn mã Python sau:
```python
def kiem_tra_so_chan(so):
if so % 2 == 0:
return True
else:
return False

print(kiem_tra_so_chan(5))
print(kiem_tra_so_chan(10))
```
Để kiểm thử hàm `kiem_tra_so_chan` một cách hiệu quả bằng phương pháp hộp đen, bạn nên sử dụng ít nhất những bộ dữ liệu đầu vào nào?

  • A. Chỉ một số chẵn (ví dụ: 4).
  • B. Chỉ một số lẻ (ví dụ: 7).
  • C. Ít nhất một số chẵn và một số lẻ (ví dụ: 4 và 7).
  • D. Chỉ số 0.

Câu 25: Việc ghi lại quy trình kiểm thử và các lỗi tìm thấy có lợi ích gì?

  • A. Giúp chương trình chạy nhanh hơn.
  • B. Giúp tăng số lượng lỗi tìm thấy.
  • C. Chỉ cần thiết khi chương trình rất lớn.
  • D. Giúp theo dõi tiến độ sửa lỗi, kiểm thử lại dễ dàng hơn và học hỏi kinh nghiệm để tránh lặp lại lỗi tương tự trong tương lai.

Câu 26: Xem xét đoạn mã Python sau:
```python
def tinh_giai_thua(n):
if n == 0:
return 1
else:
return n * tinh_giai_thua(n-1)

print(tinh_giai_thua(-5))
```
Khi chạy đoạn mã này với đầu vào `-5`, chương trình có thể gặp phải vấn đề gì nghiêm trọng (dù không phải là lỗi ngoại lệ được báo rõ ràng ngay lập tức)?

  • A. Lặp vô hạn (Infinite recursion) dẫn đến tràn bộ nhớ đệm (stack overflow).
  • B. Chia cho số 0.
  • C. Truy cập ngoài phạm vi danh sách.
  • D. Lỗi cú pháp.

Câu 27: Tầm quan trọng của việc kiểm thử sớm trong chu trình phát triển phần mềm là gì?

  • A. Chỉ giúp tìm lỗi cú pháp.
  • B. Làm chậm quá trình phát triển.
  • C. Giúp phát hiện và sửa lỗi sớm, giảm chi phí và thời gian sửa lỗi ở các giai đoạn sau.
  • D. Không mang lại lợi ích đáng kể.

Câu 28: Trong các công cụ hỗ trợ gỡ lỗi, "stepping" (bước qua) một dòng lệnh có ý nghĩa gì?

  • A. Chạy toàn bộ chương trình đến khi gặp lỗi.
  • B. Thực thi dòng lệnh hiện tại và dừng lại ở dòng lệnh tiếp theo.
  • C. Bỏ qua việc thực thi dòng lệnh hiện tại.
  • D. Chạy nhanh qua một khối lệnh mà không dừng lại.

Câu 29: Xem xét đoạn mã Python sau:
```python
def tinh_tich(a, b):
# Mục đích là tính tích a * b
return a + b # Lỗi logic

ket_qua = tinh_tich(3, 4)
print(f

  • A. a=3, b=4 (Kết quả mong đợi là 12, chương trình trả về 7)
  • B. a=0, b=0 (Kết quả mong đợi là 0, chương trình trả về 0 - không phát hiện lỗi)
  • C. a=1, b=0 (Kết quả mong đợi là 0, chương trình trả về 1 - không phát hiện lỗi)
  • D. a=1, b=1 (Kết quả mong đợi là 1, chương trình trả về 2)

Câu 30: Khi gặp lỗi `ValueError` trong Python, nguyên nhân phổ biến nhất là gì?

  • A. Sử dụng biến chưa khai báo.
  • B. Thực hiện phép chia cho 0.
  • C. Giá trị của một đối tượng không đúng kiểu dữ liệu hoặc không hợp lệ cho một thao tác cụ thể (ví dụ: chuyển đổi chuỗi "abc" sang số nguyên).
  • D. Truy cập phần tử ngoài phạm vi danh sách.

1 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 03

Câu 1: Trong quy trình phát triển phần mềm, kiểm thử (testing) đóng vai trò quan trọng nhất ở giai đoạn nào?

2 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 03

Câu 2: Lỗi cú pháp (Syntax Error) là loại lỗi gì trong chương trình?

3 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 03

Câu 3: Xem xét đoạn mã Python sau:
```python
def tinh_tong(a, b):
return a + b

ket_qua = tinh_tong(5, "10")
print(ket_qua)
```
Khi chạy đoạn mã này, loại lỗi nào có khả năng xảy ra?

4 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 03

Câu 4: Loại lỗi nào sau đây xảy ra khi chương trình chạy đúng cú pháp, nhưng gặp phải một điều kiện không thể xử lý được trong quá trình thực thi, ví dụ chia cho 0 hoặc truy cập phần tử ngoài phạm vi mảng?

5 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 03

Câu 5: Gỡ lỗi (debugging) là quá trình gì?

6 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 03

Câu 6: Tại sao việc kiểm thử chương trình với các bộ dữ liệu biên (boundary data) lại quan trọng?

7 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 03

Câu 7: Phương pháp kiểm thử hộp đen (Black-box Testing) là gì?

8 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 03

Câu 8: Xem xét đoạn mã Python sau:
```python
def kiem_tra_tuoi(tuoi):
if tuoi < 18: print("Chua du tuoi") elif tuoi >= 18:
print("Da du tuoi")

kiem_tra_tuoi(17)
kiem_tra_tuoi(18)
kiem_tra_tuoi(25)
```
Nếu muốn kiểm thử đầy đủ logic của hàm `kiem_tra_tuoi` bằng phương pháp hộp trắng (White-box Testing), bạn cần ít nhất bao nhiêu bộ dữ liệu đầu vào để đảm bảo mọi nhánh lệnh (if/elif) đều được thực thi?

9 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 03

Câu 9: Công cụ hoặc kỹ thuật nào sau đây giúp tạm dừng chương trình tại một dòng mã cụ thể để kiểm tra giá trị của các biến tại thời điểm đó?

10 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 03

Câu 10: Lỗi logic (Semantic/Logic Error) là loại lỗi nào?

11 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 03

Câu 11: Khi gặp lỗi `NameError` trong Python, nguyên nhân phổ biến nhất là gì?

12 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 03

Câu 12: Một chương trình tính diện tích hình chữ nhật nhận vào chiều dài `dai` và chiều rộng `rong`. Lập trình viên viết công thức là `dien_tich = (dai + rong) * 2`. Chương trình này mắc loại lỗi gì?

13 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 03

Câu 13: Kỹ thuật gỡ lỗi nào hiệu quả nhất để theo dõi giá trị của các biến và luồng thực thi của chương trình từng bước một?

14 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 03

Câu 14: Xem xét đoạn mã Python sau:
```python
danh_sach = [1, 2, 3]
print(danh_sach[3])
```
Khi chạy đoạn mã này, loại lỗi nào sẽ xảy ra?

15 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 03

Câu 15: Tại sao việc kiểm thử hồi quy (Regression Testing) lại cần thiết sau khi sửa lỗi hoặc thêm tính năng mới vào chương trình?

16 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 03

Câu 16: Trong quá trình gỡ lỗi, bước đầu tiên và quan trọng nhất là gì?

17 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 03

Câu 17: Xem xét đoạn mã Python sau được dùng để tính trung bình cộng các số dương trong một danh sách:
```python
def tinh_trung_binh_duong(danh_sach):
tong = 0
dem = 0
for so in danh_sach:
if so > 0:
tong += so
dem -= 1 # Lỗi logic
return tong / dem

data = [1, -2, 3, 0, 4]
print(tinh_trung_binh_duong(data))
```
Chương trình này có lỗi logic. Bộ dữ liệu test nào sau đây KHÔNG giúp phát hiện ra lỗi logic này (tức là vẫn chạy nhưng cho kết quả sai)?

18 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 03

Câu 18: Khi kiểm thử một hàm xử lý nhập liệu từ người dùng, bạn nên chuẩn bị những bộ dữ liệu test như thế nào?

19 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 03

Câu 19: Công cụ nào sau đây có thể tự động tạo ra các bộ dữ liệu test dựa trên các quy tắc hoặc mô hình nhất định?

20 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 03

Câu 20: Xem xét đoạn mã Python sau:
```python
def chia_hai_so():
try:
a = float(input("Nhap so thu nhat: "))
b = float(input("Nhap so thu hai: "))
ket_qua = a / b
print(f"Ket qua: {ket_qua}")
except ZeroDivisionError:
print("Loi: Khong the chia cho khong!")
except ValueError:
print("Loi: Du lieu nhap vao khong hop le!")

chia_hai_so()
```
Nếu người dùng nhập `10` cho số thứ nhất và `abc` cho số thứ hai, thông báo lỗi nào sẽ xuất hiện?

21 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 03

Câu 21: Mục đích chính của việc sử dụng khối `try...except` trong Python là gì?

22 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 03

Câu 22: Khi phát hiện một lỗi trong chương trình, bước tiếp theo trong quy trình gỡ lỗi hiệu quả là gì?

23 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 03

Câu 23: Phương pháp kiểm thử hộp trắng (White-box Testing) tập trung vào khía cạnh nào của chương trình?

24 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 03

Câu 24: Xem xét đoạn mã Python sau:
```python
def kiem_tra_so_chan(so):
if so % 2 == 0:
return True
else:
return False

print(kiem_tra_so_chan(5))
print(kiem_tra_so_chan(10))
```
Để kiểm thử hàm `kiem_tra_so_chan` một cách hiệu quả bằng phương pháp hộp đen, bạn nên sử dụng ít nhất những bộ dữ liệu đầu vào nào?

25 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 03

Câu 25: Việc ghi lại quy trình kiểm thử và các lỗi tìm thấy có lợi ích gì?

26 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 03

Câu 26: Xem xét đoạn mã Python sau:
```python
def tinh_giai_thua(n):
if n == 0:
return 1
else:
return n * tinh_giai_thua(n-1)

print(tinh_giai_thua(-5))
```
Khi chạy đoạn mã này với đầu vào `-5`, chương trình có thể gặp phải vấn đề gì nghiêm trọng (dù không phải là lỗi ngoại lệ được báo rõ ràng ngay lập tức)?

27 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 03

Câu 27: Tầm quan trọng của việc kiểm thử sớm trong chu trình phát triển phần mềm là gì?

28 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 03

Câu 28: Trong các công cụ hỗ trợ gỡ lỗi, 'stepping' (bước qua) một dòng lệnh có ý nghĩa gì?

29 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 03

Câu 29: Xem xét đoạn mã Python sau:
```python
def tinh_tich(a, b):
# Mục đích là tính tích a * b
return a + b # Lỗi logic

ket_qua = tinh_tich(3, 4)
print(f"Tich cua 3 va 4 la: {ket_qua}")
```
Để phát hiện lỗi logic trong hàm `tinh_tich`, bộ dữ liệu test nào sau đây là hiệu quả nhất?

30 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 03

Câu 30: Khi gặp lỗi `ValueError` trong Python, nguyên nhân phổ biến nhất là gì?

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình - Đề 04

Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình - Đề 04 được xây dựng với nhiều câu hỏi chất lượng, sát với nội dung chương trình học, giúp bạn dễ dàng ôn tập và kiểm tra kiến thức hiệu quả. Hãy cùng bắt đầu làm bài tập trắc nghiệm ngay để nâng cao hiểu biết và chuẩn bị tốt cho kỳ thi sắp tới!

Câu 1: Mục đích chính của việc kiểm thử chương trình là gì?

  • A. Để làm cho chương trình chạy nhanh hơn.
  • B. Để tìm ra lỗi và đảm bảo chương trình hoạt động đúng theo yêu cầu.
  • C. Để chương trình sử dụng ít bộ nhớ hơn.
  • D. Để làm cho mã nguồn dễ đọc hơn.

Câu 2: Đâu là sự khác biệt cơ bản giữa kiểm thử (testing) và gỡ lỗi (debugging)?

  • A. Kiểm thử là sửa lỗi, còn gỡ lỗi là tìm lỗi.
  • B. Kiểm thử chỉ thực hiện sau khi gỡ lỗi hoàn tất.
  • C. Kiểm thử là quá trình tìm ra lỗi, còn gỡ lỗi là quá trình xác định nguyên nhân và sửa lỗi đã tìm thấy.
  • D. Kiểm thử do máy tính thực hiện, gỡ lỗi do lập trình viên thực hiện.

Câu 3: Xét đoạn mã Python sau:

```python
def tinh_tong(a, b):
return a + b

ket_qua = tinh_tong(5,

  • A. TypeError
  • B. SyntaxError
  • C. NameError
  • D. ZeroDivisionError

Câu 4: Lỗi cú pháp (Syntax Error) là loại lỗi gì và thường được phát hiện khi nào?

  • A. Lỗi xảy ra khi chương trình chạy và cố gắng thực hiện một phép tính không hợp lệ, được phát hiện khi chương trình đang thực thi.
  • B. Lỗi logic khiến chương trình chạy nhưng cho kết quả sai, được phát hiện thông qua kiểm thử với dữ liệu đầu vào.
  • C. Lỗi khi sử dụng tên biến hoặc hàm chưa được định nghĩa, được phát hiện khi chương trình chạy.
  • D. Lỗi vi phạm quy tắc viết mã của ngôn ngữ lập trình, thường được phát hiện bởi trình biên dịch hoặc trình thông dịch trước khi chạy.

Câu 5: Khi kiểm thử một chương trình, tại sao việc chọn các bộ dữ liệu kiểm thử (test cases) lại quan trọng?

  • A. Vì việc kiểm thử với mọi bộ dữ liệu đầu vào có thể là không khả thi.
  • B. Vì các bộ dữ liệu kiểm thử đại diện cho các trường hợp sử dụng khác nhau, bao gồm cả trường hợp bình thường, biên và bất thường, giúp phát hiện nhiều loại lỗi.
  • C. Vì việc chọn ngẫu nhiên dữ liệu đầu vào là cách duy nhất để tìm ra lỗi.
  • D. Vì chỉ cần kiểm thử với một bộ dữ liệu đầu vào duy nhất là đủ để đảm bảo chương trình hoạt động đúng.

Câu 6: Xét đoạn mã Python sau:

```python
so_nguoi = 0
tong_tien = 100000

if so_nguoi > 0:
tien_moi_nguoi = tong_tien / so_nguoi
print(tien_moi_nguoi)
else:
print(

  • A. SyntaxError
  • B. TypeError
  • C. ZeroDivisionError
  • D. NameError

Câu 7: Phương pháp gỡ lỗi bằng cách sử dụng các lệnh `print()` hoặc hiển thị giá trị biến trung gian có ưu điểm và nhược điểm gì?

  • A. Ưu điểm: Rất mạnh mẽ để theo dõi luồng thực thi chi tiết; Nhược điểm: Yêu cầu công cụ đặc biệt.
  • B. Ưu điểm: Thích hợp cho các lỗi logic phức tạp; Nhược điểm: Khó theo dõi giá trị biến.
  • C. Ưu điểm: Không cần chỉnh sửa mã nguồn; Nhược điểm: Chỉ dùng được cho lỗi cú pháp.
  • D. Ưu điểm: Đơn giản, dễ thực hiện; Nhược điểm: Có thể làm thay đổi hành vi chương trình, cần xóa bỏ các lệnh `print` sau khi gỡ lỗi.

Câu 8: Khi gặp một lỗi ngoại lệ (exception) như `IndexError` trong Python, điều đó có nghĩa là gì?

  • A. Chương trình đang cố gắng chia cho số 0.
  • B. Chương trình đang cố gắng truy cập một phần tử trong danh sách hoặc chuỗi sử dụng chỉ số không hợp lệ (nằm ngoài phạm vi).
  • C. Chương trình đang cố gắng sử dụng một biến chưa được định nghĩa.
  • D. Chương trình đang cố gắng thực hiện một thao tác với kiểu dữ liệu không phù hợp.

Câu 9: Một chương trình được thiết kế để tính diện tích hình chữ nhật. Khi nhập chiều dài là -5 và chiều rộng là 10, chương trình không báo lỗi nhưng lại trả về kết quả diện tích là -50. Đây là loại lỗi gì?

  • A. SyntaxError
  • B. Runtime Error
  • C. Semantic Error (Logic Error)
  • D. NameError

Câu 10: Để kiểm thử một hàm tính căn bậc hai `can_bac_hai(x)`, những bộ dữ liệu kiểm thử nào sau đây là quan trọng nhất để xem xét?

  • A. Chỉ các số dương lớn ngẫu nhiên.
  • B. Chỉ các số nguyên dương.
  • C. Chỉ các số âm và số 0.
  • D. Số 0, các số dương nhỏ, các số dương lớn, và các số âm (nếu hàm không xử lý được).

Câu 11: Công cụ điểm dừng (breakpoint) trong môi trường phát triển tích hợp (IDE) giúp ích gì trong quá trình gỡ lỗi?

  • A. Dừng chương trình tại một dòng mã cụ thể để lập trình viên có thể kiểm tra giá trị các biến và theo dõi luồng thực thi.
  • B. Tự động sửa lỗi cú pháp trong mã nguồn.
  • C. Sinh ra các bộ dữ liệu kiểm thử ngẫu nhiên.
  • D. Đo thời gian thực thi của các phần khác nhau trong chương trình.

Câu 12: Xét đoạn mã Python sau:

```python
danh_sach = [1, 2, 3, 4, 5]

for i in range(len(danh_sach)):
print(danh_sach[i + 1])
```
Khi chạy đoạn mã này, chương trình sẽ gặp lỗi gì khi i ở giá trị cuối cùng?

  • A. TypeError
  • B. IndexError
  • C. SyntaxError
  • D. NameError

Câu 13: Trong quá trình gỡ lỗi, việc "bước qua" (step over) một dòng lệnh gọi hàm trong debugger có ý nghĩa gì?

  • A. Thực thi từng dòng lệnh bên trong hàm đó.
  • B. Bỏ qua việc thực thi dòng lệnh đó hoàn toàn.
  • C. Thực thi toàn bộ hàm đó như một khối duy nhất và dừng lại ở dòng lệnh ngay sau lời gọi hàm.
  • D. Chạy chương trình cho đến khi gặp breakpoint tiếp theo.

Câu 14: Khi chương trình gặp lỗi `NameError`, nguyên nhân phổ biến nhất là gì?

  • A. Sử dụng một biến hoặc hàm mà chưa được định nghĩa hoặc khai báo trước đó.
  • B. Chia một số cho 0.
  • C. Truy cập vào một chỉ số không hợp lệ trong danh sách.
  • D. Thực hiện thao tác với kiểu dữ liệu không tương thích.

Câu 15: Giả sử bạn có một chương trình tính tổng các số từ 1 đến N. Bạn kiểm thử với N=5 và kết quả mong đợi là 15. Chương trình chạy và cho kết quả là 14. Đây có khả năng là loại lỗi gì?

  • A. SyntaxError
  • B. ZeroDivisionError
  • C. Semantic Error (Logic Error)
  • D. IndexError

Câu 16: Khi kiểm thử một chương trình xử lý dữ liệu nhập từ người dùng, tại sao cần kiểm thử với dữ liệu không hợp lệ (ví dụ: nhập chữ thay vì số)?

  • A. Để chương trình chạy nhanh hơn.
  • B. Để đảm bảo chương trình xử lý các trường hợp ngoại lệ một cách an toàn và không bị treo hoặc gặp lỗi runtime.
  • C. Vì dữ liệu không hợp lệ giúp tìm ra lỗi cú pháp.
  • D. Vì việc kiểm thử với dữ liệu không hợp lệ là không cần thiết.

Câu 17: Quá trình gỡ lỗi hiệu quả thường bắt đầu bằng bước nào?

  • A. Xác định chính xác lỗi xảy ra ở đâu và trong điều kiện nào.
  • B. Thay đổi ngẫu nhiên các dòng mã cho đến khi lỗi biến mất.
  • C. Hỏi người khác sửa lỗi giúp.
  • D. Xóa toàn bộ mã và viết lại từ đầu.

Câu 18: Xét đoạn mã Python sau:

```python
so =

  • A. TypeError
  • B. ZeroDivisionError
  • C. IndexError
  • D. SyntaxError

Câu 19: Trong kiểm thử, "dữ liệu biên" (boundary data) là gì và tại sao nó quan trọng?

  • A. Là dữ liệu ngẫu nhiên được sinh ra.
  • B. Là dữ liệu không hợp lệ để kiểm tra khả năng xử lý lỗi.
  • C. Là các giá trị ở giới hạn trên và dưới của miền dữ liệu hợp lệ (ví dụ: giá trị nhỏ nhất, lớn nhất, hoặc lân cận chúng), thường là nơi dễ phát sinh lỗi.
  • D. Là dữ liệu chỉ dùng để kiểm tra tốc độ chương trình.

Câu 20: Khi sử dụng debugger, chức năng "bước vào" (step into) một dòng lệnh gọi hàm có ý nghĩa gì?

  • A. Thực thi toàn bộ hàm đó và dừng ở dòng tiếp theo.
  • B. Đi vào bên trong hàm được gọi và dừng lại ở dòng lệnh đầu tiên của hàm đó.
  • C. Bỏ qua việc thực thi hàm đó.
  • D. Chạy chương trình đến hết hoặc đến breakpoint tiếp theo.

Câu 21: Một chương trình được yêu cầu đọc danh sách các số từ một tệp và tính tổng. Khi tệp trống, chương trình gặp lỗi `ValueError` khi cố gắng chuyển đổi dữ liệu. Đây là loại lỗi gì?

  • A. SyntaxError
  • B. Semantic Error
  • C. Runtime Error (cụ thể là Exception)
  • D. NameError

Câu 22: Tại sao việc ghi lại (log) các lỗi hoặc thông tin gỡ lỗi vào tệp hoặc console lại hữu ích?

  • A. Để chương trình chạy nhanh hơn.
  • B. Để mã nguồn trở nên ngắn gọn hơn.
  • C. Để tự động sửa lỗi ngay khi chúng xảy ra.
  • D. Để theo dõi luồng thực thi, giá trị biến và các sự kiện trong chương trình, đặc biệt là đối với các lỗi khó tái hiện hoặc xảy ra trong môi trường khác.

Câu 23: Xét một chương trình yêu cầu người dùng nhập một số nguyên dương. Nếu người dùng nhập số 0 hoặc một số âm, chương trình nên xử lý như thế nào để tránh lỗi hoặc đưa ra thông báo phù hợp?

  • A. Sử dụng cấu trúc điều kiện (if/else) hoặc vòng lặp để kiểm tra giá trị nhập vào và yêu cầu nhập lại hoặc báo lỗi nếu không hợp lệ.
  • B. Để chương trình tự động chuyển đổi số âm thành số dương.
  • C. Bỏ qua giá trị nhập vào nếu nó không phải là số nguyên dương.
  • D. Đảm bảo người dùng luôn nhập đúng bằng cách không đưa ra hướng dẫn gì.

Câu 24: Khi gỡ lỗi một chương trình phức tạp, kỹ thuật chia nhỏ vấn đề (isolating the problem) có nghĩa là gì?

  • A. Chia chương trình thành nhiều tệp nhỏ hơn.
  • B. Khoanh vùng phần mã nghi ngờ chứa lỗi và kiểm thử, gỡ lỗi chỉ trong phần đó để loại trừ các phần khác.
  • C. Sử dụng nhiều ngôn ngữ lập trình khác nhau.
  • D. Viết lại toàn bộ chương trình thành các hàm nhỏ hơn.

Câu 25: Xét đoạn mã Python sau:

```python
count = 0
while count < 5: print(count) # Thiếu dòng tăng giá trị biến count ``` Đoạn mã này sẽ gây ra lỗi gì khi chạy?

  • A. SyntaxError
  • B. IndexError
  • C. Vòng lặp vô hạn (Infinite Loop), dẫn đến chương trình không kết thúc hoặc bị treo.
  • D. TypeError

Câu 26: Tại sao việc hiểu rõ yêu cầu và logic của chương trình là bước quan trọng trước khi bắt đầu kiểm thử và gỡ lỗi?

  • A. Để xác định được kết quả mong đợi của các bộ dữ liệu kiểm thử và nhận diện lỗi logic (semantic error).
  • B. Để chương trình tự động sửa lỗi.
  • C. Để chỉ cần kiểm thử với một bộ dữ liệu duy nhất.
  • D. Vì việc hiểu rõ yêu cầu không liên quan đến kiểm thử và gỡ lỗi.

Câu 27: Một chương trình tính điểm trung bình của học sinh từ danh sách điểm. Bạn nhận thấy rằng khi danh sách điểm rỗng, chương trình bị lỗi. Lỗi này có thể được ngăn chặn hoặc xử lý một cách "duyên dáng" (gracefully) bằng cách nào?

  • A. Luôn đảm bảo danh sách điểm không bao giờ rỗng.
  • B. Xóa bỏ phần tính điểm trung bình nếu danh sách rỗng.
  • C. Chỉ tính điểm trung bình nếu danh sách có ít nhất 10 phần tử.
  • D. Kiểm tra xem danh sách có rỗng không trước khi thực hiện phép chia, và đưa ra thông báo phù hợp hoặc trả về giá trị đặc biệt (ví dụ: 0) nếu rỗng.

Câu 28: Xét đoạn mã Python sau:

```python
x = 10
y = 0

# Lỗi ở đây
z = x / y

print(z)
```
Để gỡ lỗi cho đoạn mã này, hành động phù hợp nhất là gì?

  • A. Thay đổi giá trị của `x`.
  • B. Thêm một lệnh `print(z)` trước dòng gây lỗi.
  • C. Kiểm tra giá trị của `y` trước khi thực hiện phép chia và xử lý trường hợp `y` bằng 0.
  • D. Thay đổi tên biến `y` thành `zero`.

Câu 29: Khi kiểm thử một chương trình, việc sử dụng các bộ dữ liệu ngẫu nhiên được sinh ra tự động có ưu điểm gì so với việc chỉ sử dụng các bộ dữ liệu được tạo thủ công?

  • A. Có thể tạo ra số lượng lớn bộ dữ liệu và khám phá các trường hợp đầu vào mà lập trình viên có thể không nghĩ tới.
  • B. Đảm bảo chương trình chạy đúng 100% các trường hợp.
  • C. Chỉ phát hiện được lỗi cú pháp.
  • D. Không cần biết kết quả mong đợi của các bộ dữ liệu này.

Câu 30: Loại lỗi nào sau đây thường khó phát hiện nhất chỉ bằng cách nhìn vào mã nguồn mà không chạy chương trình?

  • A. Syntax Error
  • B. NameError
  • C. Semantic Error (Logic Error)
  • D. TypeError

1 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 04

Câu 1: Mục đích chính của việc kiểm thử chương trình là gì?

2 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 04

Câu 2: Đâu là sự khác biệt cơ bản giữa kiểm thử (testing) và gỡ lỗi (debugging)?

3 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 04

Câu 3: Xét đoạn mã Python sau:

```python
def tinh_tong(a, b):
return a + b

ket_qua = tinh_tong(5, "10")
print(ket_qua)
```
Khi chạy đoạn mã này, chương trình sẽ gặp lỗi gì?

4 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 04

Câu 4: Lỗi cú pháp (Syntax Error) là loại lỗi gì và thường được phát hiện khi nào?

5 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 04

Câu 5: Khi kiểm thử một chương trình, tại sao việc chọn các bộ dữ liệu kiểm thử (test cases) lại quan trọng?

6 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 04

Câu 6: Xét đoạn mã Python sau:

```python
so_nguoi = 0
tong_tien = 100000

if so_nguoi > 0:
tien_moi_nguoi = tong_tien / so_nguoi
print(tien_moi_nguoi)
else:
print("Không có người nào.")
```
Nếu bỏ đi câu lệnh `if so_nguoi > 0: ... else: ...`, chương trình sẽ gặp lỗi gì khi `so_nguoi = 0`?

7 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 04

Câu 7: Phương pháp gỡ lỗi bằng cách sử dụng các lệnh `print()` hoặc hiển thị giá trị biến trung gian có ưu điểm và nhược điểm gì?

8 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 04

Câu 8: Khi gặp một lỗi ngoại lệ (exception) như `IndexError` trong Python, điều đó có nghĩa là gì?

9 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 04

Câu 9: Một chương trình được thiết kế để tính diện tích hình chữ nhật. Khi nhập chiều dài là -5 và chiều rộng là 10, chương trình không báo lỗi nhưng lại trả về kết quả diện tích là -50. Đây là loại lỗi gì?

10 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 04

Câu 10: Để kiểm thử một hàm tính căn bậc hai `can_bac_hai(x)`, những bộ dữ liệu kiểm thử nào sau đây là quan trọng nhất để xem xét?

11 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 04

Câu 11: Công cụ điểm dừng (breakpoint) trong môi trường phát triển tích hợp (IDE) giúp ích gì trong quá trình gỡ lỗi?

12 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 04

Câu 12: Xét đoạn mã Python sau:

```python
danh_sach = [1, 2, 3, 4, 5]

for i in range(len(danh_sach)):
print(danh_sach[i + 1])
```
Khi chạy đoạn mã này, chương trình sẽ gặp lỗi gì khi i ở giá trị cuối cùng?

13 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 04

Câu 13: Trong quá trình gỡ lỗi, việc 'bước qua' (step over) một dòng lệnh gọi hàm trong debugger có ý nghĩa gì?

14 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 04

Câu 14: Khi chương trình gặp lỗi `NameError`, nguyên nhân phổ biến nhất là gì?

15 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 04

Câu 15: Giả sử bạn có một chương trình tính tổng các số từ 1 đến N. Bạn kiểm thử với N=5 và kết quả mong đợi là 15. Chương trình chạy và cho kết quả là 14. Đây có khả năng là loại lỗi gì?

16 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 04

Câu 16: Khi kiểm thử một chương trình xử lý dữ liệu nhập từ người dùng, tại sao cần kiểm thử với dữ liệu không hợp lệ (ví dụ: nhập chữ thay vì số)?

17 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 04

Câu 17: Quá trình gỡ lỗi hiệu quả thường bắt đầu bằng bước nào?

18 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 04

Câu 18: Xét đoạn mã Python sau:

```python
so = "abc"
ket_qua = so + 5
print(ket_qua)
```
Chương trình sẽ gặp lỗi gì?

19 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 04

Câu 19: Trong kiểm thử, 'dữ liệu biên' (boundary data) là gì và tại sao nó quan trọng?

20 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 04

Câu 20: Khi sử dụng debugger, chức năng 'bước vào' (step into) một dòng lệnh gọi hàm có ý nghĩa gì?

21 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 04

Câu 21: Một chương trình được yêu cầu đọc danh sách các số từ một tệp và tính tổng. Khi tệp trống, chương trình gặp lỗi `ValueError` khi cố gắng chuyển đổi dữ liệu. Đây là loại lỗi gì?

22 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 04

Câu 22: Tại sao việc ghi lại (log) các lỗi hoặc thông tin gỡ lỗi vào tệp hoặc console lại hữu ích?

23 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 04

Câu 23: Xét một chương trình yêu cầu người dùng nhập một số nguyên dương. Nếu người dùng nhập số 0 hoặc một số âm, chương trình nên xử lý như thế nào để tránh lỗi hoặc đưa ra thông báo phù hợp?

24 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 04

Câu 24: Khi gỡ lỗi một chương trình phức tạp, kỹ thuật chia nhỏ vấn đề (isolating the problem) có nghĩa là gì?

25 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 04

Câu 25: Xét đoạn mã Python sau:

```python
count = 0
while count < 5: print(count) # Thiếu dòng tăng giá trị biến count ``` Đoạn mã này sẽ gây ra lỗi gì khi chạy?

26 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 04

Câu 26: Tại sao việc hiểu rõ yêu cầu và logic của chương trình là bước quan trọng trước khi bắt đầu kiểm thử và gỡ lỗi?

27 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 04

Câu 27: Một chương trình tính điểm trung bình của học sinh từ danh sách điểm. Bạn nhận thấy rằng khi danh sách điểm rỗng, chương trình bị lỗi. Lỗi này có thể được ngăn chặn hoặc xử lý một cách 'duyên dáng' (gracefully) bằng cách nào?

28 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 04

Câu 28: Xét đoạn mã Python sau:

```python
x = 10
y = 0

# Lỗi ở đây
z = x / y

print(z)
```
Để gỡ lỗi cho đoạn mã này, hành động phù hợp nhất là gì?

29 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 04

Câu 29: Khi kiểm thử một chương trình, việc sử dụng các bộ dữ liệu ngẫu nhiên được sinh ra tự động có ưu điểm gì so với việc chỉ sử dụng các bộ dữ liệu được tạo thủ công?

30 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 04

Câu 30: Loại lỗi nào sau đây thường khó phát hiện nhất chỉ bằng cách nhìn vào mã nguồn mà không chạy chương trình?

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình - Đề 05

Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình - Đề 05 được xây dựng với nhiều câu hỏi chất lượng, sát với nội dung chương trình học, giúp bạn dễ dàng ôn tập và kiểm tra kiến thức hiệu quả. Hãy cùng bắt đầu làm bài tập trắc nghiệm ngay để nâng cao hiểu biết và chuẩn bị tốt cho kỳ thi sắp tới!

Câu 1: Mục đích chính của việc kiểm thử chương trình là gì?

  • A. Làm cho chương trình chạy nhanh hơn.
  • B. Phát hiện và xác định vị trí các lỗi trong chương trình.
  • C. Viết tài liệu hướng dẫn sử dụng cho chương trình.
  • D. Tối ưu hóa bộ nhớ sử dụng của chương trình.

Câu 2: Đâu là sự khác biệt cơ bản giữa kiểm thử (testing) và gỡ lỗi (debugging)?

  • A. Kiểm thử chỉ thực hiện trên chương trình đã hoàn chỉnh, còn gỡ lỗi thực hiện trong quá trình viết code.
  • B. Kiểm thử là quá trình sửa lỗi, còn gỡ lỗi là quá trình tìm lỗi.
  • C. Kiểm thử là quá trình tìm lỗi, còn gỡ lỗi là quá trình tìm nguyên nhân và sửa lỗi đã phát hiện.
  • D. Kiểm thử chỉ áp dụng cho lỗi cú pháp, còn gỡ lỗi áp dụng cho lỗi ngữ nghĩa.

Câu 3: Khi kiểm thử một hàm tính căn bậc hai `sqrt(x)`, bộ dữ liệu test nào sau đây có khả năng phát hiện lỗi tại "vùng biên" hoặc "trường hợp đặc biệt" cao nhất?

  • A. Các số dương lớn (ví dụ: 100, 1000).
  • B. Các số dương nhỏ (ví dụ: 2, 5).
  • C. Các số âm (ví dụ: -1, -4).
  • D. Giá trị 0 và các số dương rất gần 0 (ví dụ: 0.0001).

Câu 4: Quan sát đoạn mã Python sau:
```python
def calculate_average(numbers):
total = 0
for num in numbers:
total += num
return total / len(numbers)

print(calculate_average([1, 2, 3]))
print(calculate_average([]))
```
Khi chạy đoạn mã này, chương trình sẽ phát sinh lỗi tại dòng `return total / len(numbers)` khi gọi hàm với danh sách rỗng `[]`. Loại lỗi ngoại lệ (exception) nào sẽ xảy ra?

  • A. ZeroDivisionError
  • B. TypeError
  • C. IndexError
  • D. NameError

Câu 5: Trong quá trình gỡ lỗi, việc sử dụng lệnh `print()` để in giá trị của các biến tại các điểm khác nhau trong chương trình có mục đích gì?

  • A. Làm cho chương trình tạm dừng để quan sát.
  • B. Thay đổi giá trị của biến để kiểm tra các trường hợp khác nhau.
  • C. Theo dõi luồng thực thi của chương trình và kiểm tra giá trị trung gian của biến.
  • D. Đánh dấu các đoạn mã cần được tối ưu hóa.

Câu 6: Một chương trình xử lý chuỗi gặp lỗi `IndexError`. Nguyên nhân phổ biến nhất dẫn đến lỗi này là gì?

  • A. Chia một số cho 0.
  • B. Truy cập một phần tử trong danh sách hoặc chuỗi bằng chỉ số nằm ngoài phạm vi hợp lệ.
  • C. Thực hiện phép toán với kiểu dữ liệu không tương thích.
  • D. Sử dụng một biến hoặc hàm chưa được khai báo.

Câu 7: Khi phát triển một chương trình, thời điểm nào là thích hợp nhất để bắt đầu viết và thực hiện các bộ dữ liệu test?

  • A. Chỉ sau khi chương trình đã hoàn thành và chạy mà không báo lỗi cú pháp.
  • B. Ngay trước khi bàn giao sản phẩm cho người dùng.
  • C. Sau khi tìm được lỗi đầu tiên và cần gỡ lỗi.
  • D. Nên được thực hiện song song hoặc ngay sau khi hoàn thành từng phần (module) của chương trình.

Câu 8: Một lập trình viên đang gỡ lỗi một vòng lặp `for` trong Python mà anh ta nghi ngờ không chạy đúng số lần mong muốn. Công cụ hoặc kỹ thuật nào sau đây hiệu quả nhất để kiểm tra số lần lặp và giá trị biến lặp sau mỗi lần thực hiện?

  • A. Thay đổi cấu trúc vòng lặp sang `while`.
  • B. Xóa bỏ vòng lặp và chạy thử phần còn lại của chương trình.
  • C. Đặt điểm dừng (breakpoint) ngay trước hoặc trong vòng lặp và theo dõi giá trị biến lặp.
  • D. Thêm chú thích (comment) vào vòng lặp.

Câu 9: Tại sao việc kiểm thử chương trình với các bộ dữ liệu ngẫu nhiên (trong miền xác định của đầu vào) lại quan trọng?

  • A. Giúp phát hiện các lỗi mà lập trình viên có thể không lường trước được bằng các bộ test thủ công.
  • B. Làm cho chương trình chạy nhanh hơn khi xử lý dữ liệu ngẫu nhiên.
  • C. Chỉ cần test với dữ liệu ngẫu nhiên là đủ để đảm bảo chương trình không có lỗi.
  • D. Giúp chương trình tự động sửa lỗi khi gặp dữ liệu ngẫu nhiên.

Câu 10: Xem xét đoạn mã sau:
```python
def process_data(data):
result = []
for item in data:
if type(item) == int:
result.append(item * 2)
else:
result.append(item)
return result

print(process_data([1, "a", 3, 4.5]))
```
Đoạn mã này có lỗi không? Nếu có, là loại lỗi gì và cách khắc phục (trong ngữ cảnh kiểm thử/gỡ lỗi)?

  • A. Có lỗi `TypeError` vì không thể nhân chuỗi với số. Cần kiểm tra kiểu dữ liệu trước khi nhân.
  • B. Có lỗi `SyntaxError` do cú pháp `type(item) == int` sai. Cần sửa thành `isinstance(item, int)`.
  • C. Có lỗi `NameError` vì biến `data` chưa được khai báo. Cần khai báo `data` trước khi truyền vào hàm.
  • D. Không có lỗi. Chương trình chạy đúng và trả về kết quả mong muốn dựa trên logic đã viết.

Câu 11: Một chương trình yêu cầu người dùng nhập vào một số nguyên. Nếu người dùng nhập vào một chuỗi ký tự (ví dụ:

  • A. ZeroDivisionError
  • B. IndexError
  • C. ValueError
  • D. NameError

Câu 12: Đâu là một ví dụ về "bộ dữ liệu test tiêu biểu" cho một chương trình tính tổng hai số nguyên?

  • A. Hai số nguyên dương bất kỳ (ví dụ: 5 và 10).
  • B. Hai số thực (ví dụ: 3.5 và 2.1).
  • C. Một số nguyên và một chuỗi (ví dụ: 7 và
  • D. Hai danh sách số nguyên (ví dụ: [1, 2] và [3, 4]).

Câu 13: Khi sử dụng một môi trường phát triển tích hợp (IDE) có tính năng gỡ lỗi, "điểm dừng" (breakpoint) cho phép lập trình viên làm gì?

  • A. Chỉnh sửa mã nguồn trực tiếp khi chương trình đang chạy.
  • B. Tạm dừng quá trình thực thi của chương trình tại một dòng mã cụ thể để kiểm tra trạng thái (giá trị biến, luồng điều khiển).
  • C. Tự động sửa các lỗi cú pháp được phát hiện.
  • D. Chuyển đổi chương trình sang một ngôn ngữ lập trình khác.

Câu 14: Một chương trình được thiết kế để xử lý danh sách học sinh. Khi chạy với một danh sách rỗng, chương trình gặp lỗi. Đây là ví dụ về việc kiểm thử với loại dữ liệu nào?

  • A. Dữ liệu biên (Boundary case).
  • B. Dữ liệu ngẫu nhiên (Random data).
  • C. Dữ liệu tiêu biểu (Typical data).
  • D. Dữ liệu hợp lệ (Valid data).

Câu 15: Lỗi `SyntaxError` xảy ra khi nào?

  • A. Khi chương trình chạy và cố gắng chia cho số 0.
  • B. Khi chương trình cố gắng truy cập vào một biến chưa được khai báo.
  • C. Khi chương trình cố gắng thực hiện một phép toán với kiểu dữ liệu không phù hợp.
  • D. Khi mã nguồn vi phạm các quy tắc ngữ pháp của ngôn ngữ lập trình.

Câu 16: Để kiểm thử một hàm sắp xếp danh sách số nguyên, bộ dữ liệu test nào sau đây là quan trọng để kiểm tra tính đúng đắn của thuật toán?

  • A. Một danh sách chỉ chứa các số dương.
  • B. Một danh sách chỉ chứa các số âm.
  • C. Một danh sách đã được sắp xếp (tăng dần hoặc giảm dần), một danh sách rỗng, một danh sách chỉ có một phần tử, một danh sách có các phần tử trùng lặp.
  • D. Một danh sách chứa cả số nguyên và số thực.

Câu 17: Lỗi `NameError` trong Python thường chỉ ra điều gì?

  • A. Bạn đang cố gắng sử dụng một biến hoặc gọi một hàm mà chưa được định nghĩa hoặc nằm ngoài phạm vi truy cập hiện tại.
  • B. Bạn đang thực hiện một phép toán không hợp lệ giữa các kiểu dữ liệu.
  • C. Bạn đang cố gắng truy cập một phần tử của danh sách hoặc chuỗi bằng chỉ số sai.
  • D. Bạn đang chia một số cho 0.

Câu 18: Xem xét đoạn mã sau:
```python
count = 10
while count > 0:
print(count)
count += 1
```
Đoạn mã này sẽ gây ra lỗi gì trong quá trình thực thi?

  • A. SyntaxError
  • B. TypeError
  • C. NameError
  • D. Lỗi logic dẫn đến vòng lặp vô hạn (infinite loop).

Câu 19: Khi gỡ lỗi, sau khi xác định được vị trí của lỗi, bước tiếp theo quan trọng nhất là gì?

  • A. Xóa bỏ đoạn mã gây lỗi.
  • B. Phân tích nguyên nhân gốc rễ của lỗi.
  • C. Viết thêm các lệnh `print()` xung quanh vị trí lỗi.
  • D. Thay đổi giá trị của biến tại vị trí lỗi.

Câu 20: Giả sử bạn có một hàm nhận đầu vào là một số nguyên dương `n` và tính tổng từ 1 đến `n`. Bộ dữ liệu test nào sau đây ít hữu ích nhất trong việc tìm lỗi logic của hàm?

  • A. n = 1
  • B. n = 5
  • C. n = 1000 (một số lớn)
  • D. n = -5 (số âm)

Câu 21: Lỗi `TypeError` xảy ra khi nào?

  • A. Khi một phép toán hoặc hàm được áp dụng cho một đối tượng có kiểu dữ liệu không phù hợp.
  • B. Khi bạn cố gắng truy cập một phần tử không tồn tại trong danh sách.
  • C. Khi bạn sử dụng một tên biến chưa được định nghĩa.
  • D. Khi chương trình không thể kết nối mạng.

Câu 22: Xem xét đoạn mã sau:
```python
def divide_numbers(a, b):
return a / b

result = divide_numbers(10, 2)
print(result)
result = divide_numbers(5, 0)
print(result)
```
Khi chạy đoạn mã này, lỗi sẽ xảy ra tại dòng nào và loại lỗi là gì?

  • A. Dòng `print(result)` đầu tiên, lỗi `TypeError`.
  • B. Dòng `return a / b` khi a=10, b=2, lỗi `SyntaxError`.
  • C. Dòng `return a / b` khi a=5, b=0, lỗi `ZeroDivisionError`.
  • D. Dòng `print(result)` thứ hai, lỗi `NameError`.

Câu 23: Tại sao việc kiểm thử chương trình với các bộ dữ liệu không hợp lệ (invalid data) lại quan trọng?

  • A. Vì dữ liệu không hợp lệ thường chứa virus có thể làm hỏng chương trình.
  • B. Để đảm bảo chương trình xử lý các trường hợp nhập liệu sai hoặc không mong muốn một cách an toàn và không bị treo (crash).
  • C. Dữ liệu không hợp lệ giúp chương trình chạy nhanh hơn.
  • D. Kiểm thử với dữ liệu không hợp lệ là không cần thiết vì người dùng sẽ luôn nhập dữ liệu đúng.

Câu 24: Công cụ gỡ lỗi nào cho phép bạn thực thi từng dòng lệnh của chương trình một cách tuần tự và quan sát sự thay đổi của các biến sau mỗi bước?

  • A. Step-by-step execution (hoặc Single stepping) trong IDE.
  • B. Lệnh `print()`.
  • C. Kiểm thử hộp đen (Black-box testing).
  • D. Kiểm thử hồi quy (Regression testing).

Câu 25: Khi một chương trình thường xuyên gặp lỗi không xác định (intermittent bugs) chỉ xuất hiện trong một số điều kiện nhất định, phương pháp gỡ lỗi nào sau đây có thể hữu ích?

  • A. Chỉ chạy chương trình một lần duy nhất.
  • B. Xóa toàn bộ mã nguồn và viết lại từ đầu.
  • C. Bỏ qua lỗi vì chúng không xảy ra thường xuyên.
  • D. Sử dụng các công cụ ghi log (logging) hoặc thêm các lệnh `print()` chi tiết để theo dõi trạng thái chương trình khi lỗi xảy ra.

Câu 26: Đâu là một ví dụ về lỗi logic (logic error) trong chương trình Python?

  • A. Thiếu dấu hai chấm sau lệnh `if`.
  • B. Sử dụng tên biến chưa được định nghĩa.
  • C. Tính diện tích hình chữ nhật bằng công thức `(dai + rong) * 2` thay vì `dai * rong`.
  • D. Chia một số cho biến có giá trị 0.

Câu 27: Tại sao việc tạo ra các bộ dữ liệu test có kết quả đầu ra biết trước là cần thiết khi kiểm thử chương trình?

  • A. Để có cơ sở so sánh kết quả thực tế của chương trình với kết quả mong đợi và xác định xem chương trình chạy đúng hay sai.
  • B. Để chương trình có thể tự động sửa lỗi khi chạy.
  • C. Để làm cho chương trình chạy nhanh hơn.
  • D. Để người dùng có thể dễ dàng nhập dữ liệu vào chương trình.

Câu 28: Xem xét đoạn mã sau:
```python
my_list = [1, 2, 3]
print(my_list[3])
```
Đoạn mã này sẽ gây ra lỗi gì?

  • A. TypeError
  • B. IndexError
  • C. NameError
  • D. SyntaxError

Câu 29: Khi gỡ lỗi một chương trình phức tạp, phương pháp nào sau đây giúp thu hẹp phạm vi tìm kiếm lỗi hiệu quả nhất?

  • A. Đọc lại toàn bộ mã nguồn từ đầu đến cuối.
  • B. Ngẫu nhiên thay đổi các dòng mã cho đến khi lỗi biến mất.
  • C. Sử dụng phương pháp chia đôi (divide and conquer): xác định phần nào của chương trình gây ra lỗi và tập trung kiểm tra phần đó.
  • D. Nhờ một người khác đọc mã nguồn mà không cung cấp ngữ cảnh lỗi.

Câu 30: Đâu là một trong những lợi ích quan trọng nhất của việc thực hiện kiểm thử và gỡ lỗi một cách cẩn thận?

  • A. Giảm kích thước tệp chương trình.
  • B. Tăng tốc độ biên dịch chương trình.
  • C. Làm cho mã nguồn dễ đọc hơn.
  • D. Nâng cao độ tin cậy và chất lượng của chương trình, giảm thiểu lỗi khi chương trình được sử dụng.

1 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 05

Câu 1: Mục đích chính của việc kiểm thử chương trình là gì?

2 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 05

Câu 2: Đâu là sự khác biệt cơ bản giữa kiểm thử (testing) và gỡ lỗi (debugging)?

3 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 05

Câu 3: Khi kiểm thử một hàm tính căn bậc hai `sqrt(x)`, bộ dữ liệu test nào sau đây có khả năng phát hiện lỗi tại 'vùng biên' hoặc 'trường hợp đặc biệt' cao nhất?

4 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 05

Câu 4: Quan sát đoạn mã Python sau:
```python
def calculate_average(numbers):
total = 0
for num in numbers:
total += num
return total / len(numbers)

print(calculate_average([1, 2, 3]))
print(calculate_average([]))
```
Khi chạy đoạn mã này, chương trình sẽ phát sinh lỗi tại dòng `return total / len(numbers)` khi gọi hàm với danh sách rỗng `[]`. Loại lỗi ngoại lệ (exception) nào sẽ xảy ra?

5 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 05

Câu 5: Trong quá trình gỡ lỗi, việc sử dụng lệnh `print()` để in giá trị của các biến tại các điểm khác nhau trong chương trình có mục đích gì?

6 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 05

Câu 6: Một chương trình xử lý chuỗi gặp lỗi `IndexError`. Nguyên nhân phổ biến nhất dẫn đến lỗi này là gì?

7 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 05

Câu 7: Khi phát triển một chương trình, thời điểm nào là thích hợp nhất để bắt đầu viết và thực hiện các bộ dữ liệu test?

8 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 05

Câu 8: Một lập trình viên đang gỡ lỗi một vòng lặp `for` trong Python mà anh ta nghi ngờ không chạy đúng số lần mong muốn. Công cụ hoặc kỹ thuật nào sau đây hiệu quả nhất để kiểm tra số lần lặp và giá trị biến lặp sau mỗi lần thực hiện?

9 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 05

Câu 9: Tại sao việc kiểm thử chương trình với các bộ dữ liệu ngẫu nhiên (trong miền xác định của đầu vào) lại quan trọng?

10 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 05

Câu 10: Xem xét đoạn mã sau:
```python
def process_data(data):
result = []
for item in data:
if type(item) == int:
result.append(item * 2)
else:
result.append(item)
return result

print(process_data([1, 'a', 3, 4.5]))
```
Đoạn mã này có lỗi không? Nếu có, là loại lỗi gì và cách khắc phục (trong ngữ cảnh kiểm thử/gỡ lỗi)?

11 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 05

Câu 11: Một chương trình yêu cầu người dùng nhập vào một số nguyên. Nếu người dùng nhập vào một chuỗi ký tự (ví dụ: "abc"), lỗi ngoại lệ (exception) nào có khả năng xảy ra nhất khi chương trình cố gắng chuyển đổi chuỗi đó sang số nguyên bằng hàm `int()`?

12 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 05

Câu 12: Đâu là một ví dụ về 'bộ dữ liệu test tiêu biểu' cho một chương trình tính tổng hai số nguyên?

13 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 05

Câu 13: Khi sử dụng một môi trường phát triển tích hợp (IDE) có tính năng gỡ lỗi, 'điểm dừng' (breakpoint) cho phép lập trình viên làm gì?

14 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 05

Câu 14: Một chương trình được thiết kế để xử lý danh sách học sinh. Khi chạy với một danh sách rỗng, chương trình gặp lỗi. Đây là ví dụ về việc kiểm thử với loại dữ liệu nào?

15 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 05

Câu 15: Lỗi `SyntaxError` xảy ra khi nào?

16 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 05

Câu 16: Để kiểm thử một hàm sắp xếp danh sách số nguyên, bộ dữ liệu test nào sau đây là quan trọng để kiểm tra tính đúng đắn của thuật toán?

17 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 05

Câu 17: Lỗi `NameError` trong Python thường chỉ ra điều gì?

18 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 05

Câu 18: Xem xét đoạn mã sau:
```python
count = 10
while count > 0:
print(count)
count += 1
```
Đoạn mã này sẽ gây ra lỗi gì trong quá trình thực thi?

19 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 05

Câu 19: Khi gỡ lỗi, sau khi xác định được vị trí của lỗi, bước tiếp theo quan trọng nhất là gì?

20 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 05

Câu 20: Giả sử bạn có một hàm nhận đầu vào là một số nguyên dương `n` và tính tổng từ 1 đến `n`. Bộ dữ liệu test nào sau đây *ít* hữu ích nhất trong việc tìm lỗi logic của hàm?

21 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 05

Câu 21: Lỗi `TypeError` xảy ra khi nào?

22 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 05

Câu 22: Xem xét đoạn mã sau:
```python
def divide_numbers(a, b):
return a / b

result = divide_numbers(10, 2)
print(result)
result = divide_numbers(5, 0)
print(result)
```
Khi chạy đoạn mã này, lỗi sẽ xảy ra tại dòng nào và loại lỗi là gì?

23 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 05

Câu 23: Tại sao việc kiểm thử chương trình với các bộ dữ liệu không hợp lệ (invalid data) lại quan trọng?

24 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 05

Câu 24: Công cụ gỡ lỗi nào cho phép bạn thực thi từng dòng lệnh của chương trình một cách tuần tự và quan sát sự thay đổi của các biến sau mỗi bước?

25 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 05

Câu 25: Khi một chương trình thường xuyên gặp lỗi không xác định (intermittent bugs) chỉ xuất hiện trong một số điều kiện nhất định, phương pháp gỡ lỗi nào sau đây có thể hữu ích?

26 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 05

Câu 26: Đâu là một ví dụ về lỗi logic (logic error) trong chương trình Python?

27 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 05

Câu 27: Tại sao việc tạo ra các bộ dữ liệu test có kết quả đầu ra biết trước là cần thiết khi kiểm thử chương trình?

28 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 05

Câu 28: Xem xét đoạn mã sau:
```python
my_list = [1, 2, 3]
print(my_list[3])
```
Đoạn mã này sẽ gây ra lỗi gì?

29 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 05

Câu 29: Khi gỡ lỗi một chương trình phức tạp, phương pháp nào sau đây giúp thu hẹp phạm vi tìm kiếm lỗi hiệu quả nhất?

30 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 05

Câu 30: Đâu là một trong những lợi ích quan trọng nhất của việc thực hiện kiểm thử và gỡ lỗi một cách cẩn thận?

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình - Đề 06

Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình - Đề 06 được xây dựng với nhiều câu hỏi chất lượng, sát với nội dung chương trình học, giúp bạn dễ dàng ôn tập và kiểm tra kiến thức hiệu quả. Hãy cùng bắt đầu làm bài tập trắc nghiệm ngay để nâng cao hiểu biết và chuẩn bị tốt cho kỳ thi sắp tới!

Câu 1: Trong quy trình phát triển phần mềm, hoạt động nào nhằm mục đích tìm ra các lỗi tiềm ẩn trong chương trình trước khi đưa vào sử dụng chính thức?

  • A. Thiết kế thuật toán
  • B. Kiểm thử chương trình
  • C. Viết mã nguồn
  • D. Triển khai hệ thống

Câu 2: Đâu là mục tiêu chính của việc gỡ lỗi (debugging) một chương trình?

  • A. Tăng tốc độ thực thi của chương trình
  • B. Thêm các tính năng mới cho chương trình
  • C. Xác định, phân tích và loại bỏ nguyên nhân gây ra lỗi
  • D. Biên dịch mã nguồn sang ngôn ngữ máy

Câu 3: Khi kiểm thử chương trình, việc sử dụng "bộ dữ liệu test" (test cases) có ý nghĩa quan trọng nhất là gì?

  • A. Đảm bảo chương trình chạy nhanh hơn
  • B. Kiểm tra giao diện người dùng
  • C. Chỉ kiểm tra các trường hợp đầu vào đúng
  • D. Đánh giá chương trình hoạt động có chính xác với các đầu vào khác nhau hay không

Câu 4: Một lập trình viên đang kiểm thử hàm tính căn bậc hai. Để kiểm tra tính đúng đắn của hàm, ngoài các số dương thông thường, anh ta nên thử với những giá trị đầu vào nào khác?

  • A. Số 0 và số âm
  • B. Chỉ các số nguyên tố
  • C. Chỉ các số lớn hơn 1000
  • D. Chỉ các số có nhiều chữ số thập phân

Câu 5: Xét đoạn mã Python sau:
```python
def chia_hai_so(a, b):
return a / b

ket_qua = chia_hai_so(10, 0)
print(ket_qua)
```
Khi chạy đoạn mã này, loại lỗi ngoại lệ nào sẽ xảy ra?

  • A. TypeError
  • B. IndexError
  • C. ZeroDivisionError
  • D. NameError

Câu 6: Xét đoạn mã Python sau:
```python
list_so = [1, 2, 3, 4, 5]
print(list_so[5])
```
Khi chạy đoạn mã này, loại lỗi ngoại lệ nào sẽ xảy ra?

  • A. TypeError
  • B. IndexError
  • C. ZeroDivisionError
  • D. SyntaxError

Câu 7: Khi một lỗi ngoại lệ (runtime error) xảy ra trong chương trình, điều gì thường xảy ra nếu lỗi đó không được xử lý?

  • A. Chương trình sẽ dừng đột ngột và hiển thị thông báo lỗi.
  • B. Chương trình sẽ tự động sửa lỗi và tiếp tục chạy.
  • C. Chương trình sẽ bỏ qua lệnh gây lỗi và chạy tiếp.
  • D. Chương trình sẽ chạy chậm lại nhưng vẫn hoàn thành.

Câu 8: Lỗi ngữ nghĩa (semantic error) khác với lỗi cú pháp (syntax error) ở điểm nào?

  • A. Lỗi cú pháp dễ tìm hơn lỗi ngữ nghĩa.
  • B. Lỗi ngữ nghĩa chỉ xuất hiện khi biên dịch, lỗi cú pháp xuất hiện khi chạy.
  • C. Lỗi cú pháp làm chương trình chạy sai logic, lỗi ngữ nghĩa ngăn chương trình biên dịch.
  • D. Lỗi cú pháp liên quan đến quy tắc viết code, lỗi ngữ nghĩa liên quan đến logic xử lý của chương trình.

Câu 9: Công cụ hoặc kỹ thuật nào sau đây thường được sử dụng để theo dõi giá trị của các biến tại các điểm khác nhau trong quá trình thực thi chương trình nhằm tìm hiểu nguyên nhân lỗi?

  • A. In giá trị biến (ví dụ: dùng print() trong Python)
  • B. Thay đổi tên các biến
  • C. Xóa bớt các dòng mã
  • D. Chạy chương trình trên một máy tính khác

Câu 10: Điểm dừng (breakpoint) trong các môi trường phát triển tích hợp (IDE) có chức năng gì khi gỡ lỗi?

  • A. Tự động sửa lỗi cú pháp tại dòng đó.
  • B. Ngăn không cho chương trình chạy qua dòng đó.
  • C. Tạm dừng quá trình thực thi chương trình tại dòng đó để kiểm tra trạng thái.
  • D. Đánh dấu dòng mã đó là dòng đã được kiểm tra.

Câu 11: Khi kiểm thử một chương trình xử lý dữ liệu số, việc tạo các bộ dữ liệu test bao gồm "các giá trị biên" (boundary values) có ý nghĩa gì?

  • A. Chỉ để kiểm tra các giá trị trung bình.
  • B. Kiểm tra xem chương trình có xử lý đúng các trường hợp đặc biệt tại giới hạn của miền giá trị hợp lệ hay không.
  • C. Làm cho chương trình chạy nhanh hơn khi kiểm thử.
  • D. Chỉ áp dụng cho dữ liệu kiểu văn bản.

Câu 12: Xét đoạn mã Python sau:
```python
so_luong = input(

  • A. TypeError
  • B. ZeroDivisionError
  • C. IndexError
  • D. NameError

Câu 13: Một chương trình được thiết kế để tính diện tích hình chữ nhật với đầu vào là chiều dài và chiều rộng (phải là số dương). Nếu người dùng nhập chiều dài là -5, chương trình có thể gặp phải loại lỗi nào về mặt logic?

  • A. Lỗi cú pháp (Syntax error)
  • B. Lỗi ngoại lệ (Runtime error) nếu không có kiểm tra đầu vào
  • C. Lỗi ngữ nghĩa/logic (Semantic error) dẫn đến kết quả sai hoặc không mong muốn nếu không có kiểm tra đầu vào
  • D. Không có lỗi gì xảy ra

Câu 14: Kỹ thuật kiểm thử nào tập trung vào việc kiểm tra các đường đi (paths) khác nhau trong mã nguồn của chương trình, đảm bảo mọi lệnh và nhánh rẽ đều được thực thi ít nhất một lần?

  • A. Kiểm thử hộp đen (Black-box testing)
  • B. Kiểm thử hộp trắng (White-box testing)
  • C. Kiểm thử hồi quy (Regression testing)
  • D. Kiểm thử tự động (Automated testing)

Câu 15: Khi gặp một lỗi ngoại lệ (runtime error) như `NameError`, bước đầu tiên và quan trọng nhất trong quy trình gỡ lỗi là gì?

  • A. Viết lại toàn bộ chương trình.
  • B. Xóa dòng lệnh gây lỗi.
  • C. Chạy lại chương trình nhiều lần.
  • D. Đọc thông báo lỗi để xác định loại lỗi và vị trí xảy ra lỗi.

Câu 16: Một chương trình yêu cầu người dùng nhập một số nguyên. Nếu người dùng nhập một chuỗi ký tự (ví dụ:

  • A. ValueError
  • B. IndexError
  • C. KeyError
  • D. AttributeError

Câu 17: Xét đoạn mã Python sau:
```python
def tinh_giai_thua(n):
if n == 0:
return 1
else:
return n * tinh_giai_thua(n-1)

ket_qua = tinh_giai_thua(-5)
print(ket_qua)
```
Chương trình này có khả năng gặp phải vấn đề gì khi chạy với đầu vào là số âm?

  • A. ZeroDivisionError
  • B. SyntaxError
  • C. Lỗi logic dẫn đến vòng lặp đệ quy vô hạn (RecursionError)
  • D. TypeError

Câu 18: Tại sao việc kiểm thử chương trình với dữ liệu ngẫu nhiên (trong miền xác định) có thể giúp phát hiện lỗi mà các bộ test cố định có thể bỏ sót?

  • A. Dữ liệu ngẫu nhiên luôn nhanh hơn dữ liệu cố định.
  • B. Chỉ để kiểm tra hiệu năng chương trình.
  • C. Dữ liệu ngẫu nhiên dễ tạo hơn.
  • D. Tăng khả năng bao phủ các trường hợp đầu vào đa dạng, bao gồm cả những trường hợp lập trình viên không lường trước.

Câu 19: Trong quy trình gỡ lỗi, sau khi đã xác định được nguyên nhân gây lỗi, bước tiếp theo là gì?

  • A. Sửa lỗi trong mã nguồn.
  • B. Kiểm thử lại toàn bộ chương trình với tất cả các bộ test.
  • C. Đóng chương trình lại.
  • D. Thông báo cho người dùng về lỗi.

Câu 20: Sau khi đã sửa một lỗi trong chương trình, tại sao việc kiểm thử lại (retesting) là cần thiết?

  • A. Để đảm bảo lỗi đó không bao giờ xảy ra nữa trong bất kỳ chương trình nào khác.
  • B. Để làm tăng số lượng bộ test.
  • C. Để xác nhận rằng lỗi đã được sửa và việc sửa lỗi không gây ra lỗi mới ở những phần khác của chương trình (lỗi hồi quy).
  • D. Chỉ cần kiểm thử lại nếu lỗi ban đầu rất nghiêm trọng.

Câu 21: Xét đoạn mã Python sau:
```python
danh_sach = [10, 20, 30]
dic_du_lieu = {

  • A. IndexError
  • B. TypeError
  • C. NameError
  • D. KeyError

Câu 22: Lỗi cú pháp (Syntax Error) thường được phát hiện ở giai đoạn nào trong quá trình phát triển chương trình?

  • A. Khi biên dịch hoặc thông dịch mã nguồn.
  • B. Khi chương trình đang chạy và xử lý dữ liệu.
  • C. Sau khi chương trình đã hoàn thành việc thực thi.
  • D. Trước khi viết mã nguồn.

Câu 23: Một chương trình tính tổng các số từ 1 đến N, nhưng lại tính tổng các số từ 0 đến N-1. Đây là ví dụ về loại lỗi nào?

  • A. Lỗi cú pháp (Syntax Error)
  • B. Lỗi ngữ nghĩa/logic (Semantic Error)
  • C. Lỗi ngoại lệ (Runtime Error)
  • D. Lỗi phần cứng (Hardware Error)

Câu 24: Để kiểm thử hiệu quả một chương trình xử lý chuỗi ký tự, ngoài các chuỗi bình thường, lập trình viên nên tạo các bộ test với những loại chuỗi nào khác?

  • A. Chỉ các chuỗi rất dài.
  • B. Chỉ các chuỗi chứa toàn số.
  • C. Chuỗi rỗng, chuỗi chỉ chứa khoảng trắng, chuỗi có ký tự đặc biệt.
  • D. Chỉ các chuỗi có độ dài chẵn.

Câu 25: Khi sử dụng một công cụ gỡ lỗi (debugger), chức năng "step over" (bước qua) một dòng lệnh có ý nghĩa là gì?

  • A. Thực thi dòng lệnh hiện tại và dừng lại ở dòng tiếp theo (nếu là lời gọi hàm thì thực thi cả hàm đó mà không đi sâu vào bên trong).
  • B. Thực thi dòng lệnh hiện tại và đi sâu vào bên trong nếu đó là lời gọi hàm.
  • C. Bỏ qua không thực thi dòng lệnh hiện tại.
  • D. Chạy chương trình đến điểm dừng tiếp theo.

Câu 26: Xét một chương trình có một vòng lặp `while` với điều kiện dừng là `i < 10`. Nếu ban đầu biến `i` được khởi tạo là 0 nhưng không có lệnh nào bên trong vòng lặp làm thay đổi giá trị của `i`, chương trình sẽ gặp phải vấn đề gì?

  • A. Lỗi cú pháp.
  • B. Vòng lặp vô hạn (Infinite loop), dẫn đến chương trình bị treo hoặc chạy không dừng.
  • C. Lỗi chia cho không.
  • D. Lỗi truy cập ngoài chỉ mục mảng.

Câu 27: Công cụ nào sau đây là một ví dụ về công cụ hỗ trợ gỡ lỗi tích hợp sẵn trong nhiều môi trường phát triển (IDE)?

  • A. Trình biên dịch (Compiler).
  • B. Trình soạn thảo văn bản (Text editor).
  • C. Hệ điều hành (Operating system).
  • D. Trình gỡ lỗi (Debugger).

Câu 28: Khi kiểm thử chương trình, tại sao việc ghi lại các bộ dữ liệu test đã sử dụng và kết quả mong đợi là quan trọng?

  • A. Để có thể sử dụng lại chúng cho kiểm thử hồi quy sau khi sửa lỗi hoặc thêm tính năng mới.
  • B. Để làm cho chương trình chạy nhanh hơn.
  • C. Chỉ cần thiết khi chương trình có lỗi.
  • D. Để chia sẻ cho người dùng cuối.

Câu 29: Xét một hàm nhận vào một danh sách số và trả về số lớn nhất. Nếu danh sách đầu vào là rỗng, hàm này nên xử lý như thế nào để tránh lỗi hoặc kết quả không mong muốn?

  • A. Trả về giá trị 0.
  • B. Trả về giá trị lớn nhất có thể.
  • C. Ném ra một ngoại lệ (raise an exception) hoặc trả về một giá trị đặc biệt (ví dụ: None) để báo hiệu lỗi hoặc trường hợp không hợp lệ.
  • D. Chạy vòng lặp vô hạn.

Câu 30: Trong quá trình gỡ lỗi, nếu bạn nghi ngờ lỗi nằm trong một đoạn mã phức tạp, kỹ thuật nào sau đây giúp cô lập vấn đề bằng cách tạm thời loại bỏ hoặc đơn giản hóa các phần khác của chương trình?

  • A. Kiểm thử tự động.
  • B. Chia nhỏ vấn đề (Problem decomposition) hoặc sử dụng các "stub" (đoạn mã giả) thay thế.
  • C. Chỉ chạy chương trình trên môi trường khác.
  • D. Viết lại toàn bộ mã từ đầu.

1 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 06

Câu 1: Trong quy trình phát triển phần mềm, hoạt động nào nhằm mục đích tìm ra các lỗi tiềm ẩn trong chương trình trước khi đưa vào sử dụng chính thức?

2 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 06

Câu 2: Đâu là mục tiêu chính của việc gỡ lỗi (debugging) một chương trình?

3 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 06

Câu 3: Khi kiểm thử chương trình, việc sử dụng 'bộ dữ liệu test' (test cases) có ý nghĩa quan trọng nhất là gì?

4 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 06

Câu 4: Một lập trình viên đang kiểm thử hàm tính căn bậc hai. Để kiểm tra tính đúng đắn của hàm, ngoài các số dương thông thường, anh ta nên thử với những giá trị đầu vào nào khác?

5 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 06

Câu 5: Xét đoạn mã Python sau:
```python
def chia_hai_so(a, b):
return a / b

ket_qua = chia_hai_so(10, 0)
print(ket_qua)
```
Khi chạy đoạn mã này, loại lỗi ngoại lệ nào sẽ xảy ra?

6 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 06

Câu 6: Xét đoạn mã Python sau:
```python
list_so = [1, 2, 3, 4, 5]
print(list_so[5])
```
Khi chạy đoạn mã này, loại lỗi ngoại lệ nào sẽ xảy ra?

7 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 06

Câu 7: Khi một lỗi ngoại lệ (runtime error) xảy ra trong chương trình, điều gì thường xảy ra nếu lỗi đó không được xử lý?

8 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 06

Câu 8: Lỗi ngữ nghĩa (semantic error) khác với lỗi cú pháp (syntax error) ở điểm nào?

9 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 06

Câu 9: Công cụ hoặc kỹ thuật nào sau đây thường được sử dụng để theo dõi giá trị của các biến tại các điểm khác nhau trong quá trình thực thi chương trình nhằm tìm hiểu nguyên nhân lỗi?

10 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 06

Câu 10: Điểm dừng (breakpoint) trong các môi trường phát triển tích hợp (IDE) có chức năng gì khi gỡ lỗi?

11 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 06

Câu 11: Khi kiểm thử một chương trình xử lý dữ liệu số, việc tạo các bộ dữ liệu test bao gồm 'các giá trị biên' (boundary values) có ý nghĩa gì?

12 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 06

Câu 12: Xét đoạn mã Python sau:
```python
so_luong = input("Nhập số lượng: ")
tong_tien = so_luong * 1000
print(tong_tien)
```
Giả sử người dùng nhập '5'. Loại lỗi ngoại lệ nào có khả năng xảy ra khi chạy chương trình này?

13 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 06

Câu 13: Một chương trình được thiết kế để tính diện tích hình chữ nhật với đầu vào là chiều dài và chiều rộng (phải là số dương). Nếu người dùng nhập chiều dài là -5, chương trình có thể gặp phải loại lỗi nào về mặt logic?

14 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 06

Câu 14: Kỹ thuật kiểm thử nào tập trung vào việc kiểm tra các đường đi (paths) khác nhau trong mã nguồn của chương trình, đảm bảo mọi lệnh và nhánh rẽ đều được thực thi ít nhất một lần?

15 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 06

Câu 15: Khi gặp một lỗi ngoại lệ (runtime error) như `NameError`, bước đầu tiên và quan trọng nhất trong quy trình gỡ lỗi là gì?

16 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 06

Câu 16: Một chương trình yêu cầu người dùng nhập một số nguyên. Nếu người dùng nhập một chuỗi ký tự (ví dụ: "abc"), loại lỗi ngoại lệ nào có khả năng xảy ra khi chương trình cố gắng chuyển đổi chuỗi đó sang số nguyên?

17 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 06

Câu 17: Xét đoạn mã Python sau:
```python
def tinh_giai_thua(n):
if n == 0:
return 1
else:
return n * tinh_giai_thua(n-1)

ket_qua = tinh_giai_thua(-5)
print(ket_qua)
```
Chương trình này có khả năng gặp phải vấn đề gì khi chạy với đầu vào là số âm?

18 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 06

Câu 18: Tại sao việc kiểm thử chương trình với dữ liệu ngẫu nhiên (trong miền xác định) có thể giúp phát hiện lỗi mà các bộ test cố định có thể bỏ sót?

19 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 06

Câu 19: Trong quy trình gỡ lỗi, sau khi đã xác định được nguyên nhân gây lỗi, bước tiếp theo là gì?

20 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 06

Câu 20: Sau khi đã sửa một lỗi trong chương trình, tại sao việc kiểm thử lại (retesting) là cần thiết?

21 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 06

Câu 21: Xét đoạn mã Python sau:
```python
danh_sach = [10, 20, 30]
dic_du_lieu = {"a": 1, "b": 2}

print(danh_sach[2])
print(dic_du_lieu["c"])
```
Đoạn mã này sẽ gặp phải loại lỗi ngoại lệ nào đầu tiên khi chạy?

22 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 06

Câu 22: Lỗi cú pháp (Syntax Error) thường được phát hiện ở giai đoạn nào trong quá trình phát triển chương trình?

23 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 06

Câu 23: Một chương trình tính tổng các số từ 1 đến N, nhưng lại tính tổng các số từ 0 đến N-1. Đây là ví dụ về loại lỗi nào?

24 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 06

Câu 24: Để kiểm thử hiệu quả một chương trình xử lý chuỗi ký tự, ngoài các chuỗi bình thường, lập trình viên nên tạo các bộ test với những loại chuỗi nào khác?

25 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 06

Câu 25: Khi sử dụng một công cụ gỡ lỗi (debugger), chức năng 'step over' (bước qua) một dòng lệnh có ý nghĩa là gì?

26 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 06

Câu 26: Xét một chương trình có một vòng lặp `while` với điều kiện dừng là `i < 10`. Nếu ban đầu biến `i` được khởi tạo là 0 nhưng không có lệnh nào bên trong vòng lặp làm thay đổi giá trị của `i`, chương trình sẽ gặp phải vấn đề gì?

27 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 06

Câu 27: Công cụ nào sau đây là một ví dụ về công cụ hỗ trợ gỡ lỗi tích hợp sẵn trong nhiều môi trường phát triển (IDE)?

28 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 06

Câu 28: Khi kiểm thử chương trình, tại sao việc ghi lại các bộ dữ liệu test đã sử dụng và kết quả mong đợi là quan trọng?

29 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 06

Câu 29: Xét một hàm nhận vào một danh sách số và trả về số lớn nhất. Nếu danh sách đầu vào là rỗng, hàm này nên xử lý như thế nào để tránh lỗi hoặc kết quả không mong muốn?

30 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 06

Câu 30: Trong quá trình gỡ lỗi, nếu bạn nghi ngờ lỗi nằm trong một đoạn mã phức tạp, kỹ thuật nào sau đây giúp cô lập vấn đề bằng cách tạm thời loại bỏ hoặc đơn giản hóa các phần khác của chương trình?

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình - Đề 07

Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình - Đề 07 được xây dựng với nhiều câu hỏi chất lượng, sát với nội dung chương trình học, giúp bạn dễ dàng ôn tập và kiểm tra kiến thức hiệu quả. Hãy cùng bắt đầu làm bài tập trắc nghiệm ngay để nâng cao hiểu biết và chuẩn bị tốt cho kỳ thi sắp tới!

Câu 1: Khi phát triển phần mềm, giai đoạn nào sau đây tập trung chủ yếu vào việc tìm ra lỗi sai sót trong chương trình?

  • A. Thiết kế hệ thống
  • B. Viết mã nguồn
  • C. Kiểm thử chương trình
  • D. Triển khai và bảo trì

Câu 2: Một chương trình Python báo lỗi `SyntaxError`. Lỗi này thuộc loại lỗi nào?

  • A. Lỗi cú pháp
  • B. Lỗi ngữ nghĩa (logic)
  • C. Lỗi ngoại lệ (runtime)
  • D. Lỗi môi trường

Câu 3: Lỗi xảy ra khi chương trình đang chạy và gặp phải một tình huống bất ngờ (ví dụ: chia cho không, truy cập ngoài phạm vi mảng) được gọi là lỗi gì?

  • A. Lỗi cú pháp
  • B. Lỗi ngữ nghĩa (logic)
  • C. Lỗi ngoại lệ (runtime)
  • D. Lỗi biên dịch

Câu 4: Một chương trình tính diện tích hình chữ nhật theo công thức `dien_tich = (dai + rong) * 2` thay vì `dien_tich = dai * rong`. Đây là ví dụ về loại lỗi nào?

  • A. Lỗi cú pháp
  • B. Lỗi ngữ nghĩa (logic)
  • C. Lỗi ngoại lệ (runtime)
  • D. Lỗi nhập liệu

Câu 5: Mục đích chính của việc tạo ra các bộ dữ liệu test (test cases) là gì?

  • A. Để làm cho chương trình chạy nhanh hơn
  • B. Để chứng minh chương trình hoàn toàn không có lỗi
  • C. Để tạo ra các kết quả ngẫu nhiên
  • D. Để kiểm tra xem chương trình có hoạt động đúng với các đầu vào khác nhau hay không

Câu 6: Khi kiểm thử chương trình, việc sử dụng các giá trị "biên" (boundary values) như giá trị nhỏ nhất, lớn nhất hoặc các giá trị lân cận điểm chuyển đổi có ý nghĩa quan trọng vì:

  • A. Chúng giúp chương trình chạy ổn định hơn.
  • B. Chúng làm tăng tốc độ kiểm thử.
  • C. Lỗi thường có xu hướng xảy ra ở các giá trị biên hoặc lân cận biên.
  • D. Chúng chỉ cần thiết khi kiểm thử các chương trình đồ họa.

Câu 7: Trong quá trình gỡ lỗi (debugging), việc sử dụng lệnh `print()` để in ra giá trị của các biến tại các điểm khác nhau trong chương trình giúp ích gì?

  • A. Theo dõi luồng thực thi và giá trị của biến để xác định vị trí lỗi.
  • B. Tự động sửa lỗi cú pháp.
  • C. Giảm số lượng dòng mã cần gỡ lỗi.
  • D. Ngăn chặn lỗi ngoại lệ xảy ra.

Câu 8: Khi chạy đoạn mã Python sau, lỗi gì sẽ xảy ra?
`a = 10
b = 0
c = a / b`

  • A. TypeError
  • B. IndexError
  • C. ZeroDivisionError
  • D. NameError

Câu 9: Khi chạy đoạn mã Python sau, lỗi gì sẽ xảy ra?
`my_list = [1, 2, 3]
print(my_list[3])`

  • A. TypeError
  • B. IndexError
  • C. ZeroDivisionError
  • D. SyntaxError

Câu 10: Khi chạy đoạn mã Python sau, lỗi gì sẽ xảy ra?
`num_str =

  • A. TypeError
  • B. IndexError
  • C. ZeroDivisionError
  • D. NameError

Câu 11: Khi chạy đoạn mã Python sau, lỗi gì sẽ xảy ra?
`def my_function():
print(

  • A. TypeError
  • B. IndexError
  • C. ZeroDivisionError
  • D. NameError

Câu 12: Khi kiểm thử một hàm tính căn bậc hai, bộ dữ liệu test nào sau đây là quan trọng nhất để kiểm tra các trường hợp "biên" và "không hợp lệ" điển hình?

  • A. 1, 4, 9, 16
  • B. 10, 20, 30, 40
  • C. 0, 1, một số âm (ví dụ: -4), một số rất lớn (ví dụ: 1e10)
  • D. Các số ngẫu nhiên bất kỳ

Câu 13: Bạn viết một chương trình nhập điểm từ 0 đến 10 và tính trung bình. Bộ dữ liệu test nào sau đây là ít hữu ích nhất trong việc tìm lỗi?

  • A. Các giá trị biên: 0, 10
  • B. Các giá trị không hợp lệ: -1, 11, "abc"
  • C. Các giá trị điển hình: 5, 7.5, 8
  • D. Chỉ một giá trị duy nhất: 7

Câu 14: Kỹ thuật gỡ lỗi bằng cách chạy từng dòng lệnh một, quan sát sự thay đổi giá trị của biến được gọi là gì?

  • A. Chạy từng bước (Step-by-step execution)
  • B. Kiểm thử hộp đen (Black box testing)
  • C. Kiểm thử ngẫu nhiên (Random testing)
  • D. In biến trung gian (Print statements)

Câu 15: Trong nhiều môi trường phát triển tích hợp (IDE), công cụ "Điểm dừng" (Breakpoint) cho phép lập trình viên làm gì trong quá trình gỡ lỗi?

  • A. Tự động sửa lỗi cú pháp.
  • B. Dừng chương trình tại một dòng lệnh cụ thể để kiểm tra trạng thái.
  • C. Chạy toàn bộ chương trình mà không cần nhập dữ liệu.
  • D. Tạo báo cáo tự động về hiệu suất chương trình.

Câu 16: Khi bạn gặp một thông báo lỗi (traceback) trong Python, điều đầu tiên bạn nên làm là gì để bắt đầu gỡ lỗi?

  • A. Đọc thông báo lỗi và xác định loại lỗi, dòng mã gây ra lỗi.
  • B. Xóa toàn bộ mã và viết lại từ đầu.
  • C. Chỉ tập trung vào dòng mã cuối cùng trong thông báo lỗi.
  • D. Chạy lại chương trình nhiều lần với cùng một đầu vào.

Câu 17: Bạn viết một chương trình sắp xếp danh sách số. Bạn đã kiểm thử với danh sách có 5 phần tử và chạy đúng. Tuy nhiên, khi kiểm thử với danh sách rỗng, chương trình báo lỗi. Điều này nhấn mạnh tầm quan trọng của việc kiểm thử với bộ dữ liệu nào?

  • A. Dữ liệu ngẫu nhiên
  • B. Dữ liệu điển hình
  • C. Dữ liệu lớn
  • D. Dữ liệu biên và trường hợp đặc biệt (ví dụ: danh sách rỗng)

Câu 18: Quá trình gỡ lỗi (debugging) thường được mô tả là một quá trình lặp đi lặp lại. Điều này có nghĩa là gì?

  • A. Bạn chỉ cần tìm lỗi một lần duy nhất.
  • B. Bạn có thể cần lặp lại các bước tìm, phân tích và sửa lỗi nhiều lần cho đến khi hết lỗi.
  • C. Chỉ có thể gỡ lỗi bằng cách viết lại toàn bộ chương trình.
  • D. Lỗi sẽ tự động biến mất sau một vài lần chạy chương trình.

Câu 19: Khi kiểm thử một chương trình tính tổng các số nguyên dương từ 1 đến N, bộ dữ liệu test nào sau đây là ví dụ tốt nhất cho trường hợp "biên"?

  • A. N = 1
  • B. N = 100
  • C. N = 50
  • D. N = 1000

Câu 20: Giả sử bạn có một hàm nhận đầu vào là tuổi của học sinh (từ 6 đến 18). Để kiểm thử hàm này, bạn nên bao gồm các giá trị nào trong bộ dữ liệu test của mình?

  • A. Chỉ các giá trị ngẫu nhiên trong khoảng 6-18.
  • B. Chỉ các giá trị 10, 12, 15.
  • C. Chỉ các giá trị không hợp lệ như -5, 20.
  • D. Các giá trị biên (6, 18), các giá trị điển hình (ví dụ: 12), và các giá trị không hợp lệ (ví dụ: 5, 19, "mười").

Câu 21: Đâu là điểm khác biệt cơ bản giữa "kiểm thử" (testing) và "gỡ lỗi" (debugging)?

  • A. Kiểm thử là tìm lỗi, gỡ lỗi là phòng ngừa lỗi.
  • B. Kiểm thử chỉ làm với chương trình đã hoàn thiện, gỡ lỗi làm trong khi viết mã.
  • C. Kiểm thử nhằm phát hiện lỗi, gỡ lỗi nhằm xác định nguyên nhân và sửa lỗi.
  • D. Kiểm thử chỉ áp dụng cho lỗi cú pháp, gỡ lỗi áp dụng cho lỗi ngữ nghĩa.

Câu 22: Bạn nhận được một thông báo lỗi `ValueError: could not convert string to float: "abc"`. Nguyên nhân phổ biến nhất gây ra lỗi này là gì?

  • A. Chương trình cố gắng chia cho số 0.
  • B. Chương trình cố gắng chuyển đổi một chuỗi không phải số thành số (float).
  • C. Chương trình truy cập một phần tử ngoài phạm vi của danh sách.
  • D. Chương trình sử dụng một biến chưa được khai báo.

Câu 23: Khi một chương trình chạy mà không báo lỗi nhưng cho ra kết quả sai so với mong đợi, đó là dấu hiệu của loại lỗi nào?

  • A. Lỗi cú pháp
  • B. Lỗi ngữ nghĩa (logic)
  • C. Lỗi ngoại lệ (runtime)
  • D. Lỗi biên dịch

Câu 24: Bạn được yêu cầu viết một hàm tính giai thừa của một số nguyên không âm N. Để kiểm thử hàm này một cách hiệu quả, bạn nên tạo các bộ dữ liệu test nào?

  • A. Chỉ các số lớn như 10, 20.
  • B. Chỉ các số nhỏ như 2, 3.
  • C. Chỉ các số nguyên âm như -5.
  • D. Các giá trị biên (0, 1), một giá trị điển hình (ví dụ: 5), và một giá trị không hợp lệ (ví dụ: -2 hoặc số thập phân).

Câu 25: Công cụ nào sau đây không phải là một công cụ hoặc kỹ thuật phổ biến được sử dụng trong quá trình gỡ lỗi (debugging)?

  • A. Sử dụng điểm dừng (breakpoints) và chạy từng bước.
  • B. In giá trị của biến ra màn hình.
  • C. Tự động sửa lỗi ngữ nghĩa dựa trên trí tuệ nhân tạo.
  • D. Kiểm tra cẩn thận mã nguồn bằng tay.

Câu 26: Khi phân tích một lỗi ngữ nghĩa (logic error), bước quan trọng nhất là gì?

  • A. Hiểu rõ thuật toán hoặc logic mà chương trình lẽ ra phải thực hiện.
  • B. Chạy lại chương trình với đầu vào ngẫu nhiên.
  • C. Tìm kiếm thông báo lỗi trên internet.
  • D. Thay đổi ngẫu nhiên các dòng mã cho đến khi chương trình chạy đúng.

Câu 27: Bạn viết một chương trình cho phép người dùng nhập một số nguyên dương. Khi chạy, nếu người dùng nhập số 0 hoặc một số âm, chương trình sẽ không hoạt động như mong đợi (ví dụ: lặp vô hạn hoặc báo lỗi). Đây là ví dụ về lỗi có thể phát hiện tốt nhất thông qua việc kiểm thử với bộ dữ liệu nào?

  • A. Các số nguyên dương lớn.
  • B. Các số thực dương.
  • C. Các giá trị biên và các giá trị không hợp lệ theo yêu cầu đề bài (0, số âm).
  • D. Chỉ các số nguyên dương nhỏ.

Câu 28: Giả sử bạn có đoạn mã sau:
`def process_list(data):
total = 0
for item in data:
total += item
average = total / len(data)
return average

my_data = []
print(process_list(my_data))`
Khi chạy đoạn mã này, lỗi gì có khả năng xảy ra?

  • A. ZeroDivisionError (khi chia cho độ dài danh sách rỗng)
  • B. TypeError (khi cộng các kiểu dữ liệu không tương thích)
  • C. IndexError (khi truy cập phần tử ngoài phạm vi)
  • D. NameError (khi sử dụng biến chưa khai báo)

Câu 29: Việc kiểm thử chương trình nên được thực hiện vào thời điểm nào trong quá trình phát triển phần mềm?

  • A. Chỉ sau khi toàn bộ chương trình đã được viết xong.
  • B. Chỉ trước khi giao sản phẩm cho người dùng.
  • C. Chỉ khi chương trình gặp sự cố sau khi triển khai.
  • D. Thường xuyên, ngay từ các giai đoạn đầu viết mã cho đến khi hoàn thiện.

Câu 30: Bạn đang gỡ lỗi một chương trình tính toán phức tạp và nghi ngờ có lỗi ở một phần cụ thể của mã. Kỹ thuật nào sau đây giúp bạn cô lập và kiểm tra phần mã đó một cách hiệu quả nhất?

  • A. Chạy toàn bộ chương trình nhiều lần với các đầu vào ngẫu nhiên.
  • B. Đặt điểm dừng (breakpoint) ở đầu phần mã nghi ngờ và sử dụng chế độ chạy từng bước (step-by-step).
  • C. Xóa bỏ phần mã đó và xem chương trình còn chạy không.
  • D. Đọc lại toàn bộ mã nguồn từ đầu đến cuối mà không chạy thử.

1 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 07

Câu 1: Khi phát triển phần mềm, giai đoạn nào sau đây tập trung chủ yếu vào việc tìm ra lỗi sai sót trong chương trình?

2 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 07

Câu 2: Một chương trình Python báo lỗi `SyntaxError`. Lỗi này thuộc loại lỗi nào?

3 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 07

Câu 3: Lỗi xảy ra khi chương trình đang chạy và gặp phải một tình huống bất ngờ (ví dụ: chia cho không, truy cập ngoài phạm vi mảng) được gọi là lỗi gì?

4 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 07

Câu 4: Một chương trình tính diện tích hình chữ nhật theo công thức `dien_tich = (dai + rong) * 2` thay vì `dien_tich = dai * rong`. Đây là ví dụ về loại lỗi nào?

5 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 07

Câu 5: Mục đích chính của việc tạo ra các bộ dữ liệu test (test cases) là gì?

6 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 07

Câu 6: Khi kiểm thử chương trình, việc sử dụng các giá trị 'biên' (boundary values) như giá trị nhỏ nhất, lớn nhất hoặc các giá trị lân cận điểm chuyển đổi có ý nghĩa quan trọng vì:

7 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 07

Câu 7: Trong quá trình gỡ lỗi (debugging), việc sử dụng lệnh `print()` để in ra giá trị của các biến tại các điểm khác nhau trong chương trình giúp ích gì?

8 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 07

Câu 8: Khi chạy đoạn mã Python sau, lỗi gì sẽ xảy ra?
`a = 10
b = 0
c = a / b`

9 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 07

Câu 9: Khi chạy đoạn mã Python sau, lỗi gì sẽ xảy ra?
`my_list = [1, 2, 3]
print(my_list[3])`

10 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 07

Câu 10: Khi chạy đoạn mã Python sau, lỗi gì sẽ xảy ra?
`num_str = "123"
result = num_str + 456`

11 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 07

Câu 11: Khi chạy đoạn mã Python sau, lỗi gì sẽ xảy ra?
`def my_function():
print("Hello")

my_func()`

12 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 07

Câu 12: Khi kiểm thử một hàm tính căn bậc hai, bộ dữ liệu test nào sau đây là quan trọng nhất để kiểm tra các trường hợp 'biên' và 'không hợp lệ' điển hình?

13 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 07

Câu 13: Bạn viết một chương trình nhập điểm từ 0 đến 10 và tính trung bình. Bộ dữ liệu test nào sau đây là *ít* hữu ích nhất trong việc tìm lỗi?

14 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 07

Câu 14: Kỹ thuật gỡ lỗi bằng cách chạy từng dòng lệnh một, quan sát sự thay đổi giá trị của biến được gọi là gì?

15 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 07

Câu 15: Trong nhiều môi trường phát triển tích hợp (IDE), công cụ 'Điểm dừng' (Breakpoint) cho phép lập trình viên làm gì trong quá trình gỡ lỗi?

16 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 07

Câu 16: Khi bạn gặp một thông báo lỗi (traceback) trong Python, điều đầu tiên bạn nên làm là gì để bắt đầu gỡ lỗi?

17 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 07

Câu 17: Bạn viết một chương trình sắp xếp danh sách số. Bạn đã kiểm thử với danh sách có 5 phần tử và chạy đúng. Tuy nhiên, khi kiểm thử với danh sách rỗng, chương trình báo lỗi. Điều này nhấn mạnh tầm quan trọng của việc kiểm thử với bộ dữ liệu nào?

18 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 07

Câu 18: Quá trình gỡ lỗi (debugging) thường được mô tả là một quá trình lặp đi lặp lại. Điều này có nghĩa là gì?

19 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 07

Câu 19: Khi kiểm thử một chương trình tính tổng các số nguyên dương từ 1 đến N, bộ dữ liệu test nào sau đây là ví dụ tốt nhất cho trường hợp 'biên'?

20 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 07

Câu 20: Giả sử bạn có một hàm nhận đầu vào là tuổi của học sinh (từ 6 đến 18). Để kiểm thử hàm này, bạn nên bao gồm các giá trị nào trong bộ dữ liệu test của mình?

21 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 07

Câu 21: Đâu là điểm khác biệt cơ bản giữa 'kiểm thử' (testing) và 'gỡ lỗi' (debugging)?

22 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 07

Câu 22: Bạn nhận được một thông báo lỗi `ValueError: could not convert string to float: 'abc'`. Nguyên nhân phổ biến nhất gây ra lỗi này là gì?

23 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 07

Câu 23: Khi một chương trình chạy mà không báo lỗi nhưng cho ra kết quả sai so với mong đợi, đó là dấu hiệu của loại lỗi nào?

24 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 07

Câu 24: Bạn được yêu cầu viết một hàm tính giai thừa của một số nguyên không âm N. Để kiểm thử hàm này một cách hiệu quả, bạn nên tạo các bộ dữ liệu test nào?

25 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 07

Câu 25: Công cụ nào sau đây *không* phải là một công cụ hoặc kỹ thuật phổ biến được sử dụng trong quá trình gỡ lỗi (debugging)?

26 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 07

Câu 26: Khi phân tích một lỗi ngữ nghĩa (logic error), bước quan trọng nhất là gì?

27 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 07

Câu 27: Bạn viết một chương trình cho phép người dùng nhập một số nguyên dương. Khi chạy, nếu người dùng nhập số 0 hoặc một số âm, chương trình sẽ không hoạt động như mong đợi (ví dụ: lặp vô hạn hoặc báo lỗi). Đây là ví dụ về lỗi có thể phát hiện tốt nhất thông qua việc kiểm thử với bộ dữ liệu nào?

28 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 07

Câu 28: Giả sử bạn có đoạn mã sau:
`def process_list(data):
total = 0
for item in data:
total += item
average = total / len(data)
return average

my_data = []
print(process_list(my_data))`
Khi chạy đoạn mã này, lỗi gì có khả năng xảy ra?

29 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 07

Câu 29: Việc kiểm thử chương trình nên được thực hiện vào thời điểm nào trong quá trình phát triển phần mềm?

30 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 07

Câu 30: Bạn đang gỡ lỗi một chương trình tính toán phức tạp và nghi ngờ có lỗi ở một phần cụ thể của mã. Kỹ thuật nào sau đây giúp bạn cô lập và kiểm tra phần mã đó một cách hiệu quả nhất?

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình - Đề 08

Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình - Đề 08 được xây dựng với nhiều câu hỏi chất lượng, sát với nội dung chương trình học, giúp bạn dễ dàng ôn tập và kiểm tra kiến thức hiệu quả. Hãy cùng bắt đầu làm bài tập trắc nghiệm ngay để nâng cao hiểu biết và chuẩn bị tốt cho kỳ thi sắp tới!

Câu 1: Khi phát triển phần mềm, giai đoạn nào sau đây tập trung chủ yếu vào việc tìm ra lỗi sai sót trong chương trình?

  • A. Thiết kế hệ thống
  • B. Viết mã nguồn
  • C. Kiểm thử chương trình
  • D. Triển khai và bảo trì

Câu 2: Một chương trình Python báo lỗi `SyntaxError`. Lỗi này thuộc loại lỗi nào?

  • A. Lỗi cú pháp
  • B. Lỗi ngữ nghĩa (logic)
  • C. Lỗi ngoại lệ (runtime)
  • D. Lỗi môi trường

Câu 3: Lỗi xảy ra khi chương trình đang chạy và gặp phải một tình huống bất ngờ (ví dụ: chia cho không, truy cập ngoài phạm vi mảng) được gọi là lỗi gì?

  • A. Lỗi cú pháp
  • B. Lỗi ngữ nghĩa (logic)
  • C. Lỗi ngoại lệ (runtime)
  • D. Lỗi biên dịch

Câu 4: Một chương trình tính diện tích hình chữ nhật theo công thức `dien_tich = (dai + rong) * 2` thay vì `dien_tich = dai * rong`. Đây là ví dụ về loại lỗi nào?

  • A. Lỗi cú pháp
  • B. Lỗi ngữ nghĩa (logic)
  • C. Lỗi ngoại lệ (runtime)
  • D. Lỗi nhập liệu

Câu 5: Mục đích chính của việc tạo ra các bộ dữ liệu test (test cases) là gì?

  • A. Để làm cho chương trình chạy nhanh hơn
  • B. Để chứng minh chương trình hoàn toàn không có lỗi
  • C. Để tạo ra các kết quả ngẫu nhiên
  • D. Để kiểm tra xem chương trình có hoạt động đúng với các đầu vào khác nhau hay không

Câu 6: Khi kiểm thử chương trình, việc sử dụng các giá trị "biên" (boundary values) như giá trị nhỏ nhất, lớn nhất hoặc các giá trị lân cận điểm chuyển đổi có ý nghĩa quan trọng vì:

  • A. Chúng giúp chương trình chạy ổn định hơn.
  • B. Chúng làm tăng tốc độ kiểm thử.
  • C. Lỗi thường có xu hướng xảy ra ở các giá trị biên hoặc lân cận biên.
  • D. Chúng chỉ cần thiết khi kiểm thử các chương trình đồ họa.

Câu 7: Trong quá trình gỡ lỗi (debugging), việc sử dụng lệnh `print()` để in ra giá trị của các biến tại các điểm khác nhau trong chương trình giúp ích gì?

  • A. Theo dõi luồng thực thi và giá trị của biến để xác định vị trí lỗi.
  • B. Tự động sửa lỗi cú pháp.
  • C. Giảm số lượng dòng mã cần gỡ lỗi.
  • D. Ngăn chặn lỗi ngoại lệ xảy ra.

Câu 8: Khi chạy đoạn mã Python sau, lỗi gì sẽ xảy ra?
`a = 10
b = 0
c = a / b`

  • A. TypeError
  • B. IndexError
  • C. ZeroDivisionError
  • D. NameError

Câu 9: Khi chạy đoạn mã Python sau, lỗi gì sẽ xảy ra?
`my_list = [1, 2, 3]
print(my_list[3])`

  • A. TypeError
  • B. IndexError
  • C. ZeroDivisionError
  • D. SyntaxError

Câu 10: Khi chạy đoạn mã Python sau, lỗi gì sẽ xảy ra?
`num_str =

  • A. TypeError
  • B. IndexError
  • C. ZeroDivisionError
  • D. NameError

Câu 11: Khi chạy đoạn mã Python sau, lỗi gì sẽ xảy ra?
`def my_function():
print(

  • A. TypeError
  • B. IndexError
  • C. ZeroDivisionError
  • D. NameError

Câu 12: Khi kiểm thử một hàm tính căn bậc hai, bộ dữ liệu test nào sau đây là quan trọng nhất để kiểm tra các trường hợp "biên" và "không hợp lệ" điển hình?

  • A. 1, 4, 9, 16
  • B. 10, 20, 30, 40
  • C. 0, 1, một số âm (ví dụ: -4), một số rất lớn (ví dụ: 1e10)
  • D. Các số ngẫu nhiên bất kỳ

Câu 13: Bạn viết một chương trình nhập điểm từ 0 đến 10 và tính trung bình. Bộ dữ liệu test nào sau đây là ít hữu ích nhất trong việc tìm lỗi?

  • A. Các giá trị biên: 0, 10
  • B. Các giá trị không hợp lệ: -1, 11, "abc"
  • C. Các giá trị điển hình: 5, 7.5, 8
  • D. Chỉ một giá trị duy nhất: 7

Câu 14: Kỹ thuật gỡ lỗi bằng cách chạy từng dòng lệnh một, quan sát sự thay đổi giá trị của biến được gọi là gì?

  • A. Chạy từng bước (Step-by-step execution)
  • B. Kiểm thử hộp đen (Black box testing)
  • C. Kiểm thử ngẫu nhiên (Random testing)
  • D. In biến trung gian (Print statements)

Câu 15: Trong nhiều môi trường phát triển tích hợp (IDE), công cụ "Điểm dừng" (Breakpoint) cho phép lập trình viên làm gì trong quá trình gỡ lỗi?

  • A. Tự động sửa lỗi cú pháp.
  • B. Dừng chương trình tại một dòng lệnh cụ thể để kiểm tra trạng thái.
  • C. Chạy toàn bộ chương trình mà không cần nhập dữ liệu.
  • D. Tạo báo cáo tự động về hiệu suất chương trình.

Câu 16: Khi bạn gặp một thông báo lỗi (traceback) trong Python, điều đầu tiên bạn nên làm là gì để bắt đầu gỡ lỗi?

  • A. Đọc thông báo lỗi và xác định loại lỗi, dòng mã gây ra lỗi.
  • B. Xóa toàn bộ mã và viết lại từ đầu.
  • C. Chỉ tập trung vào dòng mã cuối cùng trong thông báo lỗi.
  • D. Chạy lại chương trình nhiều lần với cùng một đầu vào.

Câu 17: Bạn viết một chương trình sắp xếp danh sách số. Bạn đã kiểm thử với danh sách có 5 phần tử và chạy đúng. Tuy nhiên, khi kiểm thử với danh sách rỗng, chương trình báo lỗi. Điều này nhấn mạnh tầm quan trọng của việc kiểm thử với bộ dữ liệu nào?

  • A. Dữ liệu ngẫu nhiên
  • B. Dữ liệu điển hình
  • C. Dữ liệu lớn
  • D. Dữ liệu biên và trường hợp đặc biệt (ví dụ: danh sách rỗng)

Câu 18: Quá trình gỡ lỗi (debugging) thường được mô tả là một quá trình lặp đi lặp lại. Điều này có nghĩa là gì?

  • A. Bạn chỉ cần tìm lỗi một lần duy nhất.
  • B. Bạn có thể cần lặp lại các bước tìm, phân tích và sửa lỗi nhiều lần cho đến khi hết lỗi.
  • C. Chỉ có thể gỡ lỗi bằng cách viết lại toàn bộ chương trình.
  • D. Lỗi sẽ tự động biến mất sau một vài lần chạy chương trình.

Câu 19: Khi kiểm thử một chương trình tính tổng các số nguyên dương từ 1 đến N, bộ dữ liệu test nào sau đây là ví dụ tốt nhất cho trường hợp "biên"?

  • A. N = 1
  • B. N = 100
  • C. N = 50
  • D. N = 1000

Câu 20: Giả sử bạn có một hàm nhận đầu vào là tuổi của học sinh (từ 6 đến 18). Để kiểm thử hàm này, bạn nên bao gồm các giá trị nào trong bộ dữ liệu test của mình?

  • A. Chỉ các giá trị ngẫu nhiên trong khoảng 6-18.
  • B. Chỉ các giá trị 10, 12, 15.
  • C. Chỉ các giá trị không hợp lệ như -5, 20.
  • D. Các giá trị biên (6, 18), các giá trị điển hình (ví dụ: 12), và các giá trị không hợp lệ (ví dụ: 5, 19, "mười").

Câu 21: Đâu là điểm khác biệt cơ bản giữa "kiểm thử" (testing) và "gỡ lỗi" (debugging)?

  • A. Kiểm thử là tìm lỗi, gỡ lỗi là phòng ngừa lỗi.
  • B. Kiểm thử chỉ làm với chương trình đã hoàn thiện, gỡ lỗi làm trong khi viết mã.
  • C. Kiểm thử nhằm phát hiện lỗi, gỡ lỗi nhằm xác định nguyên nhân và sửa lỗi.
  • D. Kiểm thử chỉ áp dụng cho lỗi cú pháp, gỡ lỗi áp dụng cho lỗi ngữ nghĩa.

Câu 22: Bạn nhận được một thông báo lỗi `ValueError: could not convert string to float: "abc"`. Nguyên nhân phổ biến nhất gây ra lỗi này là gì?

  • A. Chương trình cố gắng chia cho số 0.
  • B. Chương trình cố gắng chuyển đổi một chuỗi không phải số thành số (float).
  • C. Chương trình truy cập một phần tử ngoài phạm vi của danh sách.
  • D. Chương trình sử dụng một biến chưa được khai báo.

Câu 23: Khi một chương trình chạy mà không báo lỗi nhưng cho ra kết quả sai so với mong đợi, đó là dấu hiệu của loại lỗi nào?

  • A. Lỗi cú pháp
  • B. Lỗi ngữ nghĩa (logic)
  • C. Lỗi ngoại lệ (runtime)
  • D. Lỗi biên dịch

Câu 24: Bạn được yêu cầu viết một hàm tính giai thừa của một số nguyên không âm N. Để kiểm thử hàm này một cách hiệu quả, bạn nên tạo các bộ dữ liệu test nào?

  • A. Chỉ các số lớn như 10, 20.
  • B. Chỉ các số nhỏ như 2, 3.
  • C. Chỉ các số nguyên âm như -5.
  • D. Các giá trị biên (0, 1), một giá trị điển hình (ví dụ: 5), và một giá trị không hợp lệ (ví dụ: -2 hoặc số thập phân).

Câu 25: Công cụ nào sau đây không phải là một công cụ hoặc kỹ thuật phổ biến được sử dụng trong quá trình gỡ lỗi (debugging)?

  • A. Sử dụng điểm dừng (breakpoints) và chạy từng bước.
  • B. In giá trị của biến ra màn hình.
  • C. Tự động sửa lỗi ngữ nghĩa dựa trên trí tuệ nhân tạo.
  • D. Kiểm tra cẩn thận mã nguồn bằng tay.

Câu 26: Khi phân tích một lỗi ngữ nghĩa (logic error), bước quan trọng nhất là gì?

  • A. Hiểu rõ thuật toán hoặc logic mà chương trình lẽ ra phải thực hiện.
  • B. Chạy lại chương trình với đầu vào ngẫu nhiên.
  • C. Tìm kiếm thông báo lỗi trên internet.
  • D. Thay đổi ngẫu nhiên các dòng mã cho đến khi chương trình chạy đúng.

Câu 27: Bạn viết một chương trình cho phép người dùng nhập một số nguyên dương. Khi chạy, nếu người dùng nhập số 0 hoặc một số âm, chương trình sẽ không hoạt động như mong đợi (ví dụ: lặp vô hạn hoặc báo lỗi). Đây là ví dụ về lỗi có thể phát hiện tốt nhất thông qua việc kiểm thử với bộ dữ liệu nào?

  • A. Các số nguyên dương lớn.
  • B. Các số thực dương.
  • C. Các giá trị biên và các giá trị không hợp lệ theo yêu cầu đề bài (0, số âm).
  • D. Chỉ các số nguyên dương nhỏ.

Câu 28: Giả sử bạn có đoạn mã sau:
`def process_list(data):
total = 0
for item in data:
total += item
average = total / len(data)
return average

my_data = []
print(process_list(my_data))`
Khi chạy đoạn mã này, lỗi gì có khả năng xảy ra?

  • A. ZeroDivisionError (khi chia cho độ dài danh sách rỗng)
  • B. TypeError (khi cộng các kiểu dữ liệu không tương thích)
  • C. IndexError (khi truy cập phần tử ngoài phạm vi)
  • D. NameError (khi sử dụng biến chưa khai báo)

Câu 29: Việc kiểm thử chương trình nên được thực hiện vào thời điểm nào trong quá trình phát triển phần mềm?

  • A. Chỉ sau khi toàn bộ chương trình đã được viết xong.
  • B. Chỉ trước khi giao sản phẩm cho người dùng.
  • C. Chỉ khi chương trình gặp sự cố sau khi triển khai.
  • D. Thường xuyên, ngay từ các giai đoạn đầu viết mã cho đến khi hoàn thiện.

Câu 30: Bạn đang gỡ lỗi một chương trình tính toán phức tạp và nghi ngờ có lỗi ở một phần cụ thể của mã. Kỹ thuật nào sau đây giúp bạn cô lập và kiểm tra phần mã đó một cách hiệu quả nhất?

  • A. Chạy toàn bộ chương trình nhiều lần với các đầu vào ngẫu nhiên.
  • B. Đặt điểm dừng (breakpoint) ở đầu phần mã nghi ngờ và sử dụng chế độ chạy từng bước (step-by-step).
  • C. Xóa bỏ phần mã đó và xem chương trình còn chạy không.
  • D. Đọc lại toàn bộ mã nguồn từ đầu đến cuối mà không chạy thử.

1 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 08

Câu 1: Khi phát triển phần mềm, giai đoạn nào sau đây tập trung chủ yếu vào việc tìm ra lỗi sai sót trong chương trình?

2 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 08

Câu 2: Một chương trình Python báo lỗi `SyntaxError`. Lỗi này thuộc loại lỗi nào?

3 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 08

Câu 3: Lỗi xảy ra khi chương trình đang chạy và gặp phải một tình huống bất ngờ (ví dụ: chia cho không, truy cập ngoài phạm vi mảng) được gọi là lỗi gì?

4 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 08

Câu 4: Một chương trình tính diện tích hình chữ nhật theo công thức `dien_tich = (dai + rong) * 2` thay vì `dien_tich = dai * rong`. Đây là ví dụ về loại lỗi nào?

5 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 08

Câu 5: Mục đích chính của việc tạo ra các bộ dữ liệu test (test cases) là gì?

6 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 08

Câu 6: Khi kiểm thử chương trình, việc sử dụng các giá trị 'biên' (boundary values) như giá trị nhỏ nhất, lớn nhất hoặc các giá trị lân cận điểm chuyển đổi có ý nghĩa quan trọng vì:

7 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 08

Câu 7: Trong quá trình gỡ lỗi (debugging), việc sử dụng lệnh `print()` để in ra giá trị của các biến tại các điểm khác nhau trong chương trình giúp ích gì?

8 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 08

Câu 8: Khi chạy đoạn mã Python sau, lỗi gì sẽ xảy ra?
`a = 10
b = 0
c = a / b`

9 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 08

Câu 9: Khi chạy đoạn mã Python sau, lỗi gì sẽ xảy ra?
`my_list = [1, 2, 3]
print(my_list[3])`

10 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 08

Câu 10: Khi chạy đoạn mã Python sau, lỗi gì sẽ xảy ra?
`num_str = "123"
result = num_str + 456`

11 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 08

Câu 11: Khi chạy đoạn mã Python sau, lỗi gì sẽ xảy ra?
`def my_function():
print("Hello")

my_func()`

12 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 08

Câu 12: Khi kiểm thử một hàm tính căn bậc hai, bộ dữ liệu test nào sau đây là quan trọng nhất để kiểm tra các trường hợp 'biên' và 'không hợp lệ' điển hình?

13 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 08

Câu 13: Bạn viết một chương trình nhập điểm từ 0 đến 10 và tính trung bình. Bộ dữ liệu test nào sau đây là *ít* hữu ích nhất trong việc tìm lỗi?

14 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 08

Câu 14: Kỹ thuật gỡ lỗi bằng cách chạy từng dòng lệnh một, quan sát sự thay đổi giá trị của biến được gọi là gì?

15 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 08

Câu 15: Trong nhiều môi trường phát triển tích hợp (IDE), công cụ 'Điểm dừng' (Breakpoint) cho phép lập trình viên làm gì trong quá trình gỡ lỗi?

16 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 08

Câu 16: Khi bạn gặp một thông báo lỗi (traceback) trong Python, điều đầu tiên bạn nên làm là gì để bắt đầu gỡ lỗi?

17 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 08

Câu 17: Bạn viết một chương trình sắp xếp danh sách số. Bạn đã kiểm thử với danh sách có 5 phần tử và chạy đúng. Tuy nhiên, khi kiểm thử với danh sách rỗng, chương trình báo lỗi. Điều này nhấn mạnh tầm quan trọng của việc kiểm thử với bộ dữ liệu nào?

18 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 08

Câu 18: Quá trình gỡ lỗi (debugging) thường được mô tả là một quá trình lặp đi lặp lại. Điều này có nghĩa là gì?

19 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 08

Câu 19: Khi kiểm thử một chương trình tính tổng các số nguyên dương từ 1 đến N, bộ dữ liệu test nào sau đây là ví dụ tốt nhất cho trường hợp 'biên'?

20 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 08

Câu 20: Giả sử bạn có một hàm nhận đầu vào là tuổi của học sinh (từ 6 đến 18). Để kiểm thử hàm này, bạn nên bao gồm các giá trị nào trong bộ dữ liệu test của mình?

21 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 08

Câu 21: Đâu là điểm khác biệt cơ bản giữa 'kiểm thử' (testing) và 'gỡ lỗi' (debugging)?

22 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 08

Câu 22: Bạn nhận được một thông báo lỗi `ValueError: could not convert string to float: 'abc'`. Nguyên nhân phổ biến nhất gây ra lỗi này là gì?

23 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 08

Câu 23: Khi một chương trình chạy mà không báo lỗi nhưng cho ra kết quả sai so với mong đợi, đó là dấu hiệu của loại lỗi nào?

24 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 08

Câu 24: Bạn được yêu cầu viết một hàm tính giai thừa của một số nguyên không âm N. Để kiểm thử hàm này một cách hiệu quả, bạn nên tạo các bộ dữ liệu test nào?

25 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 08

Câu 25: Công cụ nào sau đây *không* phải là một công cụ hoặc kỹ thuật phổ biến được sử dụng trong quá trình gỡ lỗi (debugging)?

26 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 08

Câu 26: Khi phân tích một lỗi ngữ nghĩa (logic error), bước quan trọng nhất là gì?

27 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 08

Câu 27: Bạn viết một chương trình cho phép người dùng nhập một số nguyên dương. Khi chạy, nếu người dùng nhập số 0 hoặc một số âm, chương trình sẽ không hoạt động như mong đợi (ví dụ: lặp vô hạn hoặc báo lỗi). Đây là ví dụ về lỗi có thể phát hiện tốt nhất thông qua việc kiểm thử với bộ dữ liệu nào?

28 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 08

Câu 28: Giả sử bạn có đoạn mã sau:
`def process_list(data):
total = 0
for item in data:
total += item
average = total / len(data)
return average

my_data = []
print(process_list(my_data))`
Khi chạy đoạn mã này, lỗi gì có khả năng xảy ra?

29 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 08

Câu 29: Việc kiểm thử chương trình nên được thực hiện vào thời điểm nào trong quá trình phát triển phần mềm?

30 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 08

Câu 30: Bạn đang gỡ lỗi một chương trình tính toán phức tạp và nghi ngờ có lỗi ở một phần cụ thể của mã. Kỹ thuật nào sau đây giúp bạn cô lập và kiểm tra phần mã đó một cách hiệu quả nhất?

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình - Đề 09

Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình - Đề 09 được xây dựng với nhiều câu hỏi chất lượng, sát với nội dung chương trình học, giúp bạn dễ dàng ôn tập và kiểm tra kiến thức hiệu quả. Hãy cùng bắt đầu làm bài tập trắc nghiệm ngay để nâng cao hiểu biết và chuẩn bị tốt cho kỳ thi sắp tới!

Câu 1: Khi phát triển phần mềm, giai đoạn kiểm thử (testing) có mục đích chính là gì?

  • A. Để chương trình chạy nhanh hơn.
  • B. Để làm cho mã nguồn ngắn gọn hơn.
  • C. Để hiểu rõ hơn yêu cầu của khách hàng.
  • D. Để tìm ra lỗi và đảm bảo chương trình hoạt động đúng như mong đợi.

Câu 2: Lỗi cú pháp (Syntax Error) trong lập trình Python thường xảy ra khi nào?

  • A. Khi mã nguồn vi phạm các quy tắc ngữ pháp của ngôn ngữ Python.
  • B. Khi chương trình chạy và thực hiện một phép tính không hợp lệ.
  • C. Khi chương trình chạy nhưng cho kết quả sai so với yêu cầu.
  • D. Khi chương trình sử dụng tên biến chưa được khai báo.

Câu 3: Xét đoạn mã Python sau:
```python
def tinh_tong(a, b):
ket_qua = a + b
print(ket_qua)

tinh_tong(5, "10")
```
Khi chạy đoạn mã này, lỗi ngoại lệ (runtime error) nào có khả năng xảy ra nhất?

  • A. ZeroDivisionError
  • B. IndexError
  • C. TypeError
  • D. NameError

Câu 4: Lỗi logic (Logic Error) trong chương trình là loại lỗi gì?

  • A. Lỗi khiến chương trình không thể biên dịch hoặc thông dịch được.
  • B. Lỗi khiến chương trình chạy mà không báo lỗi nhưng cho kết quả sai.
  • C. Lỗi xảy ra khi chương trình cố gắng truy cập vào vùng nhớ không hợp lệ.
  • D. Lỗi do sử dụng tên biến hoặc hàm chưa được định nghĩa.

Câu 5: Để kiểm thử một hàm tính căn bậc hai của một số, bộ dữ liệu test nào sau đây là quan trọng nhất để kiểm tra các trường hợp đặc biệt (boundary cases)?

  • A. Các số dương lớn (ví dụ: 10000, 1000000).
  • B. Các số nguyên tố.
  • C. Các số âm.
  • D. Số 0 và các số dương rất gần 0.

Câu 6: Khi gặp lỗi ngoại lệ `IndexError: list index out of range` trong Python, nguyên nhân phổ biến nhất là gì?

  • A. Chương trình đang cố gắng truy cập một phần tử trong danh sách bằng một chỉ số (index) nằm ngoài phạm vi cho phép của danh sách đó.
  • B. Chương trình đang cố gắng chia cho số 0.
  • C. Chương trình đang thực hiện một phép toán với các kiểu dữ liệu không tương thích.
  • D. Chương trình đang sử dụng một tên biến hoặc hàm chưa được khai báo.

Câu 7: Phương pháp gỡ lỗi (debugging) bằng cách in giá trị của các biến tại các điểm khác nhau trong chương trình (ví dụ: sử dụng lệnh `print()`) có ưu điểm chính là gì?

  • A. Giúp chương trình chạy nhanh hơn.
  • B. Giúp theo dõi luồng thực thi của chương trình và giá trị của biến tại các bước cụ thể.
  • C. Tự động sửa tất cả các lỗi logic.
  • D. Đảm bảo chương trình hoạt động trên mọi hệ điều hành.

Câu 8: Công cụ "điểm dừng" (breakpoint) trong môi trường phát triển tích hợp (IDE) được sử dụng để làm gì trong quá trình gỡ lỗi?

  • A. Tự động sửa lỗi cú pháp.
  • B. Tăng tốc độ thực thi của chương trình.
  • C. Dừng chương trình lại tại một dòng mã cụ thể để kiểm tra trạng thái (giá trị biến, luồng điều khiển).
  • D. Tạo ra các bộ dữ liệu test ngẫu nhiên.

Câu 9: Xét đoạn mã Python sau:
```python
diem_toan = 8
diem_van = "9"

diem_trung_binh = (diem_toan + diem_van) / 2
print(diem_trung_binh)
```
Lỗi gì sẽ xảy ra khi chạy đoạn mã này?

  • A. SyntaxError
  • B. ZeroDivisionError
  • C. IndexError
  • D. TypeError

Câu 10: Quy trình gỡ lỗi (debugging) thông thường bao gồm các bước nào theo thứ tự hợp lý?

  • A. Sửa lỗi -> Tìm lỗi -> Kiểm thử lại -> Xác định lỗi.
  • B. Xác định lỗi -> Tìm vị trí lỗi -> Sửa lỗi -> Kiểm thử lại.
  • C. Kiểm thử lại -> Sửa lỗi -> Tìm vị trí lỗi -> Xác định lỗi.
  • D. Tìm vị trí lỗi -> Xác định lỗi -> Kiểm thử lại -> Sửa lỗi.

Câu 11: Tại sao việc kiểm thử với các bộ dữ liệu ngẫu nhiên đôi khi hữu ích nhưng không thể thay thế hoàn toàn việc kiểm thử với các trường hợp cụ thể?

  • A. Dữ liệu ngẫu nhiên có thể bỏ sót các trường hợp biên hoặc các tình huống đặc biệt dễ gây lỗi.
  • B. Dữ liệu ngẫu nhiên luôn tạo ra lỗi cú pháp.
  • C. Dữ liệu ngẫu nhiên chỉ hữu ích cho việc kiểm thử lỗi logic.
  • D. Dữ liệu ngẫu nhiên yêu cầu nhiều bộ nhớ hơn.

Câu 12: Khi nhận được thông báo lỗi `NameError: name "ten_bien_nao_do" is not defined`, bạn nên kiểm tra điều gì đầu tiên?

  • A. Kiểu dữ liệu của biến đó.
  • B. Giá trị hiện tại của biến đó.
  • C. Phép toán đang được thực hiện với biến đó.
  • D. Việc biến đó đã được khai báo hoặc gán giá trị trước khi sử dụng hay chưa, và tên biến có bị gõ sai chính tả không.

Câu 13: Xét đoạn mã Python sau:
```python
data = [10, 20, 30]

# Giả sử chương trình tiếp tục xử lý data

# ... một lúc sau ...

print(data[3])
```
Lỗi gì sẽ xảy ra khi chạy dòng `print(data[3])`?

  • A. TypeError
  • B. IndexError
  • C. NameError
  • D. ZeroDivisionError

Câu 14: Giả sử bạn viết một chương trình tính điểm trung bình của một danh sách các số. Nếu danh sách đầu vào bị rỗng (không có phần tử nào), lỗi ngoại lệ nào có khả năng xảy ra khi bạn cố gắng tính tổng và chia cho số lượng phần tử?

  • A. ZeroDivisionError (khi chia cho 0 vì số lượng phần tử là 0).
  • B. IndexError (vì không có phần tử để truy cập).
  • C. TypeError (vì danh sách rỗng không có kiểu dữ liệu xác định).
  • D. NameError (vì biến danh sách không được định nghĩa).

Câu 15: Khi kiểm thử một chương trình xử lý dữ liệu nhập từ người dùng, tại sao việc kiểm thử với dữ liệu không hợp lệ (ví dụ: nhập chữ thay vì số khi chương trình yêu cầu số) là quan trọng?

  • A. Để làm cho chương trình chạy nhanh hơn khi gặp lỗi.
  • B. Để đảm bảo chương trình chỉ chấp nhận dữ liệu hợp lệ.
  • C. Để kiểm tra khả năng xử lý lỗi của chương trình khi nhận dữ liệu sai định dạng hoặc ngoài phạm vi mong đợi.
  • D. Để tăng độ phức tạp của mã nguồn.

Câu 16: Xét đoạn mã Python sau:
```python
so_a = 10
so_b = 0

ket_qua = so_a / so_b
print(ket_qua)
```
Lỗi gì sẽ xảy ra khi chạy đoạn mã này?

  • A. ZeroDivisionError
  • B. TypeError
  • C. NameError
  • D. SyntaxError

Câu 17: Trong quá trình gỡ lỗi, sau khi đã xác định vị trí và nguyên nhân của lỗi, bước tiếp theo cần làm là gì?

  • A. Bỏ qua lỗi và tiếp tục viết mã mới.
  • B. Xóa toàn bộ chương trình và viết lại từ đầu.
  • C. Thực hiện sửa đổi mã nguồn để khắc phục lỗi.
  • D. Chạy lại chương trình nhiều lần để xem lỗi có biến mất không.

Câu 18: Xét một chương trình yêu cầu người dùng nhập một số nguyên dương. Người dùng nhập giá trị `-5`. Nếu chương trình không kiểm tra điều kiện số dương và tiếp tục xử lý, đây là ví dụ về việc bỏ sót loại kiểm thử nào?

  • A. Kiểm thử cú pháp.
  • B. Kiểm thử với dữ liệu không hợp lệ/trường hợp biên.
  • C. Kiểm thử hiệu năng.
  • D. Kiểm thử giao diện người dùng.

Câu 19: Một trong những lợi ích của việc sử dụng môi trường phát triển tích hợp (IDE) có tích hợp trình gỡ lỗi (debugger) là gì?

  • A. Cho phép chạy từng bước (step-by-step) mã nguồn và xem giá trị của biến tại mỗi bước.
  • B. Tự động viết mã nguồn dựa trên mô tả bằng ngôn ngữ tự nhiên.
  • C. Biên dịch chương trình nhanh hơn.
  • D. Tự động tạo báo cáo lỗi và gửi cho nhà phát triển.

Câu 20: Sau khi sửa một lỗi trong chương trình, tại sao việc kiểm thử lại (re-testing) là rất quan trọng?

  • A. Để tăng số lần chạy chương trình.
  • B. Để tìm thêm lỗi cú pháp.
  • C. Để chắc chắn rằng lỗi ban đầu chưa được sửa hoàn toàn.
  • D. Để xác nhận rằng lỗi đã được khắc phục và việc sửa lỗi không gây ra các lỗi mới (regression bugs).

Câu 21: Xét đoạn mã Python sau:
```python
def kiem_tra_tuoi(tuoi):
if tuoi < 18: print("Chua du tuoi") elif tuoi > 60:
print("Da nghi huu")
else:
print("Dang trong do tuoi lao dong")

kiem_tra_tuoi(25)
kiem_tra_tuoi(16)
kiem_tra_tuoi(65)
kiem_tra_tuoi("hai muoi")
```
Lỗi gì sẽ xảy ra khi chạy đoạn mã này?

  • A. SyntaxError
  • B. IndexError
  • C. TypeError
  • D. ZeroDivisionError

Câu 22: Khi một chương trình chạy chậm hơn dự kiến hoặc tiêu thụ quá nhiều bộ nhớ, loại vấn đề này thường liên quan đến:

  • A. Lỗi cú pháp.
  • B. Vấn đề hiệu năng (performance issues).
  • C. Lỗi NameError.
  • D. Lỗi ZeroDivisionError.

Câu 23: Phương pháp nào sau đây KHÔNG phải là một kỹ thuật gỡ lỗi hiệu quả?

  • A. Sử dụng trình gỡ lỗi (debugger) để chạy từng bước mã nguồn.
  • B. Thêm các lệnh in để kiểm tra giá trị biến và luồng thực thi.
  • C. Thu hẹp phạm vi tìm kiếm lỗi bằng cách cô lập phần mã gây sự cố.
  • D. Ngẫu nhiên thay đổi mã nguồn cho đến khi chương trình chạy đúng.

Câu 24: Tại sao việc viết mã nguồn rõ ràng, dễ đọc (sử dụng tên biến gợi nhớ, thêm chú thích, định dạng mã hợp lý) lại giúp ích cho quá trình gỡ lỗi?

  • A. Giúp lập trình viên dễ dàng hiểu được mã hoạt động như thế nào và nhanh chóng xác định được vị trí lỗi.
  • B. Giúp trình biên dịch bỏ qua các lỗi cú pháp.
  • C. Tự động sửa lỗi logic.
  • D. Làm cho chương trình chạy nhanh hơn.

Câu 25: Khi kiểm thử một chương trình, việc ghi lại các bộ dữ liệu test đã sử dụng và kết quả mong đợi là quan trọng vì:

  • A. Tăng kích thước của chương trình.
  • B. Làm cho quá trình kiểm thử phức tạp hơn.
  • C. Giúp tái sử dụng các bộ test khi có sự thay đổi mã nguồn và kiểm tra xem lỗi cũ có tái diễn không.
  • D. Chỉ cần thiết cho các chương trình rất lớn.

Câu 26: Xét đoạn mã Python sau:
```python
count = 0
while count < 5: print(count) # Thiếu lệnh tăng count ``` Đoạn mã này sẽ gây ra lỗi loại gì khi chạy?

  • A. SyntaxError
  • B. TypeError
  • C. NameError
  • D. Lỗi logic (vòng lặp vô hạn)

Câu 27: Trong quá trình gỡ lỗi, nếu bạn nghi ngờ lỗi nằm trong một hàm cụ thể, kỹ thuật nào sau đây giúp bạn tập trung kiểm tra luồng thực thi bên trong hàm đó một cách chi tiết?

  • A. Xóa toàn bộ mã nguồn của hàm và viết lại.
  • B. Đặt điểm dừng (breakpoint) ở đầu hàm và sử dụng chức năng "step into" của trình gỡ lỗi.
  • C. Chạy hàm đó độc lập hàng trăm lần.
  • D. Thêm chú thích vào mỗi dòng mã trong hàm.

Câu 28: Mục tiêu cuối cùng của việc gỡ lỗi (debugging) là gì?

  • A. Làm cho chương trình chạy nhanh hơn.
  • B. Thêm tính năng mới vào chương trình.
  • C. Xác định, phân tích và sửa chữa các lỗi trong mã nguồn để chương trình hoạt động đúng.
  • D. Tạo tài liệu hướng dẫn sử dụng cho chương trình.

Câu 29: Tại sao việc kiểm thử chương trình nên được thực hiện thường xuyên trong suốt quá trình phát triển, chứ không chỉ đợi đến khi hoàn thành?

  • A. Tìm và sửa lỗi sớm sẽ dễ dàng và tốn ít chi phí hơn so với việc tìm lỗi trong một chương trình lớn đã hoàn thành.
  • B. Việc kiểm thử thường xuyên làm tăng số lượng lỗi tìm thấy.
  • C. Chỉ những chương trình nhỏ mới cần kiểm thử thường xuyên.
  • D. Kiểm thử thường xuyên giúp làm giảm kích thước của chương trình.

Câu 30: Khi bạn gặp một lỗi khó hiểu và không biết bắt đầu tìm ở đâu, chiến lược nào sau đây thường hiệu quả?

  • A. Ngừng làm việc và chờ lỗi tự biến mất.
  • B. Xóa ngẫu nhiên các dòng mã cho đến khi lỗi không còn.
  • C. Viết thêm nhiều mã mới để "đè" lên phần có lỗi.
  • D. Chia nhỏ vấn đề, cô lập phần mã nghi ngờ gây lỗi, và sử dụng các công cụ gỡ lỗi hoặc lệnh in để kiểm tra từng bước.

1 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 09

Câu 1: Khi phát triển phần mềm, giai đoạn kiểm thử (testing) có mục đích chính là gì?

2 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 09

Câu 2: Lỗi cú pháp (Syntax Error) trong lập trình Python thường xảy ra khi nào?

3 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 09

Câu 3: Xét đoạn mã Python sau:
```python
def tinh_tong(a, b):
ket_qua = a + b
print(ket_qua)

tinh_tong(5, '10')
```
Khi chạy đoạn mã này, lỗi ngoại lệ (runtime error) nào có khả năng xảy ra nhất?

4 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 09

Câu 4: Lỗi logic (Logic Error) trong chương trình là loại lỗi gì?

5 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 09

Câu 5: Để kiểm thử một hàm tính căn bậc hai của một số, bộ dữ liệu test nào sau đây là quan trọng nhất để kiểm tra các trường hợp đặc biệt (boundary cases)?

6 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 09

Câu 6: Khi gặp lỗi ngoại lệ `IndexError: list index out of range` trong Python, nguyên nhân phổ biến nhất là gì?

7 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 09

Câu 7: Phương pháp gỡ lỗi (debugging) bằng cách in giá trị của các biến tại các điểm khác nhau trong chương trình (ví dụ: sử dụng lệnh `print()`) có ưu điểm chính là gì?

8 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 09

Câu 8: Công cụ 'điểm dừng' (breakpoint) trong môi trường phát triển tích hợp (IDE) được sử dụng để làm gì trong quá trình gỡ lỗi?

9 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 09

Câu 9: Xét đoạn mã Python sau:
```python
diem_toan = 8
diem_van = '9'

diem_trung_binh = (diem_toan + diem_van) / 2
print(diem_trung_binh)
```
Lỗi gì sẽ xảy ra khi chạy đoạn mã này?

10 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 09

Câu 10: Quy trình gỡ lỗi (debugging) thông thường bao gồm các bước nào theo thứ tự hợp lý?

11 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 09

Câu 11: Tại sao việc kiểm thử với các bộ dữ liệu ngẫu nhiên đôi khi hữu ích nhưng không thể thay thế hoàn toàn việc kiểm thử với các trường hợp cụ thể?

12 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 09

Câu 12: Khi nhận được thông báo lỗi `NameError: name 'ten_bien_nao_do' is not defined`, bạn nên kiểm tra điều gì đầu tiên?

13 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 09

Câu 13: Xét đoạn mã Python sau:
```python
data = [10, 20, 30]

# Giả sử chương trình tiếp tục xử lý data

# ... một lúc sau ...

print(data[3])
```
Lỗi gì sẽ xảy ra khi chạy dòng `print(data[3])`?

14 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 09

Câu 14: Giả sử bạn viết một chương trình tính điểm trung bình của một danh sách các số. Nếu danh sách đầu vào bị rỗng (không có phần tử nào), lỗi ngoại lệ nào có khả năng xảy ra khi bạn cố gắng tính tổng và chia cho số lượng phần tử?

15 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 09

Câu 15: Khi kiểm thử một chương trình xử lý dữ liệu nhập từ người dùng, tại sao việc kiểm thử với dữ liệu không hợp lệ (ví dụ: nhập chữ thay vì số khi chương trình yêu cầu số) là quan trọng?

16 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 09

Câu 16: Xét đoạn mã Python sau:
```python
so_a = 10
so_b = 0

ket_qua = so_a / so_b
print(ket_qua)
```
Lỗi gì sẽ xảy ra khi chạy đoạn mã này?

17 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 09

Câu 17: Trong quá trình gỡ lỗi, sau khi đã xác định vị trí và nguyên nhân của lỗi, bước tiếp theo cần làm là gì?

18 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 09

Câu 18: Xét một chương trình yêu cầu người dùng nhập một số nguyên dương. Người dùng nhập giá trị `-5`. Nếu chương trình không kiểm tra điều kiện số dương và tiếp tục xử lý, đây là ví dụ về việc bỏ sót loại kiểm thử nào?

19 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 09

Câu 19: Một trong những lợi ích của việc sử dụng môi trường phát triển tích hợp (IDE) có tích hợp trình gỡ lỗi (debugger) là gì?

20 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 09

Câu 20: Sau khi sửa một lỗi trong chương trình, tại sao việc kiểm thử lại (re-testing) là rất quan trọng?

21 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 09

Câu 21: Xét đoạn mã Python sau:
```python
def kiem_tra_tuoi(tuoi):
if tuoi < 18: print('Chua du tuoi') elif tuoi > 60:
print('Da nghi huu')
else:
print('Dang trong do tuoi lao dong')

kiem_tra_tuoi(25)
kiem_tra_tuoi(16)
kiem_tra_tuoi(65)
kiem_tra_tuoi('hai muoi')
```
Lỗi gì sẽ xảy ra khi chạy đoạn mã này?

22 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 09

Câu 22: Khi một chương trình chạy chậm hơn dự kiến hoặc tiêu thụ quá nhiều bộ nhớ, loại vấn đề này thường liên quan đến:

23 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 09

Câu 23: Phương pháp nào sau đây KHÔNG phải là một kỹ thuật gỡ lỗi hiệu quả?

24 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 09

Câu 24: Tại sao việc viết mã nguồn rõ ràng, dễ đọc (sử dụng tên biến gợi nhớ, thêm chú thích, định dạng mã hợp lý) lại giúp ích cho quá trình gỡ lỗi?

25 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 09

Câu 25: Khi kiểm thử một chương trình, việc ghi lại các bộ dữ liệu test đã sử dụng và kết quả mong đợi là quan trọng vì:

26 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 09

Câu 26: Xét đoạn mã Python sau:
```python
count = 0
while count < 5: print(count) # Thiếu lệnh tăng count ``` Đoạn mã này sẽ gây ra lỗi loại gì khi chạy?

27 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 09

Câu 27: Trong quá trình gỡ lỗi, nếu bạn nghi ngờ lỗi nằm trong một hàm cụ thể, kỹ thuật nào sau đây giúp bạn tập trung kiểm tra luồng thực thi bên trong hàm đó một cách chi tiết?

28 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 09

Câu 28: Mục tiêu cuối cùng của việc gỡ lỗi (debugging) là gì?

29 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 09

Câu 29: Tại sao việc kiểm thử chương trình nên được thực hiện thường xuyên trong suốt quá trình phát triển, chứ không chỉ đợi đến khi hoàn thành?

30 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 09

Câu 30: Khi bạn gặp một lỗi khó hiểu và không biết bắt đầu tìm ở đâu, chiến lược nào sau đây thường hiệu quả?

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình - Đề 10

Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình - Đề 10 được xây dựng với nhiều câu hỏi chất lượng, sát với nội dung chương trình học, giúp bạn dễ dàng ôn tập và kiểm tra kiến thức hiệu quả. Hãy cùng bắt đầu làm bài tập trắc nghiệm ngay để nâng cao hiểu biết và chuẩn bị tốt cho kỳ thi sắp tới!

Câu 1: Khi kiểm thử chương trình, mục tiêu chính của việc tạo ra các bộ dữ liệu kiểm thử (test data) đa dạng, bao gồm cả các trường hợp "biên" (boundary cases) và "bất thường" (exceptional cases), là gì?

  • A. Để chương trình chạy nhanh hơn.
  • B. Để làm cho mã nguồn dễ đọc hơn.
  • C. Để đảm bảo chương trình sử dụng ít bộ nhớ hơn.
  • D. Để tìm ra các lỗi tiềm ẩn mà các bộ dữ liệu thông thường khó phát hiện.

Câu 2: Một chương trình được thiết kế để tính căn bậc hai của một số nhập vào. Người dùng nhập vào số âm. Chương trình dừng lại và báo lỗi. Đây có khả năng là loại lỗi nào?

  • A. Lỗi cú pháp (Syntax error)
  • B. Lỗi logic (Logic error)
  • C. Lỗi ngoại lệ/thời gian chạy (Runtime error/Exception)
  • D. Lỗi biên dịch (Compilation error)

Câu 3: Đâu là điểm khác biệt cốt lõi giữa kiểm thử (testing) và gỡ lỗi (debugging) chương trình?

  • A. Kiểm thử chỉ thực hiện một lần, còn gỡ lỗi thực hiện nhiều lần.
  • B. Kiểm thử nhằm phát hiện lỗi, còn gỡ lỗi nhằm tìm nguyên nhân và sửa lỗi đã phát hiện.
  • C. Kiểm thử do người dùng cuối thực hiện, còn gỡ lỗi do lập trình viên thực hiện.
  • D. Kiểm thử tốn ít thời gian hơn gỡ lỗi.

Câu 4: Khi bạn nhận được thông báo lỗi `NameError: name "my_variable" is not defined` trong Python, nguyên nhân phổ biến nhất là gì?

  • A. Biến `my_variable` chưa được khai báo hoặc được sử dụng ngoài phạm vi (scope) của nó.
  • B. Bạn đang cố gắng chia cho số 0.
  • C. Kiểu dữ liệu của biến không phù hợp với phép toán.
  • D. Chỉ số truy cập vào danh sách (list) bị sai.

Câu 5: Một lập trình viên muốn kiểm tra xem hàm tính tổng các số chẵn trong một danh sách có hoạt động đúng không. Danh sách đầu vào nào sau đây là quan trọng nhất để kiểm tra trường hợp biên?

  • A. `[1, 2, 3, 4, 5]`
  • B. `[10, 20, 30]`
  • C. `[]` (danh sách rỗng)
  • D. `[1, 3, 5, 7]` (danh sách toàn số lẻ)

Câu 6: Phương pháp gỡ lỗi nào hiệu quả nhất để theo dõi giá trị của các biến tại các điểm khác nhau trong quá trình thực thi chương trình mà không làm thay đổi luồng chạy chính?

  • A. Xóa bớt code nghi ngờ gây lỗi.
  • B. Đọc lại toàn bộ mã nguồn từ đầu.
  • C. Thay đổi kiểu dữ liệu của biến.
  • D. Sử dụng công cụ gỡ lỗi (debugger) với điểm dừng (breakpoints).

Câu 7: Xem xét đoạn mã Python sau:
```python
def calculate_discount(price, discount_rate):
if discount_rate > 1:
return price * (1 - discount_rate)
else:
return price - discount_rate

print(calculate_discount(100, 0.1)) # Expected: 90
print(calculate_discount(200, 2)) # Expected: price becomes negative?
```
Đoạn mã này có khả năng mắc loại lỗi nào dựa trên logic tính toán?

  • A. Lỗi cú pháp (Syntax error)
  • B. Lỗi logic (Logic error)
  • C. Lỗi ngoại lệ ZeroDivisionError
  • D. Lỗi ngoại lệ TypeError

Câu 8: Một lỗi xảy ra khi bạn chạy chương trình và nó cố gắng truy cập vào một phần tử của danh sách bằng một chỉ số (index) nằm ngoài phạm vi cho phép (ví dụ: chỉ số âm hoặc lớn hơn hoặc bằng kích thước danh sách). Đây là lỗi ngoại lệ phổ biến nào?

  • A. KeyError
  • B. ValueError
  • C. IndexError
  • D. AttributeError

Câu 9: Tại sao việc kiểm thử các trường hợp "biên" (boundary cases), tức là các giá trị nhỏ nhất, lớn nhất hoặc các giá trị ngay cạnh giới hạn cho phép của dữ liệu đầu vào, lại đặc biệt quan trọng?

  • A. Vì lỗi thường có xu hướng xuất hiện tại các vùng biên hoặc lân cận biên.
  • B. Vì các trường hợp biên dễ tạo dữ liệu kiểm thử nhất.
  • C. Vì kiểm thử biên giúp chương trình chạy nhanh hơn.
  • D. Vì các trường hợp biên đại diện cho dữ liệu thông thường.

Câu 10: Khi bạn sử dụng các lệnh `print()` để in giá trị biến trong quá trình gỡ lỗi, bạn nên đặt các lệnh `print()` này ở đâu?

  • A. Chỉ ở đầu chương trình.
  • B. Tại các vị trí mà bạn nghi ngờ có lỗi hoặc muốn theo dõi giá trị biến thay đổi.
  • C. Chỉ ở cuối chương trình.
  • D. Trong các vòng lặp không giới hạn.

Câu 11: Đoạn mã Python sau sẽ gây ra lỗi gì?
```python
print(

  • A. SyntaxError
  • B. NameError
  • C. TypeError
  • D. ZeroDivisionError

Câu 12: Giả sử bạn viết một chương trình giải phương trình bậc hai `ax^2 + bx + c = 0`. Bộ dữ liệu kiểm thử nào sau đây là thiếu sót để đảm bảo chương trình xử lý đúng mọi trường hợp?

  • A. a=1, b=-3, c=2 (có 2 nghiệm phân biệt)
  • B. a=1, b=2, c=1 (có nghiệm kép)
  • C. a=1, b=1, c=1 (vô nghiệm)
  • D. a=0, b=2, c=-4 (trường hợp suy biến thành phương trình bậc nhất)

Câu 13: Lỗi cú pháp (Syntax error) là loại lỗi gì?

  • A. Lỗi do vi phạm các quy tắc viết mã của ngôn ngữ lập trình.
  • B. Lỗi xảy ra khi chương trình đang chạy và gặp phải tình huống bất ngờ.
  • C. Lỗi làm cho chương trình chạy nhưng đưa ra kết quả sai.
  • D. Lỗi do hết bộ nhớ.

Câu 14: Khi một chương trình chạy hoàn thành mà không báo lỗi cú pháp hay ngoại lệ, nhưng kết quả đầu ra lại không đúng với mong đợi, đây là biểu hiện của loại lỗi nào?

  • A. Lỗi cú pháp (Syntax error)
  • B. Lỗi logic (Logic error)
  • C. Lỗi ngoại lệ (Exception)
  • D. Lỗi thời gian chạy (Runtime error)

Câu 15: Công cụ nào sau đây không phải là công cụ hỗ trợ trực tiếp cho việc kiểm thử hoặc gỡ lỗi chương trình?

  • A. Trình gỡ lỗi tích hợp trong IDE (Integrated Development Environment).
  • B. Các thư viện/framework hỗ trợ tạo bộ dữ liệu kiểm thử tự động.
  • C. Lệnh `print()` hoặc các lệnh xuất dữ liệu tương đương.
  • D. Trình biên dịch (Compiler) - nó phát hiện lỗi cú pháp nhưng không phải là công cụ gỡ lỗi runtime hay kiểm thử.

Câu 16: Bạn đang gỡ lỗi một vòng lặp `while` trong chương trình của mình. Chương trình chạy vô hạn, không dừng lại. Lỗi phổ biến nhất gây ra tình trạng này là gì?

  • A. Điều kiện dừng của vòng lặp không bao giờ trở thành sai (False).
  • B. Lỗi cú pháp trong câu lệnh `while`.
  • C. Lỗi ngoại lệ ZeroDivisionError.
  • D. Lỗi NameError do sử dụng biến chưa khai báo.

Câu 17: Khi kiểm thử một chương trình xử lý chuỗi, việc bao gồm các chuỗi rỗng (`

  • A. Kiểm thử chức năng (Functional testing)
  • B. Kiểm thử trường hợp biên (Boundary testing)
  • C. Kiểm thử hiệu năng (Performance testing)
  • D. Kiểm thử giao diện người dùng (UI testing)

Câu 18: Lỗi ngoại lệ `TypeError` thường xảy ra khi nào?

  • A. Khi bạn gọi một hàm không tồn tại.
  • B. Khi bạn chia một số cho 0.
  • C. Khi bạn truy cập một phần tử ngoài phạm vi danh sách.
  • D. Khi một phép toán hoặc hàm được áp dụng cho một đối tượng có kiểu dữ liệu không phù hợp.

Câu 19: Giả sử bạn có một hàm `calculate_average(numbers_list)` nhận vào một danh sách các số. Bộ dữ liệu kiểm thử `[10, 20, 30]` thuộc loại nào?

  • A. Trường hợp tiêu biểu (Typical case)
  • B. Trường hợp biên (Boundary case)
  • C. Trường hợp bất thường (Exceptional case)
  • D. Trường hợp lỗi cú pháp (Syntax error case)

Câu 20: Kỹ thuật gỡ lỗi nào liên quan đến việc tạm dừng chương trình tại một dòng mã cụ thể để kiểm tra trạng thái của các biến và luồng thực thi?

  • A. Kiểm thử hộp đen (Black-box testing)
  • B. Kiểm thử tự động (Automated testing)
  • C. Sử dụng điểm dừng (Breakpoints) trong debugger.
  • D. Kiểm thử ngẫu nhiên (Random testing).

Câu 21: Điều gì xảy ra khi bạn gặp phải một `SyntaxError` trong mã nguồn Python?

  • A. Chương trình chạy, nhưng đưa ra kết quả sai.
  • B. Chương trình sẽ không thể chạy (thường bị phát hiện ngay trước hoặc khi bắt đầu thực thi).
  • C. Chương trình chạy, nhưng dừng đột ngột tại một thời điểm ngẫu nhiên.
  • D. Chương trình chạy vô hạn.

Câu 22: Khi gỡ lỗi một lỗi logic (chương trình chạy nhưng sai kết quả), phương pháp tiếp cận hiệu quả nhất thường là gì?

  • A. Thay đổi ngẫu nhiên các dòng mã cho đến khi nó hoạt động đúng.
  • B. Chỉ kiểm tra lại cú pháp của toàn bộ chương trình.
  • C. Bỏ qua lỗi và hy vọng nó tự biến mất.
  • D. Phân tích vấn đề, khoanh vùng đoạn mã nghi ngờ, sử dụng công cụ gỡ lỗi hoặc lệnh print để theo dõi giá trị biến và luồng thực thi.

Câu 23: Bạn viết một chương trình yêu cầu người dùng nhập một số nguyên, nhưng người dùng lại nhập một chuỗi văn bản. Lỗi ngoại lệ nào có khả năng xảy ra khi bạn cố gắng chuyển đổi chuỗi đó sang số nguyên bằng hàm `int()`?

  • A. IndexError
  • B. ValueError
  • C. ZeroDivisionError
  • D. NameError

Câu 24: Tại sao việc có nhiều bộ dữ liệu kiểm thử với các đặc điểm khác nhau (độ lớn, tính đa dạng) lại quan trọng?

  • A. Để kiểm tra chương trình trong nhiều tình huống sử dụng thực tế và phát hiện lỗi ở các kịch bản khác nhau.
  • B. Để làm cho chương trình chạy nhanh hơn khi kiểm thử.
  • C. Để giảm số lượng lỗi cú pháp.
  • D. Để làm cho mã nguồn dễ hiểu hơn cho người khác.

Câu 25: Khi bạn nhận được thông báo lỗi `ZeroDivisionError` trong Python, bạn nên kiểm tra điều gì đầu tiên?

  • A. Tên biến được sử dụng trong phép chia.
  • B. Chỉ số của danh sách.
  • C. Giá trị của biến hoặc biểu thức được sử dụng làm số chia.
  • D. Kiểu dữ liệu của số bị chia.

Câu 26: Việc ghi lại chi tiết các bộ dữ liệu kiểm thử đã sử dụng, kết quả mong đợi và kết quả thực tế nhận được là một phần quan trọng của quá trình nào?

  • A. Quản lý kiểm thử (Test management)
  • B. Viết mã nguồn (Coding)
  • C. Thiết kế giao diện người dùng (UI design)
  • D. Tối ưu hóa hiệu năng (Performance optimization)

Câu 27: Xem xét đoạn mã sau:
```python
numbers = [1, 2, 3]
for i in range(4):
print(numbers[i])
```
Đoạn mã này sẽ gây ra lỗi ngoại lệ nào khi chạy?

  • A. TypeError
  • B. NameError
  • C. IndexError
  • D. ZeroDivisionError

Câu 28: Tại sao việc kiểm thử chương trình nên được thực hiện liên tục trong suốt quá trình phát triển, thay vì chỉ làm một lần duy nhất khi chương trình đã hoàn thành?

  • A. Để làm cho chương trình phức tạp hơn.
  • B. Để tăng thời gian phát triển chương trình.
  • C. Để chỉ tìm các lỗi cú pháp.
  • D. Để phát hiện và sửa lỗi sớm, giảm chi phí và ngăn chặn lỗi mới xuất hiện khi thêm tính năng mới (regression testing).

Câu 29: Khi bạn sử dụng một trình gỡ lỗi (debugger) và "bước qua" (step over) một dòng lệnh gọi hàm, điều gì sẽ xảy ra?

  • A. Debugger sẽ thực thi toàn bộ hàm đó và dừng lại ở dòng lệnh ngay sau lời gọi hàm.
  • B. Debugger sẽ đi vào bên trong hàm và dừng lại ở dòng lệnh đầu tiên của hàm.
  • C. Chương trình sẽ dừng lại hoàn toàn.
  • D. Debugger sẽ bỏ qua dòng lệnh đó.

Câu 30: Lỗi logic (Logic error) là loại lỗi khó phát hiện nhất bằng các công cụ tự động (như trình biên dịch/thông dịch) vì lý do gì?

  • A. Chúng luôn gây ra chương trình bị treo.
  • B. Chương trình với lỗi logic vẫn tuân thủ cú pháp và chạy mà không báo lỗi ngoại lệ, chỉ đưa ra kết quả sai.
  • C. Chúng chỉ xảy ra trên các hệ điều hành nhất định.
  • D. Chúng chỉ xuất hiện khi sử dụng dữ liệu đầu vào rất lớn.

1 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 10

Câu 1: Khi kiểm thử chương trình, mục tiêu chính của việc tạo ra các bộ dữ liệu kiểm thử (test data) đa dạng, bao gồm cả các trường hợp 'biên' (boundary cases) và 'bất thường' (exceptional cases), là gì?

2 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 10

Câu 2: Một chương trình được thiết kế để tính căn bậc hai của một số nhập vào. Người dùng nhập vào số âm. Chương trình dừng lại và báo lỗi. Đây có khả năng là loại lỗi nào?

3 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 10

Câu 3: Đâu là điểm khác biệt cốt lõi giữa kiểm thử (testing) và gỡ lỗi (debugging) chương trình?

4 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 10

Câu 4: Khi bạn nhận được thông báo lỗi `NameError: name 'my_variable' is not defined` trong Python, nguyên nhân phổ biến nhất là gì?

5 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 10

Câu 5: Một lập trình viên muốn kiểm tra xem hàm tính tổng các số chẵn trong một danh sách có hoạt động đúng không. Danh sách đầu vào nào sau đây là *quan trọng nhất* để kiểm tra trường hợp biên?

6 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 10

Câu 6: Phương pháp gỡ lỗi nào hiệu quả nhất để theo dõi giá trị của các biến tại các điểm khác nhau trong quá trình thực thi chương trình mà không làm thay đổi luồng chạy chính?

7 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 10

Câu 7: Xem xét đoạn mã Python sau:
```python
def calculate_discount(price, discount_rate):
if discount_rate > 1:
return price * (1 - discount_rate)
else:
return price - discount_rate

print(calculate_discount(100, 0.1)) # Expected: 90
print(calculate_discount(200, 2)) # Expected: price becomes negative?
```
Đoạn mã này có khả năng mắc loại lỗi nào dựa trên logic tính toán?

8 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 10

Câu 8: Một lỗi xảy ra khi bạn chạy chương trình và nó cố gắng truy cập vào một phần tử của danh sách bằng một chỉ số (index) nằm ngoài phạm vi cho phép (ví dụ: chỉ số âm hoặc lớn hơn hoặc bằng kích thước danh sách). Đây là lỗi ngoại lệ phổ biến nào?

9 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 10

Câu 9: Tại sao việc kiểm thử các trường hợp 'biên' (boundary cases), tức là các giá trị nhỏ nhất, lớn nhất hoặc các giá trị ngay cạnh giới hạn cho phép của dữ liệu đầu vào, lại đặc biệt quan trọng?

10 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 10

Câu 10: Khi bạn sử dụng các lệnh `print()` để in giá trị biến trong quá trình gỡ lỗi, bạn nên đặt các lệnh `print()` này ở đâu?

11 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 10

Câu 11: Đoạn mã Python sau sẽ gây ra lỗi gì?
```python
print("Hello" + 5)
```

12 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 10

Câu 12: Giả sử bạn viết một chương trình giải phương trình bậc hai `ax^2 + bx + c = 0`. Bộ dữ liệu kiểm thử nào sau đây là *thiếu sót* để đảm bảo chương trình xử lý đúng mọi trường hợp?

13 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 10

Câu 13: Lỗi cú pháp (Syntax error) là loại lỗi gì?

14 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 10

Câu 14: Khi một chương trình chạy hoàn thành mà không báo lỗi cú pháp hay ngoại lệ, nhưng kết quả đầu ra lại không đúng với mong đợi, đây là biểu hiện của loại lỗi nào?

15 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 10

Câu 15: Công cụ nào sau đây *không* phải là công cụ hỗ trợ trực tiếp cho việc kiểm thử hoặc gỡ lỗi chương trình?

16 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 10

Câu 16: Bạn đang gỡ lỗi một vòng lặp `while` trong chương trình của mình. Chương trình chạy vô hạn, không dừng lại. Lỗi phổ biến nhất gây ra tình trạng này là gì?

17 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 10

Câu 17: Khi kiểm thử một chương trình xử lý chuỗi, việc bao gồm các chuỗi rỗng (`

18 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 10

Câu 18: Lỗi ngoại lệ `TypeError` thường xảy ra khi nào?

19 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 10

Câu 19: Giả sử bạn có một hàm `calculate_average(numbers_list)` nhận vào một danh sách các số. Bộ dữ liệu kiểm thử `[10, 20, 30]` thuộc loại nào?

20 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 10

Câu 20: Kỹ thuật gỡ lỗi nào liên quan đến việc tạm dừng chương trình tại một dòng mã cụ thể để kiểm tra trạng thái của các biến và luồng thực thi?

21 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 10

Câu 21: Điều gì xảy ra khi bạn gặp phải một `SyntaxError` trong mã nguồn Python?

22 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 10

Câu 22: Khi gỡ lỗi một lỗi logic (chương trình chạy nhưng sai kết quả), phương pháp tiếp cận hiệu quả nhất thường là gì?

23 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 10

Câu 23: Bạn viết một chương trình yêu cầu người dùng nhập một số nguyên, nhưng người dùng lại nhập một chuỗi văn bản. Lỗi ngoại lệ nào có khả năng xảy ra khi bạn cố gắng chuyển đổi chuỗi đó sang số nguyên bằng hàm `int()`?

24 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 10

Câu 24: Tại sao việc có nhiều bộ dữ liệu kiểm thử với các đặc điểm khác nhau (độ lớn, tính đa dạng) lại quan trọng?

25 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 10

Câu 25: Khi bạn nhận được thông báo lỗi `ZeroDivisionError` trong Python, bạn nên kiểm tra điều gì đầu tiên?

26 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 10

Câu 26: Việc ghi lại chi tiết các bộ dữ liệu kiểm thử đã sử dụng, kết quả mong đợi và kết quả thực tế nhận được là một phần quan trọng của quá trình nào?

27 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 10

Câu 27: Xem xét đoạn mã sau:
```python
numbers = [1, 2, 3]
for i in range(4):
print(numbers[i])
```
Đoạn mã này sẽ gây ra lỗi ngoại lệ nào khi chạy?

28 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 10

Câu 28: Tại sao việc kiểm thử chương trình nên được thực hiện *liên tục* trong suốt quá trình phát triển, thay vì chỉ làm một lần duy nhất khi chương trình đã hoàn thành?

29 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 10

Câu 29: Khi bạn sử dụng một trình gỡ lỗi (debugger) và 'bước qua' (step over) một dòng lệnh gọi hàm, điều gì sẽ xảy ra?

30 / 30

Category: Trắc nghiệm Tin học 10 Kết nối tri thức Bài 30: Kiểm thử và gỡ lỗi chương trình

Tags: Bộ đề 10

Câu 30: Lỗi logic (Logic error) là loại lỗi khó phát hiện nhất bằng các công cụ tự động (như trình biên dịch/thông dịch) vì lý do gì?

Viết một bình luận