Giáo án Tin học 11 · Chung, Khoa học máy tính và Tin học ứng dụng
Tin họcLớp 11Phần 6. KHMT · Chủ đề 6. Kĩ thuật lập trình · Chọn định hướng, không bắt buộc THUD

Giáo án Bài 23 · KHMT. Kiểm thử và đánh giá chương trình

Kế hoạch bài dạy theo mẫu Công văn 5512/BGDĐT-GDTrH · 2 tiết (90 phút)

I. Mục tiêu

1. Kiến thức

  • Nêu được kiểm thử là đối chiếu đầu ra thực tế của chương trình với đầu ra mong đợi trên từng ca kiểm thử.
  • Giải thích được vì sao chạy đúng một bộ dữ liệu chưa chứng minh chương trình đúng với mọi đầu vào, và vì sao cần chọn ca phát hiện lớp lỗi thay vì nhiều ca cùng dạng.
  • Nêu được các tiêu chí đánh giá chương trình ngoài độ đúng: tài nguyên (thời gian, bộ nhớ), khả năng hiểu, miền áp dụng.
  • Giải thích được vì sao kết quả đo thời gian một lần không đủ để kết luận thuật toán tốt trên mọi máy và mọi dữ liệu.
  • Vận dụng được việc chọn ca kiểm thử (ca rỗng, ca mục tiêu ở đầu, giữa, cuối, ca không có mục tiêu, ca có phần tử lặp) để kiểm thử hàm tìm kiếm tuyến tính và phân biệt quy ước trả về vị trí lần đầu.

2. Năng lực

a) Năng lực chung

  • Tự chủ và tự học: chủ động đọc trang bài học NeoEdu, tự lập bảng mong đợi trước khi chạy chương trình và tự đối chiếu kết quả.
  • Giao tiếp và hợp tác: thảo luận nhóm để thống nhất ca kiểm thử, trình bày và phản biện cách đánh giá chương trình trước lớp.
  • Giải quyết vấn đề và sáng tạo: thiết kế ca kiểm thử phát hiện lỗi, nhận ra giới hạn của kiểm thử và đề xuất cách khắc phục khi thuật toán làm đổi dữ liệu nguồn.

b) Năng lực đặc thù

  • Sử dụng và quản lí các phương tiện công nghệ thông tin và truyền thông (NLa): chạy chương trình Python trên máy tính hoặc công cụ lập trình để kiểm tra đầu ra của hàm tim(a, x) với từng ca.
  • Ứng dụng công nghệ thông tin và truyền thông trong học và tự học (NLd): sử dụng bài giảng và bài tập tương tác trên trang bài học NeoEdu để củng cố kiến thức.
  • Giải quyết vấn đề với sự hỗ trợ của công nghệ thông tin và truyền thông (NLc): dùng việc chạy thử để so sánh kết quả thực tế với kết quả mong đợi, phát hiện lỗi và giải thích giới hạn của kiểm thử.
  • Hợp tác trong môi trường số (NLe): cùng nhóm hoàn thành phiếu học tập chung, chia sẻ bảng kết quả và thống nhất đánh giá.

3. Phẩm chất

  • Trung thực: ghi đúng kết quả chạy thực tế vào phiếu, không sửa kết quả để khớp với mong đợi; nhận xét đúng giới hạn của bằng chứng thực thi.
  • Trách nhiệm: hoàn thành phần việc được giao trong nhóm; kiểm tra lại mã trước khi báo cáo.
  • Chăm chỉ: tự làm các bài tập luyện tập và bài vận dụng, viết thêm ca kiểm thử cho các tình huống mới.

II. Thiết bị dạy học và học liệu

1. Giáo viên

  • Máy tính và máy chiếu; môi trường chạy Python 3 (IDE hoặc trình thông dịch trực tuyến).
  • Đoạn mã hàm tim(a, x) trình chiếu sẵn trên slide hoặc bảng.
  • Phiếu học tập số 1, Phiếu học tập số 2 in sẵn cho các nhóm; bảng phụ hoặc khung kết quả chung.
  • Học liệu số NeoEdu: trang bài học bài 23 (neoedu.vn/learn/11/informatics/bai-23-khmt-kiem-thu-va-danh-gia-chuong-trinh) gồm bài giảng, ví dụ và bài tập tương tác; dùng ở hoạt động Luyện tập và Vận dụng.

