BÀI 30: KIỂM THỬ VÀ GỠ LỖI CHƯƠNG TRÌNH


 

HỦ ĐỀ 5 – BÀI 30 – TIN HỌC 10

Kiểm Thử Và Gỡ Lỗi Chương Trình

Testing & Debugging – Phát hiện và sửa lỗi trong chương trình Python

🎯 Mục Tiêu Bài Học

  • Biết một số phương pháp kiểm thử (Test) chương trình.
  • Biết một số cách gỡ lỗi (Debug) đơn giản.
  • Vận dụng để phát hiện và sửa lỗi trong chương trình Python.

I. Kiểm Thử Chương Trình (Testing)

Kiểm thử chương trình là quá trình kiểm tra chương trình để phát hiện lỗi trước khi đưa vào sử dụng.

1. Quan sát lỗi Runtime (Lỗi ngoại lệ)

  • Chạy chương trình.
  • Nếu xuất hiện thông báo lỗi (Exception), đọc: Tên lỗi, Dòng xảy ra lỗi.
  • Phân tích nguyên nhân và sửa lỗi.
a = 5
b = 0
print(a / b)
Kết quả

Chương trình sẽ báo lỗi vì không thể chia cho 0.

Thông báo lỗi:

Traceback (most recent call last):
  ...
ZeroDivisionError: division by zero
Giải thích
  • a = 5
  • b = 0
  • a / b nghĩa là 5 / 0.
  • Trong Python (và trong toán học), phép chia cho 0 không được phép, nên Python phát sinh ngoại lệ (Exception) ZeroDivisionError.
Cách tránh lỗi

Có thể kiểm tra trước khi chia:

a = 5
b = 0

if b != 0:
    print(a / b)
else:
    print("Không thể chia cho 0")

Kết quả:

Không thể chia cho 0

2. Kiểm thử bằng dữ liệu Test

Thử chương trình với nhiều bộ dữ liệu khác nhau để kiểm tra tính đúng đắn.

Nên có:

  • Bộ dữ liệu thông thường
  • Bộ dữ liệu ngẫu nhiên
  • Bộ dữ liệu biên (0, 1, số lớn, giá trị đặc biệt...)

Ví dụ – Chương trình tính tổng:

2 + 3 → 5 0 + 5 → 5 1000 + 2000 → 3000 -5 + 7 → 2

3. In các giá trị trung gian

Thêm lệnh print() để quan sát giá trị biến trong quá trình chương trình chạy.

print(i)
print(sum)
print(m, n)

Giúp: Theo dõi thuật toán • Phát hiện bước sai • Dễ sửa lỗi.

 

Code trên có ý nghĩa như sau:

  • print(i): In ra giá trị hiện tại của biến i.
  • print(sum): In ra giá trị của biến sum (thường dùng để lưu tổng).
  • print(m, n): In ra đồng thời giá trị của hai biến mn, cách nhau bởi một khoảng trắng.
Ví dụ
i = 5
sum = 20
m = 8
n = 12

print(i)
print(sum)
print(m, n)

Kết quả:

5
20
8 12

Lưu ý: Không nên đặt tên biến là sumsum là một hàm có sẵn (built-in) của Python. Nên dùng các tên như tong, total hoặc s để tránh ghi đè hàm sum().

 

4. Sử dụng Breakpoint

Breakpoint (Điểm dừng) là công cụ của phần mềm lập trình. Khi chạy, chương trình dừng tại vị trí đã chọn, cho phép quan sát giá trị các biến và thực hiện từng bước (Step).

Breakpoint giúp kiểm tra chương trình chính xác hơn so với chỉ dùng print().

II. Ví Dụ Minh Họa – Tính ƯCLN

Bài toán: Tính ƯCLN của hai số m và n bằng phương pháp trừ liên tiếp. Để kiểm tra, ta in giá trị m và n sau mỗi vòng lặp hoặc đặt Breakpoint.

m = int(input())
n = int(input())
while m != n:
if m > n:
m = m - n
else:
n = n - m
print("m =", m, ", n =", n)
print("UCLN =", m)
Giải thích

Chương trình sử dụng thuật toán Euclid bằng phép trừ để tìm Ước chung lớn nhất (UCLN) của hai số nguyên dương mn.

  • Nhập hai số mn.
  • Khi m khác n:
    • Nếu m > n thì thay m = m - n.
    • Ngược lại thay n = n - m.
    • In giá trị mới của mn.
  • Khi m == n, giá trị đó chính là UCLN.
Ví dụ

Input

24
18

Output

m = 6 , n = 18
m = 6 , n = 12
m = 6 , n = 6
UCLN = 6

Độ phức tạp của thuật toán này lớn hơn thuật toán Euclid dùng phép chia dư (m % n), nhưng nguyên lý hoạt động rất dễ hiểu.

III. Gỡ Lỗi (Debug)

1Chạy chương trình
2Quan sát thông báo lỗi hoặc kết quả
3Xác định vị trí gây lỗi
4Phân tích nguyên nhân
5Sửa chương trình
6Chạy lại và kiểm thử

IV. Những Lỗi Thường Gặp

LỗiNguyên nhân
ZeroDivisionErrorChia cho 0
NameErrorBiến chưa khai báo
SyntaxErrorSai cú pháp
TypeErrorSai kiểu dữ liệu
ValueErrorGiá trị nhập không hợp lệ

V. Ghi Nhớ

  • ✅ Chương trình không báo lỗi chưa chắc đã chạy đúng.
  • ✅ Luôn kiểm thử bằng nhiều bộ dữ liệu.
  • ✅ Nên có bộ dữ liệu biên và dữ liệu ngẫu nhiên.
  • ✅ Dùng print() để theo dõi giá trị các biến.
  • ✅ Sử dụng Breakpoint để kiểm tra từng bước thực hiện chương trình.
  • ✅ Sau khi sửa lỗi phải kiểm thử lại để bảo đảm chương trình hoạt động đúng.

Sơ Đồ Tư Duy

KIỂM THỬ VÀ GỠ LỖI CHƯƠNG TRÌNH

Kiểm thử

  • Quan sát Runtime Error
  • Bộ dữ liệu Test
  • In biến trung gian
  • Breakpoint

Gỡ lỗi

  • Xác định lỗi
  • Phân tích
  • Sửa lỗi
  • Kiểm thử lại

Ghi nhớ

  • Test nhiều bộ dữ liệu
  • Có dữ liệu biên
  • Dùng print()
  • Dùng Breakpoint
  • Chạy lại sau khi sửa

📌 Ghi Nhớ Trọng Tâm (Ôn Tập)

Kiểm thử (Testing) giúp phát hiện lỗi trước khi sử dụng chương trình. Có 4 phương pháp cơ bản: (1) Quan sát lỗi Runtime, (2) Kiểm thử với nhiều bộ dữ liệu test, (3) In các giá trị trung gian bằng print(), (4) Sử dụng Breakpoint để theo dõi từng bước thực hiện chương trình. Sau khi sửa lỗi (Debug), cần kiểm thử lại để đảm bảo chương trình hoạt động chính xác.

Fascinating blue spiral design with intricate geometric patterns.

"Kiểm thử kỹ lưỡng – Gỡ lỗi chính xác – Chương trình hoàn hảo!"

D. TRẮC NGHIỆM

Bài cũ hơn Bài mới hơn
Đọc tiếp:
Lên đầu trang