Lý thuyết Tin học 10 Cánh diều Bài 16: Kiểm thử và gỡ lỗi chương trình
Với tóm tắt lý thuyết Tin học lớp 10 Bài 16: Kiểm thử và gỡ lỗi chương trình sách Cánh diều hay nhất, ngắn gọn sẽ giúp học sinh nắm vững kiến thức trọng tâm, ôn luyện để học tốt môn Tin 10.
Lý thuyết Tin 10 Cánh diều Bài 16: Kiểm thử và gỡ lỗi chương trình
1. Lỗi trong chương trình và kiểm thử
Quá trình xác định lỗi và sửa lỗi được gọi là gỡ lỗi. Các lỗi thường gặp như sau:
- Lỗi cú pháp là lỗi câu lệnh viết không theo đúng quy định của ngôn ngữ, lỗi thông báo cụ thể, rõ ràng về đặc trưng lỗi và nơi xảy ra lỗi.
Ví dụ: Thiếu hoặc thừa dấu ngoặc trong biểu thức, tên biến sau quy cách, …
- Lỗi ngoại lệ là lỗi Runtime, xảy ra khi chương trình đang chạy, một lệnh nào đó không thực hiện được, lỗi sẽ thông báo trên màn hình.
- Lỗi ngữ nghĩa là lỗi logic, dù viết đúng quy định của ngôn ngữ nhưng sai trong thao tác xử lí nào đó. Viết nhầm dấu phép tính, nhầm tên biến, … là lỗi khó phát hiện nhất.
Ví dụ: Xét chương trình ở Hình 16.1a, chương trình này thực hiện yêu cầu nhập hai số nguyên p, q và danh sách a gồm các số nguyên, sau đó đưa ra max{|ai|, i = p, p + 1, …, q}. Biết rằng các phần tử của danh sách a được đánh chỉ số bắt đầu từ 0 và 0 ≤ p ≤ q < len(a).
Hình 1a: Chương trình cần kiểm thử và tìm lỗi
Để kiểm tra tính đúng đắn của chương trình so với yêu cầu đề bài, chuẩn bị các bộ dữ liệu vào.
Dữ liệu kiểm thử phải phù hợp với các ràng buộc đã cho và chia thành ba nhóm:
- Kiểm thử những trường hợp thường gặp trong thực tế.
- Kiểm thử những trường hợp đặc biệt.
- Kiểm thử những trường hợp các tham số nhận giá trị lớn nhất có thể.
2. Truy vết và cách bổ sung câu lệnh theo dõi kết quả trung gian
- Bổ sung vào chương trình những câu lệnh đưa ra các kết quả trung gian nhằm truy vết các xử lí của chương trình.
- Sau khi chỉnh sửa xong, cần xóa đi các câu lệnh đã thêm để truy vết hoặc biến chúng thành dòng thông tin chú thích.
- Sai sót có thể xảy ra ngay khi nhập dữ liệu vào, đây cũng là chỗ cần quan tâm khi tìm lỗi.
- Câu lệnh để đưa ra các phần tử tham gia tìm kiếm max như sau:
print (“i = “, I, “max= “ , max)
Câu lệnh này có thể đặt trước hay sau câu lệnh đưa ra kết quả của chương trình.
3. Truy vết với công cụ gỡ lỗi ngôn ngữ lập trình
Để kích hoạt chế độ gỡ lỗi, cần thực hiện lần lượt thao tác sau:
- Trên cửa sổ Shell, mở file chương trình cần gỡ lỗi, kết quả là chương trình này xuất hiện ở cửa sổ Code.
- Chọn Debug trên cửa sổ Shell và chọn Debugger (Hình 3). Kết quả là cửa sổ Debug Control sẽ xuất hiện (Hình 4).
- Bắt đầu thực hiện chương trình tiến hành bình thường chọn Run Module (hoặc nhấn phím F5) trong cửa sổ Code.
- Chọn Step để thực hiện câu lệnh hiển thị phía dưới, lệnh vào – ra dữ liệu nháy chuột một số lần.
Hình 5: Sự thay đổi của biến khi một câu lệnh được thực hiện
4. Thực hành gỡ lỗi chương trình
Bài toán: Cho a là danh sách các số nguyên. Em hãy tạo danh sách b có các phần tử ở vị trí lẻ bằng phần tử ở vị trí tương đương của a, các phần tử ở vị trí chẵn bằng phần tử ở vị trí tương ứng của a cộng thêm 1, tức là:
So sánh số lượng các phần tử giá trị chẵn ở a với số lượng các phần tử giá trị chẵn b, đưa ra thông báo. Gọi p là số lượng các phần tử giá trị chẵn ở a, q là số lượng các phần tử giá trị chẵn ở b và đưa ra thông báo “a ít hơn nếu p < q, “b ít hơn” nếu p > q và “Bằng nhau” trong trường hợp còn lại.
Nhiệm vụ: Chương trình ở Hình 6 giải bài toán đã nêu nhưng còn có lỗi và cần được gỡ lỗi. Em hãy áp dụng các phương pháp truy vết để xác định lỗi và đề xuất cách sửa một số ít nhất các câu lệnh để có chương trình đúng.
Hướng dẫn:
- Phương pháp dùng công cụ gỡ lỗi (Debug)
Để gỡ lỗi cần chuẩn bị một danh sách số nguyên, ví dụ: [5, 3, 2, 2, 1, 2]. Chọn Debugger sau đó chọn Step để thực hiện từng bước các câu lệnh, quan sát giá trị hai danh sách a và b, Sau một vài lần thực hiện câu lệnh trong vòng lặp:
for i in range (0, n, 2) :
b[i] = b[i] + 1
Ta thấy a và b đồng thời thay đổi giá trị, mặc dù trong vòng lặp chỉ chứa câu lệnh thay đổi giá trị của danh sách b. Ví dụ, sau khi i=2 ta có kết quả như Hình 7.
Hình 7: Minh họa kết quả của phương pháp dùng công cụ gỡ lỗi
Điều này nói lên rằng chương trình chưa tạo ra bản sao của danh sách a mà chỉ tạo ra một tên mới cho cùng một danh sách a. Vậy câu lệnh sai trong chương trình là b = a. Cần thay nó bằng câu lệnh b= [] + a. Đây là một lỗi mà nếu chỉ đọc chương trình sẽ rất khó phát hiện.
- Phương pháp bổ sung vào chương trình các câu lệnh truy vết
Ta có thể thêm các câu lệnh print (a) và print (b) để xuất ra giá trị các danh sách a và b sau mỗi vòng lặp. Dễ dàng nhận thấy a và b cùng đồng thời thay đổi, từ đó rút ra được kết luận như đã nêu ở phương pháp dùng công cụ gỡ lỗi.
Xem thêm tóm tắt lý thuyết Tin học lớp 10 Cánh diều hay khác:
Lý thuyết Tin học 10 Bài 17: Thực hành lập trình giải bài toán trên máy tính
Lý thuyết Tin học 10 Bài 18: Lập trình giải quyết bài toán trên máy tính
Xem thêm các tài liệu học tốt lớp 10 hay khác:
- Giải sgk Tin học 10 Cánh diều
- Giải Chuyên đề học tập Tin học 10 Cánh diều
- Giải SBT Tin học 10 Cánh diều
- Giải lớp 10 Cánh diều (các môn học)
- Giải lớp 10 Kết nối tri thức (các môn học)
- Giải lớp 10 Chân trời sáng tạo (các môn học)
Tủ sách VIETJACK shopee lớp 10-11 cho học sinh và giáo viên (cả 3 bộ sách):
Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.
Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:Nếu thấy hay, hãy động viên và chia sẻ nhé! Các bình luận không phù hợp với nội quy bình luận trang web sẽ bị cấm bình luận vĩnh viễn.
- Soạn văn 10 (hay nhất) - Cánh diều
- Soạn văn 10 (ngắn nhất) - Cánh diều
- Soạn văn 10 (siêu ngắn) - Cánh diều
- Giải sgk Toán 10 - Cánh diều
- Giải Tiếng Anh 10 Global Success
- Giải Tiếng Anh 10 Friends Global
- Giải sgk Tiếng Anh 10 iLearn Smart World
- Giải sgk Tiếng Anh 10 Explore New Worlds
- Giải sgk Vật lí 10 - Cánh diều
- Giải sgk Hóa học 10 - Cánh diều
- Giải sgk Sinh học 10 - Cánh diều
- Giải sgk Địa lí 10 - Cánh diều
- Giải sgk Lịch sử 10 - Cánh diều
- Giải sgk Kinh tế và Pháp luật 10 - Cánh diều
- Giải sgk Tin học 10 - Cánh diều
- Giải sgk Công nghệ 10 - Cánh diều
- Giải sgk Hoạt động trải nghiệm 10 - Cánh diều
- Giải sgk Giáo dục quốc phòng 10 - Cánh diều