2. Học sinh

  • Máy tính hoặc thiết bị có cài Python (hoặc truy cập trình chạy Python trực tuyến) để chạy thử chương trình.
  • Vở ghi, bút, bút dạ để viết kết quả lên bảng nhóm.
  • Tài khoản đăng nhập trang NeoEdu (nếu có) để làm bài tập tương tác.

III. Tiến trình dạy học

Hoạt động 1: Mở đầu · 8 phút

Chương trình chạy đúng chưa?

a) Mục tiêu

Tạo tình huống có vấn đề: chạy đúng một ca chưa chứng minh chương trình đúng với mọi đầu vào; từ đó HS nhận ra cần kiểm thử có chủ đích.

b) Nội dung

GV trình chiếu hàm tim(a, x) tìm vị trí lần đầu của x trong danh sách a, trả về -1 nếu không có x. GV chạy print(tim([4,4,7],4)) và hỏi HS kết quả. Câu hỏi: “Kết quả in ra là bao nhiêu? Nếu chỉ dựa vào ca này, em có kết luận được hàm đã đúng với mọi đầu vào chưa? Vì sao?”

c) Sản phẩm

HS nêu được kết quả in ra là 0 (vị trí đầu tiên của 4 trong [4,4,7]). HS nhận ra: một ca đúng chỉ là bằng chứng hạn chế; cần thêm ca khác dạng (dãy rỗng, mục tiêu ở cuối, mục tiêu không có trong dãy) để kiểm tra.

d) Tổ chức thực hiện

  1. Giáo viên

    Bước 1: Chuyển giao nhiệm vụ

    GV trình chiếu đoạn mã hàm tim(a, x) và lệnh print(tim([4,4,7],4)); nêu câu hỏi tình huống và yêu cầu HS dự đoán kết quả trước khi chạy.

    Học sinh

    HS đọc đoạn mã, suy nghĩ cá nhân và dự đoán kết quả trong khoảng 1 phút.

  2. Giáo viên

    Bước 2: Thực hiện nhiệm vụ

    GV chạy chương trình trực tiếp trên máy chiếu; yêu cầu HS đối chiếu với dự đoán của mình.

    Học sinh

    HS quan sát kết quả chạy, so sánh với dự đoán và ghi nhận xét vào vở.

  3. Giáo viên

    Bước 3: Báo cáo, thảo luận

    GV mời 2 đến 3 HS trình bày dự đoán và nhận xét; hỏi thêm: “Nếu hàm trả về vị trí cuối cùng thay vì đầu tiên thì kết quả sẽ thế nào?”

    Học sinh

    HS trả lời dự kiến: “Dự đoán 0 vì hàm dừng ở lần gặp đầu tiên; nếu trả vị trí cuối thì sẽ in 1, và ca này sẽ lộ lỗi.”

  4. Giáo viên

    Bước 4: Kết luận, nhận định

    GV chốt: kiểm thử là đối chiếu đầu ra thực tế với đầu ra mong đợi; chạy đúng một bộ dữ liệu chưa đủ để kết luận đúng mọi đầu vào; cần chọn ca phát hiện lớp lỗi. GV dẫn vào bài mới.

    Học sinh

    HS ghi tên bài và ý chính: “Một ca đúng không chứng minh được chương trình đúng.”

Hoạt động 2.1: Hình thành kiến thức mới · 20 phút

Thiết kế ca kiểm thử phát hiện lỗi

a) Mục tiêu

HS xác định được đầu ra mong đợi, chạy thử các ca khác dạng và đối chiếu để nhận ra lớp lỗi mà mỗi ca phát hiện được.

b) Nội dung

HS làm việc theo nhóm 4 người, hoàn thành Phiếu học tập số 1 gồm 4 ca kiểm thử của hàm tim(a, x): tim([4,4,7],4), tim([],1), tim([1,2,3],3), tim([1,2,3],5). Với mỗi ca, HS ghi đầu ra mong đợi trước khi chạy, sau đó chạy thực tế và điền kết quả, rồi so sánh. Nhiệm vụ phụ: nêu ca nào sẽ lộ lỗi nếu hàm trả vị trí cuối cùng thay vì vị trí lần đầu, và ca nào kiểm tra dãy rỗng.

