Kiểm thử lớp tương đương

Một phần của tài liệu Bài giảng kiểm thử phần mềm đh phạm văn đồng (Trang 56)

vét cạn (kiểm thử mọi dữ liệu vào có thể). Như thế, khi kiểm thử chúng ta sẽ cố gắng xác định tập con dữ liệu thử của tất cả các dữ liệu vào có thể. Tất nhiên chúng ta muốn xác định được tập con dữ liệu thử tốt nhất hay hiệu quả nhất, nghĩa là tập con dữ liệu thử có khả năng phát hiện nhiều lỗi nhất.

Để xác định tập con các dữ liệu thử này, mỗi dữ liệu thử được lựa chọn nên có hai tính chất sau:

- Dữ liệu thử giảm số lượng các dữ liệu thử khác cần tạo ra nhằm đạt được mục tiêu kiểm thửxác định trước.

- Dữ liệu thử bao phủ một tập gồm nhiều dữ liệu thử khác, nghĩa là dữ liệu thử này cho chúng ta biết sự hiện diện của lỗi ứng với tập các dữ liệu thử.

Tính chất thứ nhất muốn đảm bảo rằng mỗi dữ liệu thử nên đại diện cho nhiều dữ liệu vào khác nhau nhằm giảm số dữ liệu thử cần thiết. Tính chất thứ hai nói rằng chúng ta nên chia miền dữ liệu vào của chương trình thành một số lớp tương đương với kiểm thử với các giá trị khác của lớp đó. Nghĩa là, nếu một dữ liệu thử trong một lớp tương đương phát hiện một lỗi, thì tất cả các dữ liệu thử khác trong lớp tương đương đó cũng phát hiện cùng lỗi đó.

Hai tính chất mà một kiểu dữ liệu thử nên thỏa mãn tạo nên kĩ thuật kiểm thử, được gọi là kiểm thử lớp tương đương. Kĩ thuật này dựa trên đặc tả của chương trình để xác định các lớp tương đương. Sau đó, dữ liệu thử được chọn từ một đại diện bất kì của lớp tương đương. Chẳng hạn, đối với chương trình nhận dữ liệu vào gồm ba số nguyên và kiểm tra ba số nguyên đó có phải là độ dài ba cạnh của một tam giác hay không. Chúng ta có thể nhận thây tập các bộ ba số nguyên là độ dài ba cạnh của một tam giác có vai trò như nhau đối với chương trình, nghĩa là cùng thực hiện một chức năng. Như vậy, chúng ta có thể xem các bộ ba số nguyên này có vai trò tương đương đối với chương trình, hay nói cách khác, các bộ ba số nguyên này tạo thành một lớp tương đương. Khi kiểm thử, chúng ta chỉ cần chọn một bộ ba đại diện bất kì, chảng hạn (3,4,5), từ lập vô số các bộ ba thuộc lớp tương đương này.

Một cách tổng quát, để xây dựng các lớp tương đương, chúng ta sử dụng đặc tả chương trình đểxác định các loại thông tin:

- Các miền dữ liệu vào (ví dụ, một biến chứa điểm môn học, một biến chứa ngày tháng…),

- Các miền dữ liệu đầu ra (ví dụ, kết quả điểm trung bình các môn học lớp lớn hơn 5…),

- Tập hợp các chức năng phải được thực hiện bởi chương trình cần kiểm thử (ví dụ, tính điểm trung bình các môn học, tìm thấy các sinh viên có điểm trung bình không đạt…).

Chúng ta chọn một dữ liệu đại diện cho mỗi lớp. Các lớp được tạo ra được xem tương đương về mặt chức năng. Về nguyên tắc, tập các lớp tương đương phải bao phủ toàn bộ miền dữ liệu vào U và các lớp tươngđương phải loại trừ lẫn nhau. Nên kí hiệu

𝐶𝑖 cho mỗi lớp tương đương, chúng ta có thể biểu diễn:

⋃ 𝐶𝑖 𝑛

𝑖=1

= 𝑈 ∀𝑖, 𝑗 𝐶𝑖∩ 𝐶𝑗 = ∅

