Bài 30 Kiểm thử và gỡ lỗi chương trình
Lớp 10Tin Học14 câu hỏiBài tập
Phần 1
Câu 1
(Câu 30.1 trang 61 SBT Tin học 10) Mục đích của kiểm thử chương trình là gì?
AĐể tìm ra lỗi và phòng ngừa, ngăn chặn các lỗi phát sinh trong tương lai.
BĐể tự động sửa lỗi chương trình.
CĐể tìm ra lỗi của chương trình.
DĐể tìm ra lỗi và tự động sửa lỗi chương trình.
Câu 2
(Câu 30.3 trang 61 SBT Tin học 10) Nếu chương trình chạy bị lỗi với thông báo lỗi là ZeroDivisionError thì đó là lỗi gì và em cần sửa lỗi như thế nào?
AĐây là lỗi chia cho 0, em cần tìm hiểu nguyên nhân vì sao lại xuất hiện 0 khi chia, có thể bổ sung lệnh kiểm tra trước khi thực hiện phép chia.
BĐây là lỗi không thể sửa được.
CĐây là lỗi chia cho 0, em cần xoá lệnh này khỏi chương trình.
DĐây là lỗi chia cho 0, em cần thay thế phép toán khác để không xảy ra lỗi này nữa.
Câu 3
(Câu 30.4 trang 62 SBT Tin học 10) Điểm dừng, còn gọi là break point, trong các phần mềm soạn thảo lập trình có ý nghĩa gì?
AĐó là vị trí chương trình tạm dừng, người lập trình sẽ quan sát các biến của chương trình và có thể điều khiển để chương trình tiếp tục chạy.
BĐó là vị trí chương trình chạy tới đó thì kết thúc.
CĐó là vị trí chương trình dừng lại vĩnh viễn và không thể chạy tiếp.
DĐó là vị trí chương trình mỗi khi chạy đến dòng lệnh đó sẽ kêu pip pip.
Câu 4
(Câu 30.5 trang 62 SBT Tin học 10) Bộ dữ liệu kiểm thử, còn gọi là test, cần có tính chất gì?
ACần được sinh ngẫu nhiên và phủ kín các trường hợp biên của dữ liệu đầu vào bài toán.
BChỉ cần có càng nhiều càng tốt, không cần quan tâm đến trường hợp biên.
CChỉ cần phát hiện được đúng một lỗi của chương trình.
DKhông cần có tính chất gì.
Câu 5
(Câu 30.6 trang 62 SBT Tin học 10) Giả sử đầu vào của dữ liệu bài toán là vùng {x ≥ 0}. Khi đó dữ liệu ở vùng biên là những dữ liệu nào?
Ax ở gần 0 hoặc x rất lớn.
BChỉ có x = 0.
CChỉ có x = 1000000.
DChỉ có các giá trị x âm.
Câu 6
(Câu 30.7 trang 62 SBT Tin học 10) Phần mềm soạn thảo lập trình có thể tạo bao nhiêu điểm dừng?
AKhông hạn chế.
B0.
C1.
D10.
Phần 2
Câu 1
(Câu 30.2 trang 61 SBT Tin học 10) Để kiểm thử một chương trình, bạn An đã tạo ra rất nhiều bộ dữ liệu test. Với tất cả các bộ dữ liệu test, chương trình đều chạy đúng. Nhận định nào sau đây đúng hoặc sai?
a)Chưa thể khẳng định chương trình hết lỗi trong mọi trường hợp.
b)Kiểm thử chỉ có chức năng phát hiện lỗi nếu lỗi xuất hiện với các bộ dữ liệu test đã dùng.
c)Nếu chương trình chạy đúng với nhiều bộ test thì chắc chắn chương trình đúng với mọi dữ liệu đầu vào.
d)Kiểm thử không có chức năng chứng minh chương trình chạy đúng với mọi bộ dữ liệu.
Câu 2
(Câu 30.8 trang 62 SBT Tin học 10) Trong các việc dưới đây, việc nào được coi là phương pháp kiểm thử chương trình? Nhận định nào sau đây đúng hoặc sai?
a)In các dữ liệu trung gian trong quá trình chạy chương trình.
b)Sinh các bộ dữ liệu test để kiểm tra chương trình.
c)Tạo điểm dừng để quan sát và phát hiện lỗi chương trình.
d)Đặt tên biến và hàm có ý nghĩa là một phương pháp kiểm thử trực tiếp.
Câu 3
(Câu 30.8 trang 62 SBT Tin học 10) Về các phương pháp hỗ trợ kiểm thử và gỡ lỗi chương trình, nhận định nào sau đây đúng hoặc sai?
a)Viết chú thích chi tiết trong chương trình có thể giúp chương trình dễ đọc hơn, nhưng không trực tiếp là phương pháp kiểm thử.
b)Ghi nhớ các mã lỗi ngoại lệ khi phát sinh có thể giúp hiểu lỗi, nhưng không phải là phương pháp kiểm thử chính được nêu trong sách.
c)Bộ dữ liệu test nên bao gồm cả các trường hợp thông thường và trường hợp biên.
d)Chỉ cần đặt tên biến rõ nghĩa thì chương trình chắc chắn không còn lỗi.
Câu 4
(Câu 30.9 trang 62 SBT Tin học 10) Viết chương trình nhập số n, sau đó lần lượt nhập n số của dãy. Yêu cầu khi nhập vào các số sẽ được sắp xếp ngay theo thứ tự tăng dần. Xét đoạn chương trình trong ảnh sau:

