Bài giảng Kiểm thử phần mềm - Chương 2: Kiểm thử hộp đen cung cấp cho người học các kiến thức: Quy trình kiểm định, kiểm thử hộp đen, mô hình khái niệm kiểm thử hộp đen, phân vùng tương đương,... Mời các bạn cùng tham khảo nội dung chi tiết.
Trang 1Kiểm thử hộp đen
Kiểm thử phần mềm
Hanoi University of Science and Technology
Nguyen Thanh Hung Software Engineering Department
Trang 2Nội dung
1 Quy nh m nh.
Trang 3Quy trình kiểm định
Trang 4Lợi ích của việc kiểm định: Phát hiện lỗi sớm
Định lý: Việc kiểm định hỗ trợ cho việc cải thiện chất lượng bằng cách tìm kiếm các sai sót sớm trong việc phát triển vòng đời.
Trang 5Kiểm thử hộp đen
Là kiểm thử yêu cầu chức năng
Đối tượng: module, hệ thống con, toàn hệ
thống
Đặc trưng:
Trang 6Mô hình khái niệm kiểm thử hộp đen
Trang 7Mục đích kiểm thử hộp đen
c năng: đủ, ng n
Giao diện: o, ra: đu, phu p, ng, tiện i
u c, truy cập dư liệu: thông t, ng n
c thi: trôi y, p i, u i, c i
i u - t c: i n nh thông t
Trang 8Câu hỏi cho kiểm thử hộp đen
Hiệu c a c năng ( c năng, hiệu t, giao diện) t c n đâu?
p u o o cho c ca m thư t?
Sư y m a môđun i gia o o?
c biên a p dư liệu c cô lập chưa?
Chiu i i p điệu/ i ng dư liệu như thê
o?
Tô p dư liệu đặc biệt nh ng gi n t động hệ ng?
Trang 9Vấn đề và tiêu chuẩn lựa chọn
Các tiến trình của mỗi chức năng hệ thống đủ lớn
Các dữ liệu dày đặc, đa dạng
Không dự kiến tới mọi sự bất thường
Thu n ca m thư n c thê ( t, đơn
n).
t hiện sai trên p dư liệu, sô đặc biệt
(không i 1 sai thê n i 1 m thư
thê)
Trang 10Mục tiêu
hiệu quả nhất cho kiểm thử hộp đen:
Boundary Testing (Kiểm thử biên)
Equivalence Class Testing (Kiểm thử lớp tương đương)
Decision Table (Bảng quyết định)
Error Guess Testing (Kiểm thử đoán lỗi)
Trang 11Kiểm thử hộp đen - Black-box testing
ra.
Boundary Testing (Kiểm thử biên)
Equivalence Class Testing (Kiểm thử lớp tương đương)
Decision Table (Bảng quyết định)
Error Guess Testing (Kiểm thử đoán lỗi)
Trang 12Kiểm thử hộp đen (2)
Những khái niệm cần nhớ:
Không thể thử nghiệm tất cả các trường hợp nếu chỉ áp dụng duy nhất một kỹ thuật.
Trộn một số kỹ thuật với nhau sẽ thực tế hơn.
Khi sử dụng kỹ thuật kiểm thử hộp đen, cần nắm vững các đặc tả.
Kiểm thử hộp đen không chỉ áp dụng vào chức năng phần mềm mà còn cả thuộc tính phi chức năng, chẳng hạn như bảo mật, hiệu suất, khả năng sử dụng.
Trang 13Phân vùng tương đương
Phân vùng tương đương (Equivalence Partitioning): chia các miền đầu vào của chương trình thành các tập dữ liệu có cùng đặc điểm mà từ đó các trường hợp kiểm thử
có thể tiền hành kiểm thử.
Cố gắng tìm ra một trường hợp kiểm thử mà bao phủ số lỗi nhiều nhất để giảm tối thiểu số lượng các trường hợp kiểm thử
Trang 14Phân vùng tương đương
Trang 15Phân vùng tương đương
Valid equivalence (tương đương hợp lệ):
các lớp mà dữ liệu thuộc lớp này là hợp lệ.
Invalid equivalence: các lớp mà dữ liệu thuộc lớp này là không hợp lệ.
nghiệm (test case)
Xác định các lớp tương đương.
Xác định các trường hợp thử nghiệm (test case).
Trang 16Xác định các lớp tương đương(1)
Điều cần biết về phân lớp tương đương:
Không có phương pháp chuẩn để xác định một lớp tương đương.
Đặc tả thông số kỹ thuật khác nhau có thể sử dụng các phương pháp xác định khác nhau.
Chất lượng của các trường hợp thử nghiệm
có thể bị ảnh hưởng bởi các lớp tương đương khác nhau.
Các hướng dẫn sau đây có thể hữu ích khi xác định các lớp tương đương.
Trang 17Xác định các lớp tương đương(2)
Hướng dẫn:
của các giá trị, thì xác định được một lớp tương đương hợp lệ và một lớp tương đương không hợp lệ
các giá trị, thì xác định được một lớp tương đương hợp
lệ và một lớp tương đương không hợp lệ.
3 Nếu một điều kiện đầu vào xác định một tập hợp các giá trị đầu vào và có một lý do để tin rằng chương trình
xử lý mỗi một giá trị khác nhau, thì xác định được một lớp hợp lệ tương đương cho mỗi một giá trị và một lớp tương đương không hợp lệ.
Trang 18Xác định các lớp tương đương(3)
chẳng hạn như "ký tự đầu tiên của bộ nhận diện phải là
một chữ,“ thì xác định được một lớp tương đương hợp lệ
nhỏ hơn.
Trang 19Xác định các Test Cases
Các bước
1 Đặt một số duy nhất cho mỗi lớp tương ứng
2 Thiết kế một test case bao gồm nhiều lớp tương ứng hợp lệ đãđược phát hiện nhất có thể cho đến khi tất cả các lớp tương ứnghợp lệ được phủ bởi test case
3 Thiết kế một test case bao gồm một và chỉ một trong số các lớptương ứng không hợp lệ đã được phát hiện ra cho đến khi các testcase của bạn bao phủ hết các lớp không hợp lệ tương ứng
Chú ý: Để có thể thực hiện việc xây dựng các test case dễ dàng hơnchúng ta có thể sử dụng bảng sau để phát hiện
Điều kiện Lớp tương đương
hợp lệ Số thứ tự Lớp tương đương không
hợp lệ
Số thư tự
Trang 20Ví dụ (1)
Ví dụ
Một hàm miêu tả như sau:
nextDate(month,day,year): hàm đưa ra ngày
tiếp theo của ngày nhập vào
1≤month ≤12, 1≤day ≤31, 1900≤year ≤2060
Có 2 ví dụ về cách phân lớp cho hàm này
Hai cách phân lớp này có ảnh hưởng rất lớn
từ việc xác định các lớp tương đương.
Trang 21Ví dụ (2) - Cách phân lớp thứ nhất
của chúng:
Điều kiện Lớp tương đương
hợp lệ Số thứ tự Lớp tương đương không
hợp lệ
Số thư tự
Tháng [1, 12] 1 Tháng < 1 4
Tháng > 12 5 Ngày [1, 31] 2 Ngày < 1 6
Ngày > 31 7 Năm [1900, 2060] 3 Năm < 1900 8
Trang 22Ví dụ (3) - Cách phân lớp thứ nhất
1 Các lớp 1, 2, 3 có đầu vào (6,16,2006), kết quả mong
muốn là (6,17,2006).
2 Các lớp 4, 2, 3 có đầu vào (-2,16,2006), kết quả mong
muốn là “Input Error!”
3 Các lớp 5, 2, 3 có đầu vào (20,16,2006), kết quả mong
muốn là ”Input Error!”
4 Các lớp 1, 6, 3 có đầu vào (5,0,2006), kết quả mong
muốn là ”Input Error!”
5 Các lớp 1, 7, 3 có đầu vào (5,40,2006), kết quả mong
muốn là ”Input Error!”
6 Các lớp 1, 2, 8 có đầu vào (5,10,1812), kết quả mong
Trang 23Ví dụ (4) - Cách phân lớp thứ nhất
Độ phức tạp của cách phân lớp này như thế nào?
Năm nhuận liệu có được tính đến?
Các trường hợp đã bao phủ trường hợp ngày 31 tháng 12?
Cuối cùng thì cách phân lớp này đã hợp lý chưa?
Trang 24Ví dụ (5) - Cách phân lớp thứ hai
Điều kiện Lớp tương
đương hợp lệ Số thứ tự Lớp tương đương không
hợp lệ
Số thư tự
Tháng Các tháng 31
ngày trừ tháng 12
1 Tháng <1 11
Các tháng 30 ngày 2 Tháng >12 12Tháng 2 3
Tháng 12 4 Ngày [1,28] 5 Ngày < 1 13
29 6 Ngày > 31 14
Trang 25Ví dụ (6) - Cách phân lớp thứ hai
1 Các lớp 1,5,9 có đầu vào (7,16,2006), kết quả mong muốn là
Trang 26Ví dụ (7) - Cách phân lớp thứ hai
8 Các lớp 1,14,9 có đầu vào (8,2000,2004), kết quả
mong muốn là ”Input Error!”
9 Các lớp 1,5,15 có đầu vào (3,19,1830), kết quả mong muốn là ”Input Error!”
10 Các lớp 1,5,16 có đầu vào (3.19.3000), kết quả
mong muốn là ”Input Error!”
Trang 27Ví dụ (8) - Cách phân lớp thứ hai
Cách phân lớp 1 và 2 cách nào tốt hơn?
Cách này đã thực sự hoàn hảo chưa?
Phân vùng tương đương có là thuật toán thích hợp cho bài toàn tìm ngày tiếp theo không?
Trang 28Boundary Testing (Kiểm thử biên)
Với 1 phạm vi (a,b), các giá trị a, b, 1 số nhỏ hơn a, 1 số nhỏ hơn
b, một số lớn hơn a, một số lớn hơn b tất cả đều phải được kiểmtra VD: Nếu a,b là số nguyên, bạn phải test a,b,a-1,b-1,a+1,b+1
Nếu có một số giá trị, thì các giá trị max, min, trước và sau min, max phải được kiểm tra
Nếu nội bộ các cấu trúc dữ liệu chương trình qui định các biên, hãythiết kế 1 test case để kiểm tra cấu trúc dữ liệu tại biên của nó
Các hướng dẫn có thể được áp dụng với các điều kiện đầu ra
Trang 29Boundary Testing (Kiểm thử biên)
Trong quá trình kiểm thử biên, chú ý đên các kiểu sau:
Trang 30Boundary Testing (Kiểm thử biên)
Bên cạnh các nguyên tắc, cần phải kiểm tra các mục dưới đây:
Ngắn nhất/Dài nhất, Thậm chí Ngắn hơn/Dài hơn
Chậm nhất/Nhanh nhất, Thậm chí Chậm hơn/Nhanh hơn
Sớm nhất/Muộn nhất, Thậm chí Sớm hơn/Muộn hơn
Lớn nhất/Nhỏ nhất, Lớn nhất+1/Nhỏ nhất-1
Cao nhất/Thấp nhất, Cao nhất+1/Thấp nhất-1
Tiếp theo/Xa nhất từ
ƒ Biên con (Sub-boundary)
Biên con là những biên không được định nghĩa trong đặc tả, mà
ở bên trong phần mềm
Những biên này cũng cần được test như các biên thông thường
Trang 31Ví dụ(1)
Trang 32Ví dụ (2)
Chỉ xem xét đến 1 biến thể của biên tại một thời điểm, và những biên khác sẽ có giá trị bình thường Ví dụ, khi kiểm thử biên tháng, hãy để ngày và năm giá trị bình thường.
Tập kiểm tra là chưa đầy đủ Hãy nhớ rằng kiểm thử biên là một phương pháp kiểm thử
bổ sung Nó nên được áp dụng cùng với các phương pháp khác.
Trang 33Bảng quyết định
Định nghĩa
Bao gồm 4 vùng gọi là stub điều kiện (condition stub), entry điều
1 Stub điều kiện là một danh sách tên gọi của các điều kiện
2 Stub hành động nêu tên các hành động sẽ thường xuyên có hoặc
được khởi tạo nếu thỏa mãn các điều kiện
3 Entry điều kiện là sự kết hợp của các điều kiện.
4 Entry hành động là những hành động diễn ra dưới sự kết hợp của
các điều kiện
5 Mỗi cột trong bảng là một luật mà quy định các điều kiện theo đó
những hành động có tên trong stub hành động sẽ diễn ra.
Mối quan hệ với trường hợp kiểm thử (test case)
Một luật là một test case, có nghĩa là, các giá trị trong entry điều kiện
là đầu vào test và các hành động phù hợp là kết quả được kì vọng
Trang 34Ví dụ Bảng Quyết định
Đây là bảng quyết định mô tả các kịch bản khi đọc
một cuốn sách
Trang 35Mục không áp dụng được(1)
Để giảm số trưởng hợp thử nghiệm, chúng ta có thể kết hợp các quy tắc có kết quả hành động tương tự
Trang 36Mục không áp dụng được(2)
“-” biểu diễn mục không cần xem xét
Số lượng các quy tắc được giảm xuống còn 4 và các trường hợp thử nghiệm giảm cho phù hợp
Trang 37Bảng Quyết định
Các loại của bảng quyết định
Bảng quyết định đầu vào giới hạn: Giá trị của mỗi điều kiện là 2 thành phần, đó là, Y/N, T/F, 1/0, v.v
Bảng quyết định đầu vào mở rộng: Mỗi điều kiện có nhiều giá trị
Cách để thiết kế các trường hợp thử nghiệm
Bước:
1 TÌm các điều kiện và các hành động bằng cách phân tích đặc tả
2 Làm đầy các điều kiện và các hành động trong cuống điều kiện và cuống hành động
3 Làm đầy các tổ hợp của điều kiện vào dựa trên logic
4 Làm đầy hành động vào dựa trên tổ hợp các điều kiện và đặc tả
Trang 38Bảng Quyết định Đầu vào Giới hạn(1)
Ví dụ
Một chức năng được mô tả như sau: nhập 3 số nguyên biểudiễn độ dài các cạnh của 1 tam giác và đầu ra 1 thông điệp làtrạng thái của tam giác là đều hay không đều
a,b,c là đầu vào số nguyên và bảng quyết định là:
Trang 39Bảng Quyết định Đầu vào Giới hạn(2)
Các trường hợp thử nghiệm:
Quy tắc 1: Đầu vào = (60,16,26), Kết quả mong đợi = Không phải 1 tam giác
Quy tắc 2: Đầu vào = (50,50,0), Kết quả mong đợi = Không phải 1 tam giác
Quy tắc 3: Đầu vào = (0,0,0), Kết quả mong đợi = Không phải 1 tam giác
Quy tắc 4: Đầu vào = (60, 60, 60), Kết quả mong đợi = Đều
Quy tắc 5: Tổ hợp không tồn tại trong thực tế
Quy tắc 6: Tổ hợp không tồn tại trong thực tế
Quy tắc 7: Đầu vào = (60, 60, 26), Kết quả mong đợi = Cân
Quy tắc 8: Tổ hợp không tồn tại trong thực tế
Quy tắc 9: Đầu vào = (60, 26, 60), Kết quả mong đợi = Cân
Quy tắc 10: Đầu vào = (26, 60, 60), Kết quả mong đợi = Cân
Quy tắc 11: Đầu vào = (30, 40, 50), Kết quả mong đợi = Không cân
Các trường hợp thử nghiệm:
Trang 40Bảng Quyết định Đầu vào Mở rộng(1)
Ví dụ:
Nếu bạn chọn 1 bảng quyết định đầu vào giới hạn, sẽ có 256 quy tắc.
1 Giá trị của tháng có thể là 1 trong những cái sau:
Trang 41Bảng Quyết định Đầu vào Mở rộng(2)
Trang 42Bảng Quyết định Đầu vào Mở rộng (3)
Các trường hợp thử nghiệm
Quy tắc 1: Đầu vào = (7,16,2001) Kết quả mong đợi = (7,17,2001)
Quy tắc 2: Đầu vào = (7,31,2001) Kết quả mong đợi = (8,1,2001)
Quy tắc 3: Đầu vào = (4,25,2000) Kết quả mong đợi = (4,26,2000)
Quy tắc 4: Đầu vào = (9,30,1999) Kết quả mong đợi = (10,1,1999)
Quy tắc 5: Đầu vào = (11,31,2000) Kết quả mong đợi = “Input Error!”
Quy tắc 6: Đầu vào = (2,15,2004) Kết quả mong đợi = (2,16,2004)
Quy tắc 7: Đầu vào = (2,29,2004) Kết quả mong đợi = (3,1,2004)
Quy tắc 8: Đầu vào = (2,31,2004) Kết quả mong đợi = “Input Error!”
Quy tắc 9: Đầu vào = (2,16,2005) Kết quả mong đợi = (2,17,2005)
Quy tắc 10: Đầu vào = (2,28,2005) Kết quả mong đợi = (3,1,2005)
Quy tắc 11: Đầu vào = (2,29,2005) Kết quả mong đợi = “Input Error!”
Quy tắc 13: Đầu vào = (12,31,2005) Kết quả mong đợi = (1,1,2006)
Trang 43Bảng Quyết định
Nên sử dụng bảng quyết định khi kiểm tra logic.
Để giảm bớt số trường hợp kiểm thử, có thể sử dụng các bảng quyết định mở rộng đầu vào.
Bảng quyết định không phải là một kỹ thuật mà chỉ có thể sử dụng để thiết kế các trường hợp thử nghiệm.
Trang 44Dự đoán lỗi (Error Guessing)
nghiệm và trực giác của một kiểm định viên.
Hầu như là một tiến trình dựa trên trực giác và không được chuẩn bị trước.
huống dễ gây ra lỗi
Trang 45• Tuổi của người được bảo hiểm: integer[16,100]
• Số điểm hiện tại trong giấy phép lái xe: Integer[0,12]
Trang 46Đặc tả(2)
Tiến trình
2 Tính chiết khấu lái xe an toàn Dựa trên điểm hiện tại trong
giấy phép lái xe, tính chiết khấu lái xe an toàn theo bảng 1.Nếu điểm hiện tại trong giấy phép lái xe ít hơn ngưỡng tươngứng, lấy giá trị chiết khấu và chuyển sang bước 3 Nếu điểmhiện tại trong giấy phép lái xe là lớn hơn hoặc bằng ngưỡng,nhưng nhỏ hơn 12, thiết lập giá trị chiết khấu về 0 và chuyểnsang bước 3 Nếu điểm bằng hoặc hơn 12, tiến trình sẽ kếtthúc bằng cách hiển thị các thông tin "tổng phí bảo hiểm củabạn là $ 0"
3 Phí bảo hiểm = Tỷ lệ bảo hiểm cơ bản * giá trị tuyệt đối tuổi –
chiết khấu bảo hiểm
4 Tỷ lệ bảo hiểm cơ bản = 500
Trang 47Trả lời
Các bước
kiểm thử hộp đen là chưa đủ:
1 Thực hiện phân vùng tương đương để chia
nhỏ vấn đề.
trước đó.
Trang 56Tổng kết
Kỹ thuật kiểm thử hộp đen có thể kiếm tra chức năng và phi chức năng của phần mềm dựa trên các đặc tả.
Kỹ thuật kiểm thử hộp đen phổ biến bao gồm kiểm thử biên, phân vùng tương đương, bảng quyết định và đoán lỗi.
Để có được những tập kiểm thử tốt, việc áp dụng chỉ một kỹ thuật là chưa đủ.