Một số các quy tắc chung đểchia lóp tương đương gồm: - Nếu dữ liệu thuộc một khoảng, xây dựng:

+ một lớp các giá trị nhỏ hơn, + một lớp các giá trị lớn hơn, + n lớp các giá trị hợp lệ.

- Nếu dữ liệu là tập hợp các giá trị, xây dựng: + một lớp không có giá trị,

+ một lớp gồm quá nhiều các giá trị, + n lớp các giá trị hợp lệ,

- Nếu dữ liệu là tập hợp các giá trị được xử lí khác nhau, xây dựng: + một lớp các giá trị hợp lệ,

+ một lớp các giá trị không hợp lệ. - Nếu dữ liệu là một ràng buộc, xây dựng:

+ một lớp ràng buộc được thỏa mãn,

+ một lớp ràng buộc không được thỏa mãn.

Ngoài ra, khi một chương trình có nhiều biến đầu vào, chúng ta cần kết hợp các dữ liệu đại diện để tạo nên các ca kiểm thử. Chẳng hạn, chương trình cần kiểm thử là một hàm hai biến vào a b. Giả sử miền dữ liệu của biến a được chia thành ba lớp tương đương sau:

𝐴1 ≤ 𝑎 < 𝐴2, 𝐴2 ≤ 𝑎 < 𝐴3 𝑣à 𝐴3 ≤ 𝑎 < 𝐴4

và miền dữ liệu của biến b được chia thành hai lớp tương đương sau:

𝐵1 ≤ 𝑏 < 𝐵2, 𝐵2 ≤ 𝑏 < 𝐵3

Chúng ta kí hiệu các giá trịđại diện của các lớp tương đương như sau:

𝑎1 ∈ [𝐴1, 𝐴2], 𝑎2 ∈ [𝐴2, 𝐴3], 𝑎3 ∈ [𝐴3, 𝐴4] 𝑏1 ∈ [𝐵1, 𝐵2], 𝑏2 ∈ [𝐵2, 𝐵3]

Theo tài liệu [2], kiểm thử lớp tương đương đối với chương trình có nhiều biến đầu vào được chia làm ba loại:

- Kiểm thử lớp tương đương yếu, - Kiểm thử lớp tương đương mạnh,

a

Kiểm thử lớp tương đương yếu xây dựng các ca kiểm thử bởi sử dụng một giá trị từ mỗi lớp tương đương. Như thế, chúng ta sẽ có số ca kiểm thử bằng số lớp tương đương của biến vào có nhiều lớp tương đương nhất.

Đối với ví dụ trên, chúng ta có các ca kiểm thử trong Bảng 3.3.

Bảng 3.3. Minh họa các ca kiểm thử lớp tương đương yếu

Ca KT a b

1 a1 b1

2 a2 b2

3 a3 b3

Các ca kiểm thử trên được minh họa trong Hình 3.6. b

B3

B2

B1

A1 A2 A3 A4

Hình 3.6. Minh họa các ca kiểm thử lớp tương đương yếu

Kiểm thử lớp tương đương mạnh xây dựng các ca kiểm thử dựa trên tích Đề- các của các lớp tương đương. Với ví dụ ở trên, tích Đề-các của các lớp tương đương cho 3 × 2 = 6 ca kiểm thử (Bảng 3.4).

Bảng 3.4. Minh họa các ca kiểm thử lớp tương đương mạnh

Ca KT a b 1 a1 b1 2 a1 b2 3 a2 b1 4 a2 b2 5 a3 b1 6 a3 b2 b A1 A2 A3 A4 B3 B2 B1

Hình 3.7. Minh họa các ca kiểm thử lớp tương đương mạnh.

Như thế, kiểm thử lớp tương đương mạnh bao phủ hết tất cả các lớp tương đương. Tập các ca kiểm thử bao gồm tất cả các kết hợp gí trị dữ liệu đại diện của các lớp tương đương.

