Saturday, April 9, 2022

Kiểm thử bằng bảng quyết định

Giới thiệu

Có bao giờ bạn tự hỏi đâu là phương pháp kiểm thử chức năng hiệu quả nhất không? Có phải là phương pháp kiểm thử giá trị biên hay kiểm thử phân lớp tương đương? Câu trả lời là phương pháp kiểm thử bằng bảng quyết định [1]. Lý do của việc này là trong hai phương pháp kiểm thử giá trị biên và kiểm thử phân lớp tương đương, các giá trị của tham số đầu vào của hàm là không liên quan đến nhau. Việc này rất khó xảy ra trong thực tế. Phương pháp kiểm thử bằng bảng quyết định là phương pháp giúp kiểm thử viên có thể mô tả được điều kiện xảy ra, hành vi tương ứng của hàm trong những trường hợp đó. Việc này có thể giúp ta mô tả sự liên quan đến nhau của những tham số đầu vào của hàm.

Cấu trúc của bảng quyết định

Một bảng quyết định bao gồm bốn thành phần như sau:

+ Các biểu thức điều kiện C1, C2, C3, v.v.

+ Giá trị của các điều kiện này: T, F, - (không xác định).

+ Hành vi tương ứng của hàm: A1, A2, A3, v.v.

+ Giá trị của hành vi: x: có xảy ra, rỗng: không xảy ra.

Hình sau đây nêu ví dụ về một bảng quyết định với bốn đầu vào được mô tả phía trên.

 

Quy tắc

1

2

3

4

5

6

Điều kiện

C1

T

T

T

T

F

F

C2

T

T

F

F

F

F

C3

T

F

T

F

T

F

Hành vi

A1

x

 

x

x

 

 

A2

 

x

 

 

x

 

A3

x

 

 

 

 

x

 Xét về bản chất, thứ tự của các điều kiện C1, C2, C3, các hành động A1, A2, A3, và các quy tắc 1, 2, v.v. là không quan trọng. Ta có thể thay đổi để phù hợp ngữ cảnh của mình. Tuy nhiên, do mỗi giá trị điều kiện có thể là T, F, hoặc -, ta có thể tăng các cột để phủ hết tổ hợp của các giá trị này.

Thực tế áp dụng

Trong thực tế, để áp dụng phương pháp kiểm thử bằng bảng quyết định, ta cần nắm được quy tắc và bản chất của nó là điều kiện ràng buộc giữa các đầu vào và hành vi tương ứng của hàm hay của phần mềm. Từ đó, ta thấy rằng, phương pháp này có thể được áp dụng không chỉ với hàm mà còn có thể được áp dụng cho việc kiểm thử giao diện với nhiều đầu vào là các điều khiển người dùng. Ngoài ra, ta có thể áp dụng nó cho việc kiểm thử những hành vi của hệ thống phần mềm nói chung với một tập những tham số, sự kiện, thao tác của người dùng hoặc của các hệ thống khác.

Ví dụ

Xét hàm kiểm tra một tam giác có phải tam giác cân hay không

void IsoscelesTriangle(int a, int b, int c)

{

    if( a<b+c && b<a+c && c<a+b ){

        if(a==b || a==c || b==c)

            cout<<"Tam giac can";       

        else

            cout<<"Tam giac khong can";    

    }

    else

        cout<<"Khong phai mot tam giac";

}

  

 

Quy tắc

1

2

3

4

Điều kiện

a<b+c && b<a+c && c<a+b

T

T

F

F

a==b || a==c || b==c

T

F

T

F

Hành vi

Tam giac can

x

 

 

 

Tam giac khong can

 

x

 

 

Khong phai mot tam giac

 

 

x

x

 

Tài liệu tham khảo

[1] Phạm Ngọc Hùng, Trương Anh Hoàng, Đặng Văn Hưng, Giáo trình kiểm thử phần mềm, NXB ĐHQG HN, 2014

Kiểm thử cặp đôi thông minh

  Kiểm thử cặp đôi thông minh (pairwise testing) là một trường hợp đặc biệt của phương pháp kiểm thử tổ hợp. Trong phương pháp kiểm thử cặp ...