国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于狀態(tài)的類測試研究

2014-07-03 00:22周薇劉慶生
電腦知識與技術(shù) 2014年12期
關(guān)鍵詞:面向?qū)ο?/a>

周薇 劉慶生

摘要:類測試是面向?qū)ο蟮能浖y試過程中的一個(gè)重要方面。類測試需要結(jié)合對象的狀態(tài)行為,并考察在執(zhí)行相應(yīng)的方法后是否能達(dá)到預(yù)期狀態(tài)。該文描述了基于狀態(tài)的類測試的方法,并通過實(shí)例分析給出了測試用例生成方法,驗(yàn)證被測對象在經(jīng)過操作變換后是否處于預(yù)期的正確狀態(tài),使得測試人員在縮減測試用例數(shù)量的同時(shí),提高了測試效率。

關(guān)鍵詞:類測試;面向?qū)ο螅换跔顟B(tài)

中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2014)12-2765-03

目前,面向?qū)ο蠹夹g(shù)作為一種全新的軟件開發(fā)技術(shù)廣泛地應(yīng)用在各領(lǐng)域,隨著面向?qū)ο筌浖y試的逐步深入,基于類具有封裝和抽象特性,通過研究基于狀態(tài)的類測試,考察與對象狀態(tài)相關(guān)的變量或函數(shù)的數(shù)據(jù)變化,衡量軟件模塊的健壯性。該文主要針對基于狀態(tài)的類測試方法及測試用例的生成展開討論。

1 基于狀態(tài)的類測試方法

相比與面向過程程序測試,面向?qū)ο蟪绦驕y試中類測試與其單元測試類似,不同的是,單元測試關(guān)注函數(shù)模塊算法和各函數(shù)間接口的輸入輸出。基于狀態(tài)的類測試方法的核心在于關(guān)注類中的方法及其類的狀態(tài),要把對象與其狀態(tài)結(jié)合起來,進(jìn)行對象狀態(tài)行為的測試,因?yàn)檐浖\(yùn)行過程中對象的初始狀態(tài)、對象的輸入?yún)?shù)、對象的輸出參數(shù)、對象的最終狀態(tài)可能被改變,產(chǎn)生新的狀態(tài)。

由于基于狀態(tài)的類測試依賴對象的狀態(tài),因此在測試評估時(shí)通過檢查對象數(shù)據(jù)成員和方法進(jìn)行交互時(shí)產(chǎn)生的錯(cuò)誤,如果方法執(zhí)行后對象的狀態(tài)并沒有按預(yù)期結(jié)果發(fā)生變比,則表明此方法有誤。

基于狀態(tài)的類測試過程為:通過將面向?qū)ο蟪绦蛑械念愖鳛楸粶y單元,明確類中的狀態(tài)變量,根據(jù)相關(guān)的狀態(tài)變量劃分成多個(gè)狀態(tài),并生成類的狀態(tài)多分支樹,然后通過遍歷狀態(tài)分支樹,產(chǎn)生測試用例執(zhí)行測試,判定對象狀態(tài)是否符合預(yù)期規(guī)定的狀態(tài)。

2 基于狀態(tài)的類測試用例的生成

對于基于狀態(tài)的類測試而言,如果達(dá)到類的狀態(tài)及狀態(tài)轉(zhuǎn)換完全覆蓋的測試用例是無限的,通過建立狀態(tài)轉(zhuǎn)換模型,生成狀態(tài)轉(zhuǎn)換圖,通過生成遍歷測試路徑樹自動選擇并執(zhí)行測試用例,能夠從無限的測試用例中選擇最優(yōu)、覆蓋率高的測試用例。

2.1狀態(tài)轉(zhuǎn)換模型及狀態(tài)轉(zhuǎn)換圖