Kiểm thử lớp tương đương truyền thống phân biệt các lớp tương đương hợp lệ và không hợp lệ. Lớp tương đương hợp lệ gồm các dữ liệu vào hợp lệ và lớp tương đương không hợp lệ gồm các dữ liệu vào không hợp lệ. Kiểm thử lớp tương đương truyền thống xây dựng các ca kiểm thử như sau:

- Đối với dữ liệu vào hợp lệ, sử dụng một giá trị đại diện cho mỗi lớp tương đương, nghĩa là tương tựnhư kiểm thử lớp tương đương yếu. Lưu ý rằng tất cả các dữ liệu vào của các ca kiểm thử này đều hợp lệ.

- Đối với dữ liệu vào không hợp lệ, một ca kiểm thử chỉ có một dữ liệu không hợp lệ, các dữ liệu còn lại điều hợp lệ. Trong trường hợp này chúng ta chấp nhận giả thuyết lỗi đơn.

Chẳng hạn, trong ví dụ trên, giả sử đối với biến vào a, lớp [A2, A3] hợp lệ và các lớp [A1, A2] và [A3, A4] không hợp lệ; đối với biến vào b, lớp [B1, B2] hợp lệ, lớp [B2, B3] không hợp lệ. Khi đó, kiểm thử lớp tương đương truyền thống xác định các ca kiểm thử trong Bảng 3.5.

Ví dụ 1:

Chương trình tam giác nhận đầu vào gồm ba số nguyên a, b c, chúng được xem là độ dài ba cạnh của một tam giác. Chương trình xác định loại tam giác bằng cách dựa vào độ dài ba cạnh: tam giác đều (ba cạnh bằng nhau), tam giác thường (độ dài ba cạnh khác nhau), tam giác cân (chỉ hai cạnh bằng nhau) và không là tam giác (có ít nhất một cạnh lớn hơn hoặc bằng tổng hai cạnh còn lại).

Đối với chương trình này, ba số nguyên đầu vào có mối quan hệ phụ thuộc chặt chẽ với nhau. Vì vậy, chúng ta xây dựng lớp tương đương dựa vào quan hệ ràng buộc giữa chúng. Ba số nguyên a, b c có thể bằng nhau, hay chỉ một cặp bằng nhau hay tất cả đều khác nhau. Chúng ta có thể xác định các lớp tương đương trong bảng 3.6.

Bảng 3.5. Minh họa các ca kiểm thử lớp tương đương truyền thống

Ca KT a b Kết quả 1 a1 b1 Hợp lệ 2 a2 b1 Không hợp lệ 3 a3 b1 Không hợp lệ 4 a2 b2 Không hợp lệ

b B3

B2

B1

A1 A2 A3 A4

Hình 3.8. Minh họa các ca kiểm thử lớp tương đương truyền thống Bảng 3.6. các lớp tương đương cho chương trình tam giác dựa trên dữ liệu vào.

STT Lớp tương đương Ghi chú

L1 a = b = c Tam giác đều

L2 a = b, 𝑎 ≠ 𝑐 Tam giác cân

L3 a = c, 𝑎 ≠ 𝑏 Tam giác cân

L4 b = c, 𝑎 ≠ 𝑏 Tam giác cân

L5 𝑎 ≠ 𝑏, 𝑏 ≠ 𝑐, 𝑐 ≠ 𝑎 Tam giác thường

L6 𝑎 ≥ 𝑏 + 𝑐 Không là tam giác

L7 𝑏 ≥ 𝑎 + 𝑐 Không là tam giác

L8 𝑐 ≥ 𝑎 + 𝑏 Không là tam giác

Dựa trên các lớp tương đương này, chúng ta thiết kế các ca kiểm thử trong Bảng 3.7.

Bảng 3.7. Các ca kiểm thửcho chương trình tam giác dựa trên dữ liệu vào

Ca KT a b c Kết quả

1 5 5 5 Tam giác đều

2 7 7 10 Tam giác cân

3 9 15 9 Tam giác cân

4 4 3 3 Tam giác cân

5 3 4 5 Tam giác thường

6 12 4 6 Không là tam giác

7 23 39 10 Không là tam giác