c) Sản phẩm

Bảng kết quả trong Phiếu học tập số 1:

  • tim([4,4,7],4): mong đợi 0 (vị trí lần đầu); kết quả chạy 0; đạt. Ca này kiểm tra quy ước lần đầu và phần tử lặp.
  • tim([],1): mong đợi -1; kết quả chạy -1; đạt. Ca này kiểm tra dãy rỗng.
  • tim([1,2,3],3): mong đợi 2; kết quả chạy 2; đạt. Ca này kiểm tra mục tiêu ở cuối dãy.
  • tim([1,2,3],5): mong đợi -1; kết quả chạy -1; đạt. Ca này kiểm tra trường hợp không tìm thấy.
    Kết luận nhóm: ca [4,4,7] phát hiện lỗi “trả vị trí cuối”, vì khi đó kết quả là 1 thay vì 0; các ca khác dạng bổ sung cho nhau, không nên lặp lại ca cùng dạng.

d) Tổ chức thực hiện

  1. Giáo viên

    Bước 1: Chuyển giao nhiệm vụ

    GV chia lớp thành các nhóm 4 HS, phát Phiếu học tập số 1; nêu yêu cầu: ghi mong đợi trước khi chạy, không sửa kết quả mong đợi để khớp với kết quả chạy.

    Học sinh

    Nhóm nhận phiếu, phân công người chạy mã, người ghi phiếu, người kiểm tra lại và người báo cáo.

  2. Giáo viên

    Bước 2: Thực hiện nhiệm vụ

    GV đi quanh lớp, hỗ trợ nhóm chạy mã; gợi ý: “Hãy hỏi nhóm mình: nếu hàm sai, ca nào sẽ lộ ra điều đó?”

    Học sinh

    HS ghi mong đợi, chạy từng ca bằng Python, điền kết quả và so sánh; nhóm thảo luận ca nào phát hiện lỗi “trả vị trí cuối”.

  3. Giáo viên

    Bước 3: Báo cáo, thảo luận

    GV mời 2 nhóm trình bày bảng kết quả và trả lời câu hỏi: “Ca nào có thể phát hiện lỗi trả vị trí cuối? Vì sao ca [1,2,3] tìm 3 không phát hiện được lỗi đó?”

    Học sinh

    HS trả lời dự kiến: “Ca [4,4,7] tìm 4 phát hiện lỗi vì đáp án đúng là 0 còn lỗi cho 1; ca [1,2,3] tìm 3 chỉ có một lần xuất hiện nên không phân biệt được lần đầu và lần cuối.”

  4. Giáo viên

    Bước 4: Kết luận, nhận định

    GV chốt: ca kiểm thử cần có đầu ra mong đợi rõ ràng; nên chọn ca phát hiện lớp lỗi khác nhau (dãy rỗng, mục tiêu đầu hoặc cuối, không có mục tiêu, có phần tử lặp); quy ước “lần đầu” phải được kiểm tra riêng.

    Học sinh

    HS sửa phiếu theo kết luận của GV và ghi vào vở: “Mỗi ca nên phát hiện một lớp lỗi khác nhau.”

Hoạt động 2.2: Hình thành kiến thức mới · 17 phút

Đánh giá chương trình ngoài độ đúng

a) Mục tiêu

HS nêu và giải thích được các tiêu chí đánh giá: tài nguyên, khả năng hiểu, miền áp dụng; nhận biết giới hạn của đo thời gian và vai trò của bất biến, lập luận bổ sung cho bằng chứng thực thi.

b) Nội dung

Kĩ thuật trạm: lớp chia 3 trạm, mỗi nhóm đến một trạm và trả lời phiếu Phiếu học tập số 2.
Trạm 1 (tài nguyên): Đo thời gian chạy hàm tim trên một dãy nhỏ và trên một dãy lớn hơn nhiều lần; nêu vì sao kết quả đo một lần không đủ kết luận.
Trạm 2 (khả năng hiểu và miền áp dụng): Đọc hàm tim, nêu hàm áp dụng cho dãy nào, với kiểu dữ liệu nào; nêu lập luận bất biến: khi duyệt đến chỉ số i, mọi phần tử a[0] đến a[i-1] đều khác x.
Trạm 3 (tác động phụ): Xét yêu cầu “không làm đổi dãy nguồn”; nêu cách kiểm tra dãy nguồn trước và sau khi chạy, và cách dùng bản sao.

