2.1 boundary-vn

25
Kiểm thử và đảm bảo chất lượng phần mềm Kiểm thử giá trị biên 1

Upload: doan-minh

Post on 15-Apr-2017

130 views

Category:

Software


0 download

TRANSCRIPT

Page 1: 2.1 boundary-vn

Kiểm thử và đảm bảo chất lượng phần mềm

Kiểm thử giá trị biên

1

Page 2: 2.1 boundary-vn

Nội dung

• Kiểm thử hàm• Kiểm thử giá trị biên • Kiểm thử lớp tương đương• Kiểm thử bảng quyết định• ...

2

Page 3: 2.1 boundary-vn

Tổng quan

• Các chương trình có thể coi là một hàm (toán học)–Các đầu vào 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

• Phân tích giá trị biên (boundary value analysis - BVA) là kỹ thuật kiểm thử hàm phổ biến nhất

• Mục tiêu của kiểm thử hàm là sử dung 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ử

3

Page 4: 2.1 boundary-vn

Phân tích giá trị biên (BVA)

• Phân tích giá trị biên tập trung vào biên của miền xác định để xây dựng ca kiểm thử

• Lý do là lỗi thường xảy ra ở gần các giá trị biên này• Chương trình viết bằng ngôn ngữ không có kiểm tra

kiểu mạnh càng cần kiểm thử giá trị biên• Javascript, php, Visual Basic

4

Page 5: 2.1 boundary-vn

Đầu vào hợp lệ của chương trình P

• Từ đây chúng ta giả sử có chương trình P nhận hai biến đầu vào là y1 và y2 thỏa mãn a ≤ y1 ≤ b and c ≤ y2 ≤ d

P(y1, y2) where a <= y1 <= b, c <= y2 <= d

• Chương trình nhận n đầu vào sẽ có không gian đầu vào n chiều

5

Page 6: 2.1 boundary-vn

Miền xác định

6

a b

c

d y2

y1

Page 7: 2.1 boundary-vn

Chọn giá trị

• Phân tích giá trị biên sẽ chọn các giá trị:• Giá trị nhỏ nhất• Ngay trên giá trị nhỏ nhất• Một giá trị bình thường• Ngay dưới giá trị lớn nhất• Giá trị lớn nhất

• Ví dụ:• a <= y1 <=b thì sẽ chọn a, a+1, a+b/2, b-1, b.

7

Page 8: 2.1 boundary-vn

Giả thiết khiếm khuyết đơn

• Phân tích giá trị biên dựa trên nguyên lý giả định khuyế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 mỗi chiều bằng các giá trị cực trị như trên.

8

Page 9: 2.1 boundary-vn

Các ca kiểm thử theo phân tích giá trị biên

9

T = { <y1nom, y2min>, <y1nom, y2min+>, <y1nom, y2nom>, <y1nom, y2max->, <y1nom, y2max+>, <y1min, y2nom>, < 1nin+, y2nom>, <y1max-, y2nom>, <y1max, y2nom> }

a b

c

d y2

y1

.. . .. . . . .

Page 10: 2.1 boundary-vn

Các ca kiểm thử cho TriangleCase # a b c Expected Output

1 100 100 1 Isosceles2 100 100 2 Isosceles3 100 100 100 Equilateral4 100 100 199 Isosceles5 100 100 200 Not a Triangle6 100 1 100 Isosceles7 100 2 100 Isosceles8 100 100 100 Equilateral9 100 199 100 Isosceles

10 100 200 100 Not a Triangle11 1 100 100 Isosceles12 2 100 100 Isosceles13 100 100 100 Equilateral14 199 100 100 Isosceles15 200 100 100 Not a Triangle

10

Page 11: 2.1 boundary-vn

Tổng quát hóa BVA

• Có hai cách tổng quát hóa :–Theo số biến, sẽ có (4n +1) ca kiểm thử cho n biến–Theo loại khoảng của biến

• Phụ thuộc 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

11

Page 12: 2.1 boundary-vn

Hạn chế của BVA

• BVA hiệu quả với các chương trình có các đầu vào độc lập 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

12

Page 13: 2.1 boundary-vn

Kiểm thử biên mạnh

• Kiể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 hai 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.

13

Page 14: 2.1 boundary-vn

Các ca kiểm thử biên mạnh cho P

14

a b

c

d y2

y1

... . … . . . . .

.

Page 15: 2.1 boundary-vn

Kiểm thử trường hợp xấu nhất

• Điều gì xảy ra khi nhiều hơn một 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

• Có thể kết hợp với kiểm thử mạnh để có bộ kiểm thử trường hợp xấu nhất mạnh

15

Page 16: 2.1 boundary-vn

Các ca kiểm thử trường hợp xấu nhất cho P

16

a b

c

d y2

y1

.. . .... . .... . ..

.. . .... . ..

Page 17: 2.1 boundary-vn

Các ca kiểm thử trường hợp xấu nhất mạnh cho P

17

a b

c

d y2

y1

... . …... . …... . …... . …

... . …... . …... . …

Page 18: 2.1 boundary-vn

Kiểm thử giá trị đặc biệt

• Kiểm thử giá trị đặc biệt là phương pháp được thực hiện nhiều nhất trên 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

18

Page 19: 2.1 boundary-vn

Hướng dẫn áp dụng BVA

• Trừ 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 các giá trị mạnh hay giá trị thường• Single fault versus multiple fault assumption

• 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ỏ,..

19

Page 20: 2.1 boundary-vn

Bài toán chia hoa hồng

• Một người bán hàng chuyên bán khóa, báng và nòng súng trường cho một cửa hàng.

• Giá của Khóa = 45, báng = 30, và nòng = 25 đô• Mỗi người bán hàng phải bán ít nhất một bộ đầy đủ

mỗi tháng (100 đô)• Người bán giỏi nhất bán được 70 khóa, 80 báng, 90

nòng một tháng

20

Page 21: 2.1 boundary-vn

Bài toán chia hoa hồng

• Hàng tháng mỗi người bán sẽ gửi báo cáo về cho cửa hàng với tổng số hàng bán được cho mỗi thị trấn anh ta đến

• Số thành phố đến được mỗi tháng là từ 1 đến 10.• Người bán nhận được:

• 10% nếu số tiền bán được <= 1000 đô, • 15% trên 800 đô tiếp theo, và • 20% của số tiền vượt quá 1800.

21

Page 22: 2.1 boundary-vn

Các ca kiểm thử theo khoảng đầu ra

80

90

60

6070

72

40

22.2

33.3

Báng

Khóa

Nòng

22

Page 23: 2.1 boundary-vn

Các ca kiểm thử miền giá trị

Case # Locks Stocks Barrels Sales Comm. Comments

1 1 1 1 100 10 min

2 10 10 9 975 97.5 border-

3 10 9 10 970 97 border-

4 9 10 10 955 95.5 border-

5 10 10 10 1000 100 border

6 10 10 11 1025 103.75 border+

7 10 11 10 1030 104.5 border+

8 11 10 10 1045 106.75 border+

23

Page 24: 2.1 boundary-vn

Các ca kiểm thử giá trị đặc biệt

TT Khóa Báng Nòng Số bán Hoa hồng

Ghi chú

1 10 11 9 1005 100.75 border+

2 18 17 19 1795 219.25 border+

3 18 19 17 1805 221 border+

24

Page 25: 2.1 boundary-vn

Bài tập

• Áp dụng lý thuyết vào các chương trình cho các bài toán minh họa đã xây dựng

• Viết unit test (ví dụ Junit)

25