999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于對象狀態(tài)的面向?qū)ο筌浖y試方法研究

2008-12-31 00:00:00尹治本
電腦知識與技術(shù) 2008年35期

摘要:主要介紹了面向?qū)ο筌浖念悳y試技術(shù)。從基于對象狀態(tài)方面分析UML狀態(tài)圖的組成、并發(fā)的優(yōu)點,描述繼承的對象動態(tài)行為、并發(fā)的動態(tài)行為,給出利用UML狀態(tài)圖構(gòu)造復(fù)合狀態(tài)測試樹算法并產(chǎn)生測試用例的面向?qū)ο筌浖y試方法。

關(guān)鍵詞:UML;測試用例;類測試;面向?qū)ο螅粻顟B(tài)圖

中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2008)35-2169-02

The Software Testing Methods of Object State Based on Statechart

LIU Jia, YIN Zhi-ben

(School of Information Science and Technology, South West Jiao Tong University, Chengdu 610031 China)

Abstract: Introduces the class testing of object-oriented software. An example is cited to account for an object-oriented software testing method based on UML, which constructs testing use-case according the state that the objects are being and the transfer among object states.

Key words: UML; test case; class testing; object-oriented; statechart

1 引言

面向?qū)ο筌浖y試的主要目標(biāo)與傳統(tǒng)軟件測試目標(biāo)相同,既是用最小的工作量發(fā)現(xiàn)最多的錯誤。由于面向?qū)ο笏氂械亩鄳B(tài)、繼承、封裝等新的特點,使面向?qū)ο鬁y試的策略和技術(shù)與傳統(tǒng)測試有所不同,測試的視角擴(kuò)大到包括復(fù)審分析和設(shè)計模型,測試焦點從模塊轉(zhuǎn)向類。類是構(gòu)成面向?qū)ο蟪绦虻幕境煞?,類的測試無疑成為面向?qū)ο?測試的重要環(huán)節(jié)?;趯ο鬆顟B(tài)的測試是根據(jù)被測試的類的對象所處的狀態(tài)以及狀態(tài)之間的轉(zhuǎn)移來構(gòu)造測試用例,它側(cè)重于對象的動態(tài)行為,這種動態(tài)行為依賴于對象狀態(tài)。測試對象動態(tài)行為能檢測出對象成員函數(shù)之間通過對象狀態(tài)進(jìn)行交互式產(chǎn)生的錯誤。

2 基于對象狀態(tài)的測試方法的發(fā)展

現(xiàn)在面向?qū)ο鬁y試中基于對象狀態(tài)的測試方法一般是采用扁平狀態(tài)機(jī)和狀態(tài)遷移圖。扁平狀態(tài)機(jī)能很好的提示出一些類中的錯誤,但是隨著類的狀態(tài)屬性的增加,對象狀態(tài)的數(shù)目會迅速膨脹,大大增加測試的復(fù)雜度。狀態(tài)轉(zhuǎn)移圖用于刻畫對象響應(yīng)各種事件時狀態(tài)發(fā)生轉(zhuǎn)移的情況,容易借助于自動機(jī)理論來選擇測試時所用的時間序列和預(yù)測對象的狀態(tài)變化結(jié)果序列,但是,它難于描述繼承的對象動態(tài)行為、并發(fā)的動態(tài)行為以及由數(shù)據(jù)成員和成員函數(shù)構(gòu)成的對象狀態(tài)和對象狀態(tài)轉(zhuǎn)移。基于UML的狀態(tài)圖可以很好的描述對象動態(tài)行為、并發(fā)的動態(tài)行為,可以把狀態(tài)的復(fù)雜度控制在和狀態(tài)屬性相關(guān)的線性級別,下面我們主要介紹利用UML狀態(tài)圖如何描述對象動態(tài)行為、并發(fā)的動態(tài)行為,以及如何產(chǎn)生測試用例。

3 UML狀態(tài)圖