c) Sản phẩm

Phiếu học tập số 2 hoàn chỉnh, gồm:

  • Trạm 1: Kết quả đo thời gian chỉ là bằng chứng cho dữ liệu và môi trường đo; cần đo nhiều lần, nhiều dữ liệu, và vẫn không kết luận chắc chắn “tốt trên mọi máy”.
  • Trạm 2: Hàm chỉ áp dụng cho danh sách có thể duyệt theo chỉ số, với so sánh bằng ==; bất biến “a[0..i-1] khác x” giải thích vì sao khi hàm trả -1 thì x không có trong dãy.
  • Trạm 3: Thuật toán làm đổi dãy nguồn có thể vi phạm hợp đồng nếu cần giữ nguyên dữ liệu; cách xử lí: kiểm tra dãy trước và sau, dùng bản sao hoặc sửa thuật toán.
    Kết luận chung: độ đúng không chỉ là một số đầu ra; cần đánh giá đủ các tiêu chí.

d) Tổ chức thực hiện

  1. Giáo viên

    Bước 1: Chuyển giao nhiệm vụ

    GV hướng dẫn kĩ thuật trạm, nêu thời gian mỗi trạm 5 phút, đổi trạm theo hiệu lệnh; phát Phiếu học tập số 2 cho mỗi nhóm.

    Học sinh

    HS nhận nhiệm vụ trạm, phân công người đọc đề, người chạy mã đo thời gian và người ghi chép.

  2. Giáo viên

    Bước 2: Thực hiện nhiệm vụ

    GV theo dõi các trạm; gợi ý cho trạm 1: “Thử đo lặp lại vài lần và đổi dữ liệu xem kết quả có ổn định không?”

    Học sinh

    Mỗi nhóm thực hiện nhiệm vụ trạm và ghi kết quả; khi đổi trạm, nhóm đọc lại ghi chép của nhóm trước và bổ sung.

  3. Giáo viên

    Bước 3: Báo cáo, thảo luận

    GV mời đại diện trạm 1, trạm 2, trạm 3 trình bày; hỏi: “Vì sao chạy đúng hàm tim trên một bộ dữ liệu chưa đủ để nói hàm đúng mọi lúc?”

    Học sinh

    HS trả lời dự kiến: “Vì có thể còn ca chưa thử, như dãy rỗng hoặc mục tiêu ở cuối; đo thời gian một lần bị ảnh hưởng bởi dữ liệu, môi trường và nhiễu.”

  4. Giáo viên

    Bước 4: Kết luận, nhận định

    GV chốt: đánh giá chương trình gồm độ đúng, tài nguyên, khả năng hiểu, miền áp dụng; bất biến và lập luận bổ sung cho bằng chứng thực thi; kiểm thử đối chiếu đầu ra với mong đợi. GV nhấn mạnh ghi nhớ của bài.

    Học sinh

    HS ghi ghi nhớ vào vở: “Kiểm thử đối chiếu đầu ra với mong đợi, đánh giá còn xét độ đúng, tài nguyên, khả năng hiểu và miền áp dụng.”

Hoạt động 3.1: Luyện tập · 15 phút

Đọc kết quả và nhận định đúng sai

a) Mục tiêu

HS dự đoán được kết quả của hàm tìm kiếm tuyến tính trên các ca cụ thể và nhận định đúng sai về đo thời gian, quy ước kết quả.

b) Nội dung

HS làm bài 2 đến bài 6 theo cặp đôi (hoặc cá nhân rồi đối chiếu cặp):
2. Chương trình print(tim([],1)) in ra số nào?
3. Chương trình print(tim([1,2,3],3)) in ra số nào?
4. Chương trình print(tim([1,2,3],5)) in ra số nào?
5. Ca nào riêng kiểm tra quy ước lần đầu? A. Dãy có giá trị lặp; B. Chỉ dãy tăng khác nhau; C. Chỉ một ca dương; D. Không cần ca.
6. Đo thời gian một lần đủ kết luận chắc thuật toán nào tốt trên mọi máy? Đúng hay sai?
HS có thể kiểm chứng bài 2 đến 4 bằng cách chạy mã trên máy tính hoặc luyện tập tương tác trên trang NeoEdu.

