Chào mừng quý vị đến với website của ...
Quý vị chưa đăng nhập hoặc chưa đăng ký làm thành viên, vì vậy chưa thể tải được các tài liệu của Thư viện về máy tính của mình.
Nếu chưa đăng ký, hãy nhấn vào chữ ĐK thành viên ở phía bên trái, hoặc xem phim hướng dẫn tại đây
Nếu đã đăng ký rồi, quý vị có thể đăng nhập ở ngay phía bên trái.
Nếu chưa đăng ký, hãy nhấn vào chữ ĐK thành viên ở phía bên trái, hoặc xem phim hướng dẫn tại đây
Nếu đã đăng ký rồi, quý vị có thể đăng nhập ở ngay phía bên trái.
Chủ đề F: Bài 16. Kiểm thử và gỡ lỗi chương trình
(Tài liệu chưa được thẩm định)
Nguồn: Bạch Kim
Người gửi: Ngô Văn Chinh (trang riêng)
Ngày gửi: 15h:40' 04-05-2023
Dung lượng: 2.1 MB
Số lượt tải: 0
Nguồn: Bạch Kim
Người gửi: Ngô Văn Chinh (trang riêng)
Ngày gửi: 15h:40' 04-05-2023
Dung lượng: 2.1 MB
Số lượt tải: 0
Số lượt thích:
0 người
CHỦ ĐỀ F: BÀI 16: KIỂM THỬ VÀ GỠ LỖI CHƯƠNG TRÌNH
Trang bìa
Trang bìa
Ảnh
TIN HỌC 10
CHỦ ĐỀ F: BÀI 16: KIỂM THỬ VÀ GỠ LỖI CHƯƠNG TRÌNH
Ảnh
Khởi động
Khởi động (Khởi động)
Ảnh
Khởi động:
Có những chương trình còn lỗi vì khi thực hiện cho ra kết quả sai. Theo em, việc biết giá trị của một số biến ngay sau khi mỗi câu lệnh được thực hiện có thể giúp tìm ra lỗi của chương trình hay không?
1. Lỗi trong chương trình và kiểm thử
- Hoạt động 1
Ảnh
1. Lỗi trong chương trình và kiểm thử
Hình vẽ
Hoạt động 1: Trong những phần trước, các bài tập và bài thực hành không quá phức tạp. Đã lần nào em soạn chương trình và thực hiện được ngay từ lần đầu tiên chưa?
- Kết luận 1
- Kết luận 1:
Các lỗi thường gặp trong chương trình:
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ữ. Loại lỗi này được môi trường lập trình phát hiện và thông báo khá cụ thể, rõ ràng, cả về đặc trưng và nơi xảy ra lỗi. Lỗi ngoại lệ: là lỗi Runtime, là lỗi xảy ra khi chương trình đang chạy, một lệnh nào đó không thể thực hiện được. Lỗi này sẽ được thông báo ngay trên màn hình. Lỗi ngữ nghĩa: là lỗi mặc dù các câu lệnh viết đúng quy định của ngôn ngữ nhưng sai trong thao tác xử lí nào đó. Loại lỗi này rất khó để phát hiện.
- Ví dụ 1
- Ví dụ:
Xét chương trình ở Hình 1a, chương trình này thực hiện yêu cầu nhập vào 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à latex(0 <= p<=q<)len(a).
Ảnh
Hình 1a. Chương trình cần kiểm thử và tìm lỗi
+) tiếp (- Ví dụ)
Với đầu vào p = 1, q = 4 (Hình 1b), dãy con được xem xét là 7 1 5 -6, nên 7 là đáp án đúng, là số có giá trị tuyệt đối lớn nhất trong dãy con đó. Với đầu vào p = 2, q = 4 (Hình 1c), dãy con được xem xét là 1 5 -6, đáp ánh dúng phải là 6.
Ảnh
- Kết luận 2
Hình vẽ
- Kết luận 2:
Để kiểm tra tính đúng đắn của chương trình so với yêu cầu của đề bài, 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ới cách bổ xung câu lệnh theo dõi kết quả trung gian
- Hoạt động 2
Ảnh
2. Truy vết với cách bổ xung câu lệnh theo dõi kết quả trung gian
Hình vẽ
Hoạt động 2: Tại sao rất khó phát hiện lỗi nếu chỉ dùng biện pháp đọc kĩ lại chương trình?
- Kết luận
Hình vẽ
- Kết luận:
Truy vết với cách bổ sung câu lệnh theo dõi kết quả trung gian nhằm dự đoán và khoanh vùng được phần chương trình chứa các câu lệnh đưa đến kết quả sai.
Ảnh
- Tìm hiểu ví dụ minh họa
- Tìm hiểu ví dụ minh họa:
Trong ví dụ ở mục 1, hiện tượng có lúc chương trình cho kết quả sai có thể do nguyên nhân ở khâu nhập dữ liệu hoặc phạm vi tìm kiếm max. Để tìm xem lỗi sai ở đâu ta sử dụng câu lệnh print("i = ", i,"max = ", max).
Ảnh
+) tiếp (- Tìm hiểu ví dụ minh họa)
Kết quả kiểm thử đó cho ta thấy lỗi ở việc xác định miền cần tìm max và cần phải sửa lại câu lệnh for i in range(p, q) thành for i in range(p, q + 1).
Ảnh
3. Truy vết công cụ gỡ lỗi của ngôn ngữ lập trình
- Tìm hiểu
Ảnh
3. Truy vết công cụ gỡ lỗi của ngôn ngữ lập trình
Để người lập trình không cần phải can thiệp vào chương trình nguồn mà vẫn truy vết tìm lỗi được, ngôn ngữ Python cung cấp công cụ Debug (Gỡ lỗi). Các thao tác kích hoạt chế độ gỡi lỗi:
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. Chọn Debug trên cửa sổ Shell và sau đó chọn Debugger (Hình 3). Kết quả là cửa sổ Debug Control sẽ xuất hiện (Hình 4).
- Hình 3. Kích hoạt chế độ gỡ lỗi (- Tìm hiểu)
Hình 3. Kích hoạt chế độ gỡ lỗi
Ảnh
- Hình 4. Cửa sổ Debug Control của công cụ gỡ lỗi đang ở trạng thái chờ làm việc (- Tìm hiểu)
Hình 4. Cửa sổ Debug Control của công cụ gỡ lỗi đang ở trạng thái chờ làm việc
Ảnh
- Hình 5. Sự thay đổi các biến khi một câu lệnh được thực hiện (- Tìm hiểu)
Hình 5. Sự thay đổi các biến khi một câu lệnh được thực hiện
Ảnh
- Kết luận
Hình vẽ
- Kết luận:
Truy vết để tìm lỗi là một quá trình khó khăn và phức tạp, đôi khi mất khá nhiều thời gian. Python trang bỊ một thư viện riêng cung cấp các dịch vụ gỡ lỗi đó là thư viện PDB.
Ảnh
4. Thực hành gỡ lõi cho chương trình
- Bài toá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ẻ 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à:
Ảnh
latex(b_i) =
latex(a_1 + 1, i = 0, 2, 4, ...) latex(a_i, i = 1, 3, 5, ...)
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ụ
- Nhiệm vụ:
Ảnh
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.
Ảnh
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
Ảnh
Hình vẽ
- Hướng dẫn:
Sử dụng công cụ gỡ lỗi (Debug). Sử dung phương pháp bổ sung vào chương trình các câu lệnh truy vết.
Luyện tập
- Luyện tập (- Luyện tập)
Luyện tập:
Ảnh
Em hãy soạn thảo và thực hiện từng bước chương trình ở hình sau:
Ảnh
Vận dụng
- Vận dụng
- Vận dụng:
Ảnh
Ảnh
Câu 1:Nêu một vài lỗi thuộc nhóm cú pháp và một vài lỗi thuộc nhóm lỗi ngữ nghĩa. Câu 2: Tại sao phải tạo nhiều bộ dữ liệu vào khác nhau để kiểm thử chương trình? Câu 3: Có bao nhiêu nhóm dữ liệu khác nhau cần tạo ra để kiểm thử chương trình? Câu 4. Có thể xem giá trị các biến sau khi thực hiện một câu lệnh ở đâu?
Dặn dò
- Dặn dò
Ảnh
Dặn dò
Học hiểu trọng tâm bài học. Làm bài tập trong SBT. Chuẩn bị bài sau: Chủ đề F: Bài 17: Thực hành lập trình giải bài toán trên máy tính.
- Cảm ơn
Ảnh
Trang bìa
Trang bìa
Ảnh
TIN HỌC 10
CHỦ ĐỀ F: BÀI 16: KIỂM THỬ VÀ GỠ LỖI CHƯƠNG TRÌNH
Ảnh
Khởi động
Khởi động (Khởi động)
Ảnh
Khởi động:
Có những chương trình còn lỗi vì khi thực hiện cho ra kết quả sai. Theo em, việc biết giá trị của một số biến ngay sau khi mỗi câu lệnh được thực hiện có thể giúp tìm ra lỗi của chương trình hay không?
1. Lỗi trong chương trình và kiểm thử
- Hoạt động 1
Ảnh
1. Lỗi trong chương trình và kiểm thử
Hình vẽ
Hoạt động 1: Trong những phần trước, các bài tập và bài thực hành không quá phức tạp. Đã lần nào em soạn chương trình và thực hiện được ngay từ lần đầu tiên chưa?
- Kết luận 1
- Kết luận 1:
Các lỗi thường gặp trong chương trình:
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ữ. Loại lỗi này được môi trường lập trình phát hiện và thông báo khá cụ thể, rõ ràng, cả về đặc trưng và nơi xảy ra lỗi. Lỗi ngoại lệ: là lỗi Runtime, là lỗi xảy ra khi chương trình đang chạy, một lệnh nào đó không thể thực hiện được. Lỗi này sẽ được thông báo ngay trên màn hình. Lỗi ngữ nghĩa: là lỗi mặc dù các câu lệnh viết đúng quy định của ngôn ngữ nhưng sai trong thao tác xử lí nào đó. Loại lỗi này rất khó để phát hiện.
- Ví dụ 1
- Ví dụ:
Xét chương trình ở Hình 1a, chương trình này thực hiện yêu cầu nhập vào 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à latex(0 <= p<=q<)len(a).
Ảnh
Hình 1a. Chương trình cần kiểm thử và tìm lỗi
+) tiếp (- Ví dụ)
Với đầu vào p = 1, q = 4 (Hình 1b), dãy con được xem xét là 7 1 5 -6, nên 7 là đáp án đúng, là số có giá trị tuyệt đối lớn nhất trong dãy con đó. Với đầu vào p = 2, q = 4 (Hình 1c), dãy con được xem xét là 1 5 -6, đáp ánh dúng phải là 6.
Ảnh
- Kết luận 2
Hình vẽ
- Kết luận 2:
Để kiểm tra tính đúng đắn của chương trình so với yêu cầu của đề bài, 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ới cách bổ xung câu lệnh theo dõi kết quả trung gian
- Hoạt động 2
Ảnh
2. Truy vết với cách bổ xung câu lệnh theo dõi kết quả trung gian
Hình vẽ
Hoạt động 2: Tại sao rất khó phát hiện lỗi nếu chỉ dùng biện pháp đọc kĩ lại chương trình?
- Kết luận
Hình vẽ
- Kết luận:
Truy vết với cách bổ sung câu lệnh theo dõi kết quả trung gian nhằm dự đoán và khoanh vùng được phần chương trình chứa các câu lệnh đưa đến kết quả sai.
Ảnh
- Tìm hiểu ví dụ minh họa
- Tìm hiểu ví dụ minh họa:
Trong ví dụ ở mục 1, hiện tượng có lúc chương trình cho kết quả sai có thể do nguyên nhân ở khâu nhập dữ liệu hoặc phạm vi tìm kiếm max. Để tìm xem lỗi sai ở đâu ta sử dụng câu lệnh print("i = ", i,"max = ", max).
Ảnh
+) tiếp (- Tìm hiểu ví dụ minh họa)
Kết quả kiểm thử đó cho ta thấy lỗi ở việc xác định miền cần tìm max và cần phải sửa lại câu lệnh for i in range(p, q) thành for i in range(p, q + 1).
Ảnh
3. Truy vết công cụ gỡ lỗi của ngôn ngữ lập trình
- Tìm hiểu
Ảnh
3. Truy vết công cụ gỡ lỗi của ngôn ngữ lập trình
Để người lập trình không cần phải can thiệp vào chương trình nguồn mà vẫn truy vết tìm lỗi được, ngôn ngữ Python cung cấp công cụ Debug (Gỡ lỗi). Các thao tác kích hoạt chế độ gỡi lỗi:
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. Chọn Debug trên cửa sổ Shell và sau đó chọn Debugger (Hình 3). Kết quả là cửa sổ Debug Control sẽ xuất hiện (Hình 4).
- Hình 3. Kích hoạt chế độ gỡ lỗi (- Tìm hiểu)
Hình 3. Kích hoạt chế độ gỡ lỗi
Ảnh
- Hình 4. Cửa sổ Debug Control của công cụ gỡ lỗi đang ở trạng thái chờ làm việc (- Tìm hiểu)
Hình 4. Cửa sổ Debug Control của công cụ gỡ lỗi đang ở trạng thái chờ làm việc
Ảnh
- Hình 5. Sự thay đổi các biến khi một câu lệnh được thực hiện (- Tìm hiểu)
Hình 5. Sự thay đổi các biến khi một câu lệnh được thực hiện
Ảnh
- Kết luận
Hình vẽ
- Kết luận:
Truy vết để tìm lỗi là một quá trình khó khăn và phức tạp, đôi khi mất khá nhiều thời gian. Python trang bỊ một thư viện riêng cung cấp các dịch vụ gỡ lỗi đó là thư viện PDB.
Ảnh
4. Thực hành gỡ lõi cho chương trình
- Bài toá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ẻ 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à:
Ảnh
latex(b_i) =
latex(a_1 + 1, i = 0, 2, 4, ...) latex(a_i, i = 1, 3, 5, ...)
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ụ
- Nhiệm vụ:
Ảnh
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.
Ảnh
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
Ảnh
Hình vẽ
- Hướng dẫn:
Sử dụng công cụ gỡ lỗi (Debug). Sử dung phương pháp bổ sung vào chương trình các câu lệnh truy vết.
Luyện tập
- Luyện tập (- Luyện tập)
Luyện tập:
Ảnh
Em hãy soạn thảo và thực hiện từng bước chương trình ở hình sau:
Ảnh
Vận dụng
- Vận dụng
- Vận dụng:
Ảnh
Ảnh
Câu 1:Nêu một vài lỗi thuộc nhóm cú pháp và một vài lỗi thuộc nhóm lỗi ngữ nghĩa. Câu 2: Tại sao phải tạo nhiều bộ dữ liệu vào khác nhau để kiểm thử chương trình? Câu 3: Có bao nhiêu nhóm dữ liệu khác nhau cần tạo ra để kiểm thử chương trình? Câu 4. Có thể xem giá trị các biến sau khi thực hiện một câu lệnh ở đâu?
Dặn dò
- Dặn dò
Ảnh
Dặn dò
Học hiểu trọng tâm bài học. Làm bài tập trong SBT. Chuẩn bị bài sau: Chủ đề F: Bài 17: Thực hành lập trình giải bài toán trên máy tính.
- Cảm ơn
Ảnh
 
↓ CHÚ Ý: Bài giảng này được nén lại dưới dạng ZIP và có thể chứa nhiều file. Hệ thống chỉ hiển thị 1 file trong số đó, đề nghị các thầy cô KIỂM TRA KỸ TRƯỚC KHI NHẬN XÉT ↓
Các ý kiến mới nhất