《電子技術應用》
您所在的位置:首頁 > 其他 > 設計應用 > 一種面向狀態COM組件的測試用例生成方法
一種面向狀態COM組件的測試用例生成方法
來源:微型機與應用2010年第10期
吳 忠
(江西方興科技有限公司 技術部,江西 南昌330025)
摘要: 基于組件的開發方法提高了軟件的可復用性和軟件開發效率,但組件具有的封裝和狀態特性增加了組件和基于組件軟件的測試難度。依據組件的狀態特性,在組件中引入狀態性概念,將組件分為非狀態組件和狀態組件。對具有不同特征的組件進行有針對性的測試。對于狀態組件,除使用非狀態組件的測試方法外,還定義了擴展鄰接表和擴展約束對照表來存儲狀態信息,并結合基于流的測試方法來產生方法序列測試用例及腳本。在理論研究的基礎上開發出COM(Component Object Model)組件測試用例及腳本自動生成系統,驗證了測試用例及腳本生成方法的有效性。
Abstract:
Key words :

摘  要: 基于組件的開發方法提高了軟件的可復用性和軟件開發效率,但組件具有的封裝和狀態特性增加了組件和基于組件軟件的測試難度。依據組件的狀態特性,在組件中引入狀態性概念,將組件分為非狀態組件和狀態組件。對具有不同特征的組件進行有針對性的測試。對于狀態組件,除使用非狀態組件的測試方法外,還定義了擴展鄰接表和擴展約束對照表來存儲狀態信息,并結合基于流的測試方法來產生方法序列測試用例及腳本。在理論研究的基礎上開發出COM(Component Object Model)組件測試用例及腳本自動生成系統,驗證了測試用例及腳本生成方法的有效性。
關鍵詞: COM組件;組件測試;狀態組件;測試用例

    目前基于組件的軟件工程(CBSE)已成為軟件工程領域的研究熱點[1,2,4]。CBSE是從面向對象的開發方法發展而來,其特點是能夠實現組件的重用,使組件實現“即插即用”,縮短軟件開發周期,降低開發維護成本。各種新型組件開發技術進一步提高了組件開發效率及組件性能,但組件的一系列問題始終沒有得到較好的解決。狀態組件是COM組件中另一類非常重要、使用非常廣泛的組件。由于狀態組件具有狀態特性,對狀態組件的測試要求也更高,難度也更大。
    本文將在非狀態組件分析的基礎上,針對狀態組件的特性進行研究。將詳細分析狀態組件與擴展有限狀態機的共性,并結合狀態組件的狀態特性及方法調用序列要求,分析兩者間的關聯性。通過將狀態組件轉換為等價的擴展有限狀態機,并將信息存儲在自定義的擴展鄰接表和擴展約束對照表中,再結合有向圖的遍歷算法來產生測試方法序列。方法序列中單個接口成員函數的測試用例的生成,采用非狀態組件中使用的測試用例生成方法。