8 12 11 25 Không là tam giác

Tuy nhiên, nếu chúng ta xây dựng các lớp tương đương dựa trên miền dữ liệu đầu ra. Chương trình có bốn kết quả có thể: tam giác đều, tam giác cân, tam giác thường và không là tam giác. Như vậy, chúng ta chỉ có bốn lớp tương đương tương ứng và các ca kiểm thử được thiết kế trong Bảng 3.8.

Bảng 3.8. Các ca kiểm thửcho chương trình tam giác dựa trên miền dữ liệu đầu ra

Ca KT a b c Kết quả

2 5 5 7 Tam giác cân

3 3 4 5 Tam giác thường

4 9 4 3 Không là tam giác

Ví dụ 2:

Chúng ta sẽ áp dụng kiểm thử lớp tương đương cho chương trình tính hoa hồng cho một đại lý bán xe máy. Miền dữ liệu đầu vào của chương trình có thể được chia thành các lớp tương đương bằng cách dựa vào các giới hạn của hai biến đầu vào: số lượng xe Sirius và số lượng xe Jupiter. Bởi vì dữ liệu vào thuộc một khoảng, vì vậy chúng ta thiết kế một lớp các giá trị hợp lệ và hai lớp các giá trị không hợp lệ cho mỗi biến (Bảng 3.9).

Bảng 3.9. Các lớp tương đương cho chương trình tính hoa hồng dựa trên dữ liệu vào

Biến vào Lớp tương đương Kết quả

#Sirius

1 #Sirius 100 Giá trị hợp lệ

#Sirius <1 Giá trị không hợp lệ #Sirius > 100 Giá trị không hợp lệ #Jupiter

1 #Jupiter50 Giá trị hợp lệ

#Jupiter < 1 Giá trị không hợp lệ #Jupiter > 100 Giá trị không hợp lệ

Nếu áp dụng kiểm thử lớp tương đương truyền thống, chúng ta có các ca kiểm thử trong Bảng 3.11.

Bảng 3.11. Các ca kiểm thử lớp tương đương truyền thống cho chương trình tính hoa hồng

Ca KT #Sirius #Jupiter Doanh thu

(triệu) Hoa hồng (triệu) 1 50 25 1250 137,5 2 50 0 Lỗi Lỗi 3 50 51 Lỗi Lỗi 4 0 25 Lỗi Lỗi 5 101 25 Lỗi Lỗi

Chúng ta có thể nhận thấy rằng các ca kiểm thử được thiết kế dựa trên các lớp tương đương hay dựa trên miền dữ liệu vào không có nhiều ý nghĩa. Tuy nhiên, các ca kiểm thử sẽ có ý nghĩa hơn khi xây dựng các lớp tương đương dựa trên miền dữ liệu đầu ra.

Nhắc lại cách tính hoa hồng dựa trên doanh thu như sau: đại lý được nhận 10% số doanh thu bán hàng đến 1 tỉ đồng; 15% số doanh thu bán hàng 500 triệu đồng tiếp

theo; 20% số doanh thu bán hàng vượt quá 1 tỉ 500 triệu đồng. Như vậy, chúng ta xây dựng ba lớp tương đương: doanh thu nhỏ hơn hoặc bằng 1 tỉ đồng, doanh thu lớn hơn 1 tỉ đồng và nhỏhơn hoặc bằng 1 tỉ đồng, doanh thu lớn hơn 1 tỉ 500 triệu đồng. Các ca kiểm thử tương ứng được trình bày trong Bảng 3.12.

Bảng 3.12. Các ca kiểm thử lớp tương đương cho chương trình tính hoa hồng dựa trên miền dữ liệu đầu ra

Ca KT #Sirius #Jupiter Doanh thu

(triệu) Hoa hồng (triệu) 1 10 15 450 45 2 25 35 1075 111,25 3 45 45 1575 190 3.4. Kiểm thử dựa trên bảng quyết định

