Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 30 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
30
Dung lượng
8,76 MB
Nội dung
BÀI 16 KIỂM THỬ VÀ GỠ LỖI CHƯƠNG TRÌNH Lỗi chương trình kiểm thử Gỡ lỗi: trình xác định lỗi sửa lỗi Khi lập trình thường gặp lỗi sau: - Lỗi cú pháp: lỗi câu lệnh viết không theo quy định ngơn ngữ - Lỗi ngoại lệ: (Exceptions Error) cịn gọi lỗi Runtime, lỗi xảy chương trình chạy, lệnh khơng thể thực - Lỗi ngữ nghĩa (lỗi logic): lỗi câu lệnh viết quy định ngơn ngữ sai thao tác xử lí Đây loại lỗi khó phát Ví dụ: Xét chương trình Hình 1a, chương trình thực yêu cầu nhập vào hai số nguyên p, q danh sách a gồm số nguyên, sau đưa max{│ai│, i = p, p + 1, …, q} Biết phần tử danh sách a đánh số ≤ p ≤ q < len(a) Hình 1a Chương trình cần kiểm thử tìm lỗi Hình 1b Kết Hình 1c Kết sai Giải thích - Với đầu vào p = 1, q = (Hình 1b), dãy xét -6, nên đáp án đúng, số có giá trị tuyệt đối lớn dãy - Với đầu vào p = 2, q = (Hình 1c), dãy xét -6, đáp án phải - Việc đọc kĩ lại chương trình để tìm lỗi thích hợp với chương trình ngắn, đơn giản - Mơi trường lập trình ngơn ngữ lập trình bậc cao có cơng cụ hỗ trợ cho người dùng tìm lỗi - Các lỗi ngữ nghĩa phát thơng qua quan sát kết thực chương trình với liệu vào (các test) khác - Để kiểm tra tính đắn chương trình so với yêu cầu đề bài, trước hết cần chuẩn bị liệu vào Dữ liệu kiểm thử phải phù hợp với ràng buộc cho chia thành nhóm - Kiểm thử trường hợp thường gặp thực tế - Kiểm thử trường hợp đặc biệt (ví dụ, danh sách bao gồm phần tử) - Kiểm thử trường hợp tham số nhận giá trị lớn 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 (Debug), ta thực thao tác sau: - Mở file chương trình cần gỡ lỗi - Chọn Debug => chọn Debugger (Hình 3) => xuất cửa sổ Debug Control (Hình 4) - Chọn Run Module (Hoặc F5) - Chọn Step (hoặc Over) Kết luận: - Để tìm sửa lỗi ngữ nghĩa cần dùng biện pháp truy vết - Muốn truy vết để tìm lỗi: + Có thể đưa thêm câu lệnh xuất kết trung gian q trình tính tốn + Có thể sử dụng công cụ gỡ lỗi môi trường lập trình ⇒ Truy vết để tìm lỗi trình khó khăn phức tạp, đơi nhiều thời gian ⇒ Python trang bị thư viện riêng cung cấp dịch vụ gỡ lỗi, thư viện PDB Thực hành gỡ lỗi cho chương trình Bài tốn: Cho a danh sách số nguyên Em tạo danh sách b có phần tử vị trí lẻ phần tử vị trí tương ứng a, phần tử vị trí chẵn phần tử vị trí tương ứng a cộng thêm 1, tức là: - So sánh số lượng phần tử từ giá trị chẵn a với số lượng phần tử giá trị chẵn b, đưa thông báo - Gọi p số lượng phần tử giá trị chẵn a, q số lượng phần tử giá trị chẵn b đưa thông báo “a hơn” p < q, “b hơn” p > q “Bằng nhau” trường hợp lại Nhiệm vụ: Áp dụng truy vết để xác định lỗi đề xuất cách sửa số câu lệnh để có chương trình Hình Chương trình cần gỡ lỗi Hướng dẫn: - Phương pháp dùng công cụ Gỡ lỗi (Debug) + Chuẩn bị danh sách số nguyên, ví dụ [5, 3, 2, 2, 1, 2] + Chọn Debugger, chọn Step, quan sát giá trị hai danh sách a b Sau vài lần thực câu lệnh vòng lặp: for i in range(0,n,2): b[i] = b[i] + Ta thấy: a b đồng thời thay đổi giá trị, vòng lặp chứa câu lệnh thay đổi giá trị danh sách b Ví dụ: - Sau i = ta có kết Hình ⇒ Chương trình chưa tạo danh sách a mà tạo tên cho danh sách a ⇒ Câu lệnh sai chương trình b = a ⇒ sửa là: b = [] + a Hình Minh họa kết phương pháp gỡ lỗi Hướng dẫn: - Phương pháp bổ sung vào chương trình câu lệnh truy vết + Thêm câu lệnh print(a) print(b) để xuất giá trị danh sách a b sau vòng lặp ⇒Dễ dàng nhận thấy a b đồng thời thay đổi ⇒ Kết luận: Câu lệnh sai chương trình b = a ⇒ sửa là: b = [] + a BÀI TẬP - Em soạn thảo thực bước chương trình hình sau BÀI TẬP Câu 1: Em nêu vài lỗi thuộc nhóm lỗi cú pháp vài lỗi thuộc nhóm lỗi ngữ nghĩa Câu 2: Tại phải tạo nhiều liệu vào khác để kiểm thử chương trình? Câu 3: Có nhóm liệu khác cần tạo để kiểm thử chương trình? Câu 4: Có thể xem giá trị biến sau thực câu lệnh đâu? Thank You! someone@example.com ...1 Lỗi chương trình kiểm thử Gỡ lỗi: trình xác định lỗi sửa lỗi Khi lập trình thường gặp lỗi sau: - Lỗi cú pháp: lỗi câu lệnh viết không theo quy định ngôn ngữ - Lỗi ngoại lệ: (Exceptions... lệnh sai chương trình b = a ⇒ sửa là: b = [] + a BÀI TẬP - Em soạn thảo thực bước chương trình hình sau BÀI TẬP Câu 1: Em nêu vài lỗi thuộc nhóm lỗi cú pháp vài lỗi thuộc nhóm lỗi ngữ nghĩa Câu... qua quan sát kết thực chương trình với liệu vào (các test) khác - Để kiểm tra tính đắn chương trình so với yêu cầu đề bài, trước hết cần chuẩn bị liệu vào Dữ liệu kiểm thử phải phù hợp với ràng