Chương trình sau bị lỗi ở dòng lệnh thứ bao nhiêu ?
>>> fruits = ['Banana', 'Apple', 'Lime']
>>> loud_fruits = [fruit.upper() for fruit in fruits]
>>> print(loud_fruits)
>>> list(enumerate(fruits))
Đáp án đúng là: D
Chương trình đúng không có lỗi.
*Một vài phương pháp kiểm thử chương trình
a) Quan sát mã lỗi Runtime và bắt lỗi ngoại lệ
Nếu chương trình có lỗi Runtime (đang chạy mà dừng lại), cần quan sát các mã lỗi để kiểm tra vị trí dòng lệnh sinh lỗi này. Từ đó tìm và sửa lỗi.
b) Kiểm thử chương trình với các bộ dữ liệu test
- Chương trình cần được thử với một số bộ dữ liệu test gồm đầu vào tiêu biểu phụ thuộc đặc thù của bài toán và kết quả đầu ra đã biết trước.
- Cần chú ý:
+ Cần có nhiều bộ test (theo các tiêu chí khác nhau).
+ Cần có bộ test ngẫu nhiên.
+ Cần có bộ test dữ liệu ở vùng biên. Ví dụ dữ liệu đầu vào là cặp (x, y) xác định trên miền [0, 1]. Khi đó cần kiểm tra với bộ dữ liệu biên (0, 0), (0; 1), (1; 0), (1; 1). Thực tế cho thấy lỗi thường phát sinh tại vùng biên hoặc lân cận của biên.
c) In các thông số trung gian
- Bổ sung vào giữa các dòng lệnh câu lệnh print() để in ra biến trung gian, kiểm tra quy trình hay thuật toán.
- Giả sử chương trình có đầu vào là (x1, x2) đầu ra là (a1, a2) nhưng sử sụng biến trung gian (y1, y2). Khi đó bổ sung thêm các dòng lệnh để in ra các giá trị trung gian, từ đó sẽ dễ tìm lỗi hơn.
d) Sử dụng công cụ break point (điểm dừng)
- Công cụ break point cho phép tạo ra các điểm dừng bên trong chương trình. Khi chạy, chương trình sẽ tạm dừng tại các điểm dừng cho phép người kiểm thử có thể quan sát các thông tin khác bên trong chương trình, kiểm tra tính đúng đắn của chương trình.
Tham khảo thêm một số tài liệu liên quan:
Lý thuyết Tin học 10 Bài 30 (Kết nối tri thức): Kiểm thử và gỡ lỗi chương trình
Trắc nghiệm Tin học 10 Bài 30 (Kết nối tri thức): Kiểm thử và gỡ lỗi chương trình
Chương trình chạy phát sinh lỗi ngoại lệ IndexError, nên xử lí như thế nào?
Chương trình chạy phát sinh lỗi ngoại lệ TypeError, nên xử lí như thế nào?
Chương trình chạy phát sinh lỗi ngoại lệ NameError, nên xử lí như thế nào?
Phát biểu nào sau đây đúng nhất khi nói về các bộ dữ liệu test khi kiểm thử chương trình?
Để tính giá trị trung bình của một danh sách số A, người lập trình đã dùng lệnh gttb = sum(A) / len(A). Những mã lỗi ngoại lệ nào có thể xảy ra ?
Hoàn thành phát biểu sau: “Có rất nhiều công cụ và phương pháp khác nhau để kiểm thử chương trình. Các công cụ có mục đích … của chương trình và …, … các lỗi phát sinh trong tương lai”
Chương trình sau có lỗi ở dòng lệnh nào?
n = int(input("Nhập số tự nhiên n: "))
s = ""
for i in range(10):
s = s + i
Chương trình chạy phát sinh lỗi ngoại lệ ZeroDivision, nên xử lí như thế nào?
Chương trình sau nên sửa như thế nào. Chọn phương án đúng nhất.
fruits = ['Banana', 'Apple', 'Lime']
print(fruits[4])
Trong các phát biểu sau, phát biểu nào chưa chính xác về kiểm thử chương trình?
Chương trình sau mắc lỗi gì?
def func(n)
a, b = 0, 1
while a < n:
print(a, end=' ')
a, b = b, a+b
print()
print(func(1000))
Số phát biểu đúng trong các phát biểu sau:
1) Cần chú ý nên có nhiều bộ test khi test các bộ dữ liệu.
2) Việc sinh ngẫu nhiên dữ liệu đầu vào trong miền xác định của chương trình làm tăng khả năng tìm lỗi.
3) Thực tế cho thấy ít khi phát sinh lỗi tại các vùng biên hoặc lân cận biên.
4) Không thể sử dụng các lệnh print() để in ra các biến trung gian.