Kĩ thuật kiểm thử chức năng dựa trên bảng quyết định là một kĩ thuật rất hình thức và chặt chẽ. Một kĩ thuật tương tự, được gọi là đồ thị nhân – quả (cause-effect graph), được đề xuất bởi Myers[1]. Kĩ thuật đồ thị nhân-quả khá phức tạp khi áp dụng, vì vậy chúng tôi không đề cập đến ở đây.

Bảng quyết định được sử dụng để biểu diễn và phân tích các quan hệ lô-gic phức tạp. Bảng quyết định rất phù hợp để mô tả các tình huống mà các hành động kết quả phụ thuộc vào tập các điều kiện đầu vào. Bảng 3.13 minh họa một bảng quyết định. Trong đó, các ràng buộc trên đầu vào được mô tả bởi các điều kiện (condition) và các kết quả đầu ra được mô tả bởi các hành động (action). Mỗi cột trong bảng quyết định được gọi là một luật (rule). Các luật cho biết các hành động xảy ra khi các điều kiện tương ứng của luật đúng. Nghĩa là, trong Bảng 3.13, khi các điều kiện c1, c2

c3 đúng thì các hành động a2 a4 xảy ra. Khi các điều kiện c1 c2 đúng, và c3

sai, thì hành động a1 xảy ra.

Khi mỗi điều kiện chỉ có giá trị nhị phân, chúng ta biểu diễn bởi đúng/sai hay 0/1. Phần các điều kiện của bảng quyết định là một bảng chân trị (theo lô-gic mệnh để). Bảng quyết định cho phép chúng ta xem xét mọi khảnăng kết hợp có thể của các điều kiện đầu vào. Như thế, tính chất này đảm bảo một dạng của kiểm thử vét cạn.

Bảng 3.13. Minh họa bảng quyết định 1 2 3 4 5 6 Điều kiện c1 1 1 1 0 0 0 c2 1 1 0 1 1 0 c3 1 0 - 1 0 - Số luật 1 1 2 1 1 2 a1 X X

Hành động a2 X X

a3 X X

a4 X X

Lưu ý rằng, trong cột 3, giá trị của c3 khi c1 đúng và c2 sai được gọi là “không quan tâm”, được biểu diễn bởi kí hiệu “-”, nghĩa là trường hợp này điều kiện c3

không được áp dụng.

Bảng quyết định chỉ gồm các điều kiện nhị phân được gọi là bảng quyết định hạn chế (limited entry decision table). Nếu các quyết định có thể nhận nhiều giá trị, bảng quyết định được gọi là bảng quyết định mở rộng (extended entry decision table). Ở cuối mục này, chúng ta sẽ xem xét một ví dụ về sự khác nhau giữa hai loại bảng quyết định.

Đối với một bảng quyết định hạn chế, nếu có n điều kiện thì sẽ có 2𝑛 luật. Khi có các giá trị“không quan tâm”, chúng ta thực hiện việc tính số luật như sau: mỗi cột không có giá trị “không quan tâm” được tính một luật, mỗi cột có một giá trị “không quan tâm” gấp đôi số luật. Số các luật cũng được chỉ rõ trong Bảng 3.13 (xem hàng số luật), lưu ý rằng tổng số luật trong trường hợp này phải bằng 23 = 8.

Các điều kiện và các hành đồng trong bảng quyết định được xác định bằng cách phân tích chi tiết đặc tả chức năng của chương trình. Chẳng hạn, để minh họa việc xây dựng bảng quyết định, chúng ta xem xét đặc tả chương trình quản lí tệp tin như sau: “kí tự trong cột thứ nhất phải là kí tự“A” hoặc “B”. Trong cột thứ hai, phải là một chữ số. Trong trường hợp này, chúng ta xem tệp tin được cập nhật. Nếu kí tự thứ nhất lỗi, thông điệp X12 phải được in ra. Nếu trong cột thứ hai chúng ta không có một chữ số, thì thông điệp X13 phải được in ra”.

Phân tích đặc tả này, chúng ta xác định ba điều kiện sau: - c1: kí tự của cột thứ nhất là “A”,

Một phần của tài liệu Bài giảng kiểm thử phần mềm đh phạm văn đồng (Trang 56)