1. Một và phương pháp kiểm thử chương trình
Các phương pháp kiểm thử thường dùng:
- Quan sát mã lỗi Runtime và bắt lỗi ngoại lệ
- Khi chương trình bị dừng do lỗi Runtime, quan sát thông báo lỗi để xác định vị trí và nguyên nhân lỗi, từ đó sửa lỗi.
- Kiểm thử với các bộ dữ liệu test
- Thử chương trình với nhiều bộ dữ liệu đầu vào khác nhau (đa dạng, ngẫu nhiên, dữ liệu biên) để kiểm tra tính đúng đắn.
- Ví dụ: Nếu đầu vào là cặp (x, y) với 0 ≤ x, y ≤ 1, cần kiểm tra các trường hợp (0,0), (0,1), (1,0), (1,1).
- In các thông số trung gian
- Chèn lệnh
print()
để in ra giá trị các biến trung gian, giúp kiểm tra quá trình xử lý của chương trình.
- Chèn lệnh
- Sử dụng công cụ break point (điểm dừng)
- Đặt điểm dừng trong chương trình để quan sát giá trị các biến tại từng thời điểm, giúp phát hiện lỗi dễ dàng hơn.
Ghi nhớ:
- Sử dụng lệnh in biến trung gian.
- Sinh các bộ dữ liệu test đa dạng.
- Đặt điểm dừng trong phần mềm lập trình.
- Quan sát mã lỗi khi chương trình phát sinh lỗi.
2. Ví dụ minh họa
Bài toán: Tính ƯCLN của hai số tự nhiên m, n
Thuật toán:
- Nếu m = n thì ƯCLN là m.
- Nếu n > m thì ƯCLN(m, n) = ƯCLN(m, n–m).
- Nếu n < m thì ƯCLN(m, n) = ƯCLN(m–n, n).
Chương trình cơ bản:
# Tính ƯCLN của m, n
m = int(input("Nhập số tự nhiên m: "))
n = int(input("Nhập số tự nhiên n: "))
while m != n:
if m < n:
n = n - m
else:
m = m - n
print("Đáp số:", m)
Kiểm thử chương trình
Cách 1: In giá trị trung gian
Thêm biến đếm vòng lặp và lệnh in:
m = int(input("Nhập số tự nhiên m: "))
n = int(input("Nhập số tự nhiên n: "))
k = 0
while m != n:
k = k + 1
print("Vòng lặp", k, ":", m, n) # in các giá trị từng vòng lặp
if m < n:
n = n - m
else:
m = m - n
print("Kết thúc vòng lặp:", m, n)
print("Đáp số:", m)
Kết quả ví dụ:
Nhập số tự nhiên m: 20
Nhập số tự nhiên n: 16
Vòng lặp 1 : 20 16
Vòng lặp 2 : 4 16
Vòng lặp 3 : 4 12
Vòng lặp 4 : 4 8
Kết thúc vòng lặp: 4 4
Đáp số: 4
Cách 2: Sử dụng điểm dừng (break point)
- Đặt điểm dừng tại dòng bắt đầu vòng lặp để quan sát giá trị các biến qua từng vòng lặp.
- Bảng theo dõi giá trị biến:
Vòng lặp | m | n | Kết quả |
---|---|---|---|
1 | 20 | 16 | |
2 | 4 | 16 | |
3 | 4 | 12 | |
4 | 4 | 8 | |
Kết thúc lặp | 4 | 4 | 4 |