1 狀態組件與狀態機
    由于狀態組件與有限狀態機存在狀態特性上的相似性[1-3],因而在狀態組件測試用例生成方法中引入了擴展有限狀態機。
    有限狀態機FSM(Finite State Machine),已經成為需求規格說明的一種相當于標準的表示方法[5,6]。在很多結構化分析中都使用了某種形式的有限自動機,而且在絕大多數的面向對象分析中廣泛使用。
    在現有的軟件測試領域經常使用的狀態機是在原始狀態機的基礎上經過改造的擴展狀態機EFSM(Extended FSM)[7]。EFSM可定義為一個5元組:EFSM=<∑,S,T,Γ,s0>,其中∑是狀態機接受的輸入集合;S是狀態機的狀態集合;Γ是邏輯表達式集合;T是轉換集合,T=∑×S×S×Γ,表示狀態機處于一個起始狀態,s1∈S時,接收到一個輸入e∈∑,而且滿足條件λ∈Γ,那么狀態機的狀態將變成s2∈S;s0∈S是狀態機的初始狀態集。
    由狀態組件的特性分析和有限狀態機的介紹可知,狀態組件與擴展有限狀態機有很大的關聯性,具體體現在以下幾個方面:
    (1)狀態組件的接口成員方法一般都有輸入參數,而對沒有輸入參數的接口成員函數,可以將輸入參數置為空。這些輸入參數與有限狀態機中的輸入集∑具有一致性,因此可以認為方法的輸入參數對組成了狀態組件的輸入集∑。
    (2)狀態組件的接口成員函數組成的函數方法集合[8],與有限狀態機的狀態相似,都是一類事物的集合,具有關聯性。可以將狀態組件的接口成員函數方法抽象成一種特定的擴展狀態S′。這些擴展狀態組成的集合便可以構成一個擴展狀態集S。
    (3)一些方法的后置斷言有相應的后置斷言條件,這些后置斷言條件約束了方法可以轉換到哪一個后序方法上。這與擴展狀態機中的Γ是一致的。因此可以將這些后置斷言條件組成的集合當作Γ。
    (4)當一個初始方法M1完成后,在滿足一定的后置斷言條件時,可以根據后置斷言和后置斷言方法的輸入參數,轉移到下一個方法上。這與擴展狀態機中的T轉換集合也是一致的。
    (5)另外,狀態組件有一些接口成員方法沒有前置斷言,即可以被直接調用而沒有特定的要求??梢哉J為這些沒有前置斷言的方法是一種初始狀態方法集,即對應于擴展狀態機中的s0。
    由上述關聯性分析可知,可以將狀態組件的方法轉換為有限狀態機中的狀態,而方法之間約束條件可以轉換為有限狀態機各狀態之間的轉移,其具體的對照形式如圖1所示。

    綜上所述,可以充分地認為狀態組件可以轉換為等效的擴展有限狀態機模型。這樣可以通過擴展用于存儲擴展有限狀態機信息的擴展鄰接表來存儲狀態組件的信息。
2 狀態組件測試用例生成
    在將狀態組件的信息轉換為擴展有限狀態機,并存入擴展鄰接表和擴展約束對照表中后,可以通過有向圖的相關性質來遍歷狀態組件所有方法轉換,以此產生方法調用序列集。狀態組件接口成員方法序列集的生成過程分為兩個步驟:第一步是產生初始的方法序列集(算法1);由于第一步產生方法序列集中可能會存在冗余,因此第二步是去除初始方法序列集中的冗余方法序列,生成最終狀態組件接口成員方法序列集(算法2)。
    算法1:初始方法序列集的生成算法
    輸入:最大循環數MaxCircle,狀態組件的擴展鄰接表ExternAdjacencyTable,擴展約束對照表ExternConditionTable
    輸出:初始方法序列集SequencesList
    {
        foreach(head∈ExternAdjacencyTable.ExternAdjacency-
Head)
        if(head is start method)
            CreateSequence(head,head.name);
    }
    CreateSequence(ExternAdjacencyHead head,string sequence)
    {
        foreach(conn∈head.Connections)
        {
        TempSequence=sequence;
        TempHead=ExternAdjacencyHead[conn.MethodNum];
        if(TempHead.visittime<MaxCircle)
        {
            TempSequence+=conn.postConditionID+
TempHead.methodname;
            TempHead.visittime++;
            if(TempHead is end method)
                Add TempSequence into SequencesList;
            if(TempHead has connections)
                CreateSequence(TempHead,TempSequence);
        }
        }
    }
    算法的時間復雜度主要由初始方法的數量M以及方法的間轉移的邊數E決定。每一個初始方法都要完成一遍所有邊的掃描,因此算法的時間復雜度為O(M×E)。
    算法2:方法序列集約簡算法
    輸入:初始方法序列集SequencesList
    輸出:最終方法序列集Sequences
    {
        foreach(tempSequence∈SequencesList)
        {
        I=0;
        foreach(tempSequence2∈SequencesList)
        {
            if(tempSequence2 contains tempSequence)
                I++;
            if(I>1)
                break;
        }
        if(I>1)
            continue;
        else
          Add tempSequence into Sequences;
        }
    }
    算法時間復雜度由兩個foreach循環決定,兩個循環都將掃描一遍初始方法序列集,因此算法時間復雜度O(n2)。
