Khóa luận Kiểm thử dựa trên mô hình

ĐẠI HC QUC GIA HÀ NI  
TRƯỜNG ĐẠI HC CÔNG NGHỆ  
Đoàn Trung Kiên  
KIM THDA TRÊN MÔ HÌNH  
KHOÁ LUN TT NGHIỆP ĐẠI HC HCHÍNH QUY  
Ngành: Công nghthông tin  
HÀ NI - 2010  
ĐẠI HC QUC GIA HÀ NI  
TRƯỜNG ĐẠI HC CÔNG NGHỆ  
Đoàn Trung Kiên  
KIM THDA TRÊN MÔ HÌNH  
KHOÁ LUN TT NGHIỆP ĐẠI HC HCHÍNH QUY  
Ngành: Công nghthông tin  
Cán bộ hướng dn: TS. Phm Ngc Hùng  
Cán bộ đồng hướng dn: ThS. Đặng Vit Dũng  
HÀ NI - 2010  
Kim thda trên mô hình  
Đoàn Trung Kiên  
LI CẢM ƠN  
Lời đầu tiên em xin bày tlòng biết ơn sâu sắc ti TS. Phm Ngc Hùng và  
ThS. Đặng Vit Dũng, các thầy đã hướng dn em tn tình trong suốt năm học va qua.  
Em xin bày tlòng biết ơn tới các thy, cô giáo trong Khoa Công nghthông  
tin - Trường Đại hc Công ngh- ĐHQGHN. Các thầy cô đã dy bo, chdn em  
và luôn tạo điều kin tt nht cho em hc tp trong sut quá trình học đại học đặc  
bit là trong thi gian làm khoá lun tt nghip.  
Con xin chân thành cảm ơn Ông Bà, Cha Mẹ đã luôn động viên, ng hvt  
cht ln tinh thn trong sut thi gian qua.  
Tôi xin cảm ơn sự quan tâm, giúp đỡ ng hca anh ch, bạn bè, đặc bit  
là các bn sinh viên lớp K51CB trường Đại hc Công nghtrong quá trình thc  
hin khóa lun.  
Mặc dù đã cgng hoàn thành khóa lun trong phm vi và khả năng cho  
phép nhưng chắc chn skhông tránh khi nhng thiếu sót. Em rt mong nhận đưc  
sthông cm, góp ý và tn tình chbo ca quý Thy Cô và các bn.  
Ni, ngày 05 tháng 05 năm 2008  
Đoàn Trung Kiên  
i
Kim thda trên mô hình  
Đoàn Trung Kiên  
TÓM TT  
Quá trình sinh các ca kim thtự động da trên mô hình gồm các công đoạn  
chính: Xây dng mô hình, nhúng mã C, áp dng công cụ Spin để sinh các ca kim  
th. Trong đó xây dng mô hình là công đoạn đầu tiên, nhim vchính ở đây là từ  
mô tcác yêu cu ca hthng và chức năng xác định cùng vi dliệu đầu vào và  
ra phi xây dựng được mô hình ca hthng. Xây dng mô hình có vai trò hết sc  
quan trng, nếu vic xây dng mô hình không chính xác thì các công đoạn vsau  
trong hthng kim thda trên mô hình không thể chính xác được. Do tm quan  
trọng đó của vic xây dng mô hình, khóa luận này đề cp ti các lý thuyết cơ bản  
vxây dng mô hình ca hthng bng ngôn ngmô hình promela.  
Trong khóa lun này tôi trình bày phương pháp nhúng mã ngun C vào trong  
mô tả promela để lc các trng thái và sinh các ca kim thmt cách tự động bng  
công chtrkim thSpin. Từ đó áp dng các kthut trên vào bài toán cthể  
kitchen timer.  
ii  
Kim thda trên mô hình  
Đoàn Trung Kiên  
MC LC  
CHƯƠNG 1 GIỚI THIU.......................................................................................1  
1.1  
1.2  
1.3  
Đặt vấn đề.....................................................................................................1  
Ni dung nghiên cu ca khóa lun ..............................................................1  
Cu trúc khóa lun ........................................................................................1  
CHƯƠNG 2 CƠ SỞ LÝ THUYT CHO KIM THMÔ HÌNH...........................3  
2.1  
2.2  
2.3  
2.4  
2.5  
Khái nim kim thda trên mô hình ...........................................................3  
Các bước thc hin .......................................................................................3  
Thun lợi và khó khăn của kim thda trên mô hình ..................................4  
Máy hu hn trng thái ( Finite State Machines )..........................................5  
Bài toán Kitchen Timer.................................................................................6  
2.5.1  
2.5.2  
Miêu tbài toán.....................................................................................6  
Xây dng mô hình .................................................................................6  
CHƯƠNG 3 GIỚI THIU PROMELA VÀ SPIN....................................................8  
3.1 Ngôn ngPromela ........................................................................................8  
3.1.1  
3.1.2  
Khái niệm cơ bản...................................................................................8  
Biến và Kiu..........................................................................................9  
Định danh, Hng svà Biu thc.........................................................10  
Tiến trình.............................................................................................11  
3.1.3  
3.1.4  
3.2  
3.2.1  
3.2.2  
Công cSpin ..............................................................................................12  
Sơ lược vSpin....................................................................................12  
Công cXSpin.....................................................................................12  
CHƯƠNG 4 SINH CA KIỂM THTỰ ĐNG VÀ THC NGHIM .................21  
4.1  
4.2  
Phương pháp sinh các ca kiểm thtự đng .................................................21  
dáp dng..............................................................................................22  
4.2.1  
4.2.2  
tbài toán......................................................................................23  
Máy hu hn trng thái ca Kitchen Timer ..........................................23  
Đặc tkitchen timer bng promela có nhúng mã C ..............................24  
Kết qu................................................................................................30  
4.2.3  
4.2.4  
CHƯƠNG 5 KẾT LUN ......................................................................................32  
Phlục A: Đặc tca kitchen timer bng promela có nhúng mã C ........................33  
Phlc B: Mt sca kim th...............................................................................42  
TÀI LIU THAM KHO......................................................................................44  
iii  
Kim thda trên mô hình  
Đoàn Trung Kiên  
DANH MC HÌNH VẼ  
Hình 1: Các bước thc hin kim thmô hình. .......................................................4  
Hình 2: Mô hình chuyển đi trng thái ca kitchen timer.........................................7  
Hình 3: Màn hình ca schính ca XSpin.............................................................13  
Hình 4: Ca schức năng Run Slicing algorithm...................................................14  
Hình 5: Ca schính chức năng Set Simulation Parameters. .................................15  
Hình 6: Ca skhi chy chức năng Run Simulation. .............................................16  
Hình 7: Ca schính chức năng Set Verification Parameters.................................17  
Hình 8: Ca skhi chy chức năng Run Verification.............................................18  
Hình 9: Ca skhi chy chức năng LTL Property Manager...................................19  
Hình 10: Ca skhi chy chức năng View Spin Automaton..................................20  
Hình 11: Kiến trúc hthng kitchen timer. ............................................................23  
Hình 12: Mô hình máy hu hn trng thái kitchen timer. .......................................24  
iv  
Kim thda trên mô hình  
Đoàn Trung Kiên  
CHƯƠNG 1  
GII THIU  
1.1  
Đặt vấn đề  
Trong các công ty phát trin phn mm hu hết công vic kim thca kim  
thử viên được thc hin thcông bng tay. Trong khi đó số lượng tình hung kim  
tra quá nhiu mà các kim thviên không thhoàn tt bng tay trong thi gian cụ  
thể nào đó. Hoc khi nhóm lp trình đưa ra nhiều phiên bn phn mm liên tiếp để  
kim tra. Thc tế cho thy việc đưa ra các phiên bản phn mm có thlà hàng ngày,  
mi phiên bn bao gm những tính năng mới, hoặc tính năng cũ được sa li hay  
nâng cp. Vic bsung hoc sa li code cho những tính năng ở phiên bn mi có  
thlàm cho những tính năng khác đã kim tra tt chy sai mc dù phn code ca nó  
không hchnh sửa. Để khc phục điều này, đối vi tng phiên bn, kim thviên  
không chkim tra chức năng mới hoặc được sa, mà phi kim tra li tt cnhng  
tính năng đã kim tra tốt trước đó. Điều này khó khthi vmt thi gian nếu kim  
tra thông thường. Để gii quyết vấn đề này chúng ta áp dng kthut kim thda  
trên mô hình cho quá trình sinh các ca kim thtự đng .  
Do đó, khoá lun này tp trung trình bày vvic nghiên cu kim thda  
trên mô hình và ng dng công cSpin vào vic tự động sinh các ca kim th: Xây  
dng mô hình hthng và thc nghim.  
1.2  
Ni dung nghiên cu ca khóa lun  
Bài toán thc hin trong khóa lun này là bài toán kim thda trên mô hình  
để sinh ra các ca kim thmt cách tự động. Thiết kế hthng bng ngôn ngữ  
Promela và nhúng mã C vào thiết kế Promela là hai ni dung quan trong nht ca  
quá trình sinh ca kim thtự động. Tôi nghiên cu phương pháp được sdụng để  
thc hin các nội dung đó, và áp dng nó vào bài toán sinh ca kim thtự động ca  
hthng máy hn gikitchen timer.  
Quá trình thc nghim sbao gm các thc nghim vthiết kế hthng  
kitchen timer bng Promela, nhúng mã ngun C vào thiết kế Promela ca hthng  
và sdng Spin sinh các ca kim thmt cách tự đng.  
1.3  
Cu trúc khóa lun  
Các phn còn li ca khóa lun có cấu trúc như sau:  
1
Kim thda trên mô hình  
Đoàn Trung Kiên  
Chương 2 trình bày cơ sở lý thuyết ca kim thmô hình, bao gm các khái  
niệm cơ bản, các bước thc hin, li ích ca kim thmô hình và cách thc xây  
dng mô hình (máy hu hn trng thái).  
Chương 3 trình bày các khái nim vngôn ngmô hình promela, bao gm  
các định nghĩa cơ bản vkhai báo biến và kiu, định danh, hng s, biu thc,  
tiến trình.  
Chương 4 trình bày vcác kết quthc nghim ca quá trình mô tmáy hn  
gikitchen timer, thiết kế mô hình hthng kitchen timer bng Promela, và quá  
trình sinh ca kim thtự đng.  
Chương 5 tóm tt các kết quả đã đạt được, kết lun, nhng hn chế và hướng  
nghiên cu phát triển trong tương lai.  
2
Kim thda trên mô hình  
Đoàn Trung Kiên  
CHƯƠNG 2  
CƠ SỞ LÝ THUYT CHO KIM THMÔ HÌNH  
Quá trình thiết kế mô hình ca hthng bng ngôn ngmô hình Promela  
làm vic da trên các khái nim vkim thmô hình. Chương này sẽ lần lượt trình  
bày nhng khái nim cơ bn vkim thmô hình.  
2.1  
Khái nim kim thda trên mô hình  
Theo Colin Campbell, kim thda trên mô hình là mt kthut kim thử  
mà các hoạt động ca hthống được chy thtrong mt thi gian sẽ được dự đoán  
trước, nó được thc hin bi một đc thình thc hoc mt mô hình ca hthng.  
Các mu thiết kế hay mô hình là mô tả đơn giản ca hthng da trên yêu  
cu hthng và chức năng xác định, giúp chúng ta có thhiu và dự đoán được  
hành vi ca hthng.  
2.2  
Các bước thc hin  
Quá trình kim thda trên mô hình được bắt đầu bng việc xác định yêu  
cu ca hthng từ đó xây dựng mô hình da vào các yêu cu và chức năng ca hệ  
thng. Vic xây dng mô hình còn phi da trên các yếu tdliệu đầu vào và đầu  
ra. Mô hình này được sdụng để sinh ra các ca kim th. Chúng ta có thbiết kết  
quả đầu ra mong đợi tmô hình hoc từ quy định chun ( oracle ). Khi chy kch  
bn và kết quthu được sẽ được so sánh vi kết quả mong đợi. Từ đó quyết định  
hành động tiếp theo như sửa đổi mô hình hoc dng kim th,…  
Các bước để thc hin kim thda trên mô hình:  
Xây dng mô hình da trên các yêu cu và chức năng ca hthng.  
Tạo đu ra dkiến tmô tbài toán.  
Chy kch bn kim th.  
So sánh kết quả đầu ra thc tế vi kết quả đầu ra dkiến.  
Quyết định hành động tiếp theo (Sửa đổi mô hình, to thêm ca kim th,  
dng kim thử, đánh giá chất lượng ca phn mm )  
Các bước thc hin kim thda trên mô hình được minh ha bằng sơ  
đồ sau:  
3
Kim thda trên mô hình  
Đoàn Trung Kiên  
Hình 1: Các bước thc hin kim thmô hình.  
2.3  
Thun lợi và khó khăn ca kim thda trên mô hình  
Thun li  
Trong phát trin phn mm các kim thử viên thường thc hin công  
vic ca mình bằng phương pháp truyền thống nên thường thiếu thời gian để  
thc hin kim th, hoc giá thành sn phẩm khi hoàn thành thường cao….  
Và kim thda trên mô hình skhc phục được mt số nhược điểm đó:  
. Do quá trình sinh ca kim thlà tự động vì vy mà rút ngn thi  
làm phn mm, và chất lưng phn mm tốt hơn.  
. Đặc bit tuy chi phí ln cho vic xây dng mô hình nhưng điều  
này sẽ được khu trdo chi phí bảo dưỡng thấp hơn nhiều khi hệ  
thống được hoạt đng.  
. Quá trình sinh ra các ca kim thử đưc thc hin mt cách tự đng  
nên sinh ra nhiu ca kim thvà phát hin nhiu li.  
. Ngưi kim thphn mm cần thường xuyên trao đổi với người  
phát trin phn mm trong khi xây dng mô hình hthng vì vy mà  
4
Kim thda trên mô hình  
Đoàn Trung Kiên  
tăng khả năng giao tiếp trao đổi giữa người phát trin phn mm, và  
ngưi kim th.  
. Ngưi kim thskhông bnhàm chán khi phi thc hin lp li  
nhiu ln mt công vic, điều đó làm cho người kim thhài lòng vi  
công vic ca mình.  
. Sm phát hin li và skhông rõ ràng trong đặc điểm kthut và  
thiết kế vì vy sẽ tăng thời gian gii quyết vấn đề trong kim th.  
. Tự động to và kim tra chánh các ca kim thtrùng nhau hoc  
không hu hiu.  
. Khi mt yêu cu ca hthống thay đổi việc thay đổi các ca kim  
thlà rt phc tạp nhưng nó được gii quyết khi mà kim thda trên  
mô hình. Việc thay đổi các ca kim thchviệc thay đổi mô hình ca  
hthng.  
. Có khả năng đánh giá chất lượng phn mm.  
Khó khăn  
Mc dù có nhiu thun li nhưng bên cạnh đó cũng có những trngi  
nhất đnh ca kim thda trên mô hình:  
. Do phi xây dng mô hình ca hthng vì vy người kim thử  
phn mm phi yêu cu là những người có khả năng phân tích và thiết  
kế hthng.  
. Trong kim thda trên mô hình công vic quan trng nht là xây  
dng mô hình. Người kim thphải đu tư đáng kể cvthi gian, trí  
tuvà tin bc cho vic xây dng mô hình hthng.  
. Giống như các phương pháp kiểm thkhác, vic kim thda trên  
mô hình chphát hiện đưc li ca hthng mà không thphát hin  
được hthng còn li hay không.  
2.4  
Máy hu hn trng thái ( Finite State Machines )  
Trong kim thphn mm có nhiu kiu mô hình được sdụng như : Finite  
State Machines, UML, Grammars, ... Trong nghiên cu này trình bày vmô hình  
máy hu hn trng thái: Finite State Machines.  
Mt máy trng thái mô tcho hthng phn mềm được định nghĩa dựa vào  
( I, S, T, F, L), trong do:  
5
Kim thda trên mô hình  
Đoàn Trung Kiên  
I : Tp hp các yếu tố đầu vào ca hthng.  
S : Tp các trng thái ca hthng.  
T : Tp hp hàm chuyển đi trạng thái khi đầu vào là mt trng thái cth.  
F : Tp hp các trng thái kết thúc.  
L : Trạng thái ban đu ca hthng.  
2.5  
Bài toán Kitchen Timer  
Chúng ta sda vào các khái nim ca máy hu hn trạng thái để xây dng  
mô hình hthng kitchen timer.  
2.5.1 Miêu tbài toán  
Kitchen timer là mt thiết bhn giờ đơn giản dùng trong nhà bếp. Chúng ta  
ấn nút SW1 để thiết lp thi gian cho hthng, ấn nút SW2 để bắt đầu đếm ngược  
thi gian. Thi gian có ththiết lập đưc là 1 phút đến 3 phút (đơn vị thi gian thiết  
lp là phút). Thi gian thiết lập được hin thbằng 2 đèn LED. Khi đếm ngưc thi  
gian, 2 đèn LED sẽ nhp nháy. Nếu đang trong lúc đang đếm ngược, n nút SW1 thì  
đếm ngược sbdng (trvtrng thái thiết lp), n nút SW2 thì đếm ngược stm  
thi dng. Nếu đếm ngược kết thúc (thi gian trv0) thì 2 đèn LED sẽ cùng sáng  
trong vòng 3 giây để thông báo cho người dùng biết.  
2.5.2 Xây dng mô hình  
Biu din:  
“Kitchen Timer” = (I, S, T, F, L) trong đó:  
I = {<Thiết lp>, <Đếm ngược>, <Tm dng>, <Tiếp tc>,<Đếm  
ngưc kết thúc>}  
S = {[Ch], [Thiết lp thời gian], [Đếm ngược], [Tm dng]}  
T:  
<Thiết lp> Thay đổi t[Ch] sang [Thiết lp thi gian]  
<Đếm ngưc> Thay đổi t[Thiết lp thi gian] sang [Đếm  
ngưc]  
<Tm dng> Thay đổi t[Đếm ngược] sang [Tm dng]  
<Tiếp tc> Thay đổi t[Tm dng] sang [Đếm ngược]  
<Đếm ngược kết thúc> Thay đổi t[Đếm ngược] sang [Ch]  
6
Kim thda trên mô hình  
Đoàn Trung Kiên  
F = [Ch]  
L = [Ch]  
Mô hình chuyn đổi trng thái  
Tm dng  
Tm  
Tiếp tc  
dng  
Thiết  
lp  
Đếm  
ngưc  
Chờ  
Thiết lp  
thi gian  
Đếm ngược  
Đếm ngược kết  
thúc  
Hình 2: Mô hình chuyển đi trng thái ca kitchen timer.  
7
Kim thda trên mô hình  
Đoàn Trung Kiên  
CHƯƠNG 3  
GII THIU PROMELA VÀ SPIN  
Chương này chúng ta sẽ biết cách sinh các ca kim thmt cách tự động  
bng công cSpin. Để có thlàm việc được vi Spin chúng ta phi xây dng mô  
hình ca hthng bng ngôn ngPromela. Chương này sẽ lần lượt trình bày nhng  
khái nim cơ bản vngôn ngmô hình Promela, công cSpin, và giao diện người  
dùng XSpin.  
3.1  
Ngôn ngPromela  
Xây dng mô hình hthng bng ngôn ngPromela là một công đoạn quan  
trng trong kim thda trên mô hình, để từ đó có thể dùng công cSpin sinh ra  
các ca kim th. Ngôn ngmô hình Promela có nhiều nét tương đồng vi ngôn ngữ  
C.  
3.1.1 Khái niệm cơ bản  
Định nghĩa Promela (Process meta language )  
Promela là ngôn ngmô hình dùng để mô ththống đồng thi [The Spin  
Model Checker: Primer and Reference Manual].  
Ví d: Giao thc mng, hthống điện thoại, các chương trình giao tiếp đa  
lung,…  
Cấu trúc chương trình Promela  
Một chương trình Promela cơ bản gm:  
. Khai báo kiu.  
. Khai báo biến.  
. Khai báo tiến trình.  
. [init process].  
// Các khai báo kiu và biến  
mtype = {MSG, ACK};  
chan toS = ...  
chan toR = ...  
bool flag;  
// Mt tiến trình  
8
Kim thda trên mô hình  
Đoàn Trung Kiên  
proctype Sender() {  
// Thân mt tiến trình  
...  
}
proctype Receiver() {  
...  
}
// Tiến trình init  
init {  
// To mt tiến trình  
...  
}
3.1.2 Biến và Kiu  
Giống như nhiều ngôn nglp trình khác, Promela yêu cu các biến phi  
được khai báo trước khi chúng có thể đưc sdng. Khai báo biến theo phong cách  
ca ngôn nglp trình C. Theo mặc đnh tt ccác biến ca các loi biến cơ bản  
được bắt đu t0. Cũng như trong C thì 0 được coi như sai và khác 0 được coi là  
đúng. Mt biến có thlà biến toàn cc hoc là biến địa phương của mi tiến trình.  
Kiu dliu  
Type  
bit or bool  
byte  
Domain  
{ 0, 1}  
0…255  
short  
-215 … 215 - 1  
-231 … 231 – 1  
int  
Kiu khai báo  
int  
ii;  
bit  
bb;  
bb = 1;  
ii = 2;  
Kiu cu trúc  
Records (structs): Có thtìm ra xung đột khi chy  
Typedef record{  
short f1;  
9
Kim thda trên mô hình  
Đoàn Trung Kiên  
byte f2;  
}
Truy cập như C  
Record  
rr;  
rr.f1 = …  
Kiu mng  
Mt mng có cấu trúc như sau:  
int table[max]  
Lưu ý rằng điều này to ra mt mng max-1 snguyên:  
table[0], table[1], ... table[max-1]  
Kiu lit kê  
Mt bcác hng số tượng trưng được khai báo như sau:  
mtype = {LINE_CLEAR, TRAIN_ON_LINE, LINE_BLOCKED}  
3.1.3 Định danh, Hng svà Biu thc  
Định danh  
Định danh có thlà mt chcái, mt ký t.  
Hng số  
Hng slà mt chui ký tự đi din cho mt snguyên thp phân.  
Hng số tượng trưng có thể được định nghĩa như sau:  
#define MAX 999  
Biu thc  
Mt biu thức được xây dng tcác biến, hng svà sdng các  
toán tử sau đây:  
+, -, *, /, %, --, ++,  
>, >=, <, <=, ==, !=,  
&&, ||, !,  
10  
Kim thda trên mô hình  
Đoàn Trung Kiên  
&, |, ~, ^, >>, <<,  
!, ?,  
(), [],  
3.1.4 Tiến trình  
Mt tiến trình được khai báo bắt đầu bng mt tkhóa proctype và gm có:  
Tên  
Danh sách thông schính  
Khai báo biến cc bộ  
Thân chương trình  
Cú pháp ca mt khai báo tiến trình  
proctype name( /* formal parameter list */ )  
{
/* các khai báo địa phương và các lệnh */  
}
/* */ quy định gii hn chú thích trong promela  
Tiến trình init  
Tt cả các chương trình promela đều cn mt tiến trình init nó ging  
như hàm main() trong ngôn ngữ C. Vic thc thi một chương trình promela  
được bắt đu ttiến trình init.  
Mt tiến trình init có dng:  
init { /* Các khai báo địa phương và các biểu thc. */ }  
Đơn giản nht có thể là chương trình promela có dng:  
init { skip }  
Skip có nghĩa là không có biu thc nào trong tiến trình init;  
11  
Kim thda trên mô hình  
Đoàn Trung Kiên  
Mi tiến trình được định nghĩa bởi một proctype, nó được thực thi đồng thi vi  
tt ccác tiến trình khác, nó giao tiếp vi các tiến trình khác thông qua vic sdng  
các biến công cng hoc các kênh. Tiến trình thc thi sau khi thc hin hàm run.  
3.2  
3.2.1 Sơ lược vSpin  
Spin là công cmã ngun m, phbiến và được sdng bi hàng ngàn  
Công cSpin  
ngưi trên toàn cầu. Nó được sdng cho vic xác minh thẩm định ca các hệ  
thng phân phi phn mm.  
Từ năm 1980 Spin được phát trin ti Bell Labs ca nhóm Unix thuc trung  
tâm nghiên cu Khoa hc máy tính. Phn mm này phát trin rng rãi từ năm 1991.  
Tháng 4 năm 2002 Spin được trao giải thưng phn mềm uy tín cho năm  
2001 ca ACM.  
Spin cung cp mt gilp cho phép các nhà thiết kế đạt được kết quphn  
hi ththng mô hình ca h. Nhng kết quphn hồi đó đóng vai trò quan trng  
trong shiu biết ca các nhà thiết kế vhthống trước khi họ đầu tư vào phân tích  
chính thc.  
3.2.2 Công cXSpin  
Có giao din thân thiện người dùng ca sson tho chính vi khả năng  
chnh sa và tìm kiếm là đơn giản. XSpin là công cthun tin để tiếp cn vi Spin.  
12  
Kim thda trên mô hình  
Đoàn Trung Kiên  
Hình 3: Màn hình ca schính ca XSpin.  
Run Syntax Check  
. Kim tra cú pháp ngôn ngPromela.  
. Luôn luôn là bước đầu tiên sau khi thay đổi chương trình Promela.  
13  
Kim thda trên mô hình  
Đoàn Trung Kiên  
Hình 4: Ca schức năng Run Slicing algorithm.  
Run Slicing Algorithm  
. Xác đnh nhng thành phn không liên quan ca mô hình.  
. Biu din sự phân tích lưu lượng dliu.  
Set Simulation Parameters (Htrgli quan trng nht)  
Thiết lp thông shin th:  
. Message Sequence Chart (MSC) Panel: Cung cp quá trình giao  
tiếp theo thi gian. Kim soát cách trình bay các liên kết gia MSC và  
Promela bên trong ca sổ văn bản chính được htrthông qua bng  
điều khin này.  
. Time Sequence Panel: Cung cp quá trình giao tiếp theo thi gian.  
. Data Values Panel: Trình bay dliu theo thi gian. Tùy chn  
gồm các kênh đm các biến địa phương và biến toàn cc.  
14  
Kim thda trên mô hình  
Đoàn Trung Kiên  
. Random : Yêu cầu người sdng cung cp mt giá trseed.  
Hình 5: Ca schính chức năng Set Simulation Parameters.  
Run Simulation  
. Vic thiết lp các thông shin thphải đưc thc hin ít nht mt  
lần trưc khi thc hin chy Simulation.  
. Vic thiết lp mặc đnh thông shin thssinh ra 3 ca ssau:  
Simulation Output: Cung cấp 2 phương thức : Chy tng  
bước (Single Step) hoc chy liên tc (Run).  
Data Values.  
Sequence Chart.  
15  
Kim thda trên mô hình  
Đoàn Trung Kiên  
Hình 6: Ca skhi chy chức năng Run Simulation.  
Thiết lp thông sVerification  
Kim tra mô hình.  
Đảm bo thc hin an toàn và xác minh tính cht.  
. Correctness Properties: Safety, Liveness.  
. Search mode.  
. A full queue.  
. Verify an LTL property.  
. Set advance options.  
16  
Kim thda trên mô hình  
Đoàn Trung Kiên  
Hình 7: Ca schính chức năng Set Verification Parameters.  
Run Verification  
. Set verification parameters.  
. (Re)run verification.  
17  
Kim thda trên mô hình  
Đoàn Trung Kiên  
Hình 8: Ca skhi chy chức năng Run Verification.  
LTL Temporal Logic Formulae  
LTL = Mnh đề Logic + toán tử điu khin thi gian.  
Giúp chnh sa và bo trì các công thc logic.  
Theo thi gian trong Spin  
. Bước 1: Chy “LTL Property Manager”  
. Bước 2: Nhập vào đặc tính thi gian mà bn mun thẩm đnh. Chú  
ý phi là biu thc bt biến và tên bng chữ thường.  
. Bước 3: Chỉ ra là có hay không đặc tính thi gian cn gi:  
all executions (desired behaviour) hoc  
no executions (error behaviour)  
. Bước 4: Nhp vào một đnh nghĩa vi mô đối vi mi hng smnh  
đề trong ca sph“Symbol Definitions”  
18  
Kim thda trên mô hình  
Đoàn Trung Kiên  
. Bước 5: n vào nút “Run Verification” và tiếp tc n vào nút  
“Run” trong ca s“LTL Verification”  
Chú ý là nhng thông sca LTL có thể lưu lại để sdụng trong tương lai  
bng nút “Save As” và “Load”  
Hình 9: Ca skhi chy chức năng LTL Property Manager.  
View Spin Automaton (FSM View)  
19  
Kim thda trên mô hình  
Đoàn Trung Kiên  
Hình 10: Ca skhi chy chức năng View Spin Automaton.  
20  
Kim thda trên mô hình  
Đoàn Trung Kiên  
CHƯƠNG 4  
SINH CA KIM THTỰ ĐNG VÀ THC NGHIM  
Sau khi thiết kế mô hình hthng bng ngôn ngmô hình Promela, kết hp  
nhúng mã C vào đặc tpromela và sdng công chtrkim chng Spin để tự  
động sinh các ca kim th. Kitchen Timer là mt ví dnhỏ được tiến hành để đánh  
giá các phương pháp đã đề xut.  
4.1  
Phương pháp sinh các ca kiểm thtự đng  
Tmô tcác yêu cu và chức năng xác định ca hthng cùng vi dliu  
đầu vào, ra ta thiết kế mô hình ca hthng. Mô hình đó biu din không gian các  
trng thái có thể đạt được ca hthng. Nhúng một đoạn mã nguồn C vào đặc tả  
promela để khi dch chuyn gia các trng thái thì ta hin thra các trạng thái đó  
mt cách tự đng.  
Ta có thsdng một ngăn xếp để lưu các trạng thái đó lại. Cu trúc ca  
ngăn xếp có thể định nghĩa như sau:  
typedef struct Node{  
char state[256];  
char input[256];  
char output[256];  
}Node;  
#define MAXSIZE 1000000  
Node State_Stack[MAXSIZE];  
Tiếp theo ti mi trạng thái ta lưu trạng thái đó và ngăn xếp:  
char tempLable[256] ="FIRST";  
char tempInput[256] = "";  
char tempOutput[256] = "";  
Node tempNode = {"FIRST","",""};  
21  
Kim thda trên mô hình  
Đoàn Trung Kiên  
void setNode(char* cur_label, char* cur_input, char* cur_output) {  
strcpy(tempNode.label,cur_label);  
strcpy(tempNode.input, cur_input);  
strcpy(tempNode.output, cur_output);  
}
In ra trạng thái đó:  
void printNode(Node n) {  
printf("Input: %s\n",n.input);  
printf("Output: %s\n",n.output);  
printf("STATE<%s>\n",n.label);  
}
4.2  
dáp dng  
Áp dụng các phương pháp đã đề xut ở được tìm hiu trong khóa lun cho  
bài toán Kitchen Timer. Kitchen timer mt thiết bhn giờ đơn dùng trong các nhà  
bếp. Đầu vào ca thiết bthông qua 2 nút bm SW1 và SW2. Đầu ra là thông qua 2  
đèn báo hiệu LED.  
Timer  
CPU  
IO Port  
LED  
LED  
SW1  
SW2  
Flash  
Memory  
RAM  
22  
Kim thda trên mô hình  
Đoàn Trung Kiên  
Hình 11: Kiến trúc hthng kitchen timer.  
4.2.1 Mô tbài toán  
Khởi động kitchen timer  
Bt công tc khởi động kitchen timer. Khi bn bắt đầu chương trình  
chai đèn LED đã được chờ đợi chế độ tt.  
Thiết lp thi gian  
Thiết lp thi gian bng công tc 1. Thiết lp thời gian được hin thị ở  
đèn LED ở dng snhphân. Thi gian thiết lp là t1 ti 3 phút.  
Bắt đu tính giờ  
Bắt đầu đồng hồ đếm ngược bng công tc 2. Nếu đng hbắt đu  
đếm ngược thì đèn LED sẽ nháy.  
Tm dng  
. Nếu bm công tc 1 trong khi đang tính giờ, thì skết thúc vic  
tính givà cả 2 đèn LED sẽ tt hoàn toàn.  
. Nếu bm công tc 2 thì đồng hồ đếm ngược tm dừng và đèn LED  
cũng dừng. Bm li công tc 2 ln na thì đồng htiếp tc tính givà  
đèn LED tiếp tc nháy.  
Hin ththi gian hết và báo động  
Nếu kết thúc thời gian đã thiết lp,chuông báo hiu skhởi động để thông  
báo cho người sdng, đèn LED snhp nháy trong vòng 3 giây. Trong khi  
báo động nếu bm công tc 1 hoc công tắc 2 chuông báo động ngng li, và  
đèn LED sẽ tt. Ngoài ra trong khi dng chuông báo hiu nếu li thiết lp  
thi gian bng công tc 1 và bm công tc 2 thì đồng hồ đếm ngược li bt  
đầu.  
4.2.2 Máy hu hn trng thái ca Kitchen Timer  
Tnhng thông skthuật đưc mô tả ở trên chúng ta xây dựng được mô  
hình máy trng thái ca Kitchen Timer như hình vsau.  
23  
Kim thda trên mô hình  
Đoàn Trung Kiên  
Hình 12: Mô hình máy hu hn trng thái kitchen timer.  
Bộ  
Yếu tố  
Ý nghĩa  
Nhãn  
NUMINPUT  
COUNTDOWN  
PAUSE  
Thiết lp thi gian  
Đếm ngược  
Tm dng  
ALARM  
Báo giờ  
ALARMOFF  
Ngng báo giờ  
Biến  
in_t  
Biến đi din cho thi gian thiết lp  
Biến đi din cho thời gian đếm ngược  
Biến đi din cho thi gian báo chuông  
t
alarm_t  
24  

Tải về để xem bản đầy đủ

pdf 50 trang yennguyen 24/05/2025 170
Bạn đang xem 30 trang mẫu của tài liệu "Khóa luận Kiểm thử dựa trên mô hình", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfkhoa_luan_kiem_thu_dua_tren_mo_hinh.pdf