Tổng quan về kiểm thử động
Kiểm thử hộp đen
Phân hoạch tương đương
Phân tích giá trị biên
Sơ đồ chuyển trạng thái
Bảng quyết định
Kiểm thử hộp trắng
Luồng điều khiển
Kỹ thuật dựa trên kinh nghiệm
Chọn kỹ thuật kiểm thử phù hợp
56 trang |
Chia sẻ: thuychi16 | Lượt xem: 995 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Đảm bảo và kiểm soát chất lượng - Chương 5: Các kỹ thuật kiểm tra động, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ĐẢM BẢO VÀ KIỂM SOÁT
CHẤT LƯỢNG
HCM – 10/2012
Chương 5:
Các kỹ thuật kiểm tra
động
1 4/23/2014
Nội dung
Tổng quan về kiểm thử động
Kiểm thử hộp đen
Phân hoạch tương đương
Phân tích giá trị biên
Sơ đồ chuyển trạng thái
Bảng quyết định
Kiểm thử hộp trắng
Luồng điều khiển
Kỹ thuật dựa trên kinh nghiệm
Chọn kỹ thuật kiểm thử phù hợp
4/23/2014 Trang 2
Tại sao cần kiểm thử Động?
Testing hết tất cả các trường hợp là điều
không thể => Phải xác định 1 tập con:
Có khả năng xác định lỗi cao nhất
Với chi phí nhỏ nhất
Phải thông qua 1 quy trình để giúp xác định
được 1 danh sách test case phù hợp nhất
Test-case hiệu quả (Effective): tìm nhiều lỗi
• Tập trung vào những lỗi đặc thù
• Testing đúng cái cần được Test
Test-case hữu hiệu (Efficient): tìm lỗi với chi phí
nhỏ nhất
• Tránh trùng lấp
• Các kỹ thuật phải có tính đo lường được
4/23/2014 Trang 3
3 kiểu thiết kế kiểm thử động
Hộp đen (Specification-based - black box)
Hộp trắng (Structure-based - white box)
Dựa trên kinh nghiệm(Experience-based :
tấn công, thăm dò, danh sách ý kiểm tra)
Tạo kiểm thử chủ yếu nhờ vào sự hiểu biết về
hệ thống, kinh nghiệm quá khứ, phương pháp
phỏng đoán về lỗi
4/23/2014 Trang 4
output
Nên áp
dụng ở đâu?
Áp dụng ở đâu?
Hộp đen thường áp
dụng cho tất cả các
cấp độ nhưng tập
trung vào các cấp
độ cao (System và
Acceptance)
Hộp trắng thường
áp dụng ở những
cấp độ thấp (Unit và
Integration)
Dựa trên kinh
nghiệm khi không rõ
yêu cầu
4/23/2014 Trang 5
Tích hợp
Đơn vị
Chấp nhận
Hệ thống
Chiến lược kiểm thử
Mỗi phương pháp có những ưu điểm cũng
như khuyết điểm riêng
Cần kết hợp sức mạnh của cả hai phương
pháp trên
Bắt đầu bằng việc phát triển các ca kiểm
thử sử dụng phương pháp hộp đen
Sau đó phát triển bổ sung các ca kiểm thử
cần thiết với phương pháp hộp trắng
4/23/2014 Trang 6
Hộp đen Hộp trắng
1. Phân hoạch tương đương
2. Phân tích giá trị biên
3. Sơ đồ chuyển trạng thái
4. Bảng quyết định
5. Đồ thị Nhân quả
1. Luồng điều khiển
2. Dòng dữ liệu
Nội dung
Tổng quan về kiểm thử động
Kiểm thử hộp đen
Phân hoạch tương đương
Phân tích giá trị biên
Sơ đồ chuyển trạng thái
Bảng quyết định
Đồ thị Nhân quả
Kiểm thử hộp trắng
Luồng điều khiển
Kỹ thuật dựa trên kinh nghiệm
Chọn kỹ thuật kiểm thử
4/23/2014 Trang 7
Phân lớp/hoạch tương đương
Equivalence partitioning
Phân Chia thông tin đầu vào, ra, hành vi
và môi trường thành các phân lớp được“xử
lý” tương đương
Vùng hợp lệ (Valid)
Vùng không hợp lệ (Invalid)
Định nghĩa ít nhất 1 kịch bản cho mỗi phần
hoặc các vùng giá trị
Kiểm thử một giá trị đại diện của lớp
Nếu giá trị đại diện bị lỗi thì các thành viên
trong lớp đó cũng sẽ bị lỗi như thế.
4/23/2014 Trang 8
1 100 101 0
valid invalid invalid
Phân lớp/hoạch tương đương
Equivalence partitioning
Bài tập: Nhập tọa độ 1 điểm trong không gian hai
chiều với
3≤ x ≤7
5≤ y ≤9
4/23/2014 Trang 9
Phân tích giá trị biên
Boundary value analysis (BVA)
Kinh nghiệm cho thấy các ca kiểm thử mà
khảo sát tỷ mỷ các điều kiện biên có tỷ lệ
phần trăm cao hơn các ca kiểm thử khác
Là phương pháp bổ sung thêm cho phân
lớp tương đương, nhưng khác với phân lớp
tương đương ở 2 khía cạnh:
Chọn các giá trị biên đầu vào để kiểm tra các
lớp đầu vào thay vì thêm vào những giá trị tùy
ý
Cũng chọn những giá trị đầu vào như thế nào
để cho ra những giá trị biên đầu ra.
4/23/2014 Trang 10 1 100 101 0
valid invalid invalid
Phân tích giá trị biên
Boundary value analysis (BVA)
4/23/2014 Trang 11
Customer name
4/23/2014 Trang 12
Number of characters:
2 64 65
invalid valid invalid
1
Conditions Valid
Partitions
Invalid
Partitions
Valid
Boundaries
Invalid
Boundaries
Customer
name
2 to 64 chars
valid chars
< 2 chars
> 64 chars
invalid chars
2 chars
64 chars
1 chars
65 chars
0 chars
Valid characters:
Any
other
A-Z
a-z -’
space
Account number
4/23/2014 Trang 13
5 6 7
invalid
valid
invalid
number of digits:
first character:
invalid: zero
valid: non-zero
Conditions Valid
Partitions
Invalid
Partitions
Valid
Boundaries
Invalid
Boundaries
Account
number
6 digits
1
st
non-zero
< 6 digits
> 6 digits
1
st
digit = 0
non-digit
100000
999999
5 digits
7 digits
0 digits
Loan amount
4/23/2014 Trang 14
500 9000 9001
invalid valid invalid
499
Conditions Valid
Partitions
Invalid
Partitions
Valid
Boundaries
Invalid
Boundaries
Loan
amount
500 - 9000 < 500
>9000
0
non-numeric
null
500
9000
499
9001
Condition template
4/23/2014 Trang 15
Thiết kế Testcase
4/23/2014 Trang 16
Test
Case
Description Expected Outcome New Tags
Covered
1
2
Name: John Smith
Acc no: 123456
Loan: 2500
Term: 3 years
Name: AB
Acc no: 100000
Loan: 500
Term: 1 year
Term: 3 years
Repayment: 79.86
Interest rate: 10%
Total paid: 2874.96
Term: 1 year
Repayment: 44.80
Interest rate: 7.5%
Total paid: 537.60
V1, V2,
V3, V4,
V5 .....
B1, B3,
B5, .....
Bảng quyết định
Decision tables testing
Bảng quyết định là 1 công cụ rất hữu ích
để đặc tả các yêu cầu phần mềm hoặc để
đặc tả bảng thiết kế hệ thống phần mềm.
Nó miêu tả các qui tắc nghiệp vụ phức tạp
mà phần mềm phải thực hiện dưới dạng dễ
đọc và dễ kiểm soát
Có thể thể hiện dạng lưu đồ hoặc bảng
Bảng quyết định có thể tạo ra kịch bản
kiểm thử tức thì
4/23/2014 Trang 17
Bảng quyết định
Decision tables testing
Chức năng Login
4/23/2014 Trang 18
Input Conditions
Valid username
Valid password
Account in credit
Output Conditions
Login accepted
Restricted access
Bài tập:
máy ATM
Bảng quyết định
Decision tables testing
Thiết kế Test case
Mỗi cột ít nhất là 1 Test case
4/23/2014 Trang 19
Bảng quyết định
Decision tables testing
Nếu các điều kiện loại trừ nhau thì có thể sử dụng
chính đối tượng đó
Đầu vào của điều kiện có thể có nhiều giá trị hơn
True và False
4/23/2014 Trang 20
Các Mô hình trạng thái hữu hạn
State transition testing
Hiểu được các trạng thái khác nhau của
hệ thống bao gồm cả việc khởi tạo và
kết thúc
Nhận diện các giao dịch, sự kiện, điều
kiện, hoạt động trong mỗi trạng thái
Sử dụng đồ thị hay bảng để mô hình hệ
thống
Cho mỗi sự kiện và điều kiện, kiểm
chứng lại hoạt động và trạng thái sau
đó
4/23/2014 Trang 21
Các Mô hình trạng thái hữu hạn
State transition testing
„
4/23/2014 Trang 22
Các Mô hình trạng thái hữu hạn
State transition testing
Có 3 phương pháp để thiết kế Test case
cho phương pháp này
Bao phủ trạng thái (State Coverage)„
Bao phủ sự kiện (Event Coverage)
Bao phủ sự dịch chuyển(Transition
Coverage)
4/23/2014 Trang 23
Các Mô hình trạng thái hữu hạn
State transition testing
Bao phủ trạng thái (State Coverage)„
Tất cả trạng thái phải chạy qua 1 lần
Đây là phương pháp có độ bao phủ thấp
4/23/2014 Trang 24
Các Mô hình trạng thái hữu hạn
State transition testing
Bao phủ sự kiện (Event Coverage)
Tất cả sự kiện phải chạy qua 1 lần
Cũng là phương pháp có độ bao phủ thấp
4/23/2014 Trang 25
Các Mô hình trạng thái hữu hạn
State transition testing
Bao phủ sự dịch chuyển(Transition
Coverage)
Tất cả sự dịch chuyển phải chạy qua 1 lần
Đây là phương pháp tốt nhất mà không
phải tạo ra 1 số lượng lớn Test case
4/23/2014 Trang 26
Các Mô hình trạng thái hữu hạn
State transition testing
4/23/2014 Trang 27
Các Mô hình trạng thái hữu hạn
State transition testing
4/23/2014 Trang 28
Nội dung
Tổng quan về kiểm thử động
Kiểm thử hộp đen
Phân hoạch tương đương
Phân tích giá trị biên
Sơ đồ chuyển trạng thái
Bảng quyết định
Đồ thị Nhân quả
Kiểm thử hộp trắng
Luồng điều khiển
Kỹ thuật dựa trên kinh nghiệm
Chọn kỹ thuật kiểm thử
4/23/2014 Trang 29
Kiểm thử hộp trắng
Kiểm thử hộp trắng hay còn gọi là kiểm
thử hướng logic, cho phép kiểm tra cấu
trúc bên trong của phần mềm với mục đích
đảm bảo rằng tất cả các câu lệnh và điều
kiện sẽ được thực hiện ít nhất một lần.
Người kiểm thử hộp trắng phải có kỹ năng,
kiến thức nhất định về ngôn ngữ lập trình
và thuật giải được dùng
Thường tốn rất nhiều thời gian và công sức
nếu chương trình quá lớn
kỹ thuật này chủ yếu được dùng để kiểm
thử đơn vị
4/23/2014 Trang 30
Kiểm thử hộp trắng
Có 2 hoạt động kiểm thử hộp trắng :
Kiểm thử luồng điều khiển: tập trung kiểm thử
thuật giải chức năng
• Bao phủ phát biểu
– Mỗi phát biểu đều được thực thi
• Bao phủ nhánh
– Mỗi nhánh thực hiện theo mỗi cách (T/F)
• Bao phủ điều kiện
– Mỗi tổ hợp các điều kiện được đánh giá–bảng sư thật
• Bao phủ quyết định đa điều kiện
– Chỉ các điều kiện tổ hợp ảnh hưởng quyết định
• Bao phủ lặp(Loop coverage):
– Tất cả các đường dẫn lặp 0,1, nhiều lần(lý tưởng, cực đại)
Kiểm thử dòng dữ liệu: tập trung kiểm thử đời
sống của từng biến dữ liệu được dùng trong thuật
giải.
4/23/2014 Trang 31
Một số thuật ngữ về kiểm thử
luồng ₫iều khiển
Đường thi hành (Execution path)
Nó là danh sách có thứ tự các lệnh
được thi hành ứng với 1 lần chạy cụ
thể của đơn vị phần mềm, bắt đầu từ
điểm nhập của đơn vị phần mềm đến
điểm kết thúc của đơn vị phần mềm.
Mục tiêu của phương pháp kiểm thử
luồng điều khiển là đảm bảo mọi
đường thi hành đều chạy đúng
Rất tiếc trong thực tế, công sức và thời
gian để đạt mục tiêu trên đây là rất lớn,
ngay cả trên những đơn vị phần mềm
nhỏ
4/23/2014 Trang 32
?
Một số thuật ngữ về kiểm thử
luồng ₫iều khiển
Chỉ có 1 đường thi hành,
nhưng rất dài : dài
1000*1000*1000 = 1 tỉ lệnh
gọi hàm doSomething(i,j,k)
khác nhau
4/23/2014 Trang 33
Không thể
phát hiện
những đường
thi hành mà
không được
hiện thực
Các cấp phủ kiểm thử
(Coverage)
Làm sao xác định được số test case tối
thiểu nào có thể đem lại kết quả có độ
tin cậy tối đa?
Phủ kiểm thử càng lớn thì độ tin cậy càng
cao
Độ phủ kiểm thử (Coverage) : là tỉ lệ
các thành phần thực sự được kiểm thử
so với tổng thể sau khi đã kiểm thử các
test case được chọn
4/23/2014 Trang 34
Các cấp phủ kiểm thử
(Coverage)
Phủ cấp 0:
Kiểm thử những gì
có thể kiểm thử
được, phần còn lại
để người dùng phát
hiện và báo lại sau.
Phủ cấp 1
Kiểm thử sao cho
mỗi lệnh được thực
thi ít nhất 1 lần
4/23/2014 Trang 35
Chỉ cần 2 test case sau
₫ây là ₫ạt 100% phủ cấp
1: foo(0,0,0,0), trả về 0
và foo(1,1,1,1), trả về 1
Nhưng không phát hiện
lỗi chia 0 ở hàng lệnh 8.
Phủ cấp 2
Kiểm thử sao cho mỗi điểm quyết định luận lý
đều được thực hiện ít nhất 1 lần cho trường
hợp TRUE lẫn FALSE.
Ta gọi mức kiểm thử này là phủ các nhánh
(Branch coverage).
4/23/2014 Trang 36
Với 2 test case xác định trong slide trước, ta
chỉ đạt được 3/4 = 75% phủ các nhánh.
Nếu thêm test case 3: 3. foo(1,2,1,2), thì mới
₫ạt 100% phủ các nhánh.
Phủ cấp 3
Kiểm thử sao cho mỗi điều kiện luận lý con
(subcondition) của từng điểm quyết định đều
được thực hiện ít nhất 1 lần cho trường hợp
TRUE lẫn FALSE.
Ta gọi mức kiểm thử này là phủ các điều kiện
con (subcondition coverage).
Phủ các điều kiện con chưa chắc đảm bảo phủ
các nhánh & ngược lại.
4/23/2014 Trang 37
Phủ cấp 4
Kiểm thử sao cho mỗi điều kiện luận lý
con (subcondition) của từng điểm quyết
định đều được thực hiện ít nhất 1 lần
cho trường hợp TRUE lẫn FALSE & điểm
quyết định cũng được kiểm thử cho cả
2 nhánh TRUE lẫn FALSE.
Ta gọi mức kiểm thử này là phủ các
nhánh & các điều kiện con (branch &
subcondition coverage).
Đây là mức độ phủ kiểm thử tốt nhất
trong thực tế.
4/23/2014 Trang 38
Đồ thị dòng điều khiển
Là một trong nhiều phương pháp miêu
tả giải thuật.
Gồm 2 loại thành phần : các nút và các
cung nối kết giữa chúng.
4/23/2014 Trang 39
Đồ thị dòng điều khiển
4/23/2014 Trang 40
Đồ thị dòng điều khiển nhị
phân
Nếu đồ thị dòng điều khiển chỉ chứa các
nút quyết định nhị phân thì ta gọi nó là đồ
thị dòng điều khiển nhị phân
Ta luôn có thể chi tiết hóa 1 đồ thị dòng
điều khiển bất kỳ thành đồ thị dòng điều
khiển nhị phân
4/23/2014 Trang 41
Độ phức tạp Cyclomatic C
Độ phức tạp Cyclomatic C = V(G) của đồ
thị dòng điều khiển được tính bởi 1 trong
các công thức sau :
V(G) = E - N + 2, trong đó E là số cung, N là
số nút của đồ thị.
V(G) = P + 1, nếu là đồ thị dòng điều khiển nhị
phân và P số nút quyết định.
Độ phức tạp Cyclomatic C chính là số
đường thi hành tuyến tính độc lập cần
kiểm thử.
Nếu kiểm thử tất cả các đường thi hành
này thì sẽ đạt được phủ kiểm thử cấp 3
4/23/2014 Trang 42
Qui trình kiểm thử hộp trắng
Từ chương trình cần kiểm thử, xây
dựng đồ thị dòng điều khiển tương
ứng, rồi chuyển thành đồ thị dòng điều
khiển nhị phân.
Tính độ phức tạp Cyclomatic của đồ thị
(C = P +1).
Xác định C đường thi hành tuyến tính
độc lập cơ bản cần kiểm thử.
Tạo từng test case cho từng đường thi
hành tuyến tính độc lập cơ bản.
4/23/2014 Trang 43
Qui trình xác định các đường
tuyến tính độc lập
Xác định đường tuyến tính đầu tiên bằng cách đi dọc theo
nhánh bên trái nhất của các nút quyết định. Chọn đường
này là pilot.
Dựa trên đường pilot, thay đổi cung xuất của nút quyết
định đầu tiên và cố gắng giữ lại lớn nhất phần còn lại.
Dựa trên đường pilot, thay đổi cung xuất của nút quyết
định thứ 2 và cố gắng giữ lại lớn phần còn lại.
Tiếp tục thay đổi cung xuất cho từng nút quyết định trên
đường pilot để xác định đường thứ 4, 5,... cho đến khi
không còn nút quyết định nào trong đường pilot nữa.
Lặp chọn tuần tự từng đường tìm được làm pilot để xác
định các đường mới xung quanh nó y như các bước 2, 3,
4 cho ₫ến khi không tìm được đường tuyến tính độc lập
nào nữa (khi đủ số C).
4/23/2014 Trang 44
Ví dụ
4/23/2014 Trang 45
Read A
IF A > 0 THEN
IF A = 21 THEN
Print “Key”
ENDIF
ENDIF
- Cyclomatic complexity: _____
- Minimum tests to achieve:
• Statement coverage: ______
• Branch coverage: _____
3
1
3
Print
Yes
A=21
Yes
No
End
A>0
No
Read
Ví dụ
4/23/2014 Trang 46
- Cyclomatic complexity: _____
- Minimum tests to achieve:
• Statement coverage: ______
• Branch coverage: _____
Read A
Read B
IF A < 0 THEN
Print “A negative”
ELSE
Print “A positive”
ENDIF
IF B < 0 THEN
Print “B negative”
ELSE
Print “B positive”
ENDIF
3
2
2
Read
End
Print
No
Print
Yes
B<0
Print
No
Print
Yes
A<0
Note: there
are 4 paths
Ví dụ
4/23/2014 Trang 47
- Cyclomatic complexity: _____
- Minimum tests to achieve:
• Statement coverage: ______
• Branch coverage: _____
Read A
Read B
IF A > 0 THEN
IF B = 0 THEN
Print “No values”
ELSE
Print B
IF A > 21 THEN
Print A
ENDIF
ENDIF
ENDIF
4
2
4
Print
Yes
Print
A>21
No
No
B=0
Print
Yes
Yes
Read
A>0
End
No
Nội dung
Tổng quan về kiểm thử động
Kiểm thử hộp đen
Phân hoạch tương đương
Phân tích giá trị biên
Sơ đồ chuyển trạng thái
Bảng quyết định
Đồ thị Nhân quả
Kiểm thử hộp trắng
Luồng điều khiển
Kỹ thuật dựa trên kinh nghiệm
Chọn kỹ thuật kiểm thử
4/23/2014 Trang 48
Kỹ thuật dựa trên kinh nghiệm
Dựa vào người kiểm thử với
kỹ năng – trực giác
kinh nghiệm với ứng dụng tương tự
kinh nghiệm với kỹ thuật tương tự
Một vài kỹ thuật như:
Phán đoán lỗi
Testing chuyên sâu
4/23/2014 Trang 49
Phán đoán lỗi
Không có quy tắc, không kịch bản
Nghĩ 1 trường hợp mà hệ thống có thể
bị lỗi:
Chia số 0
Để trống dữ liệu
Performance test
Liệt kê ra tất cả các trường hợp có thể
lỗi và thiết kế Test case để thực hiện
chúng
4/23/2014 Trang 50
Testing chuyên sâu
Không giới hạn những kỹ thuật mà
những người chuyên gia dùng
Nó rất hữu ít trong trường hợp yêu cầu
không rõ ràng và thời gian bị giới hạn
Quy trình của Testing chuyên sâu:
Học 1 ít về hệ thống
Quan sát chương trình để dự đoán nơi nào
có thể có lỗi
Thiết kế và chạy test case
4/23/2014 Trang 51
Nội dung
Tổng quan về kiểm thử động
Kiểm thử hộp đen
Phân hoạch tương đương
Phân tích giá trị biên
Sơ đồ chuyển trạng thái
Bảng quyết định
Đồ thị Nhân quả
Kiểm thử hộp trắng
Luồng điều khiển
Kỹ thuật dựa trên kinh nghiệm
Chọn kỹ thuật kiểm thử
4/23/2014 Trang 52
Chiến lược kiểm tra động
Thuận lợi
Tìm lỗi hiệu quả
Không mắc phải
nghịch lý “thuốctrừ
sâu” -> biến đổi lớn
Có hiệu quả
Kiểm soát tốt việc
chuẩn bị kiểm thử
Sáng tạo
4/23/2014 Trang 53
Bất lợi
Lỗ hổng bao phủ, đặc
biệt khi có áp lực
Khó đánh giá
Không ngăn ngừa lỗi
Không thích hợp
nhóm lớn
Khác biệt về kỹ năng
và kinh nghiệm
Chọn kỹ thuật kiểm thử
Kiểu hệ thống
Yêu cầu khách hàng–hợp đồng
Mức và kiểu rủi ro
Mục tiêu kiểm thử
Kiến thức người kiểm thử
Thời gian/ngân sách
Vòng đời phát triển
Kinh nghiệm–kiểu khiếm khuyết phát
hiện
4/23/2014 Trang 54
Chọn kỹ thuật kiểm thử
„
4/23/2014 Trang 55
ĐẢM BẢO VÀ KIỂM SOÁT
CHẤT LƯỢNG
56 4/23/2014