c) Sản phẩm

Đáp án:

  • Bài 2: -1 (ca rỗng không có mục tiêu).
  • Bài 3: 2 (mục tiêu ở vị trí cuối).
  • Bài 4: -1 (không tìm thấy, đã duyệt hết dãy).
  • Bài 5: A. Dãy có giá trị lặp, vì phải phân biệt trả vị trí lần đầu hay lần sau.
  • Bài 6: Sai. Kết quả đo phụ thuộc dữ liệu, môi trường và nhiễu, nên một lần đo chưa đủ kết luận.

d) Tổ chức thực hiện

  1. Giáo viên

    Bước 1: Chuyển giao nhiệm vụ

    GV trình chiếu bài 2 đến 6; yêu cầu HS làm trong 6 phút, dự đoán trước rồi kiểm chứng nếu có máy.

    Học sinh

    HS làm bài cá nhân, sau đó đối chiếu với bạn cùng bàn.

  2. Giáo viên

    Bước 2: Thực hiện nhiệm vụ

    GV quan sát, nhắc HS kiểm chứng bằng chạy mã; hỗ trợ HS không có máy bằng cách đối chiếu kết quả suy luận.

    Học sinh

    HS suy luận hoặc chạy mã từng câu; thống nhất đáp án trong cặp.

  3. Giáo viên

    Bước 3: Báo cáo, thảo luận

    GV gọi ngẫu nhiên 3 HS trả lời, yêu cầu giải thích lí do bài 4 ra -1 và bài 5 chọn A.

    Học sinh

    HS trả lời dự kiến: “Bài 4 ra -1 vì duyệt hết dãy không thấy 5; bài 5 chọn A vì dãy có lặp mới kiểm tra được trả lần đầu.”

  4. Giáo viên

    Bước 4: Kết luận, nhận định

    GV chốt đáp án và nhấn mạnh: quy ước lần đầu cần ca riêng; đo thời gian một lần không đủ để kết luận.

    Học sinh

    HS sửa đáp án sai (nếu có) và ghi vào vở.

Hoạt động 3.2: Luyện tập · 10 phút

Xác định ca kiểm thử và trình tự kiểm thử

a) Mục tiêu

HS nêu được các ca kiểm thử cần thiết cho hàm tìm lần đầu và sắp xếp đúng phương pháp giải của nhiệm vụ kiểm thử.

b) Nội dung

HS làm bài 1 và bài 7:

  1. Ca mẫu tìm 4 trong [4,4,7] phải trả vị trí đầu. Hãy nêu ba ca bổ sung cho hàm, gồm dãy rỗng, mục tiêu ở cuối và mục tiêu không có trong dãy.
  2. Sắp xếp các bước theo phương pháp giải của nhiệm vụ kiểm thử: (a) Thực thi, ghi sai khác; (b) Đánh giá và giải thích giới hạn; (c) Xác định yêu cầu và miền; (d) Chọn ca và đầu ra mong đợi.

c) Sản phẩm

Đáp án:

  • Bài 1: Ba ca bổ sung: tim([],1) → -1; tim([1,2,3],3) → 2; tim([1,2,3],5) → -1.
  • Bài 7: Xác định yêu cầu và miền → Chọn ca và đầu ra mong đợi → Thực thi, ghi sai khác → Đánh giá và giải thích giới hạn.

