140 likes | 465 Views
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. Nội dung. Mô hình Kiểm thử dựa trên mô hình (MBT) Công cụ. 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. Hệ thống. Mô hình.
E N D
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
Nội dung • Mô hình • Kiểm thử dựa trên mô hình (MBT) • Công cụ
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 • ...
Hệ thống Mô hình Kiểm thử trừu tượng Kiểm thử chạy được 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 có thể chạy với có thể rút ra từ là trừu tượng của
Các bước chính trong MBT • Lập mô hình cho hệ thống • Sinh kiểm thử trừu tượng từ mô hình • Tạo ca kiểm thử cụ thể chạy được với hệ thống • Chạy ca kiểm thử và gán phán quyết • Phân tích kết quả kiểm thử
Ư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
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
Một số công cụ • Spec Explorer • UPPAAL • CowSuite • JUMBL • http://robertvbinder.com/open-source-tools-for-model-based-testing/
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.
Ví dụ với Spec Explorer • http://rise4fun.com/SpecSharp/Add
Ví dụ với Spec Explorer 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)