狀態(tài)轉(zhuǎn)換模型描述了類中所有對象的共同行為,對于類對象具有多個(gè)狀態(tài),狀態(tài)之間通過消息驅(qū)動。狀態(tài)轉(zhuǎn)換模型是一個(gè)四元組(S,T,s0,M),其中S是有限狀態(tài)集、T表示狀態(tài)轉(zhuǎn)換圖的狀態(tài)轉(zhuǎn)換,M表示狀態(tài)轉(zhuǎn)換圖的當(dāng)前狀態(tài),滿足如下條件:s0[∈]S,M={s0}是初始標(biāo)志,s0是初始狀態(tài);狀態(tài)轉(zhuǎn)換圖中沒有獨(dú)立元素,S≠¢,T≠¢,M≠¢;對于任何轉(zhuǎn)換至少有一個(gè)前驅(qū)和一個(gè)后繼,即[?]t[∈]T,有*t≠¢,t*≠¢。當(dāng)M={s′}時(shí),[?]t[∈]T,*t=s′,轉(zhuǎn)換t是可觸發(fā)的;若轉(zhuǎn)換t觸發(fā)后,當(dāng)前狀態(tài)M={s′′},并且滿足s′′[∈]t*,這時(shí)新狀態(tài)產(chǎn)生。

最后通過狀態(tài)轉(zhuǎn)換模型中狀態(tài)集、狀態(tài)轉(zhuǎn)換集、狀態(tài)轉(zhuǎn)換消息建立狀態(tài)轉(zhuǎn)換圖。比如一個(gè)進(jìn)程狀態(tài)S={就緒、運(yùn)行、阻塞、創(chuàng)建、終止},進(jìn)程狀態(tài)轉(zhuǎn)換事件消息包含:1)創(chuàng)建狀態(tài)——>就緒狀態(tài)(允許進(jìn)入);2)就緒狀態(tài)——>運(yùn)行狀態(tài)(獲取CPU進(jìn)程調(diào)度);3)運(yùn)行狀態(tài)——>阻塞狀態(tài)(I/O或事件請求);4)運(yùn)行狀態(tài)——>就緒狀態(tài)(分配的CPU時(shí)間到);5)阻塞狀態(tài)——>就緒狀態(tài)(I/O完成或等待事件發(fā)生);6)運(yùn)行狀態(tài)——>終止?fàn)顟B(tài)(進(jìn)程結(jié)束釋放)。

狀態(tài)轉(zhuǎn)換集T為={允許進(jìn)入,獲取CPU進(jìn)程調(diào)度,I/O或事件請求,分配的CPU時(shí)間到,I/O完成或等待事件發(fā)生,進(jìn)程結(jié)束釋放},圖1所示為狀態(tài)轉(zhuǎn)換圖,包含狀態(tài)集S和狀態(tài)轉(zhuǎn)換集T。

2.2生成遍歷測試路徑樹

通過對各狀態(tài)設(shè)置唯一的輸入輸出路徑生成測試路徑樹自動產(chǎn)生測試用例,測試包括驗(yàn)證每個(gè)狀態(tài)是否能由初始狀態(tài)按照一定的路徑到達(dá),狀態(tài)轉(zhuǎn)換后的每個(gè)狀態(tài)能否正確執(zhí)行,其輸出是否正確。

首先對于某一事件路徑為從初始狀態(tài)到終止?fàn)顟B(tài)的轉(zhuǎn)換,分析類對應(yīng)的狀態(tài)圖,然后構(gòu)造測試路徑樹,該測試路徑樹包含所有的事件消息路徑。測試路徑樹的每個(gè)節(jié)點(diǎn)對應(yīng)一個(gè)狀態(tài),每個(gè)分支表示狀態(tài)之間的轉(zhuǎn)換,并在分支上標(biāo)識出事件動作。最后構(gòu)造出滿足狀態(tài)轉(zhuǎn)換覆蓋的測試路徑樹。具體形式化算法如下:

1)創(chuàng)建所有非空狀態(tài)集合S={S1,S2,…,Sn}

2)創(chuàng)建可達(dá)狀態(tài)集Rs,開始為空,對象經(jīng)過構(gòu)造或初始化后,產(chǎn)生的狀態(tài)加入到Rs中。

3)選擇一狀態(tài)Si∈Rs,將Si為初始前驅(qū)狀態(tài)

4)選擇一條定義數(shù)據(jù)成員M的路徑P,執(zhí)行條件為CP,R為路徑執(zhí)行結(jié)果。如果條件Si(D)和CP成立,則路徑產(chǎn)生一次轉(zhuǎn)移,如果條件不成立,放棄該路徑。

5)轉(zhuǎn)換到達(dá)的后繼狀態(tài)Sj∈Rs(j=1,2,…,n)或Sj 為對象被消除的最終狀態(tài),則Sj 為葉子節(jié)點(diǎn)。

6)重復(fù)步驟3、4直到選擇所有的路徑,從Rs中去掉Si,直到Rs為空。

