Kiểm thử dựa trên mô hình

Download Report

Transcript Kiểm thử dựa trên mô hình

Kiểm thử và đảm bảo chất lượng
phần mềm
Kiểm thử dựa trên mô hình
1
Nội dung
• Mô hình
• Kiểm thử dựa trên mô hình (MBT)
• Công cụ
2
Mô hình
• Một mô hình là một biểu diễn trừu tượng về
hệ thống
• Ngôn ngữ mô hình hóa
– UML
– SysML
– Máy hữu hạn trạng thái
– Ngôn ngữ mô hình hóa
– ...
3
Kiểm thử dựa trên mô hình
• MBT là kỹ thuật hộp đen sinh các ca kiểm thử
từ một mô hình mô tả các khía cạnh chức
năng của hệ thống và chạy các ca kiểm thử
này
là mô tả một phần
Hệ thống
Mô hình
có thể chạy với
có thể rút ra từ
Kiểm thử
trừu tượng
Kiểm thử chạy
được
là trừu tượng của
4
Các bước chính trong MBT
1. Lập mô hình cho hệ thống
2. Sinh kiểm thử trừu tượng từ mô hình
3. Tạo ca kiểm thử cụ thể chạy được với hệ
thống
4. Chạy ca kiểm thử và gán phán quyết
5. Phân tích kết quả kiểm thử
5
Ưu điểm
•
•
•
•
•
Tăng chất lượng sản phẩm
Dễ trao đổi thông tin qua mô hình
Dễ cập nhật bộ kiểm thử khi mô hình thay đổi
Có thể phát hiện mơ hồ trong đặc tả và thiết kế
Sinh được nhiều bộ kiểm thử từ mô hình khi
dùng các tiêu chuẩn lựa chọn kiểm thử khác nhau
• Độ phức tạp của mô hình thấp hơn
6
Nhược điểm
• Cần người (kiểm thử) có kỹ năng, xây dựng mô
hình, sử dụng công cụ
• Cần đầu tư ban đầu lớn
• Vẫn không thể bắt được hết lỗi
7
Một số công cụ
•
•
•
•
Spec Explorer
UPPAAL
CowSuite
JUMBL
•
http://robertvbinder.com/open-source-tools-for-model-based-testing/
8
Spec Explorer
enum MESSAGE {ShowBalance, InsufficientFunds,
DrinkNotAvailable, OutOfService};
MESSAGE display = MESSAGE.ShowBalance;
int balance = 0;
[Action]
int insertCoin(int coin)
requires 5 <= coin && coin <= 100;
requires display != MESSAGE.OutOfService;
{
display = MESSAGE.ShowBalance;
if (balance + coin <= 200)
{
balance = balance + coin;
return 0;
}
else
{
return coin;
}
}
[Action]
int returnBalance()
{
int temp = balance;
balance = 0;
return temp;
}
Mô hình Spec# của hàm insertCoin
và returnBalance.
9
Ví dụ với Spec Explorer
•
http://rise4fun.com/SpecSharp/Add
10
Ví dụ với Spec Explorer
Description
Line
Column
1
Method SlowpokeAddition.Add(int x, int y), unsatisfied postcondition:
result == 2*x + y
2
14
2
(trace position)
12
5
c.ssc(2,14): warning CS2663: Method SlowpokeAddition.Add(int x,
int y), unsatisfied postcondition: result == 2*x + y
c.ssc(12,5): warning CS2663:
(trace position)
11