
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc
ĐƠN YÊU CẦU CÔNG NHẬN SÁNG KIẾN
TÊN SÁNG KIẾN
ỨNG DỤNG MỘT SỐ KĨ THUẬT KIỂM THỬ PHẦN MỀM TRONG
GIẢNG DẠY LẬP TRÌNH CHO HỌC SINH GIỎI MÔN TIN HỌC
TRƯỜNG THPT TRẦN HƯNG ĐẠO
Tác giả:
Lê Cao Duy – Giáo viên trường THPT Trần Hưng Đạo
Ninh Bình, tháng 4 năm 2022

MỤC LỤC
1.Tên sáng kiến, lĩnh vực áp dụng .......................................................................................... 3
2.Nội dung ............................................................................................................................. 3
3.Hiệu quả kinh tế xã hội dự kiến đạt được ............................................................................ 9
4.Điều kiện và khả năng áp dụng ........................................................................................... 9
PHỤ LỤC ............................................................................................................................. 11
4.1 Kỹ thuật specification-based (Kiểm thử hộp đen) .................................................. 13
...................................................................................................................................... 14
4.2 Kỹ thuật structure-based (Kiểm thử hộp trắng) ...................................................... 16
4.3 Kiểm thử hộp xám. ................................................................................................. 17
TÀI LIỆU THAM KHẢO .................................................................................................... 30
2

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập- Tự do – Hạnh phúc
ĐƠN YÊU CẦU CÔNG NHẬN SÁNG KIẾN
Kính gửi: Hội đồng sáng kiến Sở Giáo dục và Đào tạo Ninh Bình
Tôi ghi tên dưới đây:
STT Họ và tên
Ngày
tháng
năm
sinh
Nơi công tác
(hoặc nơi
thường trú)
Chức vụ
Trình độ
chuyên
môn
Tỉ lệ (%) đóng
góp vào việc tạo
ra sáng kiến
1Lê Cao Duy 1987 Trường THPT
Trần Hưng Đạo Giáo Viên
Thạc sĩ
Công Nghệ
Thông Tin
100%
1. Tên sáng kiến, lĩnh vực áp dụng
Là tác giả đề nghị xét công nhận sáng kiến:
“ỨNG DỤNG MỘT SỐ KĨ THUẬT KIỂM THỬ PHẦN MỀM TRONG
GIẢNG DẠY LẬP TRÌNH CHO HỌC SINH GIỎI MÔN TIN HỌC
TRƯỜNG THPT TRẦN HƯNG ĐẠO”
Lĩnh vực áp dụng sáng kiến: Lĩnh vực giáo dục – bộ môn tin học cấp THPT
2. Nội dung
Hiện nay, trong quá trình dạy học lập trình trong chương trình tin học.
Nhiệm vụ ra đề và chữa bài cho học sinh là một nhiệm vụ diễn ra thường
xuyên. Việc kiểm tra đánh giá, chữa bài học sinh, giúp kiểm tra phát hiện ra
các lỗi nếu có của chương trình khi làm bài là việc rất quan trọng giúp học
sinh hiểu ra các lỗi sai, từ đó có thể khắc phục, rút kinh nghiệm.
Khi giảng dạy các bài toán lập trình giáo viên ngoài giảng dạy về lý
thuyết thì phần giao bài tập cho học sinh thực hiện là quá trình không thể
thiếu để học sinh thực hành và vận dụng các kiến thức đã học để thực hiện các
bài toán được giao.
Khi giáo viên ra đề ngoài việc viết mã nguồn chương trình cho đề thì
việc tạo các bộ test là một việc quan trọng giúp giáo viên kiểm tra chương
3