7)從根節(jié)點(diǎn)開始沿著各個(gè)分支往下直到葉子節(jié)點(diǎn),深度遍歷測試路徑樹,對于每條從根節(jié)點(diǎn)到葉子節(jié)點(diǎn)結(jié)束的路徑組合一起,就生成相應(yīng)的測試用例。

3 實(shí)例分析

為了驗(yàn)證基于狀態(tài)的類測試方法的可用性,在此用一個(gè)具體的案例——某系統(tǒng)中超短波控制器路由維護(hù)模塊軟件的類HJLydx來討論該方法。

某系統(tǒng)主要由中控設(shè)備、通控器、超短波電臺、遙控用戶單元、短消息遠(yuǎn)傳設(shè)備等組成。通控器在其中負(fù)責(zé)管理超短波通信網(wǎng)內(nèi)電臺的信道資源管理、工作狀態(tài)的設(shè)置和顯示,路由信息的維護(hù)和刷新等功能。路由維護(hù)模塊是通控器軟件中的網(wǎng)絡(luò)處理單元下的一個(gè)模塊。路由維護(hù)模塊實(shí)現(xiàn)靜態(tài)及動態(tài)路由表維護(hù)功能,為網(wǎng)絡(luò)傳輸模塊及LPU單元提供路由信息。

圖2顯示的被測軟件類HJLydx的狀態(tài)轉(zhuǎn)換模型:endprint

狀態(tài)集:S1:Default status;S2:Static route status;S3:Dynamic route status;S4:Static message route status;S5:Dynamic message route status。

事件或動作集:1/x:輸入事件1,輸出動作x;1/y:輸入事件1,輸出動作y;2/x:輸入事件2,輸出動作x;2/v:輸入事件2,輸出動作v;3/w:輸入事件3,輸出動作w;4/w:輸入事件4,輸出動作w;5/r:change back to Default status, 輸入事件5,輸出動作r。

按照顯式行為路徑的算法,首先初始化S={S1,S2,S3,S4,S5},Rs={a},第一次執(zhí)行(1)、(2)步:選擇一狀態(tài)Si=a得到新的Rs={a,S1},重復(fù)(3)、(4)步驟直到循環(huán)終止條件成立,得到如圖3所示的狀態(tài)轉(zhuǎn)換模型對應(yīng)的最終測試路徑樹。

最后深度遍歷上圖測試路徑樹得到所有顯示行為路徑為:1)a1→1/x→1/y→3/w(S1到S2到S4到S4);2)a1→1/x→1/y→ 5/r(S1到S2到S1);3)a1→1/x→2/x(S1到S2到S3);4)a1→2/v→2/v→4/w(S1到S3到S5到S5);5)a1→2/v→2/v→1/x(S1到S3到S5到S3);6)a1→2/v→2/v→5/r(S1到S3到S5到S1);7)a1→2/v→1/x(S1到S3到S2)。

于是就得到基于狀態(tài)模型的顯式路徑下的最終測試用例序列為:{a1→1→1→3,a1→1→1→5,a1→1→2,a1→2→2→4,a1→2→2→1,a1→2→2→5,a1→2→1}。

4 結(jié)束語

本文在介紹面向?qū)ο笾谢跔顟B(tài)的類測試方法,提出了基于狀態(tài)的類測試過程,重點(diǎn)研究了狀態(tài)轉(zhuǎn)換模型以及由狀態(tài)轉(zhuǎn)換圖遍歷測試路徑樹生成測試用例,這樣既可以滿足狀態(tài)轉(zhuǎn)換覆蓋的要求又可以驗(yàn)證被測對象在經(jīng)過響應(yīng)操作變換后是否處于預(yù)期的正確狀態(tài),為解決面向?qū)ο筌浖淖詣踊瘻y試問題進(jìn)行了初步的探討。

參考文獻(xiàn):

[1] John D, McGregor David A,Sykes.面向?qū)ο蟮能浖y試[M].楊文宏,李新輝,楊潔,等,譯.北京:機(jī)械工業(yè)出版社,2003.

[2] 宮云戰(zhàn).軟件測試[M].北京:國防工業(yè)出版社,2006.

[3] 馬海云,張少剛.軟件質(zhì)量保證與軟件測試技術(shù)[M].北京: 國防工業(yè)出版社,2011.

[4] 金凌紫.面向?qū)ο筌浖y試技術(shù)進(jìn)展[J].計(jì)算機(jī)研究與發(fā)展,1998,35(1).

