專(zhuān)利名稱(chēng):基于變量依賴(lài)的并行擴(kuò)展有限狀態(tài)機(jī)的協(xié)議測(cè)試生成方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)協(xié)議測(cè)試技術(shù)領(lǐng)域,具體涉及一種基于變量依賴(lài)的并行擴(kuò)展有限狀態(tài)機(jī)的協(xié)議測(cè)試生成方法。
背景技術(shù):
協(xié)議測(cè)試技術(shù)是保證網(wǎng)絡(luò)通訊協(xié)議正確實(shí)現(xiàn)以及不同的網(wǎng)絡(luò)設(shè)備之間正確互連的重要手段。一致性測(cè)試是基本的協(xié)議測(cè)試方法,其目標(biāo)是檢測(cè)協(xié)議實(shí)現(xiàn)是否與協(xié)議規(guī)范
相一致?;谛问交椒ǖ臏y(cè)試生成是這一領(lǐng)域中的重要問(wèn)題,其目標(biāo)是從協(xié)議規(guī)范的形式化模型出發(fā),生成用于測(cè)試活動(dòng)的測(cè)試集(或測(cè)試序列)。在大多數(shù)已提出的測(cè)試生成技術(shù)中,其基本思想是將被測(cè)系統(tǒng)(System Under Test,簡(jiǎn)稱(chēng)SUT)模型化為一個(gè)有限狀態(tài)機(jī)或擴(kuò)展有限狀態(tài)機(jī)的系統(tǒng),進(jìn)而生成測(cè)試序列。在已提出的測(cè)試生成技術(shù)中存在以下一些問(wèn)題第一,基于擴(kuò)展有限狀態(tài)機(jī)的測(cè)試生成僅考慮單一進(jìn)程模型情形,對(duì)于多個(gè)相互關(guān)聯(lián)的并行進(jìn)程的情形沒(méi)有涉及。后者只能通過(guò)窮舉多個(gè)并行進(jìn)程的各種組合,并對(duì)各種組合分別建立組合模型加以解決,建模的規(guī)模難以接受,并且給后續(xù)的測(cè)試生成造成了障礙。第二,基于通信有限狀態(tài)機(jī)或通信擴(kuò)展有限狀態(tài)機(jī)的測(cè)試生成都是用于網(wǎng)絡(luò)中多實(shí)體的情形,沒(méi)有涉及單一實(shí)體中多個(gè)進(jìn)程的情形,而且前者的測(cè)試方法大都存在組合模型造成的狀態(tài)爆炸問(wèn)題。
發(fā)明內(nèi)容
(一)要解決的技術(shù)問(wèn)題本發(fā)明所要解決的技術(shù)問(wèn)題是如何解決變量依賴(lài)導(dǎo)致的路徑不可執(zhí)行問(wèn)題,同時(shí)避免狀態(tài)爆炸。( 二 )技術(shù)方案為解決上述技術(shù)問(wèn)題,本發(fā)明提供了一種基于變量依賴(lài)的并行擴(kuò)展有限狀態(tài)機(jī)的協(xié)議測(cè)試生成方法,所述方法是在網(wǎng)絡(luò)操作環(huán)境中對(duì)于一個(gè)被測(cè)試的網(wǎng)絡(luò)設(shè)備依次執(zhí)行以下步驟實(shí)現(xiàn)的步驟1 在計(jì)算機(jī)中,把被測(cè)試的網(wǎng)絡(luò)設(shè)備的協(xié)議規(guī)范描述為一個(gè)并行擴(kuò)展有限狀態(tài)機(jī)模型Ms ;步驟2 采用忽略變量依賴(lài)的擴(kuò)展有限狀態(tài)機(jī)測(cè)試生成技術(shù)生成組件狀態(tài)機(jī)抽象測(cè)試集;步驟3 針對(duì)外部變量,生成可執(zhí)行化外部前導(dǎo)序列;步驟4 采用鏈接外部前導(dǎo)序列的方法對(duì)組件狀態(tài)機(jī)抽象測(cè)試集進(jìn)行可執(zhí)行化處理;步驟5 生成關(guān)于外部變量的跨狀態(tài)機(jī)抽象測(cè)試集;步驟6 將經(jīng)過(guò)步驟4處理的抽象測(cè)試集與步驟5生成的抽象測(cè)試集合并,刪除重復(fù)或被包含的測(cè)試序列,得到協(xié)議狀態(tài)機(jī)的抽象測(cè)試集。優(yōu)選地,步驟1具體為設(shè)在所述被測(cè)試的網(wǎng)絡(luò)設(shè)備中包含一個(gè)或多個(gè)協(xié)議,各協(xié)議包含一個(gè)或多個(gè)可并行工作的進(jìn)程,各協(xié)議的規(guī)范是已知的;則將所述被測(cè)試的網(wǎng)絡(luò)設(shè)備用一個(gè)并行擴(kuò)展有限狀態(tài)機(jī)模型來(lái)描述,所述并行擴(kuò)展有限狀態(tài)機(jī)模型是η個(gè)組件狀態(tài)機(jī)的集合,用Ms表示,Ms = (M1, M2, ... , Mj ;各組件狀態(tài)機(jī)用于描述各協(xié)議進(jìn)程的規(guī)范,所述組件狀態(tài)機(jī)用Mi表示,i = 0, 1,· · ·,n,Mi 是一個(gè)八元組,Mi = (S,s0, V1, Ve, I,0,TR, T)其中,S是Mi的有限狀態(tài)集合;% e S,是Mi的初始狀態(tài);V1 = (Vil, Vi2, . . . Vik, . . .,Vin),其中Vik是所有定義與使用均在Mi內(nèi)部的變量,稱(chēng)為內(nèi)部變量,k= 1,2,...,η,η為正整數(shù),V1是Mi所有內(nèi)部變量的集合;Ve = (Vel, Ne2, ... Vek,... , Vm),其中Vek是所有定義在Mi外部,但是在Mi內(nèi)部被使用的變量,稱(chēng)為外部變量,k= 1,2,...,η,η為正整數(shù),Ve是Mi所有外部變量的集合;I = (I1, I2, ... Ik, ... , Ιη),其中込是虬的一個(gè)輸入符號(hào),k = 1,2,· · ·,η,η 為正整數(shù),I是虬所有輸入符號(hào)的集合,I為非空集合;0= (01,02,...(\,...,011),其中01;是虬的一個(gè)輸出符號(hào),1^= 1,2,...,η,η 為
正整數(shù),0是Mi所有輸出符號(hào)的集合,0為非空集合;TR = (TR1, TR2, · . . TRk, · · ·,TRn),其中 TOk 是 Mi 的一個(gè)時(shí)鐘,k = 1,2,· · ·,η,η
為正整數(shù),TRk能夠被Mi的任意變遷讀取,TR是Mi所有時(shí)鐘的集合;T = (T1, T2, ... Tk,...,Tn)是Mi所有變遷的集合,T為非空集合,其中Tk是Mi的一個(gè)變遷,k= 1,2,...,η,η 為正整數(shù),Tk 是一個(gè)六元組,Tk= (Sstart,Send,Ik, Ok, P, Α)其中,Sstart e S,是Tk的初始狀態(tài);Send e S,是 Tk 的末狀態(tài);Ik e I,是Tk的輸入符號(hào);Ok e 0,是Tk的輸出符號(hào);P是關(guān)于V1中的內(nèi)部變量、Ve中的外部變量、輸入Ik、一些常量和時(shí)鐘超時(shí)事件的謂詞表達(dá)式,P說(shuō)明了 Tk執(zhí)行的條件;A是Tk執(zhí)行時(shí)的行為序列,A包括變量賦值行為、輸出行為以及時(shí)鐘創(chuàng)建行為中的一項(xiàng)或多項(xiàng),A中的行為順序執(zhí)行。優(yōu)選地,步驟2依次按以下步驟執(zhí)行設(shè)兩個(gè)全局組件狀態(tài)機(jī)的集合分別為"TojD^generated和Generated,每個(gè)組件狀態(tài)機(jī)有一個(gè)對(duì)應(yīng)的測(cè)試?yán)蟃Si, i = 1,2,. . .,n,則步驟2. 1、初始化過(guò)程清空!"ojie—generated 和 Generated ;步驟2. 2、將所有組件狀態(tài)機(jī)M1, M2, ...,Mn放入集合To_be_generated ;步驟2. 3、如果集合I^jD^generated不為空,則執(zhí)行步驟2. 4 2. 10 ;否則停止;步驟2. 4、從集合"TojD^generated中取出一個(gè)組件狀態(tài)機(jī),記作Mi ;步驟2. 5、對(duì)Mi執(zhí)行以下步驟(1)找出Mi的每條變遷中的所有內(nèi)部變量定義、內(nèi)部變量使用和外部變量使用;
(2)為Mi的每條變遷,生成含有最少外部變量使用的最短前導(dǎo)序列;(3)如果Mi的每條變遷都已完成路徑生成,繼續(xù)步驟2. 6 ;否則,取一條變遷,記作 Ti,執(zhí)行以下步驟(3. 1)如果在Ti中被定義的每個(gè)內(nèi)部變量都已完成生成,重復(fù)(3);否則,取一個(gè)在Ti中被定義的內(nèi)部變量,記作Vi,繼續(xù)(3.2);(3. 2)如果使用Vi的每一條變遷都已完成生成,重復(fù)(3. 1);否則,取一條使用Vi 的變遷,記作Tj,繼續(xù)(3. 3), j ^ i ;(3. 3)將 Ti 加入路徑,設(shè) Ts = Ti ;(3. 4)如果Ts的后繼變遷,記作Ts+1,不含有對(duì)Vi的定義,則將Ts+1加入路徑,繼續(xù) (3. 5);否則,丟棄Ts+1,嘗試Ts的其他后繼變遷,如果已沒(méi)有未嘗試過(guò)的后繼變遷,則從路徑中刪除Ts,找到路徑中Ts的前導(dǎo)變遷,記作U Ts = I^1,如果Ts = Ti,丟棄路徑并跳轉(zhuǎn)到(3. 2),否則重復(fù)(3.4);(3. 5)設(shè)Ts+2是Ts+1的后繼變遷,如果I1不是Tj,則使Ts = Ts+1,Ts+1 = Ts+2,并重復(fù)(3.4);如果 Ts+1 = Tj,繼續(xù)(3.6);(3.6)如果路徑中沒(méi)有不可執(zhí)行的變遷,則繼續(xù)步驟2.6 ;否則,找到路徑中不可執(zhí)行的變遷,記作Tm,找到使Tm不可執(zhí)行的變量,記作Vik,如果Vik是外部變量,則標(biāo)記Tm 為可執(zhí)行,更新Tm為路徑中下一個(gè)不可執(zhí)行的變遷,重復(fù)(3.6);如果Vik是內(nèi)部變量,并且 Tue在Mi中的前導(dǎo)變遷Te中存在使Tik可執(zhí)行的對(duì)Vm的定義,則生成從路徑中Tm的前導(dǎo)變遷出發(fā),包含變遷Te并回到路徑中Tik的前導(dǎo)的環(huán),將環(huán)插入路徑中并繼續(xù)步驟2. 6;如果無(wú)法生成使Tm可執(zhí)行的環(huán)或不存在使Tik可執(zhí)行的 ;,則丟棄該路徑并跳轉(zhuǎn)到(3.2);步驟2. 6、為每一條路徑添加使?fàn)顟B(tài)機(jī)回到初始狀態(tài)的后置序列,形成完整路徑, 然后加入集合TSi ;步驟2. 7、刪除集合TSi中重復(fù)的或能夠被TSi中其它路徑包含的路徑;步驟2. 8、如果Mi中沒(méi)有未被覆蓋的變遷,則執(zhí)行步驟2. 9 ;如果Mi中仍有未被覆蓋的變遷,記作Tk,生成覆蓋該變遷的路徑,加入集合TSi,重復(fù)步驟2. 8 ;步驟2· 9、將Mi加入到集合Generated中;步驟2. 10、轉(zhuǎn)到步驟2. 3。優(yōu)選地,步驟3依次按以下步驟執(zhí)行設(shè)一個(gè)外部變量集合為EV,兩個(gè)前導(dǎo)序列集合分別為PU和PE,則步驟3. 1、遍歷所有組件狀態(tài)機(jī)的所有變遷,將所有外部使用的變量放入EV ;步驟3. 2、遍歷所有組件狀態(tài)機(jī)的所有變遷,如果變遷包含對(duì)EV中任意變量的定義,生成該變遷的含有最少外部變量使用的最短前導(dǎo)序列并放入PU ;步驟3. 3、遍歷PU中所有前導(dǎo)序列,如果前導(dǎo)序列可執(zhí)行,則將該前導(dǎo)序列放入 PE ;步驟3. 4、如果PU為空,繼續(xù)步驟4 ;如果PU不為空,取其中的前導(dǎo)序列,記作pu, 如果PE中存在能夠使pu可執(zhí)行的一個(gè)或多個(gè)前導(dǎo)序列,則將這些前導(dǎo)序列與Pu鏈接,將Pu 移動(dòng)到PE中并重復(fù)步驟3. 4 ;如果PE中存在能夠通過(guò)多次執(zhí)行使pu可執(zhí)行的一個(gè)或多個(gè)定義,則將含有這些定義的前導(dǎo)序列生成環(huán)并形成新的前導(dǎo)序列,將新的前導(dǎo)序列與Pu鏈接,將Pu移動(dòng)到PE中并重復(fù)步驟3. 4 ;如果Pu仍然無(wú)法執(zhí)行,重新生成pu并重復(fù)步驟3. 4。
優(yōu)選地,步驟4依次按以下步驟執(zhí)行步驟4. 1、遍歷所有組件狀態(tài)機(jī)抽象測(cè)試集TSi的所有測(cè)試序列,如果存在由于存在外部變量使用而無(wú)法執(zhí)行的序列,取一個(gè)無(wú)法執(zhí)行的序列,記作Pdu,繼續(xù)步驟4. 2 ;如果所有測(cè)試序列都已可執(zhí)行,則繼續(xù)步驟5 ;步驟4. 2、如果PE中存在可以使Pdu可執(zhí)行的一個(gè)或多個(gè)前導(dǎo)序列,則將這些前導(dǎo)序列與Pdu鏈接,繼續(xù)步驟4. 3 ;如果PE中存在能夠通過(guò)多次執(zhí)行使Pdu可執(zhí)行的一個(gè)或多個(gè)定義,則將含有這些定義的前導(dǎo)序列生成環(huán)并形成新的前導(dǎo)序列,將新的前導(dǎo)序列與Pdu 鏈接,繼續(xù)步驟4. 3 ;如果pdu仍然無(wú)法執(zhí)行,則丟棄Pdu ;步驟4. 3、重復(fù)步驟4. 1。優(yōu)選地,步驟5依次按以下步驟執(zhí)行步驟5. 1 遍歷所有組件狀態(tài)機(jī)的所有變遷,如果所有變遷都已遍歷,則繼續(xù)步驟 6 ;如果仍有未遍歷的、含有外部變量使用的變遷,記作t,則對(duì)t執(zhí)行以下步驟(1)生成t的含有最少外部變量使用的前導(dǎo)最短序列,記作Pt ;(2)如果PE中存在能夠使Pt可執(zhí)行的一個(gè)或多個(gè)前導(dǎo)序列,則將這些前導(dǎo)序列與 Pt鏈接,繼續(xù)步驟5. 2 ;如果PE中存在能夠通過(guò)多次執(zhí)行使Pt可執(zhí)行的一個(gè)或多個(gè)定義,則將含有這些定義的前導(dǎo)序列生成環(huán)并形成新的前導(dǎo)序列,將新的前導(dǎo)序列與Pt鏈接,繼續(xù)步驟5. 2 ;如果pt仍然無(wú)法執(zhí)行,則跳轉(zhuǎn)回(1);步驟5. 2 遍歷PE中的所有前導(dǎo)序列,如果所有序列都已遍歷,則繼續(xù)步驟5. 3 ; 如果仍有未遍歷的、含有Pt中所使用外部變量的定義的前導(dǎo)序列,將該前導(dǎo)序列與Pt鏈接, 構(gòu)成跨狀態(tài)機(jī)測(cè)試序列,加入跨狀態(tài)機(jī)抽象測(cè)試集;步驟5.3 重復(fù)步驟5. 1。優(yōu)選地,在步驟6之后還包括步驟7 將步驟6得到的抽象測(cè)試集轉(zhuǎn)換成可執(zhí)行的測(cè)試腳本。(三)有益效果本發(fā)明通過(guò)在模型中引入帶有變量依賴(lài)的并行狀態(tài)機(jī),更好地反映了被測(cè)系統(tǒng)的特性;在測(cè)試生成的過(guò)程中,使用兩階段生成,首先生成忽略變量依賴(lài)的測(cè)試序列,然后通過(guò)鏈接外部前導(dǎo)序列的方法,解決了變量依賴(lài)導(dǎo)致的路徑不可執(zhí)行問(wèn)題,避免了狀態(tài)爆炸。
圖1是本發(fā)明的方法流程圖;圖 2 是 SAVI-DHCP(SAVI Solution for DHCPv4/v6)協(xié)議狀態(tài)機(jī)示意圖;圖 3 是 SAVI_SLA(SAVI Solution for Stateless Address)協(xié)議狀態(tài)機(jī)示意圖;圖4是SAVI-DHCP與SAVI-SLA依賴(lài)關(guān)系示意圖。
具體實(shí)施例方式下面對(duì)于本發(fā)明所提出的一種基于變量依賴(lài)的并行擴(kuò)展有限狀態(tài)機(jī)的協(xié)議測(cè)試生成方法,結(jié)合附圖和實(shí)施例詳細(xì)說(shuō)明。本發(fā)明所提出的方法的思路在于首先采用忽略變量依賴(lài)的擴(kuò)展有限狀態(tài)機(jī)測(cè)試生成技術(shù)生成組件狀態(tài)機(jī)抽象測(cè)試集;然后針對(duì)外部變量依賴(lài),生成可執(zhí)行化外部前導(dǎo)序列并將其與組件狀態(tài)機(jī)抽象測(cè)試集鏈接,解決后者由于外部變量使用導(dǎo)致的路徑不可執(zhí)行問(wèn)題。如圖1所示,本發(fā)明所述的測(cè)試生成方法包括以下步驟步驟1 在計(jì)算機(jī)中,把被測(cè)試的網(wǎng)絡(luò)設(shè)備的協(xié)議規(guī)范描述為一個(gè)并行擴(kuò)展有限狀態(tài)機(jī)模型Ms ;步驟2 采用忽略變量依賴(lài)的擴(kuò)展有限狀態(tài)機(jī)測(cè)試生成技術(shù)生成組件狀態(tài)機(jī)抽象測(cè)試集;步驟3 針對(duì)外部變量,生成可執(zhí)行化外部前導(dǎo)序列;步驟4 采用鏈接外部前導(dǎo)序列的方法對(duì)組件狀態(tài)機(jī)抽象測(cè)試集進(jìn)行可執(zhí)行化處理;步驟5 生成關(guān)于外部變量的跨狀態(tài)機(jī)抽象測(cè)試集;步驟6 將組件狀態(tài)機(jī)抽象測(cè)試集與跨狀態(tài)機(jī)抽象測(cè)試集合并,刪除重復(fù)或被包含的測(cè)試序列,得到協(xié)議狀態(tài)機(jī)的抽象測(cè)試集;步驟7 將步驟6得到的抽象測(cè)試集轉(zhuǎn)換成可執(zhí)行的測(cè)試腳本。下面,將對(duì)有關(guān)步驟進(jìn)行詳細(xì)說(shuō)明(一 )形式化模型EFSM(Extended Finite State Machine 擴(kuò)展有限狀態(tài)機(jī))被廣泛地用來(lái)描述網(wǎng)絡(luò)協(xié)議。但是,有些協(xié)議規(guī)范在一個(gè)網(wǎng)絡(luò)實(shí)體中包含多個(gè)非通信的并行進(jìn)程。因此需要使用并行擴(kuò)展的有限狀態(tài)機(jī)來(lái)模擬協(xié)議規(guī)范。同時(shí),這些進(jìn)程之間存在變量依賴(lài)的情況。所以,需要使用帶有變量依賴(lài)的并行擴(kuò)展有限狀態(tài)機(jī)為協(xié)議規(guī)范建模。[定義1]帶有變量依賴(lài)的并行擴(kuò)展有限狀態(tài)機(jī)(ParallelExtended Finite Machines with Variable Dependence, ^ PaEF SM-VD)帶有變量依賴(lài)的并行擴(kuò)展有限狀態(tài)機(jī)是η個(gè)組件狀態(tài)機(jī)的集合,用Ms表示,Ms = {Μ1;Μ2,...,Μη};各組件狀態(tài)機(jī)用于描述各協(xié)議進(jìn)程的規(guī)范。組件狀態(tài)機(jī)用Mi表示,i = 0, 1,· · ·,n,Mi 是一個(gè)八元組,Mi = (S,s0, V1, Ve, I,0,TR, T)· S是Mi的有限狀態(tài)集合;· % e S是Mi的初始狀態(tài);· V1 =作…乂……^………乂一,其中乂^!^= 1,2,... ,η)是所有定義與使用均在虬內(nèi)部的變量,稱(chēng)為內(nèi)部變量,V1是禮所有內(nèi)部變量的集合;· Ve = (Vel, Ve2,. . . Vek, ... , VJ,其中 Vek(k = 1,2,· · ·,η)是所有定義在 Mi 外部,但是在Mi內(nèi)部被使用的變量,稱(chēng)為外部變量,Ve是Mi所有外部變量的集合;· I = (I1, I2, ... Ik, ... , Ιη),其中 Ik(k = 1,2, . . .,η)是 Mi 的一個(gè)輸入符號(hào),I 是虬所有輸入符號(hào)的集合,I不能為空集合;· 0 = (01,02,...01;,...,011),其中01;(1^= 1,2,... ,η)是虬的一個(gè)輸出符號(hào),0
是虬所有輸出符號(hào)的集合,0不能為空集合;· TR = (TRljTR2^--TRk,...,TRn),其中 TOk (k = 1,2,. . .,η)是 Mi 的一個(gè)時(shí)鐘,
TOk可以被Mi的任意變遷讀取,TR是Mi所有時(shí)鐘的集合;· T = (T1, T2, ... Tk, ... , Tn)是虬所有變遷的集合,T不能為空集合,其中Tk(k =1,2,···,n)是 Mi 的一個(gè)變遷,Tk 是一個(gè)六元組,Tk= (sstart, Send, Ik, Ok, P, A)
■ Sstart e S是Tk的初始狀態(tài);■ Send e s是Tk的末狀態(tài)■ Ik e I是Tk的輸入符號(hào);■ Ok e 0是Tk的輸出符號(hào);■ P是關(guān)于V1中的內(nèi)部變量、VE中的外部變量、輸入Ik、某些常量和時(shí)鐘超時(shí)事件的謂詞表達(dá)式,P說(shuō)明了 Tk執(zhí)行的條件;■ A是Tk執(zhí)行時(shí)的行為序列,A可能包括變量賦值行為、輸出行為以及時(shí)鐘創(chuàng)建行為,A中的行為應(yīng)順序執(zhí)行。例如圖2和圖 3所示,分別為 SAVI-DHCP (SAVI Solution for DHCPv4/v6)協(xié)議和 SAVI-SLA (SAVI Solution for Stateless Address)協(xié)議建立狀態(tài)機(jī),它們的變遷詳見(jiàn)表1 和表2。分析變遷,得到SAVI-DHCP中的變遷1、5、9、10存在對(duì)SAVI-SLA中變量SAVI-SLA. address和SAVI-SLA. state的使用;SAVI-DHCP中的變遷8存在對(duì)另一 SAVI-DHCP中變量 SAVI-DHCP. address 和 SAVI-DHCP. state 的使用;SAVI-SLA 中的變遷 2 存在對(duì)另一 SAVI-SLA中變量SAVI-SLA. address和SAVI-SLA. state的使用。根據(jù)狀態(tài)機(jī)之間的變量依賴(lài),得到SAVI-DHCP與SAVI-SLA依賴(lài)關(guān)系,如圖4所示。表1 SAVI-DHCP 變遷
權(quán)利要求
1.一種基于變量依賴(lài)的并行擴(kuò)展有限狀態(tài)機(jī)的協(xié)議測(cè)試生成方法,其特征在于,所述方法是在網(wǎng)絡(luò)操作環(huán)境中對(duì)于一個(gè)被測(cè)試的網(wǎng)絡(luò)設(shè)備依次執(zhí)行以下步驟實(shí)現(xiàn)的步驟1 在計(jì)算機(jī)中,把被測(cè)試的網(wǎng)絡(luò)設(shè)備的協(xié)議規(guī)范描述為一個(gè)并行擴(kuò)展有限狀態(tài)機(jī)模型Ms ;步驟2 采用忽略變量依賴(lài)的擴(kuò)展有限狀態(tài)機(jī)測(cè)試生成技術(shù)生成組件狀態(tài)機(jī)抽象測(cè)試集;步驟3 針對(duì)外部變量,生成可執(zhí)行化外部前導(dǎo)序列;步驟4 采用鏈接外部前導(dǎo)序列的方法對(duì)組件狀態(tài)機(jī)抽象測(cè)試集進(jìn)行可執(zhí)行化處理; 步驟5 生成關(guān)于外部變量的跨狀態(tài)機(jī)抽象測(cè)試集;步驟6 將經(jīng)過(guò)步驟4處理的組件狀態(tài)機(jī)抽象測(cè)試集與步驟5生成的跨狀態(tài)機(jī)抽象測(cè)試集合并,刪除重復(fù)或被包含的測(cè)試序列,得到協(xié)議狀態(tài)機(jī)的抽象測(cè)試集。
2.如權(quán)利要求1所述的方法,其特征在于,步驟1具體為設(shè)在所述被測(cè)試的網(wǎng)絡(luò)設(shè)備中包含一個(gè)或多個(gè)協(xié)議,各協(xié)議包含一個(gè)或多個(gè)可并行工作的進(jìn)程,各協(xié)議的規(guī)范是已知的;則將所述被測(cè)試的網(wǎng)絡(luò)設(shè)備用一個(gè)并行擴(kuò)展有限狀態(tài)機(jī)模型來(lái)描述,所述并行擴(kuò)展有限狀態(tài)機(jī)模型是η個(gè)組件狀態(tài)機(jī)的集合,用Ms表示,Ms =(M1, M2, ... , Mj ;各組件狀態(tài)機(jī)用于描述各協(xié)議進(jìn)程的規(guī)范,所述組件狀態(tài)機(jī)用Mi表示,i = 0,1,..., n, Mi 是一個(gè)八元組,Mi = (S,s0, V1, Ve, I,0,TR, Τ) 其中,S是Mi的有限狀態(tài)集合; % e 5,是禮的初始狀態(tài);V1 = (Vil, Vi2,. . . Vik,. . .,Vin),其中Vik是所有定義與使用均在Mi內(nèi)部的變量,稱(chēng)為內(nèi)部變量,k= 1,2,...,η,η為正整數(shù),V1是Mi所有內(nèi)部變量的集合;Ve = (Vel, Ve2, . . . Vek,... , Ven),其中Vdt是所有定義在Mi外部,但是在Mi內(nèi)部被使用的變量,稱(chēng)為外部變量,k= 1,2,...,η,η為正整數(shù),Ve是Mi所有外部變量的集合;I = (I1, I2, ... Ik, ... , In),其中込是虬的一個(gè)輸入符號(hào),k = 1,2, ... , η,η為正整數(shù),I是Mi所有輸入符號(hào)的集合,I為非空集合;0 = (O1, O2, ... Ok, ... , On),其中 Ok 是 Mi 的一個(gè)輸出符號(hào),k = 1,2,. . .,η,η 為正整數(shù),0是Mi所有輸出符號(hào)的集合,0為非空集合;TR = (TR1, TR2, . . . TRk, · · ·,TRn),其中 TOk 是 Mi 的一個(gè)時(shí)鐘,k = 1,2,· · ·,η,η 為正整數(shù),TRk能夠被Mi的任意變遷讀取,TR是Mi所有時(shí)鐘的集合;T = (T1, T2,. . . Tk,. . .,Tn)是Mi所有變遷的集合,T為非空集合,其中Tk是Mi的一個(gè)變遷,k= 1,2,···,n,n 為正整數(shù),Tk 是一個(gè)六元組,Tk= (sstart, send, Ik, Ok, P, A) 其中,Sstmt e S,是Tk的初始狀態(tài); send e S,是Tk的末狀態(tài); Ik e I,是Tk的輸入符號(hào); Ok e 0,是Tk的輸出符號(hào);P是關(guān)于V1中的內(nèi)部變量、Ve中的外部變量、輸入Ik、一些常量和時(shí)鐘超時(shí)事件的謂詞表達(dá)式;A是Tk執(zhí)行時(shí)的行為序列,A包括變量賦值行為、輸出行為以及時(shí)鐘創(chuàng)建行為中的一項(xiàng)或多項(xiàng),A中的行為順序執(zhí)行。
3.如權(quán)利要求2所述的方法,其特征在于,步驟2依次按以下步驟執(zhí)行設(shè)兩個(gè)全局組件狀態(tài)機(jī)的集合分別為T(mén)o_be_generated和Generated,每個(gè)組件狀態(tài)機(jī)有一個(gè)對(duì)應(yīng)的測(cè)試?yán)蟃Si, i = 1,2,. . .,n,則步驟 2. 1、初始化過(guò)程清空 I^ojDe—generated 和 Generated ;步驟2. 2、將所有組件狀態(tài)機(jī)M1, M2, ...,Mn放入集合To_be_generated ;步驟2. 3、如果集合To_be_generated不為空,則執(zhí)行步驟2. 4 2. 10 ;否則停止;步驟2. 4、從集合To_be_generated中取出一個(gè)組件狀態(tài)機(jī),記作Mi ;步驟2. 5、對(duì)Mi執(zhí)行以下步驟(1)找出Mi的每條變遷中的所有內(nèi)部變量定義、內(nèi)部變量使用和外部變量使用;(2)為Mi的每條變遷,生成含有最少外部變量使用的最短前導(dǎo)序列;(3)如果Mi的每條變遷都已完成路徑生成,繼續(xù)步驟2.6;否則,取一條變遷,記作Ti, 執(zhí)行以下步驟(3. 1)如果在Ti中被定義的每個(gè)內(nèi)部變量都已完成生成,重復(fù)(3);否則,取一個(gè)在Ti 中被定義的內(nèi)部變量,記作Vi,繼續(xù)(3.2);(3. 2)如果使用Vi的每一條變遷都已完成生成,重復(fù)(3. 1);否則,取一條使用Vi的變遷,記作Tj,繼續(xù)(3. 3),j興i ;(3. 3)將凡加入路徑,設(shè)Ts = Ti ;(3. 4)如果Ts的后繼變遷,記作Ts+1,不含有對(duì)Vi的定義,則將I^1加入路徑,繼續(xù) (3. 5);否則,丟棄Ts+1,嘗試Ts的其他后繼變遷,如果已沒(méi)有未嘗試過(guò)的后繼變遷,則從路徑中刪除Ts,找到路徑中Ts的前導(dǎo)變遷,記作U Ts = I^1,如果Ts = Ti,丟棄路徑并跳轉(zhuǎn)到(3. 2),否則重復(fù)(3.4);(3. 5)設(shè)Ts+2是I1的后繼變遷,如果I1不是Tj,則使Ts = Ts+1,Ts+1 = Ts+2,并重復(fù) (3.4);如果 Ts+1 = Tj,繼續(xù)(3.6);(3.6)如果路徑中沒(méi)有不可執(zhí)行的變遷,則繼續(xù)步驟2.6 ;否則,找到路徑中不可執(zhí)行的變遷,記作Tm,找到使Tik不可執(zhí)行的變量,記作vm,如果Vik是外部變量,則標(biāo)記Tik為可執(zhí)行,更新Tm為路徑中下一個(gè)不可執(zhí)行的變遷,重復(fù)(3.6);如果Vik是內(nèi)部變量,并且Tm 在Mi中的前導(dǎo)變遷Te中存在使Tm可執(zhí)行的對(duì)Vik的定義,則生成從路徑中Tm的前導(dǎo)變遷出發(fā),包含變遷Te并回到路徑中Tik的前導(dǎo)的環(huán),將環(huán)插入路徑中并繼續(xù)步驟2. 6;如果無(wú)法生成使Tm可執(zhí)行的環(huán)或不存在使Tik可執(zhí)行的 ;,則丟棄該路徑并跳轉(zhuǎn)到(3.2);步驟2. 6、為每一條路徑添加使?fàn)顟B(tài)機(jī)回到初始狀態(tài)的后置序列,形成完整路徑,然后加入集合TSi ;步驟2. 7、刪除集合TSi中重復(fù)的或能夠被TSi中其它路徑包含的路徑; 步驟2. 8、如果Mi中沒(méi)有未被覆蓋的變遷,則執(zhí)行步驟2.9 ;如果Mi中仍有未被覆蓋的變遷,記作Tk,生成覆蓋該變遷的路徑,加入集合TSi,重復(fù)步驟2. 8 ; 步驟2. 9、將Mi加入到集合Generated中; 步驟2. 10、轉(zhuǎn)到步驟2. 3。
4.如權(quán)利要求3所述的方法,其特征在于,步驟3依次按以下步驟執(zhí)行 設(shè)一個(gè)外部變量集合為EV,兩個(gè)前導(dǎo)序列集合分別為PU和PE,則步驟3. 1、遍歷所有組件狀態(tài)機(jī)的所有變遷,將所有外部使用的變量放入EV ;步驟3. 2、遍歷所有組件狀態(tài)機(jī)的所有變遷,如果變遷包含對(duì)EV中任意變量的定義,生成該變遷的含有最少外部變量使用的最短前導(dǎo)序列并放入PU ;步驟3. 3、遍歷PU中所有前導(dǎo)序列,如果前導(dǎo)序列可執(zhí)行,則將該前導(dǎo)序列放入PE ;步驟3. 4、如果PU為空,繼續(xù)步驟4 ;如果PU不為空,取其中的前導(dǎo)序列,記作pu,如果 PE中存在能夠使Pu可執(zhí)行的一個(gè)或多個(gè)前導(dǎo)序列,則將這些前導(dǎo)序列與Pu鏈接,將Pu移動(dòng)到PE中并重復(fù)步驟3.4 ;如果PE中存在能夠通過(guò)多次執(zhí)行使pu可執(zhí)行的一個(gè)或多個(gè)定義,則將含有這些定義的前導(dǎo)序列生成環(huán)并形成新的前導(dǎo)序列,將新的前導(dǎo)序列與Pu鏈接, 將Pu移動(dòng)到PE中并重復(fù)步驟3. 4 ;如果Pu仍然無(wú)法執(zhí)行,重新生成pu并重復(fù)步驟3. 4。
5.如權(quán)利要求4所述的方法,其特征在于,步驟4依次按以下步驟執(zhí)行步驟4. 1、遍歷所有組件狀態(tài)機(jī)抽象測(cè)試集TSi的所有測(cè)試序列,如果存在由于存在外部變量使用而無(wú)法執(zhí)行的序列,取一個(gè)無(wú)法執(zhí)行的序列,記作Pdu,繼續(xù)步驟4. 2 ;如果所有測(cè)試序列都已可執(zhí)行,則繼續(xù)步驟5 ;步驟4. 2、如果PE中存在可以使pdu可執(zhí)行的一個(gè)或多個(gè)前導(dǎo)序列,則將這些前導(dǎo)序列與Pdu鏈接,繼續(xù)步驟4. 3 ;如果PE中存在能夠通過(guò)多次執(zhí)行使Pdu可執(zhí)行的一個(gè)或多個(gè)定義,則將含有這些定義的前導(dǎo)序列生成環(huán)并形成新的前導(dǎo)序列,將新的前導(dǎo)序列與Pdu鏈接,繼續(xù)步驟4. 3 ;如果pdu仍然無(wú)法執(zhí)行,則丟棄Pdu ;步驟4. 3、重復(fù)步驟4. 1。
6.如權(quán)利要求5所述的方法,其特征在于,步驟5依次按以下步驟執(zhí)行步驟5. 1 遍歷所有組件狀態(tài)機(jī)的所有變遷,如果所有變遷都已遍歷,則繼續(xù)步驟6 ;如果仍有未遍歷的、含有外部變量使用的變遷,記作t,則對(duì)t執(zhí)行以下步驟(1)生成t的含有最少外部變量使用的前導(dǎo)最短序列,記作Pt;(2)如果PE中存在能夠使pt可執(zhí)行的一個(gè)或多個(gè)前導(dǎo)序列,則將這些前導(dǎo)序列與Pt鏈接,繼續(xù)步驟5. 2 ;如果PE中存在能夠通過(guò)多次執(zhí)行使pt可執(zhí)行的一個(gè)或多個(gè)定義,則將含有這些定義的前導(dǎo)序列生成環(huán)并形成新的前導(dǎo)序列,將新的前導(dǎo)序列與Pt鏈接,繼續(xù)步驟 5. 2;如果pt仍然無(wú)法執(zhí)行,則跳轉(zhuǎn)回(1);步驟5. 2 遍歷PE中的所有前導(dǎo)序列,如果所有序列都已遍歷,則繼續(xù)步驟5. 3 ;如果仍有未遍歷的、含有Pt中所使用外部變量的定義的前導(dǎo)序列,將該前導(dǎo)序列與Pt鏈接,構(gòu)成跨狀態(tài)機(jī)測(cè)試序列,加入跨狀態(tài)機(jī)抽象測(cè)試集;步驟5.3 重復(fù)步驟5. 1。
7.如權(quán)利要求1 6中任一項(xiàng)所述的方法,其特征在于,在步驟6之后還包括步驟7 將步驟6得到的抽象測(cè)試集轉(zhuǎn)換成可執(zhí)行的測(cè)試腳本。
全文摘要
本發(fā)明涉及網(wǎng)絡(luò)協(xié)議測(cè)試技術(shù)領(lǐng)域,公開(kāi)了一種基于變量依賴(lài)的并行擴(kuò)展有限狀態(tài)機(jī)的協(xié)議測(cè)試生成方法,依次執(zhí)行以下步驟1在計(jì)算機(jī)中,把被測(cè)試的網(wǎng)絡(luò)設(shè)備的協(xié)議規(guī)范描述為一個(gè)并行擴(kuò)展有限狀態(tài)機(jī)模型;2采用忽略變量依賴(lài)的擴(kuò)展有限狀態(tài)機(jī)測(cè)試生成技術(shù)生成組件狀態(tài)機(jī)抽象測(cè)試集;3針對(duì)外部變量,生成可執(zhí)行化外部前導(dǎo)序列;4采用鏈接外部前導(dǎo)序列的方法對(duì)組件狀態(tài)機(jī)抽象測(cè)試集進(jìn)行可執(zhí)行化處理;5生成關(guān)于外部變量的跨狀態(tài)機(jī)抽象測(cè)試集;6將經(jīng)過(guò)步驟4處理的抽象測(cè)試集與步驟5生成的抽象測(cè)試集合并,刪除重復(fù)或被包含的測(cè)試序列,得到協(xié)議狀態(tài)機(jī)的抽象測(cè)試集。本發(fā)明解決了變量依賴(lài)導(dǎo)致的路徑不可執(zhí)行問(wèn)題,避免了狀態(tài)爆炸。
文檔編號(hào)H04L12/26GK102404167SQ20111034432
公開(kāi)日2012年4月4日 申請(qǐng)日期2011年11月3日 優(yōu)先權(quán)日2011年11月3日
發(fā)明者姚姜源, 尹霞, 王之梁 申請(qǐng)人:清華大學(xué)