Nhận định nào sau đây đúng hoặc sai?

Nhận định nào sau đây đúng hoặc sai?
a)Danh sách A ban đầu được khởi tạo rỗng.
b)Biến num dùng để lưu số mới được nhập vào.
c)Vòng lặp while dùng để tìm vị trí thích hợp để chèn num vào danh sách A.
d)Lệnh A.insert(k, num) luôn chèn num vào cuối danh sách, không phụ thuộc vào k.
Câu 5
(Câu 30.9 trang 62 SBT Tin học 10) Về kiểm thử chương trình nhập dãy số và sắp xếp tăng dần ngay khi nhập, nhận định nào sau đây đúng hoặc sai?
a)Có thể kiểm thử với dãy đã tăng sẵn, ví dụ 1, 2, 3, 4.
b)Có thể kiểm thử với dãy giảm dần, ví dụ 4, 3, 2, 1.
c)Có thể kiểm thử với dãy có các số bằng nhau hoặc có số âm.
d)Chỉ cần kiểm thử với đúng một dãy số bất kì là đủ để chứng minh chương trình luôn đúng.
Câu 6
(Câu 30.10 trang 63 SBT Tin học 10) Chương trình sau yêu cầu nhập danh sách học sinh cùng cân nặng, chiều cao, sau đó tính chỉ số BMI và in ra danh sách các bạn béo phì:
def bmi(m, h):
return m/(h*h)
def NhapDL():
DS = []
n = int(input("Nhập số học sinh: "))
for k in range(n):
ten = input("Nhập tên học sinh thứ " + str(k + 1) + " : ")
mass = float(input("Nhập cân nặng: "))
h = float(input("Nhập chiều cao: "))
DS.append([ten, mass, h])
return DS
Nhận định nào sau đây đúng hoặc sai?
def bmi(m, h):
return m/(h*h)
def NhapDL():
DS = []
n = int(input("Nhập số học sinh: "))
for k in range(n):
ten = input("Nhập tên học sinh thứ " + str(k + 1) + " : ")
mass = float(input("Nhập cân nặng: "))
h = float(input("Nhập chiều cao: "))
DS.append([ten, mass, h])
return DS
Nhận định nào sau đây đúng hoặc sai?
a)Hàm bmi(m, h) dùng để tính chỉ số BMI theo cân nặng m và chiều cao h.
b)Hàm NhapDL() nhập danh sách học sinh, mỗi học sinh gồm tên, cân nặng và chiều cao.
c)Lệnh DS.append([ten, mass, h]) thêm thông tin một học sinh vào danh sách DS.
d)Hàm NhapDL() chỉ nhập tên học sinh, không nhập cân nặng và chiều cao.
Câu 7
(Câu 30.10 trang 63 SBT Tin học 10) Xét phần chương trình chính sau:
DS = NhapDL()
DSBP = []
for k in range(len(DS)):
hs = DS[k]
if bmi(hs[1], hs[2]) > 25:
DSBP.append(hs[0])
print("Danh sách học sinh béo phì trong lớp:")
for hs in DSBP:
print(hs)
Nhận định nào sau đây đúng hoặc sai?
DS = NhapDL()
DSBP = []
for k in range(len(DS)):
hs = DS[k]
if bmi(hs[1], hs[2]) > 25:
DSBP.append(hs[0])
print("Danh sách học sinh béo phì trong lớp:")
for hs in DSBP:
print(hs)
Nhận định nào sau đây đúng hoặc sai?
a)Biến DSBP dùng để lưu danh sách tên học sinh có BMI lớn hơn 25.
b)Lệnh hs = DS[k] lấy thông tin học sinh thứ k trong danh sách DS.
c)Nếu bmi(hs[1], hs[2]) > 25 thì tên học sinh được thêm vào danh sách DSBP.
d)Chương trình in ra tất cả học sinh trong lớp, kể cả những học sinh có BMI không lớn hơn 25.
Câu 8
(Câu 30.10 trang 63 SBT Tin học 10) Để kiểm soát lỗi trong chương trình tính BMI và in danh sách học sinh béo phì, có thể đưa thêm các lệnh in giá trị trung gian. Nhận định nào sau đây đúng hoặc sai?
a)Có thể in danh sách DS sau khi nhập để kiểm tra dữ liệu đã nhập đúng chưa.
b)Có thể in từng giá trị hs, hs[1], hs[2] trong vòng lặp để kiểm tra cân nặng và chiều cao của từng học sinh.
c)Có thể in giá trị bmi(hs[1], hs[2]) để kiểm tra kết quả tính BMI trước khi so sánh với 25.
d)Khi gỡ lỗi, tuyệt đối không được in bất kì giá trị trung gian nào ra màn hình.