ĐẢM BẢO VÀ KIỂM SOÁT CHẤT LƯỢNG
Chương 5: Các kỹ thuật kiểm tra động
HCM – 10/2012
4/23/2014
1
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
Nên áp dụng ở đâu?
output
4/23/2014 Trang 4
Áp dụng ở đâu?
Chấp nhận
Hệ thống
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)
Tích hợp
Đơn vị
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
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
Hộp đen
Hộp trắng
1. Phân hoạch tương đương
2. Phân tích giá trị biên
2. Dòng dữ liệu
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
4/23/2014 Trang 6
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ế.
invalid
valid
invalid
0
1
100 101
4/23/2014 Trang 8
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. invalid
valid
invalid
4/23/2014 Trang 10
0
1
100 101
Phân tích giá trị biên Boundary value analysis (BVA)
4/23/2014 Trang 11
Customer name
Number of characters:
1
2
64 65
invalid
valid
invalid
Valid characters:
A-Z
a-z -’ space
Any other
4/23/2014 Trang 12
Account number
valid: non-zero
first character:
invalid: zero
number of digits:
5 6 7
invalid
invalid
valid
4/23/2014 Trang 13
Loan amount
499
500
9000 9001
invalid
valid
invalid
4/23/2014 Trang 14
Condition template
4/23/2014 Trang 15
Thiết kế Testcase
Description
Expected Outcome
Test Case
New Tags Covered
1
V1, V2, V3, V4, V5 .....
Name: John Smith Acc no: 123456 Loan: 2500 Term: 3 years
Term: Repayment: Interest rate: Total paid:
3 years 79.86 10% 2874.96
2
B1, B3, B5, .....
Name: AB Acc no: 100000 Loan: 500 Term: 1 year
Term: Repayment: Interest rate: Total paid:
1 year 44.80 7.5% 537.60
4/23/2014 Trang 16
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
Bài tập: máy ATM
4/23/2014 Trang 18
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
Không thể phát hiện những đường thi hành mà không được hiện thực
4/23/2014 Trang 33
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
Chỉ cần 2 test case sau
Kiểm thử sao cho
mỗi lệnh được thực thi ít nhất 1 lần
₫â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.
4/23/2014 Trang 35
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).
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.
4/23/2014 Trang 36
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ụ
Read
Yes
Yes
Print “Key” Print “Key”
A=21
A>0
No
No
Read A Read A IF A > 0 THEN IF A > 0 THEN IF A = 21 THEN IF A = 21 THEN ENDIF ENDIF ENDIF ENDIF
3
End
3
- Cyclomatic complexity: _____ - Minimum tests to achieve: • Statement coverage: ______ 1 • Branch coverage: _____
4/23/2014 Trang 45
Ví dụ
Yes
A<0
Read
No
Note: there are 4 paths
Yes
B<0
No
End
3
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
- Cyclomatic complexity: _____ - Minimum tests to achieve: 2
2
• Statement coverage: ______ • Branch coverage: _____
Trang 46 4/23/2014
Ví dụ
Read
No
Yes
A>0
B=0
No
Yes
Yes
A>21
Print “No values”
No
End
4
Print B IF A > 21 THEN Print A ENDIF
Read A Read B IF A > 0 THEN IF B = 0 THEN ELSE ENDIF ENDIF
- Cyclomatic complexity: _____ - Minimum tests to achieve: • Statement coverage: ______ 2 • Branch coverage: _____
4 Trang 47
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
Đồ 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
Bất lợi
Thuận lợi
Lỗ hổng bao phủ, đặc
biệt khi có áp lực
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
Khó đánh giá Không ngăn ngừa lỗi Không thích hợp
nhóm lớn
Có hiệu quả Kiểm soát tốt việc chuẩn bị kiểm thử
Khác biệt về kỹ năng
và kinh nghiệm
Sáng tạo
4/23/2014 Trang 53
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
4/23/2014
56

