1
Ngày 28/06/1962, tàu Mariner I
bay đến sao Kim nhưng đã bị
phá hủy 293 giây sau khi phóng
do bay chệch hướng so với dự
kiến ban đầu. Những cuộc điều
tra sau đó đã xác định nguyên
nhân là phần mềm tính toán
đường đi của tên lửa bị lỗi.
Nguyên nhân sâu xa: việc xác minh/thẩm định
phần mềm tính toán đường đi của tên lửa chưa
được chú trọng đúng mức
2
XÁC MINH/THẨM ĐỊNH PHẦN MỀM
1. Giới thiệu chung
2. Kiểm thử phần mềm
3. Các kỹ thuật kiểm thử
Kiểm thử hộp đen
3
1. GIỚI THIỆU
Xác minh/thẩm định:
Xác minh (verification):
•
kiểm tra xem sản phẩm có đúng đặc tả không
chú trọng phát hiện lỗi lập trình
Thẩm định (validation):
•
kiểm tra xem sản phẩm có đáp ứng nhu cầu người
dùng không
•
hoạt động hiệu quả không
chú trọng phát hiện lỗi phân tích, lỗi thiết kế
4
1. GIỚI THIỆU
Xác minh/thẩm định là sự kiểm tra công việc
phát triển phần mềm
công việc xuyên suốt quá trình phát triển
Mục đích:
•
phát hiện và sửa lỗi phần mềm
•
đánh giá tính dùng được của phần mềm
đảm bảo chất lượng phần mềm
5
1. GIỚI THIỆU
Xác minh /thẩm định tĩnh:
kiểm tra không thực hiện chương trình
•
xét duyệt yêu cầu, thiết kế, mã nguồn
tiến hành ở mọi công đoạn phát triển
có thể phát hiện được hầu hết các lỗi lập trình (lý
thuyết)
không đánh giá tính hiệu quả của sản phẩm
Xác minh/thẩm định động:
kiểm tra thông qua thực hiện chương trình
tiến hành sau khi có mã nguồn
kỹ thuật kiểm tra phần mềm chính hiện nay
Kết hợp cả 2 kỹ thuật
6
2. KIỂM THỬ PHẦN MỀM
Kiểm thử là gì ?
“Kiểm thử là tiến trình thực thi chương trình
với mục đích tìm thấy lỗi” (Myer)
Phân biệt kiểm thử với gỡ rối (debug) ?
7
2. KIỂM THỬ PHẦN MỀM
Theo nghiên cứu của Boris Beizer và Van
Nostrand Reinhold:
không có lập trình viên nào có thể lập trình
không có lỗi
trung bình một lập trình viên loại tốt có từ 1
đến 3 lỗi/ 100 dòng lệnh
tìm ra các lỗi chiếm 50% công việc phải làm để
có được một phần mềm hoạt động được
8
2. KIỂM THỬ PHẦN MỀM
Test case: dữ liệu kiểm tra
Mỗi testcase thường bao gồm:
dữ liệu đầu vào (input)
điều kiện
dữ liệu đầu ra kỳ vọng (expected output)
{input; điều kiện; expected output}
Thông dụng: xây dựng theo điều kiện
9
2. KIỂM THỬ PHẦN MỀM
Ví dụ: hàm tính trị tuyệt đối của số nguyên
Test case 1: {Input: a=5; Expected output: 5}
Test case 2: {Input: -5; Expected output: 5}
10
2. KIỂM THỬ PHẦN MỀM
Thí dụ:
chúng ta cần kiểm thử một thành phần phần
mềm “quản lý nguồn nhân lực” với đặc tả chức
năng như sau: mỗi lần nhận một hồ sơ xin việc,
thành phần phần mềm sẽ ra quyết định dựa vào
tuổi ứng viên theo bảng sau:
a
11
2. KIỂM THỬ PHẦN MỀM
1. Test case 1:
{Input : 2 tuổi, Output : không thuê}
2. Test case 2:
{Input : 17 tuổi, Output : thuê bán thời gian}
3. Test case 3:
{Input : 35 tuổi, Output : thuê toàn thời gian}
4. Test case 4:
{Input : 90 tuổi, Output : không thuê}
Ngày 25/06/2012
12
2. KIỂM THỬ PHẦN MỀM
Các bước kiểm thử:
Thiết kế các test case
Tạo dữ liệu kiểm thử
Thực thi chương trình trên dữ liệu thử
Quan sát kết quả kiểm thử
•
kết quả nhận được khác với kết quả mong đợi
kiểm thử thành công
13
2.1 KIỂM THỬ HỘP ĐEN
Kiểm thử hộp đen (kiểm thử chức năng):
dựa trên đặc tả chức năng
phát hiện các sai sót về chức năng
không quan tâm đến cách cài đặt
14
2.1 KIỂM THỬ HỘP ĐEN
Các test case kiểm thử của Kiểm thử hộp đen
bao gồm:
các trường hợp bình thường và không bình thường (dữ
liệu không hợp lệ ) của module
chiến lược chung: phân hoạch (dữ liệu) tương đương
•
chia miền dữ liệu vào ra thành các vùng,
•
mỗi vùng chứa các dữ liệu có cùng hành vi
•
mỗi vùng dữ liệu chỉ cần xây dựng 1 test case
mỗi vùng biên có thể sử dụng 1 test case hoặc 3 test
case (1 cho giá trị biên, 1 ngay dưới biên và 1 trên
biên)
15
2.1 KIỂM THỬ HỘP ĐEN
Test case ở biên:
16
2.1 KIỂM THỬ HỘP ĐEN
Test case ở biên:
{-1,0,1},
{14,15,16},
{15,16,17},
{16,17,18},
{17,18,19},
{53,54,55},
{54,55,56},
{98,99,100}
17
2.1 KIỂM THỬ HỘP ĐEN
Và đoạn code hiện thực sau :
if (applicantAge < 15) kq ="NO";
if (16 < applicantAge && applicantAge <17) kq ="PART";
if (18 < applicantAge && applicantAge <54) kq ="FULL";
if (55 < applicantAge && applicantAge <99) kq ="NO";
18
2.1 KIỂM THỬ HỘP ĐEN
Chúng ta hãy kiểm thử 1 website với ₫ặc tả yêu cầu như sau :
1. Phải chạy tốt trên 8 trình duyệt khác nhau : Internet Explorer 5.0, 5.5,
and 6.0, Netscape 6.0, 6.1, and 7.0, Mozilla 1.1, and Opera 7.
Phải chạy tốt ở 3 chế độ plug-ins : RealPlayer, MediaPlayer, none.
Phải chạy tốt trên 6 HĐH máy client : Windows 95, 98, ME, NT, 2000,
and XP.
4. Phải chạy tốt trên 3 web server khác nhau : IIS, Apache, and
WebLogic.
5. Phải chạy tốt trên 3 HĐH máy server : Windows NT, 2000, and Linux.
19
2.1 KIỂM THỬ HỘP ĐEN
Ưu điểm:
Phát hiện sự thiếu sót chức năng
Phát hiện khiếm khuyết
Sai sót về giao diện giữa các mô đun
Sự không hiệu quả của chương trình
Lỗi khởi tạo, lỗi kết thúc
Nhược điểm:
không thể kiểm thử được các trường hợp không được khai báo trong
đặc tả,
không đảm bảo thử hết được các khối mã nguồn của mô đun.
không phát hiện được các đoạn mã yếu (có khả năng sinh lỗi với một
trạng thái đặc biệt nào đó của hệ thống