Lý thuyết kiểm thử và gỡ lỗi chương trình - Tin học 10
Lý thuyết kiểm thử và gỡ lỗi chương trình
BÀI 30: KIỂM THỬ VÀ GỠ LỖI CHƯƠNG TRÌNH
Một vài phương pháp kiểm thử chương trình
- Có rất nhiều phương pháp và công cụ khác nhau để kiểm thử chương trình. Các công cụ này không những có mục đích tìm ra lỗi (hay bug) của chương trình mà còn có tác dụng phòng ngừa và ngăn chặn các lỗi phát sinh tiếp trong tương lai.
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 (tức là đang chạy bị dừng lại), cần quan sát các mã lỗi (mã lỗi ngoại lệ) để kiểm tra vị trí dòng lệnh sinh ra lỗi này. Từ đó phân tích, 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ác bộ test có thể có đầu vào theo các tiêu chí khác nhau như độ lớn và tính đa dạng của dữ liệu, cần chú ý một số điểm sau:
+ Cần có nhiều bộ test (theo các tiêu chí khác nhau như độ lớn, tính đa dạng của dữ liệu, ...).
+ Cần có bộ test ngẫu nhiên. 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 nếu có.
+ Cần có bộ test dữ liệu ở vùng biên. Thực tế cho thấy thường phát sinh lỗi tại các 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ác lệnh print() để in ra các biến trung gian, qua đó kiểm tra các quy trình hay thuật toán được viết có đúng không.
- Thông qua các giá trị trung gian trong quá trình thực hiện chương trình, nếu kết quả cuối cùng có lỗi thì sẽ dễ tìm ra lỗi đó.
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 lại 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, qua đó kiểm tra tính đúng đắn của chương trình.
- Trên thực tế sử dụng phương pháp điểm dừng thường kết hợp với phương pháp in các giá trị trung gian sẽ là hiệu quả hơn để kiểm thử chương trình.