trình, phát hiện ra các trường hợp mà chương trình học sinh có thể chưa xử lý,
không xử lý được hoặc có thể thực hiện sai. Việc tạo bộ test hiện nay đa số
dựa trên các kinh nghiệm của các thầy cô ra đề hoặc dựa trên các chương
trình tạo test tự động, các tài liệu nói về vấn đề tạo test cho các bài lập trình
rất ít hoặc có nói thì cũng chưa đề cập chi tiết đến cách tạo test sao cho hiệu
quả.
Việc chữa bài cho học sinh hiện nay giáo viên thường gặp 2 trường hợp
chính:
TH1: Bài làm biên dịch có lỗi cú pháp.
TH2: Bài làm không có lỗi cú pháp.
Đối với TH1 giáo viên sẽ dựa vào các thông báo lỗi để xử lý giúp cho
học sinh làm bài, Với TH2 khi đó giáo viên sẽ kiểm tra chương trình thường
bằng các test của đề bài có, hoặc dựa trên giải thuật của bài toán mà học sinh
làm để phát hiện ra các trường hợp có thể sinh lỗi.
Công việc chữa bài cho học sinh ngoài sử dụng các công cụ hỗ trợ của
chương trình soạn thảo lập trình để tìm các lỗi cơ bản như cú pháp thì việc
tìm các lỗi có thể mắc phải của học sinh như lỗi về cấu trúc dữ liệu hoặc giải
thuật, vv… đa số giáo viên nào làm nhiều và gặp nhiều lỗi thì dễ phát hiện và
có nhiều kinh nghiệm khắc phục, chữa lỗi.
a. Giải pháp cũ thường làm
- Chi tiết của giải pháp cũ
* Đối với trường hợp tạo test cho đề:
- Trường hợp này việc tạo các test cho bài làm, giáo viên thường sẽ dựa
trên kinh nghiệm của bản thân để tạo ra các test sao cho có khả năng phát hiện
lỗi là cao nhất. Do đó việc tạo test sao cho có hiệu quả là một vấn đề rất quan
trọng và bức thiết. Đối với giáo viên mới ra trường hoặc ít kinh nghiệm tạo
test thì việc tạo ra các test hiệu quả để phát hiện lỗi thường khó và có thể tạo
test nhưng không hiệu quả, không phát hiện lỗi.
- Việc tạo ra các test có thể không đánh giá được hết các trường hợp mà
bài toán có thể xảy ra. Số lượng test có thể nhiều nhưng không bao phủ được
4

toàn bộ bài toán (các test yếu). Người ra đề nếu không có trình độ cao và kinh
nghiệm thì thường sẽ cho ra các test có đầu vào giống hoặc tương tự test mẫu
mà không xử lý được các trường hợp đặc biệt mà bài toán có thể gặp.
* Đối với trường hợp chữa bài cho học sinh.
- Đối với các lỗi cú pháp thì thường được chương trình dịch thông báo
các lỗi và giáo viên sẽ dựa vào đó để tìm ra lỗi cụ thể để khắc phục.
- Đối với các lỗi khi chạy chương trình mới phát sinh thì thường khó
hơn, một số lỗi có thể gặp như sau:
Trường hợp khi học sinh lập trình mà bài làm của học sinh khi chạy
chương trình có kết quả lúc đúng với output đề bài lúc không đúng với output
đề bài, trong trường hợp này giáo viên thường thực hiện kiểm tra lại theo 2
cách:
C1: kiểm tra học sinh có hiểu đúng input và output
C2: kiểm tra giải thuật của học sinh có chính xác không, nếu giải
thuật đúng thì thực hiện kiểm tra cách cài đặt thuật toán bằng ngôn ngữ lập
trình để tìm lỗi.
Trường hợp học sinh viết chạy trên phần mềm này thì được phần mềm
khác thì không (viết trên Free pascal thì chạy mà Tubo pascal thì không),
trường hợp này giáo viên thường phải kiểm tra lại các hàm mà học sinh viết
trên Free pascal có được hỗ trợ trên Tubo pacal không, hoặc các thông số hệ
thống như giới hạn bộ nhớ ,vv..
Hoặc trường hợp cùng một giải thuật, ngôn ngữ lập trình này thì
chương trình chạy được ngôn ngữ khác thì không trường hợp này giáo viên
phải kiểm tra lại các khai báo, các kiểu dữ liệu,vv.. mà các ngôn ngữ lập trình
hỗ trợ.
Trường hợp khi thực hiện chương trình mà xuất hiện các dữ liệu không
mong muốn ở đầu ra khi đó giáo viên phải kiểm tra lại toàn bộ mã nguồn của
chương trình xem xuất hiện dữ liệu dư thừa ở giai đoạn nào của chương trình.
Đối với những trường hợp này hiện nay cũng thường phụ thuộc vào trình độ
và kinh nghiệm của giáo viên để phát hiện và xử lý lỗi.
5