UML狀態(tài)圖(State Diagram)是UML中對系統(tǒng)的動態(tài)行為進(jìn)行建模的表示方法,它包括對反應(yīng)型對象的行為建模。它展現(xiàn)了對象生命周期內(nèi)可能處于的狀態(tài)以及在這些狀態(tài)間轉(zhuǎn)換的激發(fā)條件。UML狀態(tài)圖中引起狀態(tài)遷移的原因通常有兩種,一種是在狀態(tài)圖中相應(yīng)的遷移上未指明事件,這表示當(dāng)位于遷移箭頭源頭的狀態(tài)中的內(nèi)部動作全部執(zhí)行完后,該狀態(tài)遷移被自動觸發(fā);另一種是,當(dāng)出現(xiàn)某一事件時會引起狀態(tài)的遷移,在狀態(tài)圖中把這種一起狀態(tài)遷移的事件標(biāo)在改前一的箭頭上,如圖1。

圖1 狀態(tài)裝換

狀態(tài)遷移的形式化語法為:

event_signsture[guard_condition]/action_expression^send_clause

其中事件特征event_signsture是由事件名后括號括起來的參數(shù)表組成,它指出觸發(fā)遷移的事件以及與該事件相連接的附加數(shù)據(jù)。guard_condition警戒條件是一個布爾表達(dá)式,如果狀態(tài)遷移中既有事件又有警戒條件,則表示僅當(dāng)這個事件發(fā)生并且警戒條件為真時,觸發(fā)狀態(tài)遷移。動作表達(dá)式action_expression是一個觸發(fā)狀態(tài)遷移時可執(zhí)行的過程表達(dá)式,表達(dá)式中可引用該狀態(tài)所擁有的對象中的屬性、操作或事件特征中的參數(shù)。發(fā)送子句send_clause是動作的一種特殊情況,用來說明在兩個狀態(tài)的遷移期間發(fā)送的消息。

UML狀態(tài)圖的優(yōu)點在于它支持嵌套和并發(fā)。UML狀態(tài)圖中包含基本狀態(tài)(basic state)和復(fù)合狀態(tài)(composite state),復(fù)合狀態(tài)分為或狀態(tài)(or-state)和與狀態(tài)(and-state)?;驙顟B(tài)的子狀態(tài)之間是相互排斥的或關(guān)系,表示在任一時刻這些子狀態(tài)中只有一個子狀態(tài)為真;與狀態(tài)的子狀態(tài)之間是并發(fā)的非相互排斥關(guān)系,與狀態(tài)表示一個狀態(tài)可以有多個并發(fā)的子狀態(tài),并發(fā)子狀態(tài)之間用虛線分隔,用虛線分隔的每個區(qū)域表示一個并發(fā)的子狀態(tài)。把狀態(tài)屬性看成并發(fā)的子狀態(tài),從而可以把狀態(tài)圖的復(fù)雜度控制在線性級別上。并發(fā)狀態(tài)圖中一個事件可能引起多個子狀態(tài)的狀態(tài)遷移。如圖2中的CVM就是一個或狀態(tài),它的子狀態(tài)OFF和ON之間是相互排斥的關(guān)系,ON狀態(tài)就是一個與狀態(tài),當(dāng)處于ON狀態(tài)時,就意味著同時處于COFFEE和MONEY兩個子狀態(tài)。

由于UML狀態(tài)圖支持嵌套和并發(fā),這就使得它比以往的狀態(tài)轉(zhuǎn)移圖能更好的描述繼承的對象動態(tài)行為、并發(fā)的動態(tài)行為以及由數(shù)據(jù)成員和成員函數(shù)構(gòu)成的對象狀態(tài)和對象狀態(tài)轉(zhuǎn)移。UML狀態(tài)圖中可以包含復(fù)合狀態(tài)這就使得它可以把狀態(tài)的復(fù)雜度控制在和狀態(tài)屬性相關(guān)的線性級別。下面我們討論如何從UML狀態(tài)圖構(gòu)造一棵復(fù)合狀態(tài)測試樹。

4 構(gòu)造復(fù)合狀態(tài)測試樹

