TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI<br />
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG<br />
<br />
MỤC LỤC<br />
<br />
BÀI TẬP LỚN<br />
Kỹ thuật phần mềm<br />
Đề tài:<br />
<br />
Tìm hiểu các kỹ thuật kiểm thử phần mềm<br />
ứng dụng trong lập trình Java.<br />
<br />
Nhóm sinh viên thực hiện: FSE20<br />
Trần Văn Bích<br />
Nguyễn Chí Công<br />
Nguyễn Khắc Hưng<br />
Bùi Huy Thắng<br />
<br />
20080215<br />
20080316<br />
20080070<br />
20082449<br />
<br />
Giảng viên hướng dẫn: Vũ Thị Hương Giang<br />
<br />
Hà Nội, 2011<br />
1<br />
<br />
Mục Lục<br />
Giới thiệu đề tài .................................................................................................................................. 3<br />
<br />
I.<br />
<br />
Kiểm thử phần mềm ........................................................................................................................ 4<br />
<br />
II.<br />
1.<br />
<br />
Kiểm thử phần mềm là gì? .............................................................................................................. 4<br />
<br />
2.<br />
<br />
Quá trình kiểm thử phần mềm ......................................................................................................... 4<br />
<br />
3.<br />
<br />
Các cấp độ kiểm thử phần mềm ...................................................................................................... 5<br />
<br />
4.<br />
<br />
Các nguyên tắc kiểm thử phần mềm ............................................................................................... 7<br />
Giới thiệu về JUnit .......................................................................................................................... 9<br />
<br />
III.<br />
1.<br />
<br />
Giới thiệu về JUnit Framework ....................................................................................................... 9<br />
<br />
2.<br />
<br />
Các đặc điểm của JUnit ................................................................................................................... 9<br />
<br />
3.<br />
<br />
Cấu trúc lớp của JUnit..................................................................................................................... 9<br />
<br />
4.<br />
<br />
Sử dụng JUnit ............................................................................................................................... 10<br />
Các kĩ thuật kiểm thử phần mềm ................................................................................................... 12<br />
<br />
IV.<br />
<br />
Kiểm thử hộp đen (Black Box Testing)......................................................................................... 12<br />
<br />
1.<br />
i.<br />
<br />
Định nghĩa................................................................................................................................. 12<br />
<br />
ii.<br />
<br />
Nguyên lý hoạt động ................................................................................................................. 12<br />
<br />
iii.<br />
<br />
Trường hợp ứng dụng ........................................................................................................... 13<br />
<br />
iv.<br />
<br />
Ưu điểm/ Nhược điểm ........................................................................................................... 23<br />
<br />
v.<br />
<br />
Demo......................................................................................................................................... 23<br />
Kiểm thử hộp trắng (White Box Testing). ..................................................................................... 25<br />
<br />
2.<br />
i.<br />
ii.<br />
<br />
Ưu điểm / Nhược điểm .......................................................................................................... 32<br />
<br />
v.<br />
<br />
VI.<br />
<br />
Các kĩ thuật kiểm thử ............................................................................................................ 27<br />
<br />
iv.<br />
<br />
V.<br />
<br />
Đặc điểm ................................................................................................................................... 26<br />
<br />
iii.<br />
<br />
3.<br />
<br />
Định nghĩa................................................................................................................................. 25<br />
<br />
Thiết kế trường hợp thử trên JUnit ............................................................................................ 33<br />
Kiểm thử hộp xám (Gray Box Testing). ........................................................................................ 35<br />
<br />
Tổng kết ............................................................................................................................................ 36<br />
Phụ lục .......................................................................................................................................... 37<br />
<br />
TÀI LIỆU THAM KHẢO ........................................................................................................................ 38<br />
<br />
2<br />
<br />
I.<br />
<br />
Giới thiệu đề tài<br />
<br />
“Lỗi phần mềm là chuyện hiển nhiên của cuộc sống. Chúng ta dù cố gắng đến mức nào thì<br />
thực tế là ngay cả những lập trình viên xuất sắc nhất cũng không có thể lúc nào cũng viết được<br />
những đoạn mã không có lỗi. Tính trung bình, ngay cả một lập trình viên loại tốt thì cũng có từ<br />
1 đến 3 lỗi trên 100 dòng lệnh. Người ta ước lượng rằng việc kiểm tra để tìm ra các lỗi này<br />
chiếm phân nửa khối lượng công việc phải làm để có được một phần mềm hoạt động được”.<br />
(Software Testing Techniques, Second Edition, by Boris Beizer, Van Nostrand Reinhold, 1990,<br />
ISBN 1850328803).<br />
Thật vậy, ngày nay càng ngày các chương trình (các phần mềm) càng trở lên phức tạp và đồ<br />
sộ. Việc tạo ra một sản phẩm có thể bán được trên thị trường đòi hỏi sự nổ lực của hàng chục,<br />
hàng trăm thậm chí hàng ngàn nhân viên. Số lượng dòng mã lên đến hàng triệu. Và để tạo ra<br />
một sản phẩm thì không phải chỉ do một tổ chức đứng ra làm từ đầu đến cuối, mà đòi hỏi sự<br />
liên kết, tích hợp của rất nhiều sản phẩm, thư viện lập trình, … của nhiều tổ chức khác nhau…<br />
Từ đó đòi hỏi việc kiểm nghiệm phần mềm càng ngày càng trở nên rất quan trọng và rất phức<br />
tạp.<br />
Song song với sự phát triển các công nghệ lập trình, các ngôn ngữ lập trình… thì các công<br />
nghệ và kỹ thuật kiểm nghiệm phần mềm ngày càng phát triển và mang tính khoa học. Bài tiểu<br />
luận này với mục đích là tập hợp, nghiên cứu, phân tích các kỹ thuật, các công nghệ kiểm<br />
nghiệm phần mềm đang được sử dụng và phát triển hiện nay.<br />
<br />
3<br />
<br />
II.<br />
<br />
Kiểm thử phần mềm<br />
1. Kiểm thử phần mềm là gì?<br />
<br />
Kiểm thử phần mềm có nhiều cách định nghĩa khác nhau. Tuy nhiên, chúng cùng bao<br />
trùm hai nội dung cơ bản là phát hiện lỗi và đánh giá chất lượng của phần mềm. Định nghĩa sau<br />
đây của Myers là đơn giản và có tính thực tế: “Kiểm thử là tiến trình thực thi chương trình với<br />
mục đích tìm thấy lỗi”. Theo định nghĩa của Myers, kiểm thử mà không phát hiện được lỗi được<br />
coi là không thành công.<br />
<br />
Hình 1: Kiểm thử phần mềm<br />
Mục đích của kiểm thử là phát hiện lỗi vì trong thực tế phần mềm hầu như không bao giờ<br />
không chứa lỗi.<br />
<br />
2. Quá trình kiểm thử phần mềm<br />
Quát trình kiểm thử phần mềm nhằm đạt được 2 mục tiêu:<br />
Chứng minh cho người phát triển và khách hàng thấy các yêu cầu của phần mềm.<br />
(Giải thích sự hoạt động chính xác – Paul Jorgensen)<br />
Phát hiện ra các lỗi và khiếm khuyết trong phần mềm: phần mềm thực hiện không<br />
đúng, không như mong đợi hoặc không làm theo như đặc tả.<br />
<br />
4<br />
<br />
Hình 2:<br />
<br />
Vòng đời của kiểm nghiệm<br />
<br />
3. Các cấp độ kiểm thử phần mềm<br />
<br />
5<br />
<br />