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