220 likes | 403 Views
Kiểm thử và đảm bảo chất lượng phần mềm. Kiểm thử dựa trên bảng quyết định. Tổng quan. Kiểm thử hàm BVA … ECT … Kiểm thử dựa trên bảng quyết định (DT) Bảng quyết định Kỹ thuật Ví dụ. Bảng quyết định. Yêu cầu chức năng có thể mô tả bằng bảng quyết định (DT)
E N D
Kiểmthửvàđảmbảochấtlượngphầnmềm Kiểmthửdựatrênbảngquyếtđịnh
Tổngquan • Kiểmthửhàm • BVA • … • ECT • … • Kiểmthửdựatrênbảngquyếtđịnh(DT) • Bảngquyếtđịnh • Kỹthuật • Vídụ
Bảngquyếtđịnh • Yêucầuchứcnăngcóthểmôtảbằngbảngquyếtđịnh (DT) • DT làmộtcáchchínhxácvàgọnđểmôtả logic phứctạp • Gắncácđiềukiệnvớicáchànhđộngtươngứng • Giốnglệnh if-then-else và switch-case • DT cóthểliênkếtnhiềuđiềukiệnđộclậpvớivàihànhđộngmộtcáchdễhiểu • Kháccáccấutrúcđiềukhiểntrongcácngônngữlậptrình
Vídụvềbảngquyếtđịnh Khắcphụcsựcố máy in
Sửdụngbảngquyếtđịnh • Đểquansáttấtcảcácđiềukiệndễdàng • Cóthểdùngđể • Môtả logic phứctạp • Sinh ca kiểmthử, còngọilàkiểmthửdựatrên logic • Kiểmthửdựatrên logic đượcxemlà: • Kiểmthửcấutrúckhiápdụngchocáccấutrúcchươngtrình • Vdluồngđiềukhiển • Kiểmthửhàmkhiápdụngchođặctả.
Cấutrúcbảngquyếtđịnh • Mỗiđiềukiệntươngứngvớimộtbiến, mộtquanhệ, hoặcmộtmệnhđề (predicate) • Cácgiátrịcủađiềukiện • Chỉlà True/False – Bảngquyếtđịnhhạnchế • Mộtsốgiátrị– Bảngquyếtđịnhmởrộng • Giátrịkhôngquantâm • Mỗihànhđộnglàmộtthủtụchoặcthaotácphảithựchiện • Đánhdấuhànhđộngcó/khôngxảyra
Vídụbảngquyếtđịnh tính lương Cách tính lương
Phương phápxâydựngbảng • Xácđịnhcácđiềukiệnvàgiátrịcủachúng • Xácđịnhsốluậttốiđa • Xácđịnhcáchànhđộng • Đánhsốcácluậtnếucần • Đánhsốcáchànhđộngthíchhợpchomỗiluật • Kiểmtrachínhsách • Đơngiảnhóacácluật (gộpcột)
Sửdụngbảngquyếtđịnh • Bảng thích hợp khi: • Đặc tả có thể chuyển về dạng bảng • Thứ tự các hành động xảy ra không quan trọng • Thứ tự các luật không ảnh hưởng đến hành động • Khi một luật thỏa mãn và được chọn thì không cần xét luật khác • Các hạn chế trên không ảnh hưởng đến việc sử dụng bảng • Trong hầu hết các ứng dụng thứ tự các mệnh đề được xét là không quan trọng
Mộtsốvấnđềvớibảngquyếtđịnh • Trướckhisửdụngbảngcầnđảmbảo: • Cácluậtphảiđầyđủ • Cómọitổhợp • Cácluậtphảinhấtquán • Mọitổhợpgiátrịchânlýchỉgâyramộthoặcmộttậphànhđộng
Thiết kế ca kiểmthử • Khiđặctảđãđượckiểmtra, mụctiêulàchứngtỏchươngtrìnhthựchiệncáchànhđộngđúngchomọitổhợpcácgiátrịcủamệnhđề • Nếucó k luậtvà n mệnhđềđúng/sai, thìcóítnhất k trườnghợpvànhiềunhấtlà 2^n trườnghợpphảixét. • Cóthểdựatrêncácluậtchưamởrộnghoặccácluậtđãmởrộngvới 2^n ca • Xácđịnhđầuvàochomỗi ca
Thiết kế ca kiểmthử • Đểxácđịnh ca kiểmthử, chúng ta chuyểncácđiềukiệnthànhđầuvào, hànhđộngthànhđầura. • Mộtsốđiềukiệnsẽthamchiếuđếncác lớp tươngđươngđầuvào, vàhànhđộngthamchiếuđếncácphầnxửlýchứcnăngchínhcủacộtđangxét. • Cácluậtđượcchuyểnthànhcác ca kiểmthử
Bảng quyết định cho NextDate(thử lần 1) • Chúng ta cóthể chia thànhcác lớp tươngđươngsau: M1= {month | month has 30 days} M2= {month | month has 31 days} M3= {month | month is February} D1= {day | 1 ≤ day ≤ 28} D2= {day | day = 29} D3= {day | day = 30} D4= {day | day=31} Y1= {year | year = 1900} Y2= {year | 1812 ≤ year ≤ 2012 AND year ≠ 1900 AND (0 = year mod 4} Y3= {year | 1812 ≤ year ≤ 2012 AND 0 ≠ year mod 4} • Khiđó ta cóbảngquyếtđịnhnhưsau
BảngquyếtđịnhchoNextDate(Lầnthử 2) • Xétmộtcáchphânhoạchkhác: M1= {month | month has 30 days} M2= {month | month has 31 days} M3= {month | month is December} M4= {month | month is February} D1= {day | 1 ≤ day ≤ 27} D2= {day | day = 28} D3= {day | day = 29} D4= {day | day = 30} D5= {day | day=31} Y1= {year | year is a leap year} Y2= {year | year is a common year} M1= {month | month has 30 days} M2= {month | month has 31 days} M3= {month | month is February} D1= {day | 1 ≤ day ≤ 28} D2= {day | day = 29} D3= {day | day = 30} D4= {day | day=31} Y1= {year | year = 1900} Y2= {year | 1812 ≤ year ≤ 2012 AND year ≠ 1900 AND (0 = year mod 4} Y3= {year | 1812 ≤ year ≤ 2012 AND 0 ≠ year mod 4}
Quan sátvàhướngdẫn • Bảngquyếtđịnhphùhợpkhi • Cónhiềuquyếtđịnhđưara • Cócácquanhệ logic quantrọnggiữacácbiếnđầuvào • Cócác tính toán liênquanđếncáctập con củacácbiếnđầuvào • Cóquanhệnhânquảgiữađầuvàovàđầura • Có logic tính toán phứctạp (độphứctạpđồ thị cyclomaticcao) • Bảngquyếtđịnhkhôngdễmởrộng (scale up) • Bảngquyếtđịnhcóthểlàmmịn, cảitiếndần
Bàitập • Ứngdụngkiểmthửbảngquyếtđịnhchomộtsốbài toán vídụ