與以往的測試樹不同的是復(fù)合狀態(tài)測試樹的每個節(jié)點代表對象的復(fù)合狀態(tài)既對象的各個屬性的集合,邊表示狀態(tài)間的遷移,根節(jié)點代表對象的初始屬性集合。

構(gòu)造一個隊列queue來存放復(fù)合狀態(tài)測試樹的各個節(jié)點。

1)把UML狀態(tài)圖的起點讀入隊列queue。

2) 以UML狀態(tài)圖的起點定義根節(jié)點TestTree root,同時把節(jié)點標(biāo)識treeNode置為對象的初始狀態(tài),nodelevel置為0,t和childTree置為NULL,把root放入隊列中。

3) 取隊列頭部的節(jié)點設(shè)為head,搜索從head節(jié)點所對應(yīng)的狀態(tài)(head.treeNode)發(fā)出的狀態(tài)前移以及前移置的目標(biāo)狀態(tài),分別填充head.t和head.childTree,即把遷移至的狀態(tài)作為head的子節(jié)點;同時置好各個子節(jié)點的屬性值,nodeLevel=head.nodeLevel+1,從root節(jié)點開始層次遍歷測試樹(從第0層至head.nodeLevel層),如果在head的子節(jié)點中存在某個節(jié)點n,其所對應(yīng)的狀態(tài)已經(jīng)在第0層至head.nodeLevel層中出現(xiàn)過,則該節(jié)點n不再擴(kuò)展,即為葉子節(jié)點。把其他沒有出現(xiàn)過的子節(jié)點加入到隊列的尾部。

4) head指向隊列中的下一個節(jié)點,重復(fù)第二步,直至隊列為空。

在3)中,如果 某個遷移對應(yīng)的目標(biāo)狀態(tài)已經(jīng)在測試樹中出現(xiàn)過,就不再考慮這個狀態(tài),不加入到隊列尾部。這樣有效地避免了重復(fù)構(gòu)造節(jié)點,同時又不降低測試的覆蓋率。通過上述步驟就可以構(gòu)造出UML狀態(tài)圖對應(yīng)的測試樹。

復(fù)合狀態(tài)樹構(gòu)造算法能很好的支持多個并發(fā)的子狀態(tài)的情況,只是節(jié)點表示為并發(fā)子狀態(tài)的合集;如果某個事件觸發(fā)其他事件從而引起一系列的狀態(tài)遷移時,只要把最終的狀態(tài)作為節(jié)點加入到測試樹中。比以往的插入樁模塊更容易實現(xiàn)。

通過測試樹可以很容易的構(gòu)造出測試用例。從根節(jié)點開始沿著各個分支往下知道葉子節(jié)點,每條這樣從根節(jié)點開始到某個葉子節(jié)點結(jié)束的路徑上的事件按順序組合在一起,就成為基于對象狀態(tài)測試的一個測試用例。如果增加對象屬性可以很容易的在復(fù)合狀態(tài)測試樹中增加,增加屬性后可以把狀態(tài)的復(fù)雜度控制在和狀態(tài)屬性相關(guān)的線性級別,測試時不僅可以單獨的對對象的每一個屬性和所有屬行進(jìn)行測試,也可以對對象的所有屬性任意選擇組合進(jìn)行測試。大大增加了測試的靈活性。

5 結(jié)束語

UML的狀態(tài)圖支持潛逃和并發(fā),把狀態(tài)的復(fù)雜度控制在和狀態(tài)屬性相關(guān)的線性級別;其次UML狀態(tài)參數(shù)圖是在面向?qū)ο筌浖_發(fā)的生命周期中的早期設(shè)計階段確定的,是對對象狀態(tài)的完整的描述,并不依賴于源代碼,既保證了狀態(tài)描述的完整性,又可以在開發(fā)早期進(jìn)行測試,盡早發(fā)現(xiàn)與狀態(tài)相關(guān)的錯誤,避免將錯誤帶入到后面的開發(fā)階段。因此可以用UML的狀態(tài)圖來產(chǎn)生有效的測試用例,這大大提高了測試的靈活性和有效性。