[5] 張雪萍,莊雷,范艷峰.基于狀態(tài)的類測試技術(shù)研究[J].小型微型計(jì)算機(jī)系統(tǒng),2002,23(9).

[6] 劉歡.面向?qū)ο筌浖y試技術(shù)[D].成都:電子科技大學(xué),2007.endprint

狀態(tài)集:S1:Default status;S2:Static route status;S3:Dynamic route status;S4:Static message route status;S5:Dynamic message route status。

事件或動作集:1/x:輸入事件1,輸出動作x;1/y:輸入事件1,輸出動作y;2/x:輸入事件2,輸出動作x;2/v:輸入事件2,輸出動作v;3/w:輸入事件3,輸出動作w;4/w:輸入事件4,輸出動作w;5/r:change back to Default status, 輸入事件5,輸出動作r。

按照顯式行為路徑的算法,首先初始化S={S1,S2,S3,S4,S5},Rs={a},第一次執(zhí)行(1)、(2)步:選擇一狀態(tài)Si=a得到新的Rs={a,S1},重復(fù)(3)、(4)步驟直到循環(huán)終止條件成立,得到如圖3所示的狀態(tài)轉(zhuǎn)換模型對應(yīng)的最終測試路徑樹。

最后深度遍歷上圖測試路徑樹得到所有顯示行為路徑為:1)a1→1/x→1/y→3/w(S1到S2到S4到S4);2)a1→1/x→1/y→ 5/r(S1到S2到S1);3)a1→1/x→2/x(S1到S2到S3);4)a1→2/v→2/v→4/w(S1到S3到S5到S5);5)a1→2/v→2/v→1/x(S1到S3到S5到S3);6)a1→2/v→2/v→5/r(S1到S3到S5到S1);7)a1→2/v→1/x(S1到S3到S2)。

于是就得到基于狀態(tài)模型的顯式路徑下的最終測試用例序列為:{a1→1→1→3,a1→1→1→5,a1→1→2,a1→2→2→4,a1→2→2→1,a1→2→2→5,a1→2→1}。

4 結(jié)束語

本文在介紹面向?qū)ο笾谢跔顟B(tài)的類測試方法,提出了基于狀態(tài)的類測試過程,重點(diǎn)研究了狀態(tài)轉(zhuǎn)換模型以及由狀態(tài)轉(zhuǎn)換圖遍歷測試路徑樹生成測試用例,這樣既可以滿足狀態(tài)轉(zhuǎn)換覆蓋的要求又可以驗(yàn)證被測對象在經(jīng)過響應(yīng)操作變換后是否處于預(yù)期的正確狀態(tài),為解決面向?qū)ο筌浖淖詣踊瘻y試問題進(jìn)行了初步的探討。

參考文獻(xiàn):

[1] John D, McGregor David A,Sykes.面向?qū)ο蟮能浖y試[M].楊文宏,李新輝,楊潔,等,譯.北京:機(jī)械工業(yè)出版社,2003.

[2] 宮云戰(zhàn).軟件測試[M].北京:國防工業(yè)出版社,2006.

[3] 馬海云,張少剛.軟件質(zhì)量保證與軟件測試技術(shù)[M].北京: 國防工業(yè)出版社,2011.

[4] 金凌紫.面向?qū)ο筌浖y試技術(shù)進(jìn)展[J].計(jì)算機(jī)研究與發(fā)展,1998,35(1).

[5] 張雪萍,莊雷,范艷峰.基于狀態(tài)的類測試技術(shù)研究[J].小型微型計(jì)算機(jī)系統(tǒng),2002,23(9).

[6] 劉歡.面向?qū)ο筌浖y試技術(shù)[D].成都:電子科技大學(xué),2007.endprint

狀態(tài)集:S1:Default status;S2:Static route status;S3:Dynamic route status;S4:Static message route status;S5:Dynamic message route status。

事件或動作集:1/x:輸入事件1,輸出動作x;1/y:輸入事件1,輸出動作y;2/x:輸入事件2,輸出動作x;2/v:輸入事件2,輸出動作v;3/w:輸入事件3,輸出動作w;4/w:輸入事件4,輸出動作w;5/r:change back to Default status, 輸入事件5,輸出動作r。