d) Tổ chức thực hiện

  1. Giáo viên

    Bước 1: Chuyển giao nhiệm vụ

    GV trình chiếu bài 1 và bài 7, yêu cầu HS làm cá nhân trong 4 phút, sau đó nhóm thống nhất.

    Học sinh

    HS làm bài cá nhân rồi trao đổi trong nhóm 4.

  2. Giáo viên

    Bước 2: Thực hiện nhiệm vụ

    GV hỗ trợ nhóm đang bế tắc bằng câu hỏi gợi mở: “Ca nào kiểm tra dãy không có phần tử nào?”

    Học sinh

    HS ghi ca kiểm thử và sắp xếp các bước theo logic: xác định yêu cầu trước, chạy thử sau.

  3. Giáo viên

    Bước 3: Báo cáo, thảo luận

    GV mời một nhóm trình bày ba ca bổ sung và thứ tự bốn bước.

    Học sinh

    HS trình bày dự kiến: “Ca rỗng, ca mục tiêu ở cuối, ca không có mục tiêu; thứ tự là xác định yêu cầu, chọn ca, thực thi, đánh giá.”

  4. Giáo viên

    Bước 4: Kết luận, nhận định

    GV chốt đáp án và nhấn mạnh: chọn ca trước khi chạy để tránh chạy thử theo cảm tính.

    Học sinh

    HS đối chiếu và sửa bài làm của mình.

Hoạt động 4: Vận dụng · 20 phút

Đánh giá một chương trình tìm kiếm trước khi đưa vào sử dụng

a) Mục tiêu

HS vận dụng quy trình kiểm thử và tiêu chí đánh giá để viết, kiểm thử và nhận định một hàm tìm kiếm trong tình huống thực tế, như tìm mã học sinh trong danh sách lớp.

b) Nội dung

Tình huống: Nhà trường cần hàm tim(a, x) để tìm vị trí đầu tiên của mã học sinh x trong danh sách a trước khi cập nhật điểm. Nhiệm vụ 1 (bài 8): Viết chương trình hoàn chỉnh cho hàm tim, kiểm tra theo ca mẫu tim([4,4,7],4) và ba ca biên (tim([],1), tim([1,2,3],3), tim([1,2,3],5)). Nêu giới hạn của kiểm thử. Nhiệm vụ 2 (bài 9): Một bạn đề xuất thuật toán cũng đúng nhưng làm đổi danh sách nguồn ngoài yêu cầu. Đánh giá phương án này và đề xuất cách xử lí.
Có thể giao phần viết mã và báo cáo về nhà cho HS.

c) Sản phẩm

Sản phẩm mẫu:
def tim(a,x):
for i in range(len(a)):
if a[i]==x:
return i
return -1
print(tim([4,4,7],4))
Kết quả in 0 đúng như mong đợi (vị trí lần đầu). Ba ca bổ sung: tim([],1) → -1; tim([1,2,3],3) → 2; tim([1,2,3],5) → -1. Ca có lặp [4,4,7] tìm 4 → 0. Kết quả này là mong đợi đối chiếu từ vết và kiểm thử, không phải chứng minh đúng mọi đầu vào; giới hạn là chỉ kiểm thử một số ca.
Thang chấm gợi ý (bài 8): hàm tìm lần đầu 0,35; ca mẫu và 3 ca biên có kết quả 0,45; nêu giới hạn kiểm thử 0,2. Chấp nhận phương án tương đương đúng, có lí giải và an toàn.
Đánh giá bài 9: Tác động phụ có thể vi phạm hợp đồng nếu cần giữ nguyên nguồn (0,4); kiểm tra nguồn trước và sau khi chạy (0,3); dùng bản sao hoặc sửa thuật toán để không làm đổi nguồn (0,3). Độ đúng không chỉ là một số đầu ra.

d) Tổ chức thực hiện

  1. Giáo viên

    Bước 1: Chuyển giao nhiệm vụ

    GV nêu tình huống, giao nhiệm vụ 1 và 2; nhắc HS ghi rõ đầu ra mong đợi trước khi chạy; nếu chưa kịp, giao phần viết báo cáo về nhà.

    Học sinh

    HS nhận tình huống, ghi các ca kiểm thử dự kiến vào vở trước khi viết mã.

  2. Giáo viên

    Bước 2: Thực hiện nhiệm vụ

    GV đi quanh lớp, hỗ trợ HS chạy mã và đối chiếu kết quả; gợi ý: “Nếu danh sách nguồn bị đổi sau khi chạy thì em kiểm tra bằng cách nào?”

    Học sinh

    HS viết hàm, chạy ca mẫu và ba ca biên, ghi kết quả; thảo luận nhóm về tác động phụ và cách xử lí.

  3. Giáo viên

    Bước 3: Báo cáo, thảo luận

    GV mời 2 HS trình bày kết quả kiểm thử và nhận định về bài 9; hỏi: “Kiểm thử của em đã chứng minh được hàm đúng với mọi đầu vào chưa?”

    Học sinh

    HS trả lời dự kiến: “Chưa; mới kiểm thử một số ca, nên chỉ có thể nói hàm đúng với các ca đã thử; phương án làm đổi nguồn cần kiểm tra nguồn trước và sau hoặc dùng bản sao.”

  4. Giáo viên

    Bước 4: Kết luận, nhận định

    GV nhận xét và chốt: đánh giá chương trình cần kết hợp bằng chứng thực thi với lập luận; trong thực tế, cần kiểm tra cả độ đúng, tài nguyên và tác động phụ trước khi dùng.

    Học sinh

    HS hoàn thiện báo cáo ngắn gồm ca kiểm thử, kết quả và nhận định giới hạn.