3 系統實現及分析
    由前面的介紹可知,COM組件測試用例及腳本生成子系統從組件的信息說明文檔中提取基本信息,再針對狀態組件和非狀態組件的不同特性分別進行測試用例的設計。
    對于非狀態組件會將單個接口成員函數的參數按二元組合覆蓋產生的測試用例直接用于生成測試腳本;而對于狀態組件,二元組合覆蓋產生的測試用例會用于填充接口成員函數方法序列中的相應函數,因此測試用例文檔中會比非狀態組件的測試用例多一個TYPE字段。在完成了測試用例和方法序列集的準備后,使用腳本生成模塊來完成測試腳本的自動化生成及編譯工作。COM組件測試用例及腳本生成系統的結構如圖2所示。

    測試用例生成子系統關鍵實現技術主要有以下兩項:
    (1)信息存儲與提取——XML技術
    可擴展標記語言XML近年來被許多行業廣泛采用。組件信息、邊界值信息以及測試數據等的存儲都采用了XML文檔的形式。使用XML來定義自己的數據信息存儲格式,可以按照要求靈活地變更和修改。而且.NET提供了豐富的操作接口,可以方便、靈活地使用XML。
    (2)測試腳本自動生成——反射機制和CodeDOM技術
    反射機制(Reflection)是一種運行時機制,允許代碼在運行時獲得數據類型信息,即代碼在運行時可以獲得一個變量的數據類型。不僅如此,代碼運行時還可以獲得類的成員屬性、方法、域和構造器等許多信息。測試用例生成子系統通過按照測試驅動器自定義的用戶屬性來提供測試腳本,這包括類型屬性[TestFixture]、開始函數屬性[SetUp]、終止函數屬性[TearDown]以及測試函數屬性[Test]等。按要求生成的測試腳本在編譯成測試程序集后,驅動器可以根據約定去查找具有相應屬性的元素進行調度。這也是與動態監控和錯誤注入的一個接口約定。
    CodeDOM技術:.NET Framework中用CodeDOM以一種語言中立的方式來表示源代碼文檔。通過CodeDOM創建對象圖,然后使用特定于某種語言的CodeDomProvider類的派生類產生相應語言的測試腳本,最后編譯生成測試用例集。COM組件測試腳本到測試程序集的生成流程如圖3所示。

    對于狀態組件,采用擴展鄰接表來存儲狀態組件的狀態信息,通過有向圖的遍歷算法自動產生方法序列,這樣大大的提高了方法序列集生成的效率。同時在程序中加入了對循環的控制,并對有重復的方法序列進行了約簡,大大的減少了測試序列集的數量,并保證了測試的有效性不會隨之降低。表1展示了典型組件約簡前后的方法序列數量的對照關系,可以看出約簡后的方法序列數量較約簡前有了顯著的減少。

    通過IPO算法生成的測試用例可以有效觸發COM組件中的錯誤,例如針對COM組件PDG2.dll的接口成員函數Register()生成測試用例及腳本,在編譯成程序集后供驅動器使用,可以監測到錯誤異常。
    狀態組件是組件中經常使用的一類組件,狀態特性的引入使得其測試更加的復雜化,測試用例生成的要求更高、代價也更大。本文通過分析狀態組件的特性及其與擴展有限狀態機的相關性介紹,結合自定義的擴展鄰接表和擴展約束對照表等存儲結構,較好地實現了狀態組件測試方法序列用例及腳本的生成,也使得狀態組件的測試代價大大降低、測試效率顯著提高。
