Kiểm thử và đảm bảo chất lượng phần mềm
description
Transcript of Kiểm thử và đảm bảo chất lượng phần mềm
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
4
là mô tả một phần
Mô hình Hệ thống
Kiểm thử trừu tượng
Kiểm thử chạy được
có thể chạy với
là trừu tượng của
có thể rút ra từ
Các bước chính trong MBT
1. Lập mô hình cho hệ thống2. Sinh kiểm thử trừu tượng từ mô hình3. Tạo ca kiểm thử cụ thể chạy được với hệ
thống4. Chạy ca kiểm thử và gán phán quyết5. 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
8
Một số công cụ
• Spec Explorer • UPPAAL• CowSuite• JUMBL
• http://robertvbinder.com/open-source-tools-for-model-based-testing/
Spec Explorerenum MESSAGE {ShowBalance, Insuffi�c�entFunds, Dr�nkNotAva�lable, OutOfServ�ce};MESSAGE d�splay = MESSAGE.ShowBalance;�nt balance = 0;[Act�on]�nt �nsertCo�n(�nt co�n)requ�res 5 <= co�n && co�n <= 100;requ�res d�splay != MESSAGE.OutOfServ�ce;{ d�splay = MESSAGE.ShowBalance; �f (balance + co�n <= 200) { balance = balance + co�n; return 0; } else { return co�n; }}[Act�on]
�nt returnBalance(){ �nt temp = balance; balance = 0; return temp;}
9
Mô hình Spec# của hàm insertCoin và returnBalance.
11
Ví dụ với Spec ExplorerDescription Line Column
1 Method SlowpokeAdd�t�on.Add(�nt x, �nt y), unsat�sfi�ed postcond�t�on: result == 2*x + y 2 14
2 (trace pos�t�on) 12 5
c.ssc(2,14): warn�ng CS2663: Method SlowpokeAdd�t�on.Add(�nt x, �nt y), unsat�sfi�ed postcond�t�on: result == 2*x + yc.ssc(12,5): warn�ng CS2663: (trace pos�t�on)