Phiếu học tập

Phiếu học tập số 1

Hàm tim(a, x) trả về vị trí lần đầu của x trong danh sách a; trả về -1 nếu không có x.
Hãy điền vào bảng sau cho từng ca:

  • Ca 1: tim([4,4,7],4). Đầu ra mong đợi: ... Kết quả chạy: ... Đạt/Không đạt: ... Lớp lỗi ca này phát hiện: ...
  • Ca 2: tim([],1). Đầu ra mong đợi: ... Kết quả chạy: ... Đạt/Không đạt: ... Lớp lỗi ca này phát hiện: ...
  • Ca 3: tim([1,2,3],3). Đầu ra mong đợi: ... Kết quả chạy: ... Đạt/Không đạt: ... Lớp lỗi ca này phát hiện: ...
  • Ca 4: tim([1,2,3],5). Đầu ra mong đợi: ... Kết quả chạy: ... Đạt/Không đạt: ... Lớp lỗi ca này phát hiện: ...
    Câu hỏi:
  • Nếu hàm trả vị trí cuối cùng thay vì vị trí lần đầu, ca nào sẽ lộ lỗi? Kết quả sai là bao nhiêu?
  • Vì sao không nên chọn nhiều ca cùng dạng?

Phiếu học tập số 2

Trạm 1 (tài nguyên):

  • Đo thời gian chạy hàm tim trên dãy nhỏ và dãy lớn hơn nhiều lần, ghi kết quả.
  • Vì sao kết quả đo một lần chưa đủ để kết luận thuật toán tốt trên mọi máy?
    Trạm 2 (khả năng hiểu và miền áp dụng):
  • Hàm áp dụng cho loại dữ liệu nào?
  • Viết lập luận bất biến: khi duyệt đến chỉ số i, điều gì đúng với a[0] đến a[i-1]?
    Trạm 3 (tác động phụ):
  • Nêu tình huống thuật toán làm đổi dãy nguồn ngoài yêu cầu.
  • Nêu hai cách xử lí: kiểm tra nguồn trước và sau; dùng bản sao hoặc sửa thuật toán.
    Kết luận nhóm: Kiểm thử và đánh giá chương trình gồm những tiêu chí nào?

Hướng dẫn về nhà

  • Viết chương trình hoàn chỉnh hàm tim(a, x), chạy ca mẫu tim([4,4,7],4) và ba ca biên; ghi bảng mong đợi và kết quả thực tế.
  • Hoàn thành bài 9: nêu tác động phụ khi thuật toán làm đổi dãy nguồn, cách kiểm tra nguồn trước và sau, và cách dùng bản sao hoặc sửa thuật toán.
  • Tự đề xuất hai ca kiểm thử mới cho danh sách điểm thi của lớp và giải thích mỗi ca phát hiện lớp lỗi nào.
  • Luyện tập thêm các câu hỏi tương tác trên trang bài học NeoEdu: neoedu.vn/learn/11/informatics/bai-23-khmt-kiem-thu-va-danh-gia-chuong-trinh.

Giáo án do NeoEdu soạn với sự hỗ trợ của AI, dựa trên nội dung bài học trên Học liệu. Thầy cô nên đọc lại và điều chỉnh cho phù hợp với học sinh của mình; bản Word để sửa trực tiếp.