按照顯式行為路徑的算法,首先初始化S={S1,S2,S3,S4,S5},Rs={a},第一次執(zhí)行(1)、(2)步:選擇一狀態(tài)Si=a得到新的Rs={a,S1},重復(fù)(3)、(4)步驟直到循環(huán)終止條件成立,得到如圖3所示的狀態(tài)轉(zhuǎn)換模型對應(yīng)的最終測試路徑樹。

最后深度遍歷上圖測試路徑樹得到所有顯示行為路徑為:1)a1→1/x→1/y→3/w(S1到S2到S4到S4);2)a1→1/x→1/y→ 5/r(S1到S2到S1);3)a1→1/x→2/x(S1到S2到S3);4)a1→2/v→2/v→4/w(S1到S3到S5到S5);5)a1→2/v→2/v→1/x(S1到S3到S5到S3);6)a1→2/v→2/v→5/r(S1到S3到S5到S1);7)a1→2/v→1/x(S1到S3到S2)。

于是就得到基于狀態(tài)模型的顯式路徑下的最終測試用例序列為:{a1→1→1→3,a1→1→1→5,a1→1→2,a1→2→2→4,a1→2→2→1,a1→2→2→5,a1→2→1}。

4 結(jié)束語

本文在介紹面向?qū)ο笾谢跔顟B(tài)的類測試方法,提出了基于狀態(tài)的類測試過程,重點(diǎn)研究了狀態(tài)轉(zhuǎn)換模型以及由狀態(tài)轉(zhuǎn)換圖遍歷測試路徑樹生成測試用例,這樣既可以滿足狀態(tài)轉(zhuǎn)換覆蓋的要求又可以驗(yàn)證被測對象在經(jīng)過響應(yīng)操作變換后是否處于預(yù)期的正確狀態(tài),為解決面向?qū)ο筌浖淖詣踊瘻y試問題進(jìn)行了初步的探討。

參考文獻(xiàn):

[1] John D, McGregor David A,Sykes.面向?qū)ο蟮能浖y試[M].楊文宏,李新輝,楊潔,等,譯.北京:機(jī)械工業(yè)出版社,2003.

[2] 宮云戰(zhàn).軟件測試[M].北京:國防工業(yè)出版社,2006.

[3] 馬海云,張少剛.軟件質(zhì)量保證與軟件測試技術(shù)[M].北京: 國防工業(yè)出版社,2011.

[4] 金凌紫.面向?qū)ο筌浖y試技術(shù)進(jìn)展[J].計(jì)算機(jī)研究與發(fā)展,1998,35(1).

[5] 張雪萍,莊雷,范艷峰.基于狀態(tài)的類測試技術(shù)研究[J].小型微型計(jì)算機(jī)系統(tǒng),2002,23(9).

[6] 劉歡.面向?qū)ο筌浖y試技術(shù)[D].成都:電子科技大學(xué),2007.endprint

猜你喜歡
面向?qū)ο?/a>
面向?qū)ο蠓椒ㄔ谒罾銹LC編程中應(yīng)用分析
電子測試(2018年22期)2018-12-19
面向?qū)ο蟮挠?jì)算機(jī)網(wǎng)絡(luò)設(shè)計(jì)軟件系統(tǒng)的開發(fā)
面向?qū)ο蟮臄?shù)據(jù)交換協(xié)議研究與應(yīng)用
面向?qū)ο骔eb開發(fā)編程語言的的評估方法
基于面向?qū)ο蟮腛ffice評測系統(tǒng)的分析
峰叢洼地農(nóng)作物面向?qū)ο笮畔⑻崛∫?guī)則集
基于E-cognition的面向?qū)ο蟮母叻直媛蔬b感圖像分類研究
基于面向?qū)ο蟮能囕v管理軟件的研制與開發(fā)
面向?qū)ο蟮腟oS體系結(jié)構(gòu)建模方法及應(yīng)用
东平县| 泰和县| 于田县| 石柱| 安陆市| 宿州市| 清涧县| 开化县| 岗巴县| 江陵县| 新闻| 白山市| 平顶山市| 察雅县| 瓦房店市| 长垣县| 安陆市| 万盛区| 琼结县| 木里| 江达县| 白河县| 巴中市| 博罗县| 胶南市| 通化县| 合水县| 昌邑市| 涞源县| 叙永县| 公主岭市| 万全县| 翁源县| 兰西县| 宣汉县| 南开区| 修水县| 华容县| 南阳市| 正阳县| 新密市|