參考文獻(xiàn):

[1] 張克東,莊燕濱.軟件工程與軟件測試自動化教程[M].北京:電子工業(yè)出版社,2002.

[2] 劉金艷,藺娟茹,尹治本.面向?qū)ο筌浖y試的探討[C]//2002年全國軟件與應(yīng)用學(xué)術(shù)會議(NASAC)論文集.北京:機(jī)械工業(yè)出版社,2002:262-266.

[3] 楊小平.面向?qū)ο筌浖y試探討[J].計算機(jī)工程與應(yīng)用,2000,36(1):44-46.

[4] 姬瑩,羅鈞昊,鐘聯(lián)炯.面向?qū)ο筌浖y試主要問題的探討[J].西安工業(yè)學(xué)院學(xué)報,2001(1).

[5] Fewster M,Graham D.軟件測試自動化技術(shù)與實例詳解[M].舒智勇,譯.北京:電子工業(yè)出版社,2000.

[6] 葉仁召,鄭玉墻,魯漢榕.面向?qū)ο筌浖y試及度量的研究[J].計算機(jī)工程與設(shè)計.2001,22(4):21-24.

[7] 徐中偉,吳芳美.軟件測試質(zhì)量的度量[J].計算機(jī)工程與應(yīng)用,2002,38(2l):100-102.

主站蜘蛛池模板: 亚洲精品无码在线播放网站| 欧美亚洲欧美| 亚洲国语自产一区第二页| 狠狠色丁婷婷综合久久| 欧美精品v日韩精品v国产精品| 成人福利在线看| 国产一区二区三区在线观看视频| 成人无码区免费视频网站蜜臀| 亚洲AⅤ永久无码精品毛片| 五月婷婷丁香综合| 精品无码国产一区二区三区AV| 色成人综合| 综合天天色| 88av在线播放| P尤物久久99国产综合精品| 日韩在线第三页| 狠狠色成人综合首页| 在线欧美日韩国产| 一区二区三区四区日韩| 88av在线| 一区二区在线视频免费观看| 98精品全国免费观看视频| 日本五区在线不卡精品| 99在线观看免费视频| 精品国产电影久久九九| 国产91小视频| 久久超级碰| 99热这里只有精品国产99| 国产成人高清亚洲一区久久| 欧美一级色视频| 91麻豆精品国产高清在线| 亚洲黄网在线| a级毛片免费网站| 视频一区视频二区中文精品| 亚洲天堂777| 午夜人性色福利无码视频在线观看| 国产成人av大片在线播放| 国产精品亚洲а∨天堂免下载| 久久亚洲中文字幕精品一区| 亚洲无码视频一区二区三区 | 国产欧美视频在线| 欧洲熟妇精品视频| 欧美在线伊人| 欧美天堂久久| 精品99在线观看| 婷婷五月在线视频| 无码 在线 在线| 日本高清免费不卡视频| 黄网站欧美内射| 中文字幕在线看视频一区二区三区| 亚洲成人一区二区三区| 26uuu国产精品视频| 久久 午夜福利 张柏芝| 午夜福利在线观看入口| 91视频首页| 国产精品网址你懂的| 日韩精品中文字幕一区三区| 波多野吉衣一区二区三区av| 欧美综合在线观看| 亚洲成人网在线播放| 国产情侣一区| 欧洲高清无码在线| 一级毛片无毒不卡直接观看| 一级毛片网| 亚洲日本中文综合在线| 19国产精品麻豆免费观看| 国产自产视频一区二区三区| 波多野结衣亚洲一区| 强奷白丝美女在线观看 | 国产原创自拍不卡第一页| 国产成人高清精品免费| 国产黄色片在线看| 久久香蕉国产线看精品| 久996视频精品免费观看| 国产后式a一视频| 日本午夜视频在线观看| 激情五月婷婷综合网| 久久天天躁狠狠躁夜夜躁| 欧美亚洲另类在线观看| 国产精品美人久久久久久AV| 精品久久久久成人码免费动漫 | 色噜噜久久|