ĐẢ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

Print

3

End

3

- Cyclomatic complexity: _____ - Minimum tests to achieve: • Statement coverage: ______ 1 • Branch coverage: _____

4/23/2014 Trang 45

Ví dụ

Yes

A<0

Print

Read

No

Print

Note: there are 4 paths

Yes

B<0

Print

No

Print

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

Print

B=0

No

Yes

Yes

A>21

Print

Print

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