專利名稱:狀態(tài)機構(gòu)建方法和設(shè)備測試系統(tǒng)及設(shè)備模擬器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及測試領(lǐng)域,尤其涉及狀態(tài)機構(gòu)建方法和設(shè)備測試系統(tǒng)及設(shè)備模擬器。
背景技術(shù):
在設(shè)備的測試中,需要對各設(shè)備間消息交互的正確性進行測試,然而當被測設(shè)備間的距離較遠時,各設(shè)備間可能會無法有效進行這種測試。目前通常的做法是用設(shè)備模擬器來模擬被測設(shè)備,通過不同被測設(shè)備的設(shè)備模擬器與對端設(shè)備分別進行測試,以此來代替實際被測設(shè)備間的消息交互測試。舉例來說,當要對第一設(shè)備和第二設(shè)備進行消息交互測試時,采用第一設(shè)備模擬器代替第一設(shè)備與第二設(shè)備進行測試,而采用第二設(shè)備模擬器代替第二設(shè)備與第一設(shè)備進行消息交互測試。在這樣的測試中,如何在設(shè)備模擬器中模擬交互測試所需的消息是要解決的一個主要問題。
基于單條消息重放的設(shè)備模擬器是在設(shè)備模擬器中構(gòu)造一條消息來代替被模擬設(shè)備發(fā)到對端設(shè)備,檢測對端設(shè)備對該消息的響應(yīng)是否正確,由于該技術(shù)只能構(gòu)造單條消息進行測試,因而具有較大的局限性?,F(xiàn)有技術(shù)中還有一種方案采用基于消息匹配的狀態(tài)轉(zhuǎn)移設(shè)備模擬器代替被模擬設(shè)備進行測試,該設(shè)備模擬器在狀態(tài)機中模擬出與對端設(shè)備的交互消息。狀態(tài)機由一系列相關(guān)聯(lián)的狀態(tài)組成,狀態(tài)機可以根據(jù)收到的消息進行響應(yīng),并進行狀態(tài)的轉(zhuǎn)移。由于需要對被模擬設(shè)備的內(nèi)部屬性非常熟悉才能夠創(chuàng)建出理想的狀態(tài)機,而在實際測試中常常無法了解到被模擬設(shè)備的內(nèi)部屬性,因此該方案不但實現(xiàn)復雜,且難度較大。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供狀態(tài)機構(gòu)建方法和設(shè)備測試系統(tǒng)及設(shè)備模擬器,簡單、方便地為設(shè)備模擬器構(gòu)建出狀態(tài)機。
為解決上述技術(shù)問題,本發(fā)明的目的是通過以下技術(shù)方案實現(xiàn)的一種狀態(tài)機構(gòu)建方法,包括
第一設(shè)備模擬器接收來自第二設(shè)備的消息,在其狀態(tài)機中創(chuàng)建與該消息對應(yīng)的狀態(tài)表;第一設(shè)備模擬器將新建的狀態(tài)表提供給第二設(shè)備模擬器;第二設(shè)備模擬器根據(jù)上述狀態(tài)表更新其內(nèi)部狀態(tài)機。
可選的,該方法還包括第二設(shè)備模擬器接收來自第一設(shè)備的消息,在其狀態(tài)機中創(chuàng)建與該消息對應(yīng)的狀態(tài)表;第二設(shè)備模擬器將新建的狀態(tài)表提供給第一設(shè)備模擬器;第一設(shè)備模擬器根據(jù)上述狀態(tài)表更新其內(nèi)部狀態(tài)機。
所述第一設(shè)備模擬器接收來自第二設(shè)備的消息,在其狀態(tài)機中創(chuàng)建與該消息對應(yīng)的狀態(tài)表具體包括A、第一設(shè)備模擬器接收來自第二設(shè)備的消息,當在預定時間內(nèi)所接收的消息與該設(shè)備模擬器狀態(tài)機中的消息不匹配時,在其狀態(tài)機創(chuàng)建與該接收消息對應(yīng)的狀態(tài)表。
其中,所述A具體包括A1、在第一設(shè)備模擬器的狀態(tài)機中查找與當前狀態(tài)值對應(yīng)的狀態(tài)表;A2、在當前狀態(tài)下要接收消息時,第一設(shè)備模擬器接收來自第二設(shè)備的消息,若在預定時間內(nèi)所接收的消息與當前狀態(tài)表中的消息不匹配,則在其狀態(tài)機中創(chuàng)建與該接收消息對應(yīng)的狀態(tài)表;否則判斷狀態(tài)機中是否有下一狀態(tài),若有,則將下一狀態(tài)的狀態(tài)值賦予當前狀態(tài)值,執(zhí)行A1。
可選的,所述第二設(shè)備模擬器更新其內(nèi)部狀態(tài)機后還包括B、第二設(shè)備模擬器按照其狀態(tài)機與第一設(shè)備進行消息交互,若交互過程與其狀態(tài)機相匹配,則確認與第一設(shè)備的對接測試成功;否則確認測試失敗。
其中,所述B具體包括B1、在第二設(shè)備模擬器的狀態(tài)機中查找與當前狀態(tài)值對應(yīng)的狀態(tài)表;B2、在當前狀態(tài)下要發(fā)送消息時,第二設(shè)備模擬器將當前狀態(tài)表中的消息發(fā)送到第一設(shè)備,執(zhí)行B3;在當前狀態(tài)下要接收消息時,第二設(shè)備模擬器接收來自第一設(shè)備的消息,若該消息與當前狀態(tài)表中的消息不匹配或接收到該消息的時間超過預定時長時,則確認與第一設(shè)備的對接測試失??;否則執(zhí)行B3;B3、第二設(shè)備模擬器判斷狀態(tài)機是否有下一狀態(tài),若有,則將下一狀態(tài)的狀態(tài)值賦予當前狀態(tài)值,執(zhí)行B1;否則,確認與第一設(shè)備的對接測試成功。
其中,B2中所述在當前狀態(tài)下要發(fā)送消息時,第二設(shè)備模擬器將當前狀態(tài)表中的消息發(fā)送到對端設(shè)備具體包括當狀態(tài)機中存在至少兩個與當前狀態(tài)值對應(yīng)的狀態(tài)時,若在所述狀態(tài)下第二設(shè)備模擬器是要發(fā)送消息,則選擇其中一個狀態(tài)作為當前狀態(tài),將當前狀態(tài)中的消息發(fā)送到第一設(shè)備。
其中,所述第二設(shè)備模擬器選擇其中一個狀態(tài)作為當前狀態(tài)具體包括第二設(shè)備模擬器按照預先指定或通過概率選擇法或順次遍歷法選擇其中一個狀態(tài)作為當前狀態(tài)。
一種設(shè)備測試系統(tǒng),包括第一設(shè)備模擬器、第二設(shè)備、第二設(shè)備模擬器,其中第一設(shè)備模擬器用于接收來自第二設(shè)備的消息,在其狀態(tài)機中創(chuàng)建與該消息對應(yīng)的狀態(tài)表;還用于將新建的狀態(tài)表提供給第二設(shè)備模擬器;第二設(shè)備模擬器用于將第一設(shè)備模擬器提供的新建狀態(tài)表更新到其狀態(tài)機中。
可選的,該系統(tǒng)還包括第一設(shè)備;第二設(shè)備模擬器還用于接收來自第一設(shè)備的消息,在其狀態(tài)機中創(chuàng)建與該消息對應(yīng)的狀態(tài)表;還用于將新建的狀態(tài)表提供給第一設(shè)備模擬器;第一設(shè)備模擬器還用于將第二設(shè)備模擬器提供的新建狀態(tài)表更新到其狀態(tài)機中。
其中,所述設(shè)備模擬器用于接收來自第一設(shè)備的消息,在其狀態(tài)機中創(chuàng)建與該消息對應(yīng)的狀態(tài)表具體包括設(shè)備模擬器用于接收來自第一設(shè)備的消息,當在預定時間內(nèi)所接收的消息與狀態(tài)機中的消息不匹配時在其狀態(tài)機中創(chuàng)建與該接收消息對應(yīng)的狀態(tài)表。
一種設(shè)備模擬器,用于與對端設(shè)備進行對接測試,包括消息復制單元,用于接收對端設(shè)備模擬器所創(chuàng)建的與題述設(shè)備模擬器所模擬設(shè)備發(fā)送的消息對應(yīng)的狀態(tài)表;狀態(tài)機處理單元,用于將消息復制單元接收的狀態(tài)表更新到本設(shè)備模擬器的狀態(tài)機中。
可選的,所述設(shè)備模擬器還包括接收單元,用于接收來自對端設(shè)備的消息,并將該消息提供給狀態(tài)機處理單元;狀態(tài)機處理單元還用于在本設(shè)備模擬器的狀態(tài)機中查找與當前狀態(tài)值對應(yīng)的狀態(tài),在該狀態(tài)是要接收消息時,等待接收單元接收來自對端設(shè)備的消息,并在接收單元是在預定時間內(nèi)接收到該消息時,根據(jù)該消息與當前狀態(tài)表中的消息進行匹配,當接收消息與狀態(tài)表中的消息不匹配時,在狀態(tài)機中創(chuàng)建與所述接收消息對應(yīng)的狀態(tài)表;消息復制單元用于向?qū)Χ嗽O(shè)備模擬器發(fā)送狀態(tài)機處理單元所創(chuàng)建的狀態(tài)表。
可選的,所述設(shè)備模擬器還包括消息過濾單元,用于過濾對端設(shè)備發(fā)送來的無用消息。
可選的,所述設(shè)備模擬器還包括發(fā)送單元,用于向?qū)Χ嗽O(shè)備發(fā)送狀態(tài)機處理單元所提供的消息;狀態(tài)機處理單元還用于在與當前狀態(tài)值對應(yīng)的狀態(tài)是要發(fā)送消息時,將該狀態(tài)下記錄的消息提供給發(fā)送單元。
從以上技術(shù)方案可以看出,本發(fā)明具有以下優(yōu)點第一設(shè)備模擬器在與第二設(shè)備進行消息交互的過程中通過接收到的來自第二設(shè)備的消息構(gòu)造出與第二設(shè)備的消息對應(yīng)的狀態(tài)表,并將更新的狀態(tài)表提供給遠端的第二設(shè)備模擬器,使第二設(shè)備模擬器可以模擬第二設(shè)備在本地與第一設(shè)備進行消息交互測試;第二設(shè)備模擬器又可以在與第一設(shè)備進行消息交互的過程中通過接收到的來自第一設(shè)備的消息構(gòu)造出與第一設(shè)備的消息對應(yīng)的狀態(tài)表,并將更新的狀態(tài)表提供給第一設(shè)備模擬器,使得第一設(shè)備模擬器可以模擬第一設(shè)備與第二設(shè)備進行消息交互測試;通過上述過程的交替執(zhí)行在第一設(shè)備模擬器和第二設(shè)備模擬器各自的狀態(tài)機中創(chuàng)建出第一設(shè)備與第二設(shè)備進行對接測試時的消息交互表。由于是在消息交互過程中構(gòu)建出第一設(shè)備與第二設(shè)備進行對接測試所需的狀態(tài)機,而不需要熟悉被測設(shè)備的內(nèi)部屬性,因此本發(fā)明可以簡單、有效的為設(shè)備模擬器構(gòu)建出狀態(tài)機。
圖1是本發(fā)明設(shè)備狀態(tài)機構(gòu)建方法的流程圖;圖2是本發(fā)明中從設(shè)備模擬器構(gòu)造狀態(tài)機的流程圖;圖3是本發(fā)明中主設(shè)備模擬器構(gòu)造狀態(tài)機的流程圖;圖4是本發(fā)明設(shè)備模擬器與對端設(shè)備進行對接測試的流程圖;圖5是本發(fā)明設(shè)備模擬器的結(jié)構(gòu)圖;圖6是本發(fā)明設(shè)備設(shè)備測試系統(tǒng)的結(jié)構(gòu)圖。
具體實施例方式
下面,首先對所述的狀態(tài)機進行介紹。狀態(tài)機中包括一系列相互關(guān)聯(lián)的狀態(tài)表,如下表所示,狀態(tài)機的每個狀態(tài)表包含以下內(nèi)容
設(shè)備模擬器在運行中執(zhí)行哪一個狀態(tài)表是由設(shè)備模擬器的當前狀態(tài)值來決定的,當設(shè)備模擬器的當前狀態(tài)值與狀態(tài)機中某一狀態(tài)表的“當前狀態(tài)”表項的值相同時,設(shè)備模擬器即運行該狀態(tài)表的內(nèi)容。
狀態(tài)表中“消息”表項用于記載交互消息的具體內(nèi)容。
“消息”中記錄的消息是從“源端口”記錄的設(shè)備端口發(fā)送到“目的端口”記錄的設(shè)備端口。設(shè)備模擬器端口地址可以與被模擬設(shè)備的端口地址相同或相應(yīng),若相應(yīng),需在與對端設(shè)備進行測試前將設(shè)備模擬器的端口地址轉(zhuǎn)換為被模擬設(shè)備的端口地址。
“時間值”表項記錄設(shè)備模擬器與對端設(shè)備進行消息交互時的預定時長。當設(shè)備模擬器向?qū)Χ嗽O(shè)備發(fā)送消息時,需經(jīng)過“時間值”記錄的時長后將消息發(fā)出;當設(shè)備模擬器接收消息時,在“時間值”記錄的時間內(nèi)收到的消息都應(yīng)該記錄在狀態(tài)表中,超過該時間的消息則認為是超時出錯消息。
考慮到消息交互過程中其他因素的影響,可以給狀態(tài)表中“時間值”記錄的時間設(shè)置一個允許波動值,若設(shè)備模擬器接收到消息的時間超過“時間值”的記錄,而未超過該“時間值”加上所設(shè)置的允許波動值,則認為該消息也是有效的,應(yīng)該記錄在狀態(tài)表中。
在本發(fā)明中,還可以將發(fā)送時間和接收等待時間設(shè)置為恒定值,則狀態(tài)表中也可以不包含“時間值”。
如前所述,狀態(tài)機中包括一系列相互關(guān)聯(lián)的狀態(tài)表,狀態(tài)表之間通過前一狀態(tài)表的“下一狀態(tài)”表項和下一個狀態(tài)表的“當前狀態(tài)”表項實現(xiàn)關(guān)聯(lián),當設(shè)備模擬器完成本狀態(tài)表中的消息后繼續(xù)執(zhí)行其“當前狀態(tài)”表項的值與本狀態(tài)表中“下一狀態(tài)”表項的值相同的狀態(tài)表。
參考圖1,本發(fā)明提供的狀態(tài)機構(gòu)造方法包括S1、第一設(shè)備模擬器在預定的時間內(nèi)接收來自第二設(shè)備的消息,若在預定時間內(nèi)接收到的消息與其狀態(tài)機中的消息不匹配時,在該狀態(tài)機中創(chuàng)建與該接收消息對應(yīng)的狀態(tài)表;S2、第一設(shè)備模擬器將新建的狀態(tài)表提供給第二設(shè)備模擬器;S3、第二設(shè)備模擬器根據(jù)上述狀態(tài)表更新其內(nèi)部狀態(tài)機;S4、第二設(shè)備模擬器按照其內(nèi)部狀態(tài)機與對接的第一設(shè)備進行消息交互時,若在預定的時間內(nèi)所接收的消息與其狀態(tài)機中的消息不匹配,在所述狀態(tài)機中創(chuàng)建與該接收消息對應(yīng)的狀態(tài)表;S5、第二設(shè)備模擬器將新建的狀態(tài)表提供給第一設(shè)備模擬器;S6、第一設(shè)備模擬器根據(jù)上述狀態(tài)表更新其內(nèi)部狀態(tài)機。
下面對本發(fā)明狀態(tài)機構(gòu)造方法的實施例進行描述,為描述方便,在本發(fā)明中,根據(jù)設(shè)備間消息交互的先后順序,將先發(fā)出消息的設(shè)備稱為主設(shè)備;將先接收消息,根據(jù)該消息進行響應(yīng)的設(shè)備稱為從設(shè)備;進一步的,將用于模擬主設(shè)備的設(shè)備模擬器稱為主設(shè)備模擬器;將用于模擬從設(shè)備的模擬器稱為從設(shè)備模擬器。
主設(shè)備模擬器和從設(shè)備模擬器通過交替執(zhí)行以下流程201-210和流程301-310逐步構(gòu)造出與對端設(shè)備消息對應(yīng)的狀態(tài)表,并通過將各自的狀態(tài)機提供給對端設(shè)備模擬器,在各自的狀態(tài)機中創(chuàng)建與被模擬設(shè)備消息對應(yīng)的狀態(tài)表,以此在設(shè)備模擬器中構(gòu)造出用于模擬被模擬設(shè)備與對端設(shè)備消息交互測試的狀態(tài)機。
下面結(jié)合圖2,對從設(shè)備模擬器和主設(shè)備通過消息交互,構(gòu)造狀態(tài)機的過程進行描述。
步驟201、在從設(shè)備模擬器的狀態(tài)機中查找“當前狀態(tài)”表項的值與其當前狀態(tài)值相同的狀態(tài)表。
在狀態(tài)機中存在多個“當前狀態(tài)”表項的值與從設(shè)備模擬器的當前狀態(tài)值相同的狀態(tài)表時,從設(shè)備模擬器可以選定其中一個狀態(tài)表作為當前狀態(tài)表,該狀態(tài)表可以是預先指定的,或者是通過概率選擇法、順次遍歷法等方法選擇出來的。
步驟202、根據(jù)該狀態(tài)表“源端口”或“目的端口”的內(nèi)容,判斷從設(shè)備模擬器是要發(fā)送消息還是等待接收消息,如果“源端口”記錄了從設(shè)備地址,說明從設(shè)備模擬器是要向“目的端口”記錄的主設(shè)備地址發(fā)送消息,則執(zhí)行步驟203;若“目的端口”記錄了從設(shè)備地址,說明從設(shè)備模擬器是要等待接收來自“源端口”記錄的主設(shè)備地址的消息,則執(zhí)行步驟207。
步驟203、從設(shè)備模擬器在經(jīng)過當前狀態(tài)表中“時間值”記錄的時間之后,將“消息”表項的消息內(nèi)容發(fā)送到主設(shè)備。
當狀態(tài)表中無“時間值”表項時,從設(shè)備模擬器也可以在經(jīng)過預設(shè)的恒定值后將消息發(fā)送到主設(shè)備。
步驟204、從設(shè)備模擬器檢查當前狀態(tài)表的“下一狀態(tài)”表項,若其值為空,說明從設(shè)備模擬器的狀態(tài)機運行結(jié)束,執(zhí)行步驟205;若不為空,則執(zhí)行步驟206。
步驟205、從設(shè)備模擬器接收到從主設(shè)備發(fā)送來的新消息時,在當前狀態(tài)表的“下一狀態(tài)”中填入該表“當前狀態(tài)”的下一個值,并將該值賦予從設(shè)備模擬器的當前狀態(tài)值,執(zhí)行步驟208。
步驟206、將當前狀態(tài)表“下一狀態(tài)”表項的值賦予從設(shè)備模擬器的當前狀態(tài)值,返回執(zhí)行步驟201。
步驟207、從設(shè)備模擬器在預定時間內(nèi),接收從主設(shè)備發(fā)送來的消息,并根據(jù)接收到的消息與當前狀態(tài)表中的消息進行匹配,如果匹配成功,則執(zhí)行步驟204;若不匹配,說明在本狀態(tài)下主設(shè)備可以發(fā)出多種合法消息,而從設(shè)備模擬器所接收到的消息是狀態(tài)機中尚未建立的新消息,將當前狀態(tài)表中“當前狀態(tài)”的值賦予從設(shè)備模擬器的當前狀態(tài)值,執(zhí)行步驟208。
其中,所述的預定時間可以是當前狀態(tài)表中“時間值”記錄的時間,也可以是“時間值”記錄的時間加上允許波動值的時間。
步驟208、從設(shè)備模擬器根據(jù)所接收的新消息更新內(nèi)部狀態(tài)表。
如果在預定時間內(nèi),從設(shè)備模擬器只接收到一條新消息,則在狀態(tài)機中新增一個狀態(tài)表,該表的“當前狀態(tài)”的值取從設(shè)備模擬器的當前狀態(tài)值,“時間值”、“源端口”、“目的端口”和“消息”表項取從設(shè)備模擬器捕捉到的實際值,“下一狀態(tài)”表項內(nèi)容為空。
在預定時間內(nèi),若從設(shè)備模擬器接收到多條消息,則在狀態(tài)機中按照接收的先后順序為每條消息創(chuàng)建新的狀態(tài)表,各狀態(tài)表之間通過前一狀態(tài)表的“下一狀態(tài)”與后一狀態(tài)表的“當前狀態(tài)”進行關(guān)聯(lián),設(shè)置最后一條消息的狀態(tài)表中“下一狀態(tài)”表項為空。
步驟209、從設(shè)備模擬器將新建的狀態(tài)表提供給主設(shè)備模擬器。
步驟210、主設(shè)備模擬器接收從設(shè)備模擬器發(fā)送來的狀態(tài)表,將所述狀態(tài)表更新到其內(nèi)部狀態(tài)表中。
下面結(jié)合圖3,對主設(shè)備模擬器和從設(shè)備通過消息交互,構(gòu)造狀態(tài)機的過程進行描述。
步驟301、在主設(shè)備模擬器的狀態(tài)機中查找“當前狀態(tài)”表項的值與其當前狀態(tài)值相同的狀態(tài)表。
在狀態(tài)機中存在多個“當前狀態(tài)”表項的值與主設(shè)備模擬器的當前狀態(tài)值相同的狀態(tài)表時,主設(shè)備模擬器可以選定其中一個狀態(tài)表作為當前狀態(tài)表,該狀態(tài)表的可以是預先指定的,或者是通過概率選擇法、順次遍歷法等方法選擇出來的。
步驟302、根據(jù)該狀態(tài)表“源端口”或“目的端口”的內(nèi)容,判斷主設(shè)備模擬器是要發(fā)送消息還是等待接收消息,如果“源端口”記錄了主設(shè)備地址,說明主設(shè)備模擬器是要向“目的端口”記錄的從設(shè)備地址發(fā)送消息,則執(zhí)行步驟303;若“目的端口”記錄了主設(shè)備地址,說明主設(shè)備模擬器是要等待接收來自“源端口”記錄的從設(shè)備地址的消息,則執(zhí)行步驟307。
步驟303、主設(shè)備模擬器在經(jīng)過當前狀態(tài)表中“時間值”記錄的時間之后,將“消息”表項的消息內(nèi)容發(fā)送到從設(shè)備。
當狀態(tài)表中無“時間值”表項時,主設(shè)備模擬器也可以在經(jīng)過預設(shè)的恒定值后將消息發(fā)送到從設(shè)備。
步驟304、主設(shè)備模擬器檢查當前狀態(tài)表的“下一狀態(tài)”表項,若其值為空,說明主設(shè)備模擬器的狀態(tài)機運行結(jié)束,執(zhí)行步驟305;若不為空,則執(zhí)行步驟306。
步驟305、主設(shè)備模擬器接收到從設(shè)備發(fā)送來的新消息時,在當前狀態(tài)表的“下一狀態(tài)”中填入該表“當前狀態(tài)”的下一個值,并將該值賦予主設(shè)備模擬器的當前狀態(tài)值,執(zhí)行步驟308。
步驟306、將當前狀態(tài)表“下一狀態(tài)”表項的值賦予主設(shè)備模擬器的當前狀態(tài)值,返回執(zhí)行步驟301。
步驟307、主設(shè)備模擬器在預定時間內(nèi)接收從設(shè)備發(fā)送來的消息,并根據(jù)接收到的消息與當前狀態(tài)表中的消息進行匹配,如果匹配成功,則執(zhí)行步驟304;若不匹配,說明在本狀態(tài)下從設(shè)備可以發(fā)出多種合法消息,而主設(shè)備模擬器所接收的消息是狀態(tài)機中尚未建立的新消息,則將當前狀態(tài)表中“當前狀態(tài)”的值賦予主設(shè)備模擬器的當前狀態(tài)值,執(zhí)行步驟308。
其中,所述的預定時間可以是當前狀態(tài)表中“時間值”記錄的時間,也可以是“時間值”記錄的時間加上允許波動值的時間。
步驟308、主設(shè)備模擬器根據(jù)所接收的新消息更新內(nèi)部狀態(tài)表。
如果在預定時間內(nèi),主設(shè)備模擬器只接收到一條新消息,則在狀態(tài)機中新增一個狀態(tài)表,該表的“當前狀態(tài)”的值取主設(shè)備模擬器的當前狀態(tài)值,“時間值”、“源端口”、“目的端口”和“消息”表項取主設(shè)備模擬器捕捉到的實際值,“下一狀態(tài)”表項內(nèi)容為空。
在預定時間內(nèi),若主設(shè)備模擬器接收到多條消息,則在狀態(tài)機中按照接收的先后順序為每條消息創(chuàng)建新的狀態(tài)表,各狀態(tài)表之間通過前一狀態(tài)表的“下一狀態(tài)”與后一狀態(tài)表的“當前狀態(tài)”進行關(guān)聯(lián),設(shè)置最后一條消息的狀態(tài)表中“下一狀態(tài)”表項為空。
步驟309、主設(shè)備模擬器將新建的狀態(tài)表提供給從設(shè)備模擬器。
步驟310、從設(shè)備模擬器接收主設(shè)備模擬器發(fā)送來的狀態(tài)表,將所述狀態(tài)表更新到其內(nèi)部狀態(tài)表中。
下面以從設(shè)備模擬器與主設(shè)備的消息交互為例,給出一個具體實例以幫助理解上述方法,在本實施例的狀態(tài)表中,10.78.22.1005060表示從設(shè)備或從設(shè)備模擬器的接口地址,10.78.22.115060、10.78.22.225060和10.78.22.335060表示主設(shè)備的接口地址。
初始情況下,在從設(shè)備模擬器的內(nèi)部,存在“當前狀態(tài)”為4的狀態(tài)表,從設(shè)備模擬器進入初始狀態(tài),執(zhí)行“當前狀態(tài)”為4的狀態(tài)表,即在間隔1個時間單位后,從設(shè)備模擬器向主設(shè)備發(fā)送消息Z。
若從設(shè)備模擬器依次接收到主設(shè)備發(fā)送來的新消息A、B、C,根據(jù)這些消息在狀態(tài)機中創(chuàng)建與所述消息對應(yīng)的狀態(tài)表,則經(jīng)過更新從設(shè)備模擬器中存在以下4個狀態(tài)表。
上述四個表之間通過前一狀態(tài)表的“下一狀態(tài)”與后一狀態(tài)表的“當前狀態(tài)”相互關(guān)聯(lián),如對“當前狀態(tài)”值為4的狀態(tài)表,根據(jù)其“下一狀態(tài)”值為5可以確定在該狀態(tài)表之后的是“當前狀態(tài)”值為5的狀態(tài)表。狀態(tài)表中“當前狀態(tài)”的值可以任意規(guī)定,只要保證每個狀態(tài)表的“下一狀態(tài)”值與其后一狀態(tài)表的“當前狀態(tài)”值相同即可。
從設(shè)備模擬器將上述狀態(tài)表提供給主設(shè)備模擬器。
從設(shè)備模擬器運行其狀態(tài)機,當運行至狀態(tài)5時,應(yīng)等待主設(shè)備發(fā)送消息A,但實際上收到了主設(shè)備發(fā)來的消息A1、B1、C1,說明主設(shè)備和從設(shè)備模擬器的交互存在多種流程,則根據(jù)收到的新消息構(gòu)造以下狀態(tài)表。
從設(shè)備模擬器將更新的狀態(tài)表提供給主設(shè)備模擬器,主設(shè)備模擬器中已存在狀態(tài)表4、5、6、7,此時將從設(shè)備模擬器發(fā)來的新狀態(tài)表5、8、9加入到其內(nèi)部狀態(tài)表中,更新后主設(shè)備模擬器內(nèi)部狀態(tài)表同樣有4、5、6、7、8、9。
根據(jù)上述狀態(tài)表,當主設(shè)備模擬器運行到狀態(tài)5時,有兩種消息A和A1可以發(fā)送,根據(jù)規(guī)則選擇其中一個,如果選擇消息A,則依次發(fā)出A、B、C消息,若選擇消息A1,則依次發(fā)出A1、B1、C1消息。
構(gòu)造出測試所需的狀態(tài)機后,可以通過運行狀態(tài)機模擬主設(shè)備與從設(shè)備間的消息測試。在本發(fā)明中,主設(shè)備模擬器和從設(shè)備的對接測試以及從設(shè)備模擬器和主設(shè)備的對接測試方法相同,為描述方便,在以下描述中用設(shè)備模擬器表示主設(shè)備模擬器或從設(shè)備模擬器,用對端設(shè)備表示設(shè)備模擬器所模擬設(shè)備的對端設(shè)備。設(shè)備模擬器按照其狀態(tài)機和所模擬設(shè)備的對端設(shè)備進行消息交互,若交互過程與其狀態(tài)機相匹配,則確認與該對端設(shè)備的對接測試成功;否則確認測試失敗。結(jié)合圖4,上述對接測試過程具體包括以下步驟步驟401、設(shè)備模擬器將狀態(tài)機的初始狀態(tài)值賦予其當前狀態(tài)值。
步驟402、在狀態(tài)機中查找“當前狀態(tài)”表項值與設(shè)備模擬器的當前狀態(tài)值相同的狀態(tài)表。
在狀態(tài)機中存在多個“當前狀態(tài)”表項的值與設(shè)備模擬器的當前狀態(tài)值相同的狀態(tài)表時,設(shè)備模擬器可以選定其中一個狀態(tài)表作為當前狀態(tài)表,該狀態(tài)表的可以是預先指定的,或者是通過概率選擇法、順次遍歷法等方法選擇出來的。
步驟403、根據(jù)該狀態(tài)表“源端口”或“目的端口”的內(nèi)容,判斷設(shè)備模擬器是要發(fā)送消息還是等待接收消息,如果“源端口”記錄了對端設(shè)備地址,說明設(shè)備模擬器是要向“目的端口”記錄的對端設(shè)備地址發(fā)送消息,則執(zhí)行步驟404;若“目的端口”記錄了對端設(shè)備地址,說明設(shè)備模擬器是要等待接收來自“源端口”記錄的對端設(shè)備地址的消息,則執(zhí)行步驟406。
步驟404、設(shè)備模擬器在經(jīng)過當前狀態(tài)表中“時間值”記錄的時間之后,將“消息”表項的消息發(fā)送到對端設(shè)備。
當狀態(tài)表中無“時間值”表項時,設(shè)備模擬器也可以在經(jīng)過預設(shè)的恒定值后將消息發(fā)送到對端設(shè)備。
步驟405、設(shè)備模擬器檢查當前狀態(tài)表的“下一狀態(tài)”表項,若其值為空,狀態(tài)機運行結(jié)束,確認與對端設(shè)備的對接測試成功,結(jié)束流程;否則,將當前狀態(tài)表“下一狀態(tài)”表項的值賦予設(shè)備模擬器的當前狀態(tài)值,返回步驟402。
步驟406、設(shè)備模擬器在預定時間內(nèi)接收來自對端設(shè)備的消息,并根據(jù)接收到的消息與當前狀態(tài)表中的消息進行匹配,如果匹配成功,則執(zhí)行步驟405;否則確認與對端設(shè)備的對接測試失敗。
其中,所述的預定時間可以是當前狀態(tài)表中“時間值”記錄的時間,也可以是“時間值”記錄的時間加上允許波動值的時間。
下面對本發(fā)明提供的設(shè)備模擬器進行描述,如圖5所述,該設(shè)備模擬器包括消息復制單元501、發(fā)送單元502、接收單元503、狀態(tài)機處理單元504,其中消息復制單元501用于接收對端設(shè)備模擬器所創(chuàng)建的與設(shè)備模擬器所模擬設(shè)備發(fā)送的消息對應(yīng)的狀態(tài)表。
狀態(tài)機處理單元504用于將消息復制單元501接收的狀態(tài)表更新到本設(shè)備模擬器的狀態(tài)機中。
狀態(tài)機處理單元504還用于在本設(shè)備模擬器的狀態(tài)機中查找與當前狀態(tài)值對應(yīng)的狀態(tài)表,若該狀態(tài)是要發(fā)送消息,則將該狀態(tài)下記錄的消息提供給發(fā)送單元502;若該狀態(tài)是要接收消息時,等待接收單元503接收來自對端設(shè)備的消息,并在接收單元503是在預定時間內(nèi)接收到該消息時,根據(jù)該消息與當前狀態(tài)表中的消息進行匹配,當接收消息與當前狀態(tài)表中的消息不匹配時,在狀態(tài)機中創(chuàng)建與所述接收消息對應(yīng)的狀態(tài)表;當匹配時,將設(shè)備模擬器的當前狀態(tài)值更新為狀態(tài)機下一狀態(tài)的值,并繼續(xù)查找與該狀態(tài)值對應(yīng)的狀態(tài)表,直到狀態(tài)機運行結(jié)束。
消息復制單元501還用于將狀態(tài)機處理單元504創(chuàng)建的狀態(tài)表提供給對端設(shè)備模擬器。
發(fā)送單元502用于向?qū)Χ嗽O(shè)備發(fā)送狀態(tài)機處理單元504提供的消息。
接收單元503用于接收來自對端設(shè)備的消息,并將該消息提供給狀態(tài)機處理504單元。
此外,所述設(shè)備模擬器還包含消息過濾單元505,用于在接收單元503前對過濾對端設(shè)備發(fā)送來的無用消息。
下面對本發(fā)明提供的設(shè)備測試系統(tǒng)進行描述,參考圖6,該系統(tǒng)包括第一設(shè)備601、第二設(shè)備模擬器602、第一設(shè)備模擬器603、第二設(shè)備604,其中第一設(shè)備模擬器603用于依照內(nèi)部狀態(tài)機與第二設(shè)備604進行消息交互,在交互中接收來自第二設(shè)備604的消息,當在預定時間內(nèi)接收的消息與當前狀態(tài)表中的消息不匹配時,在內(nèi)部狀態(tài)機中創(chuàng)建與該接收消息對應(yīng)的狀態(tài)表;還用于將新建的狀態(tài)表提供給第二設(shè)備模擬器603。
第二設(shè)備模擬器602用于將第一設(shè)備模擬器603提供的新建狀態(tài)表更新到其內(nèi)部狀態(tài)機中。
此外,第二設(shè)備模擬器602還用于按照其內(nèi)部狀態(tài)機與第一設(shè)備603進行消息交互,當在預定時間內(nèi)所接收的消息與當前狀態(tài)表中的消息不匹配時,在內(nèi)部狀態(tài)機中創(chuàng)建與該接收消息對應(yīng)的狀態(tài)表;還用于將新建的狀態(tài)表提供給第一設(shè)備模擬器603。
第一設(shè)備模擬器603還用于將第二設(shè)備模擬器602提供的新建狀態(tài)表更新到其內(nèi)部狀態(tài)機中;還用于按照其內(nèi)部狀態(tài)機與第二設(shè)備604進行消息交互,若消息交互過程與其內(nèi)部狀態(tài)機相匹配,則確認與第一設(shè)備604的對接測試成功;否則確認失敗。
第二設(shè)備模擬器602還用于按照其內(nèi)部狀態(tài)機與第一設(shè)備601進行消息交互,若消息交互過程與其內(nèi)部狀態(tài)機相匹配,則確認與第一設(shè)備601的對接測試成功;否則確認失敗。
以上對本發(fā)明所提供的狀態(tài)機構(gòu)建方法和設(shè)備測試系統(tǒng)及設(shè)備模擬器進行了詳細介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式
及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
權(quán)利要求
1.一種狀態(tài)機構(gòu)建方法,其特征在于,包括第一設(shè)備模擬器接收來自第二設(shè)備的消息,在其狀態(tài)機中創(chuàng)建與該消息對應(yīng)的狀態(tài)表;第一設(shè)備模擬器將新建的狀態(tài)表提供給第二設(shè)備模擬器;第二設(shè)備模擬器根據(jù)上述狀態(tài)表更新其內(nèi)部狀態(tài)機。
2.如權(quán)利要求1所述的狀態(tài)機構(gòu)建方法,其特征在于,還包括第二設(shè)備模擬器接收來自第一設(shè)備的消息,在其狀態(tài)機中創(chuàng)建與該消息對應(yīng)的狀態(tài)表;第二設(shè)備模擬器將新建的狀態(tài)表提供給第一設(shè)備模擬器;第一設(shè)備模擬器根據(jù)上述狀態(tài)表更新其內(nèi)部狀態(tài)機。
3.如權(quán)利要求1所述的狀態(tài)機構(gòu)建方法,其特征在于,所述第一設(shè)備模擬器接收來自第二設(shè)備的消息,在其狀態(tài)機中創(chuàng)建與該消息對應(yīng)的狀態(tài)表具體包括A、第一設(shè)備模擬器接收來自第二設(shè)備的消息,當在預定時間內(nèi)所接收的消息與該設(shè)備模擬器狀態(tài)機中的消息不匹配時,在其狀態(tài)機中創(chuàng)建與該接收消息對應(yīng)的狀態(tài)表。
4.如權(quán)利要求3所述的狀態(tài)機構(gòu)建方法,其特征在于,所述A具體包括A1、在第一設(shè)備模擬器的狀態(tài)機中查找與當前狀態(tài)值對應(yīng)的狀態(tài)表;A2、在當前狀態(tài)下要接收消息時,第一設(shè)備模擬器接收來自第二設(shè)備的消息,若在預定時間內(nèi)所接收的消息與當前狀態(tài)表中的消息不匹配,則在其狀態(tài)機中創(chuàng)建與該接收消息對應(yīng)的狀態(tài)表;否則判斷狀態(tài)機中是否有下一狀態(tài),若有,則將下一狀態(tài)的狀態(tài)值賦予當前狀態(tài)值,執(zhí)行A1。
5.如權(quán)利要求1所述的狀態(tài)機構(gòu)建方法,其特征在于,所述第二設(shè)備模擬器更新其內(nèi)部狀態(tài)機后還包括B、第二設(shè)備模擬器按照其狀態(tài)機與第一設(shè)備進行消息交互,若交互過程與其狀態(tài)機相匹配,則確認與第一設(shè)備的對接測試成功;否則確認測試失敗。
6.如權(quán)利要求5所述的狀態(tài)機構(gòu)建方法,其特征在于,所述B具體包括B1、在第二設(shè)備模擬器的狀態(tài)機中查找與當前狀態(tài)值對應(yīng)的狀態(tài)表;B2、在當前狀態(tài)下要發(fā)送消息時,第二設(shè)備模擬器將當前狀態(tài)表中的消息發(fā)送到第一設(shè)備,執(zhí)行B3;在當前狀態(tài)下要接收消息時,第二設(shè)備模擬器接收來自第一設(shè)備的消息,若該消息與當前狀態(tài)表中的消息不匹配或接收到該消息的時間超過預定時長時,則確認與第一設(shè)備的對接測試失?。环駝t執(zhí)行B3;B3、第二設(shè)備模擬器判斷狀態(tài)機是否有下一狀態(tài),若有,則將下一狀態(tài)的狀態(tài)值賦予當前狀態(tài)值,執(zhí)行B1;否則,確認與第一設(shè)備的對接測試成功。
7.如權(quán)利要求6所述的狀態(tài)機構(gòu)建方法,其特征在于,B2中所述在當前狀態(tài)下要發(fā)送消息時,第二設(shè)備模擬器將當前狀態(tài)表中的消息發(fā)送到第一設(shè)備具體包括當狀態(tài)機中存在至少兩個與當前狀態(tài)值對應(yīng)的狀態(tài)時,若在所述狀態(tài)下第二設(shè)備模擬器是要發(fā)送消息,則選擇其中一個狀態(tài)作為當前狀態(tài),將當前狀態(tài)表中的消息發(fā)送到第一設(shè)備。
8.如權(quán)利要求7所述的狀態(tài)機構(gòu)建方法,其特征在于,所述第二設(shè)備模擬器選擇其中一個狀態(tài)作為當前狀態(tài)具體包括第二設(shè)備模擬器按照預先指定或通過概率選擇法或順次遍歷法選擇其中一個狀態(tài)作為當前狀態(tài)。
9.一種設(shè)備測試系統(tǒng),其特征在于,包括第一設(shè)備模擬器、第二設(shè)備、第二設(shè)備模擬器,其中第一設(shè)備模擬器用于接收來自第二設(shè)備的消息,在其狀態(tài)機中創(chuàng)建與該消息對應(yīng)的狀態(tài)表;還用于將新建的狀態(tài)表提供給第二設(shè)備模擬器;第二設(shè)備模擬器用于將第一設(shè)備模擬器提供的新建狀態(tài)表更新到其狀態(tài)機中。
10.如權(quán)利要求9所述的設(shè)備測試系統(tǒng),其特征在于,還包括第一設(shè)備;第二設(shè)備模擬器還用于接收來自第一設(shè)備的消息,在其狀態(tài)機中創(chuàng)建與該消息對應(yīng)的狀態(tài)表;還用于將新建的狀態(tài)表提供給第一設(shè)備模擬器;第一設(shè)備模擬器還用于將第二設(shè)備模擬器提供的新建狀態(tài)表更新到其狀態(tài)機中。
11.如權(quán)利要求9或10所述的設(shè)備測試系統(tǒng),其特征在于,所述設(shè)備模擬器用于接收來自第一設(shè)備的消息,在其狀態(tài)機中創(chuàng)建與該消息對應(yīng)的狀態(tài)表具體包括設(shè)備模擬器用于接收來自第一設(shè)備的消息,當在預定時間內(nèi)所接收的消息與狀態(tài)機中的消息不匹配時在其狀態(tài)機中創(chuàng)建與該接收消息對應(yīng)的狀態(tài)表。
12.一種設(shè)備模擬器,用于與對端設(shè)備進行對接測試,其特征在于,包括消息復制單元,用于接收對端設(shè)備模擬器所創(chuàng)建的與題述設(shè)備模擬器所模擬設(shè)備發(fā)送的消息對應(yīng)的狀態(tài)表;狀態(tài)機處理單元,用于將消息復制單元接收的狀態(tài)表更新到本設(shè)備模擬器的狀態(tài)機中。
13.如權(quán)利要求12所述的設(shè)備模擬器,其特征在于,還包括接收單元,用于接收來自對端設(shè)備的消息,并將該消息提供給狀態(tài)機處理單元;狀態(tài)機處理單元還用于在本設(shè)備模擬器的狀態(tài)機中查找與當前狀態(tài)值對應(yīng)的狀態(tài),在該狀態(tài)是要接收消息時,等待接收單元接收來自對端設(shè)備的消息,并在接收單元是在預定時間內(nèi)接收到該消息時,根據(jù)該消息與當前狀態(tài)表中的消息進行匹配,當接收消息與狀態(tài)表中的消息不匹配時,在狀態(tài)機中創(chuàng)建與所述接收消息對應(yīng)的狀態(tài)表;消息復制單元用于向?qū)Χ嗽O(shè)備模擬器發(fā)送狀態(tài)機處理單元所創(chuàng)建的狀態(tài)表。
14.如權(quán)利要求13所述的設(shè)備模擬器,其特征在于,還包括消息過濾單元,用于過濾對端設(shè)備發(fā)送來的無用消息。
15.如權(quán)利要求12或13或14所述的設(shè)備模擬器,其特征在于,還包括發(fā)送單元,用于向?qū)Χ嗽O(shè)備發(fā)送狀態(tài)機處理單元所提供的消息;狀態(tài)機處理單元還用于在與當前狀態(tài)值對應(yīng)的狀態(tài)是要發(fā)送消息時,將該狀態(tài)下記錄的消息提供給發(fā)送單元。
全文摘要
本發(fā)明公開了狀態(tài)機構(gòu)建方法和設(shè)備測試系統(tǒng)及設(shè)備模擬器。所述方法包括第一設(shè)備模擬器接收來自第二設(shè)備的消息,在其狀態(tài)機中創(chuàng)建與該消息對應(yīng)的狀態(tài)表;第一設(shè)備模擬器將新建的狀態(tài)表提供給第二設(shè)備模擬器;第二設(shè)備模擬器根據(jù)上述狀態(tài)表更新其內(nèi)部狀態(tài)機。所述系統(tǒng)包括第一設(shè)備模擬器用于接收來自第二設(shè)備的消息,在其狀態(tài)機中創(chuàng)建與該消息對應(yīng)的狀態(tài)表;還用于將新建的狀態(tài)表提供給第二設(shè)備模擬器;第二設(shè)備模擬器用于將第一設(shè)備模擬器提供的新建狀態(tài)表更新到其狀態(tài)機中。通過本發(fā)明,能夠簡單、方便地為設(shè)備模擬器構(gòu)建出狀態(tài)機。
文檔編號G06F9/455GK1964290SQ200610139740
公開日2007年5月16日 申請日期2006年9月22日 優(yōu)先權(quán)日2006年9月22日
發(fā)明者吳平, 黃泥, 王定軍 申請人:華為技術(shù)有限公司