Bài giảng Kiểm thử và đảm bảo chất lượng phần mềm: Chương 4 cung cấp cho người học những kiến thức như: Phân lớp tương đương; Phân tích giá trị biên; Đồ thị nhân quả - bảng quyết định; Đoán lỗi; Kiểm thử dựa trên mô hình. Mời các bạn cùng tham khảo!
Trang 1KIỂM THỬ CHỨC NĂNG
1 Các nguyên lý 2 Vòng đời
4 Kiểm thử chức năng
3 Kỹ thuật kiểm thử
5 Kiểm thử cấu trúc 6 Quản lý chất lượng
KIỂM THỬ VÀ ĐẢM BẢO CHẤT LƯỢNG PHẦN MỀM Chương 4
Trang 2Nội dung
Phân lớp tương đương
Phân tích giá trị biên
Đồ thị nhân quả - bảng quyết định
Đoán lỗi Kiểm thử dựa trên mô hình
Trang 3Các test case kích hoạt thành phần phần mềm (TPPM) thực hiện cùng một hành vi nhóm vào 1 nhóm (họ) gọi là 1 lớp tương đương
Mỗi nhóm chỉ định 1 test case đại diện và dùng test case để kiểm thử thành phần phần mềm
Nếu test case trong lớp tương đương gây lỗi thành phần phần mềm thì các test case khác cũng sẽ gây ra lỗi như vậy và ngược lại
Kỹ thuật phân lớp tương đương
Trang 4Tuổi ƯV Kết quả
>=0 &&<16 Không thuê
>=16&&<18 Thuê dạng bán thời
gian
>=18 && <55 Thuê toàn thời gian
>=55 && <=99 Không thuê
4
Ví dụ: TPPM “quản lý nguồn nhân lực” với đặc tả chức năng: mỗi
lần nhận hồ sơ xin việc, TPPM sẽ ra quyết định
• Phân tích đặc tả chức năng ta sẽ
thấy có 4 lớp tương đương, mỗi lớp
chứa các test case ứng với chế độ
xử lý của TPPM: không thuê vì quá
trẻ, thuê bán thời gian, thuê toàn
thời gian, không thuê vì quá già
• Định nghĩa test case đại diện cho
mỗi lớp:
1 Testcase 1 : {Input : 2 tuổi, Output : không thuê}
2 Testcase 2 : {Input : 17 tuổi, Output : thuê bán thời gian}
3 Testcase 3 : {Input : 35 tuổi, Output : thuê toàn thời gian}
4 Testcase 4 : {Input : 90 tuổi, Output : không thuê}
Trang 5Thay vì vét cạn 100 trường hợp giảm còn 4 trường hợp
Ta hy vọng chất lượng kiểm thử không bị giảm sút vì bình
thường code là:
if (applicantAge >= 0 && applicantAge <16) qd ="NO";
if (applicantAge >= 16 && applicantAge <18) qd ="PART";
if (applicantAge >= 18 && applicantAge <55) qd ="FULL";
if (applicantAge >=55 && applicantAge <=99) qd ="NO";
Tuy nhiên cá biệt nếu code tồi:
if (applicantAge == 0) qd ="NO"; …
if (applicantAge == 16) qd ="PART"; …
Ví dụ quản lý nguồn nhân lực…
Trang 6N u l p tế ớ ương ₫ương ₫ược xác định b i các d li u nh p là sở ữ ệ ậ ố th c ựliên t c, thì ta ch n 1 testcase i di n có giá tr nh p h p lụ ọ ₫ạ ệ ị ậ ợ ệ n m ằtrong kho ng liên t c các giá tr h p l , và n u mu n, 2ả ụ ị ợ ệ ế ố testcase
miêu t giá tr không h p l n m phía dả ị ợ ệ ằ ưới và phía trên kho ng ả gia ́
tr h p l (s testcase cho m i l p tị ợ ệ ố ỗ ớ ương ₫ương là t 1 t iừ ớ 3)
N u l p tế ớ ương ₫ương ₫ược xác nh b i các d li u nh p là s₫ị ở ữ ệ ậ ố
nguyên liên t c, trong trụ ường h p này ta ch n 1 testcase i di nợ ọ ₫ạ ệ có giá tr nh p h p l n m trong kho ng liên t c các giá tr h p l ,ị ậ ợ ệ ằ ả ụ ị ợ ệ và
n u mu n, 2 testcase miêu t giá tr không h p l n m phíaế ố ả ị ợ ệ ằ dưới và phía trên kho ng tr h p l (s testcase cho m i l p tả ị ợ ệ ố ỗ ớ ương ₫ương là
t 1 t i 3).ừ ớ
6
Lựa chọn test case cho lớp đại diện
tương đương?
Trang 7Nếu lớp tương ₫ương ₫ược xác ₫ịnh bởi các dữ liệu dạng liệt kê rời rạc và không có mối quan hệ lẫn nhau gồm 1 trị hợp lệ và nhiều trị không hợp lệ Trong trường hợp này ta chọn 1 testcase có giá trị nhập hợp lệ và nếu muốn,
2 testcase miêu tả 2 giá trị không hợp lệ nào ₫ó, nhưng cho dù chọn 2
testcase nào cũng không ₫ại diện tốt cho các trường hợp không hợp lệ còn lại (số testcase cho mỗi lớp tương ₫ương là từ 1 tới 3).
Nếu lớp tương ₫ương ₫ược xác ₫ịnh bởi các dữ liệu dạng liệt kê rời rạc và không có mối quan hệ lẫn nhau gồm n trị hợp lệ và m trị không hợp lệ Trong trường hợp này ta chọn 1 testcase có giá trị nhập hợp lệ nào ₫ó và nếu
muốn, 2 testcase miêu tả 2 giá trị không hợp lệ nào ₫ó, nhưng cho dù chọn các testcase nào cũng -10 1 2 3 4 5 6 7 8 không ₫ại diện tốt cho các trường hợp hợp lệ và không hợp lệ còn lại (số testcase cho mỗi lớp tương ₫ương là
từ 1 tới 3).
Lựa chọn test case cho lớp đại diện
tương đương?
Trang 8Bài tập
Trang 9Ưu nhược điểm
Ưu điểm: vì mỗi vùng của lớp tương đương ta chỉ cần kiểm thử trên các phần tử đại diện nên
số lượng test case giảm đi khá nhiều, thời
gian kiểm thử cũng giảm đáng kể Có thể áp dụng phân vùng tương đương cho cả miền
đầu vào và đầu ra nên khả năng dự đoán lỗi
tốt
Nhược điểm: có thể thiếu lỗi ở biên vì chỉ
chọn 1 giá trị đại diện ở khoảng giữa của miền
Trang 10Nội dung
Phân lớp tương đương
Phân tích giá trị biên
Đồ thị nhân quả - bảng quyết định
Đoán lỗi Kiểm thử dựa trên mô hình
Trang 11Nguyên lý: Các chương trình có thể coi là một hàm (toán học):
- Các đầu vào của chương trình là miền xác định của hàm
- Các đầu ra là miền giá trị của hàm
Mục tiêu: sử dụng kiến thức về hàm để xác định các
ca kiểm thử Trước kia chủ yếu tập trung vào miền
xác định, nhưng nay đã dựa trên cả miền giá trị của hàm để xác định ca kiểm thử
Nội dung: tập trung phân tích các giá trị biên của
miền dữ liệu để xây dựng dữ liệu kiểm thử
BVA là kỹ thuật kiểm thử hàm phổ biến nhất
Phân tích giá trị biên (Boundary value analysis – BVA)
Trang 12Nguyên tắc chung: kiểm thử các dữ liệu vào gồm:
- Giá trị nhỏ nhất
- Giá trị gần kề với giá trị nhỏ nhất
- Giá trị lớn nhất
- Giá trị gần kề với giá trị lớn nhất
- Giá trị bình thường
Nếu dữ liệu vào thuộc một khoảng, chọn
- 2 giá trị biên
- 4 giá trị = 2 giá trị biên±sai số nhỏ nhất
Nếu giá trị thuộc vào danh sách các giá trị, chọn: Phần tử thứ nhất,
phần tử thứ 2, phần tử kế cuối và phần tử cuối
Nếu dữ liệu vào là điều kiện ràng buộc số giá trị, chọn: số giá trị tối
thiểu, số giá trị tối đa và một số giá trị không hợp lệ
Tự vận dụng khả năng và thực tế để chọn các giá trị cần kiểm thử
12
Nguyên tắc chọn dữ liệu thử
Trang 13VD Miền giá trị
Trang 14BVA tập trung vào biên của miền xác định để xây dựng các ca kiểm thử Lý do là lỗi thường xuất hiện ở gần các giá trị biên này
Các ngôn ngữ không có kiểm tra kiểu mạnh càng cần kiểm thử các giá trị biên (javascript, php, Visual Basic)
14
Phân tích giá trị biên…
Trang 15Giả sử chương trình P nhận 2 biến đầu vào là x1 và x2 thỏa mãn a≤x1≤b và c ≤x2≤d
P(x1,x2) thỏa mãn a≤x1≤b và c ≤x2≤d Chương trình nhận n đầu vào sẽ có không gian n chiều
Đầu vào của chương trình hợp lệ P
Trang 17BVA dựa trên nguyên lý giả định khiếm khuyết đơn:
“Hỏng hóc xẩy ra hiếm khi do hai (hoặc hơn) khiếm khuyết cùng
xẩy ra”
Do đó các ca kiểm thử theo phương pháp này được tạo bằng
việc lấy các giá trị bình thường của các chiều/ biến rồi lần thay
đổi mỗi chiều bằng các giá trị cực trị như trên
Các ca kiểm thử theo phân tích giá trị biên
Giả thuyết khiếm khuyết đơn
T = { <x1nom, x2min>, <x1nom,
x2min+>, <x1nom, x2nom>, <x1nom,
x2max->,
<x1nom, x2max+>, <x1min, x2nom>,
< , x >, <x , x >,
Trang 18Case# A B C Đầu ra mong đợi
VD các ca kiểm thử cho độ dài 3 cạnh hợp lệ tam giác
Trang 19Có hai cách tổng quát hóa BVA
biến
• Phụ thuộc vào ngôn ngữ lập trình
• Tính rời rạc của biến
• Tính rời rạc không bị chặn (không có cận trên và
cận dưới rõ ràng)
• Biến logic
Tổng quát hóa BVA
Trang 20BVA hiệu quả với các chương trình có các
đầu vào độc lập với nhau và biểu diễn đại
lượng vật lý bị chặn
BVA lấy các ca kiểm thử mà không tính đến chức năng của hàm, hay ý nghĩa của các biến
20
Hạn chế của BVA
Trang 21Kiểm thử biên mạnh
(robustness testing) là một
mở rộng đơn giản của BVA
Ngoài năm giá trị biên bổ
sung thêm 2 giá trị ngoài biên
- Giá trị ngay trên giá trị cực đại
max+
- Và giá trị ngay dưới giá trị cực
tiểu
min-Mục đích chính là xem
chương trình có kiểm tra giá
trị hợp lệ của đầu vào không
Kiểm thử biên mạnh
Trang 22Điều gì xẩy ra khi nhiều hơn 1 biến nhận các giá trị (gần) cực trị Khi các biến có tương tác với nhau thì cần kiểm tra các bộ giá trị kết hợp các cực trị này
22
Kiểm thử biên tổ hợp
Trang 23Kiểm thử giá trị đặc biệt là phương pháp được thực hiện nhiều nhất trong thực tế, nó cũng trực quan nhất và không có dạng cố định nhất
Sử dụng kỹ nghệ và kiến thức miền ứng dụng để
phán đoán và đưa ra ca kiểm thử
Mặc dù mang tính chủ quan cao, đây vẫn là phương pháp hiệu quả để phát hiện khiếm khuyết của chương trình
VD dựa vào hiểu biết về số ngày của các tháng trong
1 năm để kiểm thử ngày 28/2 và 29/2 ở cả năm nhuận và năm thường
Kiểm thử giá trị đặc biệt
Trang 24Trừ kiểm thử giá trị đặc biệt, kiểm thử giá trị biên là phương pháp thô sơ nhất
Cân nhắc các tình huống để chọn phương pháp phù hợp
- Các biến có độc lập hay phụ thuộc nhau không
- Có cần giá trị mạnh hay giá trị thường
- Giả định lỗi đơn hay đa lỗi
Có thể áp dụng BVA cho miền giá trị (đầu ra), hay các biến khác trong chương trình như biến đếm, vòng
lặp, biến trung gian, chỉ số mảng, con trỏ,…
24
Hướng dẫn áp dụng BVA
Trang 25Dữ liệu thử
VD độ dài 3 cạnh tam giác
Trang 261. Cho modun chương trình: Giải phương trình bậc
nhất ax+b=0; với a,b là các số nguyên nhập vào từ bàn phím Viết testcase kiểm thử chương trình.
có dạng ax2+bx+c=0; với a,b,c là các số thực nhập vào từ bàn phím Viết testcase kiểm thử modun chương trình
26
Bài tập: kiểm thử giá trị biên
Trang 27Ưu nhược điểm
Ưu điểm: Lỗi thường tập trung ở biên miền
giá trị đầu vào vì vậy phương pháp này
thường tìm ra nhiều lỗi với số ít test case
Nhược điểm: phương pháp này chỉ hiệu quả trong trường hợp đầu vào độc lập với nhau và mỗi đối số đều có một miền giá trị hữu hạn
Trang 28Ví dụ kết hợp phương pháp phân tích giá
trị biên và phân vùng tương đương
£500 to £9000
1 to 30 years
Minimum £10
2-64 chars
Trang 29Các biên hợp lệ Các biên không
hợp lệ
Customer
name
2 to 64 chars valid chars
space
Trang 30Các phân vùng không hợp lệ
Các biên hợp lệ Các biên không
Trang 31Các phân vùng không hợp lệ
Các biên hợp lệ Các biên không
500
9000
499
9001
Trang 32Mẫu điều kiện kiểm thử
V1 V2
< 2 chars
> 64 chars invalid char
X1 X2 X3
2 chars
64 chars
B1 B2
1 char
65 chars
0 chars
D1 D2 D3
< 6 digits
> 6 digits
1 st digit = 0 non-digit
X4 X5 X6 X7
100000
999999
B3 B4
5 digits
7 digits
0 digits
D4 D5 D6
X8 X9 X10 X11 X12
500
9000
B5 B6
499
9001
D7 D8
Trang 33Thiết kế các test case
Acc no: 100000 Loan: 500 Term: 1 year
Repayment: 79.86 Interest rate: 10%
Total paid: 2874.96
Repayment: 44.80 Interest rate: 7.5%
Total paid: 537.60
V1, V2, V3, V4, V5 B1, B3, B5,
Trang 34Chọn các kiểm thử nào?
Cách tiếp cận đầy đủ nhất: các phân vùng hợp lệ,
các phân vùng không hợp lệ, các biên hợp lệ, các biên không hợp lệ
Dưới sức ép thời gian, phụ thuộc vào mục tiêu kiểm thử có thể lựa chọn cách tiếp cận khác nhau
Biên hợp lệ Biên không hợp lệ Phân vùng hợp lệ Phân vùng không hợp lệ
Số lỗi tìm được nhiều nhất
Trang 35Kiểm thử chức năng
1 2 3
Kiểm thử phần mềm
Trang 36Là kỹ thuật thiết kế test case dựa trên đồ thi nhân quạ̉
Tập trung vào việc xác định các mối kết hợp giữa các điều kiện và kết quả mà các mối kết hợp này mang lại
Các bước xây dựng đồ thị nguyên nhân – kết quả
- B1: Phân chia hệ thống thành các vùng hoạt động
- B2: Xác định các nguyên nhân(causes) và kết quả (effects)
- B3: Chuyển nội dung ngữ nghĩa trong đặc tả thành đồ thị liên
kết các causes và effects
- B4: Chuyển đổi đồ thị thành bảng quyết định
- B5: Thiết lập danh sách các test case từ bảng quyết định Mỗi
test case tương ứng với 1 cột trong bảng quyết định
36
Đồ thị nhân – quả(Cause & Effect
Graphing)
Trang 37Phân rã yêu cầu chức năng thành danh sách các function hay sub-function
B1: Phân chia hệ thống thành các
phân vùng hoạt động
Trang 38B2.1: Dựa vào đặc tả xác định các nguyên nhân
(cause) và gán định danh id cho mỗi cause Một cause có thể được xem như là 1 input conditions hoặc là đại diện của 1 lớp tương đương input conditions
B2.2: Dựa vào đặc tả, xác định các effects hoặc sự
thay đổi trạng thái của hệ thống và chỉ định mỗi effect một id Effect có thể output condition hay đại diện của
1 lớp tương đương output conditions
38
B2 Xác định nguyên nhân – kết quả
Trang 39VD xét đặc tả hệ thống tính phí bảo hiểm xe hơi:
- Đối với nữ < 65tuổi, phí bảo hiểm là 500$
- Đối với nam<25 tuổi, phí bảo hiểm là 3000$
- Đối với nam từ 25 – 64, phí bảo hiểm là 1000$
- Nếu tuổi từ 65 trở lên, phí bảo hiểm là 1500$
CÓ 2 yếu tố xác định phí bảo hiểm là tuổi và giới tính
VD tính phí bảo hiểm
Trang 40Các ký hiệu cơ bản trong đồ thị causes- effects Mỗi nút có giá trị là 0 hoặc 1: ) 0 mô tả vắng mặt, 1 mô tả có mặt
40
B3: Chuyển nội dung ngữ nghĩa trong đặc tả
thành đồ thị liên kết giữa causes và effects
Trang 41Nếu sự kết hợp nào đó của một số nguyên nhân là không thể
bởi vì lý do ngữ nghĩa và môi trường (ví dụ ký tự không thể
đồng thời vừa là A và là B), khi đó sử dụng các ký hiệu ràng
buộc dưới đây
Các ký hiệu ràng buộc
R- Request:
yêu cầu
M- Mask: Mặt nạ
Trang 42E: chỉ có a hoặc b có thể là 1, hay a hoặc b không thể đồng thời là 1
I: khẳng định ít nhất 1 trong a, b hoặc c luôn là 1
O: khẳng định 1 và chỉ duy nhất 1 a hoặc b là 1
R: khi a là 1 thì kết quả b cũng phải là 1
M: Nếu a là 1 thì kết quả b bắt buộc phải là 0
42
Các ký hiệu ràng buộc…
Trang 43CEG #1: Đối với nam từ 25 đến 64, phí bảo hiểm là 1000$
CEG #2: Đối với nam < 25 tuổi, phí bảo hiểm là 3000$
VD tính phí bảo hiểm
Trang 44CEG #3: Nếu tuổi từ 65 trở lên, phí bảo hiểm là: 1500$ CEG #4: Đối với nữ < 65 tuổi, phí bảo hiểm là: 500$
44
VD tính phí bảo hiểm
Trang 45Chọn 1 kết quả để là trạng thái có mặt
Lật ngược trở lại đồ thị, tìm tất cả các sự kết hợp của các nguyên nhân mà sẽ thiết lập kết quả này là 1
Tạo 1 cột trong bảng quyết định cho mỗi sự kết hợp nguyên nhân
Với mỗi sự kết hợp, hãy quy định trạng thái của tất cả các kết quả khác và đặt chúng vào mỗi cột
B4: Chuyển đồ thị thành bảng
quyết định
Trang 46Những xem xét được sử dụng khi dò theo đồ thị
Trang 47VD tính phí bảo hiểm
Trang 48B5: Thiết lập danh sách các test case từ bảng
quyết định Mỗi test case tương đương với 1 cột trong bảng quyết định
Trang 49Nguyên nhân là:
Cả 3 giá trị nhập vào đều là số nguyên dương.
Tổng 2 số bất kỳ trong 3 số lớn hơn số còn lại.
Hai trong 3 số có giá trị bằng nhau.
Ba số có giá trị bằng nhau.
Kết quả là:
R1 Thông báo ba giá trị nhập vào lập thành tam giác thường R2 Thông báo ba giá trị nhập vào lập thành tam giác cân.
R3 Thông báo ba giá trị nhập vào lập thành tam giác đều.
R4 Thông báo ba giá trị nhập vào không lập thành một tam giác R5 Thông báo lỗi nhập dữ liệu.
Bài tập