摘要:本文使用了BBD模型和OSD模型作為方法和狀態(tài)測(cè)試兩種部分的測(cè)試模型。從測(cè)試結(jié)果來(lái)看,選擇這兩種模型是比較適合的。
通過(guò)方法測(cè)試和狀態(tài)測(cè)試兩種測(cè)試模型
關(guān)鍵詞:BBD模式;OSD模式;測(cè)試模型
1 BBD模型
BBD(Block Branch Diagram)即塊分支圖模型是由 Kung 等人提出的,該模型原為一個(gè)五元組 BBD f =(Du, Dd, P, Fe, G),如圖1-1所示。由于狀態(tài)變量組合測(cè)試和后一章 OSD 模型的構(gòu)造步驟中,經(jīng)常要涉及方法的狀態(tài)變量,為了便于引用并避免重復(fù)工作,我們將方法的所有狀態(tài)變量構(gòu)成集合 Vs 并作為BBD 模型的一部分,改進(jìn)后的 BBD 模型結(jié)構(gòu)如圖1-2所示圖1-1原 BBD 模型結(jié)構(gòu)圖1-2改進(jìn)后的 BBD 模型結(jié)構(gòu)。
圖1-1原BBD模型
圖1-2 改進(jìn)后的BBD模型
如圖1-2所示,方法 f 的 BBD 是一個(gè)六元組,BBD f =(Du, Dd, Vs, P, Fe, G),其中:
Du = {di | di 是 f 引用的全局?jǐn)?shù)據(jù)或類(lèi)數(shù)據(jù)};
Dd = {di | di 是 f 修改了的全局?jǐn)?shù)據(jù)或類(lèi)數(shù)據(jù)};
Vs = {vi | vi 是 f 中的狀態(tài)變量};
P = X1θ1 ,X2θ2 ,…,Xnθn ,Xn+1θn+1 是 f 的參數(shù)表和函數(shù)返回值,θi的值為↑表示輸出、↓表示輸入,若 Xn+1缺省則無(wú)返回值;
Fe= {fi | fi 是被 f 調(diào)用的其它方法};
G 是一個(gè)有向圖,叫做塊體,它是按照控制流圖的思想修改 f 的程序流程圖而來(lái),表示 f 的控制結(jié)構(gòu)。
BBD 模型通常有兩種獲得途徑。一種是在軟件設(shè)計(jì)和分析階段就根據(jù)設(shè)計(jì)需求構(gòu)造出某個(gè)方法相應(yīng)的 BBD 模型,用以指導(dǎo)具體的編程。另一種途徑是采用逆向工程的方法根據(jù)源程序畫(huà)出流程圖,然后構(gòu)造出 BBD 模型。
2 OSD模型
OSD(Object State Diagram,對(duì)象狀態(tài)圖)是一種新的面向?qū)ο髣?dòng)態(tài)測(cè)試模型,其中描述了對(duì)象在其生存周期中的所有狀態(tài)及其狀態(tài)之間的相互轉(zhuǎn)移。OSD中模型的表示與具體編程思想直接相關(guān),是一個(gè)建立在現(xiàn)有的面向?qū)ο筌浖O(shè)計(jì)模型和分析模型基礎(chǔ)之上的測(cè)試模型。OSD支持封裝的對(duì)象狀態(tài)層次,其表示的狀態(tài)是面向?qū)ο蟮亩皇敲嫦蚬δ艿?,并且提供抽象模型和具體程序之間的直接映射。
3對(duì)象狀態(tài)圖測(cè)試模型的基本構(gòu)造單元
3.1 AOSD
AOSD是OSD的基本組成單元,AOSD定義為一個(gè)四元組:AOSD=(S,d,s,S0),其中S表示一個(gè)對(duì)象的狀態(tài)集合;d表示字符集;s表示由對(duì)象狀態(tài)可能產(chǎn)生的轉(zhuǎn)移集; S0表示起始狀態(tài)。對(duì)象的一個(gè)狀態(tài)是對(duì)象的數(shù)據(jù)屬性的一個(gè)確定取值范圍,相對(duì)此范圍數(shù)據(jù)成員取真或假;轉(zhuǎn)移表示狀態(tài)的改變,每一個(gè)轉(zhuǎn)移對(duì)應(yīng)對(duì)象成員函數(shù)的執(zhí)行,轉(zhuǎn)移有條件轉(zhuǎn)移、無(wú)條件轉(zhuǎn)移和交叉轉(zhuǎn)移。對(duì)象的每一個(gè)數(shù)據(jù)成員對(duì)應(yīng)一個(gè)AOSD,每個(gè)AOSD可有多個(gè)起始狀態(tài)。
3.2 COSD
在OSD中,多個(gè)AOSD和COSD的組合構(gòu)成COSD,COSD是AOSD的有限集合,它用來(lái)表示類(lèi)和對(duì)象的動(dòng)態(tài)行為,類(lèi)和對(duì)象的動(dòng)態(tài)行為由對(duì)象的數(shù)據(jù)屬性和轉(zhuǎn)移決定。根據(jù)類(lèi)的定義,其實(shí)例對(duì)象的數(shù)據(jù)屬性來(lái)自于類(lèi)內(nèi)部定義的數(shù)據(jù)成員、繼承的數(shù)據(jù)成員、聚集到類(lèi)里的其它類(lèi)對(duì)象。所以,如圖3-1所示,OSD的構(gòu)成可描述為對(duì)象的動(dòng)態(tài)行為。各部分取決于不同來(lái)源的數(shù)據(jù)屬性。
圖3-1OSD的構(gòu)造
定義部分中“自動(dòng)”表示對(duì)象的一般數(shù)據(jù)屬性(如一般變量),“動(dòng)態(tài)”表示對(duì)象的動(dòng)態(tài)數(shù)據(jù)屬性(如指針變量),“靜態(tài)”表示對(duì)象的靜態(tài)數(shù)據(jù)屬性(如靜態(tài)變量)。聚集部分中“自動(dòng)”表示某類(lèi)的一般對(duì)象,“動(dòng)態(tài)”表示類(lèi)對(duì)象指針,“靜態(tài)” 表示靜態(tài)對(duì)象。繼承部分中“全部”表示子類(lèi)用“public”繼承父類(lèi)的數(shù)據(jù)成員,“部分”表示子類(lèi)把父類(lèi)的所有數(shù)據(jù)成員作為私有成員。
4 構(gòu)造OSD模型
OSD(Object State Diagram)模型即對(duì)象狀態(tài)圖模型是用于測(cè)試對(duì)象狀態(tài)行為的測(cè)試模型。OSD 模型中描述了對(duì)象在其生命周期中的所有狀態(tài)及其狀態(tài)之間的相互轉(zhuǎn)移。同 BBD 模型一樣,OSD 模型也是一個(gè)分析模型。OSD 模型的表示與具體的編程思想直接相關(guān),它是一個(gè)建立在現(xiàn)有的面向?qū)ο筌浖创a或者類(lèi)規(guī)格說(shuō)明基礎(chǔ)之上的測(cè)試模型。首先掃描源程序并得出執(zhí)行分析表。執(zhí)行分析表中的一行就表示對(duì)象中一個(gè)成員方法的一條執(zhí)行路徑,其中包括該路徑執(zhí)行所需的條件以及執(zhí)行后的結(jié)果表達(dá)式。由于一個(gè)方法某一執(zhí)行路徑的結(jié)果表達(dá)式可能有多個(gè),全部列出的意義不大,所以我們對(duì)此部分進(jìn)行修改,僅列出對(duì)本測(cè)試方法有用的結(jié)果表達(dá)式——引起對(duì)象狀態(tài)改變的表達(dá)式。如果沒(méi)有該類(lèi)表達(dá)式,則置為空。當(dāng)遇到在某一執(zhí)行條件下無(wú)任何語(yǔ)句執(zhí)行的情況,則分析表的結(jié)果表達(dá)式項(xiàng)注明“不執(zhí)行”。借助每個(gè)成員方法已有的 BBD 模型能很容易的完成該步驟。掃描各個(gè) BBD模型中塊體 G 的判定分支可得到方法執(zhí)行所需的條件;然后根據(jù)Vs集合提供的狀態(tài)變量在塊體 G 的進(jìn)程執(zhí)行框中尋找與之相關(guān)的表達(dá)式,如果找到則在執(zhí)行分析表中相應(yīng)的執(zhí)行路徑后列出該表達(dá)式,如果沒(méi)有就置為空,如果在這個(gè)路徑下沒(méi)有任何語(yǔ)句被執(zhí)行則注明“不執(zhí)行”。
參 考 文 獻(xiàn)
[1] 張雪萍,張慧檔,莊雷.面向?qū)ο筌浖念?lèi)測(cè)試技術(shù).微機(jī)發(fā)展 No.5 2002:74~77
[2] 鄭春一,宋雨,孫文靖.面向?qū)ο箢?lèi)測(cè)試方法分析.微機(jī)發(fā)展,Vol.13 No.1 2003.1:57~59
[3] 徐鋒譯, AOSD中文版--基于用例的面向方面軟件開(kāi)發(fā),電子工業(yè)出版社,2005.11
[4] 張雪萍,莊雷,范艷峰.基于狀態(tài)的類(lèi)測(cè)試技術(shù)研究.小型微型計(jì)算機(jī)系統(tǒng) Vol.23
2002.9:1121~1124