參考文獻
[1] ALI Y D,UYAR M U.A method enabling feasible conformance test sequence generation for EFSM models[J]. IEEE Transactions on Computers,2004,53(5):614-627.
[2] 蔣凡,魏蓉,鄶吉豐.基于擴展有限狀態機測試序列生成方法研究[J].計算機工程與應用,2007,43(7):62-64.
[3] 戰德臣,王忠杰,徐曉飛.基于XML的組件標準化描述[J].計算機工程與應用,2003,39(4):89-92.
[4] 劉永紅.構件及基于構件的軟件測試研究[D].中科院成都計算機應用研究所,2006.
[5] 趙明華,陳榕,王小鴿.基于元數據的構件自動測試技術 研究[J].計算機工程與設計,2006,27(10):1731-1736.
[6] CHANG Liu,RICHARDSON D.Software components with  retrospectors[C].In Proceedings of International Workshop on  the Role of Software Architecture in Testing and Analysis,1998:63-68.
[7] RAKESH S,DAVID C,PAUL S.A passive test oracle using a Component’s API[C].Proceedings of the 12th Asia Pacific Software Engineering Conference(APSEC’05),2005:561-567.
[8] 楊建軍,陳衛東,葉澄清,等.面向組件的接口變異測試方法[J].浙江大學學報(工學版),2003,37(2):129-133.

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          亚洲自拍三区| 在线午夜精品| 国外成人在线| 在线观看av一区| 亚洲一区二区动漫| 亚洲日本在线观看| 亚洲一区视频在线观看视频| 91久久综合亚洲鲁鲁五月天| 国产麻豆午夜三级精品| 亚洲丶国产丶欧美一区二区三区| 国产三级欧美三级| 久久美女艺术照精彩视频福利播放| 一区二区三区**美女毛片| 欧美成人国产一区二区| 亚洲视频网在线直播| 久久全国免费视频| 好看的日韩视频| 欧美激情综合在线| 亚洲欧洲精品一区二区三区不卡| 久久久爽爽爽美女图片| 国产精品成人aaaaa网站| 国产精品免费一区二区三区在线观看| 亚洲一区二区三区久久| 国产一区二区三区精品久久久| 国产精品色一区二区三区| 欧美日韩精选| 在线电影欧美日韩一区二区私密| 亚洲人成绝费网站色www| 欧美精品不卡| 欧美一区二区三区精品| 久久精品99国产精品酒店日本| aa日韩免费精品视频一| 欧美国产日本| 国产一区二区在线观看免费| 亚洲在线视频免费观看| 国产精品久久9| 久久久人人人| 亚洲一区二区在线视频| 欧美激情一区二区三区全黄| 在线不卡亚洲| 久久久噜噜噜久久人人看| 一区二区三区在线免费播放| 久久免费高清| 国产在线观看91精品一区| 日韩一区二区精品| 久久久国产精品一区| 亚洲精品视频啊美女在线直播| 亚洲高清三级视频| 国产伪娘ts一区| 久久亚洲私人国产精品va媚药| 欧美成年人在线观看| 国产乱肥老妇国产一区二| 久久国产色av| 西西裸体人体做爰大胆久久久| 黄色成人片子| av成人免费| 欧美 日韩 国产一区二区在线视频| 欧美在线高清视频| 激情小说亚洲一区| 国产自产在线视频一区| 日韩视频免费| 国产亚洲aⅴaaaaaa毛片| 好看不卡的中文字幕| 亚洲一区在线看| 欧美日韩一区在线视频| 亚洲欧美日韩电影| 亚洲欧洲精品一区| 国产欧美日韩亚洲一区二区三区| 欧美三级乱人伦电影| 亚洲人www| 亚洲字幕在线观看| 久久久久久婷| 国产精品一区二区在线| 国产乱人伦精品一区二区| 亚洲大片免费看| 亚洲国产精品综合| 亚洲电影在线观看| 永久久久久久| 国产精品99久久久久久久女警| 国产日产欧美a一级在线| 国产农村妇女精品一区二区| 欧美久久在线| 国产综合色在线视频区| 性欧美暴力猛交69hd| 国产日韩专区在线| 米奇777在线欧美播放| 国产精品初高中精品久久| 国产精品视频男人的天堂| 午夜一区二区三区在线观看| 国产精品久久久久久久久久ktv| 亚洲国产精彩中文乱码av在线播放| 亚洲免费观看高清完整版在线观看熊| 欧美黄色网络| 国语自产在线不卡| 精品白丝av| 久久久久看片| 亚洲视频图片小说| 一本色道久久综合亚洲精品不| 欧美激情一区二区三级高清视频| 国产精品久久一区主播| 亚洲欧美精品一区| 欧美一区二区三区在线视频| 欧美日本韩国在线| 免费不卡中文字幕视频| 好吊视频一区二区三区四区| 欧美在线网址| 亚洲国产日韩欧美在线动漫| 国产精品视频久久一区| 好看的av在线不卡观看| 亚洲靠逼com| 亚洲中无吗在线| 日韩写真在线| 亚洲图片欧美午夜| 亚洲电影激情视频网站| 欧美va亚洲va日韩∨a综合色| 国产亚洲在线观看| 国产亚洲精品久| 国产精品伦一区| 久久久久久9| 一区二区在线不卡| 国产亚洲精品久久久久婷婷瑜伽| 亚洲国产高清在线| 国内一区二区三区在线视频| 欧美香蕉视频| 国产最新精品精品你懂的| 免费人成精品欧美精品| 欧美日韩国产一区二区三区地区| 国产精品护士白丝一区av| 日韩小视频在线观看专区| av成人免费观看| 国产精品久线观看视频| 亚洲国产日韩欧美在线99| 欧美成人dvd在线视频| 亚洲高清不卡在线| 国产在线拍偷自揄拍精品| 久久久久久穴| 久久偷看各类wc女厕嘘嘘偷窃| 久久精品成人一区二区三区蜜臀| 久久精品一二三| 老司机凹凸av亚洲导航| 韩国一区二区三区在线观看| 国产日韩一区二区三区在线| 久久永久免费| 野花国产精品入口| 91久久在线播放| 欧美精品啪啪| 亚洲一级高清| 亚洲人精品午夜在线观看| 久久一区免费| 久久久久一区二区三区| 久久久久女教师免费一区| 欧美一级久久久| 亚洲黄色免费网站| 欧美日韩久久| 欧美紧缚bdsm在线视频| 欧美亚洲第一区| 亚洲欧美日本另类| 正在播放日韩| 亚洲日本成人在线观看| 国产精品丝袜91| 久久久国产午夜精品| 久久黄色小说| 老牛国产精品一区的观看方式| 亚洲伦理一区| 欧美在线视频全部完| 亚洲欧美综合国产精品一区| 99精品国产在热久久下载| 伊人狠狠色丁香综合尤物| 欧美sm重口味系列视频在线观看| 欧美激情无毛| 国产一区二区精品久久91| 亚洲自拍三区| 久久不射2019中文字幕| 国产欧美精品va在线观看| 欧美在线一二三| 欧美性大战久久久久| 久久激情五月激情| 欧美精品一区二区三区在线看午夜| 久久久综合网站| 亚洲精品国产品国语在线app| 久久久久国产一区二区三区四区| 欧美人在线观看| 日韩亚洲综合在线| 久热爱精品视频线路一| 欧美亚洲三区| 久久色中文字幕| 91久久久久久国产精品| 国产精品自拍一区| 亚洲大片av| 午夜精品国产更新| 欧美在线视频在线播放完整版免费观看| 在线不卡亚洲| 欧美精品久久久久久久| 亚洲一区二区毛片| 亚洲成人在线视频播放| 亚洲美女电影在线| 欧美国产视频日韩| 亚洲国产美国国产综合一区二区| 国产亚洲一二三区| 激情视频亚洲| 亚洲日韩欧美视频一区| 欧美激情精品久久久久久大尺度| 欧美中日韩免费视频| 一本一本a久久| 亚洲精品你懂的| 亚洲综合大片69999| 国产一区二区欧美| 欧美ed2k| 亚洲一区二区三区久久| 欧美激情欧美激情在线五月| 国产一区二区在线观看免费| 国产精品久久亚洲7777| 亚洲欧美日韩在线播放| 亚洲欧美春色| 欧美一级理论片| 欧美日韩一区二区视频在线| 91久久精品网| 1024精品一区二区三区| 亚洲国产视频一区二区| 一区二区三区.www| 韩曰欧美视频免费观看| 国产精品成av人在线视午夜片| 亚洲国产一成人久久精品| 亚洲永久免费精品| 最新亚洲电影| 亚洲乱亚洲高清| 亚洲特级片在线| 亚洲自拍偷拍一区| 久久成人免费视频| 亚洲毛片av| 亚洲亚洲精品三区日韩精品在线视频| 国产精品99久久久久久人| 欧美视频中文字幕在线| 国产欧美日韩在线| 亚洲欧洲精品一区二区三区波多野1战4| 亚洲一二三区在线| 又紧又大又爽精品一区二区| 国产精品亚洲а∨天堂免在线| 亚洲国产视频一区二区| 亚洲伦理精品| 亚洲图片你懂的| 极品尤物一区二区三区| 久久亚洲精品欧美| 亚洲国产精品成人综合| av成人免费观看| 老**午夜毛片一区二区三区| 亚洲另类在线一区| 国产精品毛片| 在线观看成人网| 国产欧美日韩综合一区在线观看| 羞羞色国产精品| 国产精品女主播在线观看| 久久久午夜电影| 国产精品网红福利| 久久蜜桃香蕉精品一区二区三区| 激情亚洲一区二区三区四区| 欧美三级午夜理伦三级中视频| 久久精品水蜜桃av综合天堂| 欧美片在线播放| 在线精品视频一区二区三四| 亚洲精品一区久久久久久| 欧美日韩美女在线| 欧美在线视频一区二区| 欧美激情视频一区二区三区在线播放| 在线不卡a资源高清| 免费不卡在线视频| 欧美一区91| 裸体一区二区| 欧美日韩1区| 精品成人国产在线观看男人呻吟| 午夜一区二区三视频在线观看| 亚洲新中文字幕| 亚洲国产一区二区三区青草影视| 中文欧美在线视频| 欧美三级小说| 国产精品久久久久久久7电影| 日韩午夜剧场| 欧美区二区三区| 欧美午夜电影在线| 国产一区欧美日韩| 亚洲美女在线一区| 国产精品黄页免费高清在线观看| 欧美日韩国产色视频| 亚洲一区二区三区精品视频| 国产亚洲一区二区在线观看| 欧美大片在线影院| 久久精彩视频| 激情亚洲网站| 久久中文字幕一区| 欧美三区免费完整视频在线观看| 欧美在线视频在线播放完整版免费观看| 国产九九精品视频| 亚洲第一网站免费视频| 国产亚洲精品久久久久动| 国产日韩欧美精品| 亚洲精品国产精品乱码不99按摩| 另类图片综合电影| 欧美日韩1区2区| 美女精品网站| 一区二区三区导航| 黑人一区二区三区四区五区| 亚洲欧美国产一区二区三区| 今天的高清视频免费播放成人| 欧美激情亚洲自拍| 国产曰批免费观看久久久| 欧美日韩不卡视频| 欧美激情中文不卡| 亚洲片国产一区一级在线观看| 久久久久国产精品一区三寸| 日韩特黄影片| 欧美伦理在线观看| 欧美国产精品v| 亚洲自啪免费| 国产精品v欧美精品∨日韩| 欧美午夜精品理论片a级按摩| 欧美激情女人20p| 免费观看成人鲁鲁鲁鲁鲁视频| 在线观看国产日韩| 亚洲色图综合久久| 欧美一区二区私人影院日本| 国产精品日韩欧美一区| 欧美一区二区三区成人| 亚洲综合欧美日韩| 亚洲在线不卡| 亚洲午夜一区二区三区| 欧美在线免费观看| 久久久夜色精品亚洲| 欧美日韩精品伦理作品在线免费观看|