專利名稱:一種使用狀態機測試網元接口的方法
技術領域:
本發明涉及網元接口的測試方法,具體涉及一種使用狀態機測試網元接口的方法。
背景技術:
系統的業務自動化測試中,如協議一致性測試、業務功能測試等,需要對協議的消息流程或業務流程建立模型,而狀態機技術適用于面向過程的應用,適用于系統的動態建模。如果對象的行為必須響應異步激發,或它的當前行為依賴于過去,用狀態機可以簡單、高效地描述系統的行為,而且便于理解。在業務測試中,需要模擬被測試設備的外部接口的行為,用于測試設備的設計功能完備性。現有的網元接口的測試方法之一,是將模擬網元接口的狀態機以代碼的形式置于測試程序或腳本中,這種方法的缺點是沒有區分狀態機和狀態機執行器,描述方法復雜,需要寫測試代碼,應用的技術難度高,不易于維護。另外一種測試方法是將模擬網元接口的狀態機和狀態機執行器分開設計,但是這種方法的缺點是狀態機描述方法簡單,沒有執行過程中的用戶需要的資源檢查等定制的功能的描述;狀態機不分層次,子狀態機沒有進行模塊化,不能充分共享;狀態機執行器沒有擴展接口給用戶使用。
發明內容
本發明要解決的技術問題是提供一種使用狀態機測試網元接口的方法,克服現有技術中狀態機不分層次,子狀態機沒有進行模塊化,不能充分共享,以及狀態機執行器沒有擴展接口給用戶使用,不能進行用戶需要的資源檢查的缺點。
為解決上述技術問題,本發明采用如下的技術方案一種使用狀態機測試網元接口的方法,包括以下步驟采用面向對象技術,由不同狀態機對象表示相應的網元接口,其通過適配器與一個狀態機模板對象對應,狀態機執行器加載不同的狀態機對象來模擬不同的網元接口行為,不同網元在所述狀態機執行器中以相應網元對象表示,由各個網元對象實例共享所述狀態機模板對象。
在狀態機描述文本中對狀態機描述表、消息信元回填映射表和測試消息集合進行描述,所述狀態機描述文本以屬性的方式與狀態機模板對象對應,測試系統根據所述狀態機描述文本創建所述狀態機模板對象的相應實例。
在所述狀態機描述文本中根據子狀態機名對狀態機進行分層描述。
同一網元對象實例的多個狀態機層次以單向鏈表的方式表達,形成調用棧的關系,所述測試系統的用戶流程根據狀態機描述的要求維護所述單向鏈表的創建、處理和釋放。
所述狀態機執行器的觸發器對象根據測試需要啟動并發流程或檢查當前的資源狀態,根據接收消息啟動并切換到另一層狀態機執行。
所述測試系統初始化時建立缺省的公用流程,其它用戶流程根據接收消息建立,當一個流程中包含不止一個協議層消息時,每一協議層對應一個狀態機對象實例,其通過適配器與一個狀態機模板對象邦定。
采用本發明的技術方案,由于在狀態機描述文本中對狀態機分層描述,使復雜的狀態機更清晰,狀態機和狀態機執行器分離,使測試系統易于實現,易于維護。
圖1是本發明的測試系統內部實體關系圖。
具體實施例方式
下面結合附圖和實施例對本發明作進一步詳細說明狀態機描述文本是以FSM(Finite State Machine,有限狀態機)為擴展名的文件,其中包括狀態機描述、回填消息IE(Information Element,消息信元)映射表和測試消息文件名列表,狀態機描述的標識關鍵字為FSM;回填消息IE映射表的標識關鍵字為MSGIE;消息文件名稱列表的標識關鍵字為MSGLIST。注釋和說明文字以逗號開頭。測試消息文件名以擴展名MSG結尾。
業務狀態機以表驅動,以“FSM”作為表的起始標識,表的每一行包含序號、狀態名、接收消息名、發送消息名、等待延時時長、超時遷移目的狀態名、正常遷移目的狀態名、下一層狀態機名、觸動發器名和狀態說明等十項,各項以逗號分開,當某一項可以有多項時,以引號包含,各子項以空格分隔。當表中某項為“”時表示沒有相應的值或為空。狀態序號是唯一的不會重復。延時時長以毫秒為單位。狀態機表的第一行是狀態機啟動入口,頭一條接收消息和發送消息需要安排第一行,其它的狀態行可以任意安排。以下說明狀態行中各項的用法。
1、狀態行序號序號是唯一標識一個狀態,不能為空,序號為1或0的狀態并不一定是頭一個狀態,狀態機表的第一行的狀態才是頭一個處理的狀態。
2、狀態名狀態名表示是狀態名稱,不能為空,當在相同狀態下需要接收不同的消息時,可以描述成多行具有相同狀態名的狀態,但狀態序號不同。
3、接收消息名表示是在本狀態下準備接收的消息名稱,該消息是用ASN.1(AbstractSyntaxNotation No.1,抽象語法記號1)描述的消息文件,作為消息模板應在消息文件目錄中保存,狀態機執行引擎運行時加載。若沒有需要接收的消息,此項填“”。
4、發送消息名表示是在本狀態下準備發送的消息名稱,該消息的消息模板應在消息文件目錄中保存,狀態機執行引擎運行時加載,根據接收消息來回填相應的信元。若沒有需要發送的消息,此項填“”,發送消息可以有多個,各個消息以空格來分開。
5、等待延時時長表示是在本狀態下等待接收消息的延時,以毫秒為單位,若沒有延時要求時,此項填0。
6、超時遷移目的狀態名表示是在本狀態下在規定的時間內沒有收到相應的消息時,狀態機遷移的目標狀態。“ERROR”、“OVER”、“SUCCESS”、“FAIL”是保留狀態名,表示狀態機的結果狀態。最頂層狀態機返回以上保留狀態,表示用戶實例執行完畢。
7、正常遷移目的狀態名表示是在本狀態下在規定的時間內收到相應的消息時,狀態機遷移的目標狀態。“ERROR”、“OVER”、“SUCCESS”、“FAIL”是保留狀態名,表示狀態機的結果狀態。最頂層狀態機返回以上保留狀態,表示用戶實例執行完畢。
8、下一層狀態機名表示是執行另一個狀態機的名稱,在當前狀態下在規定的時間內收到相應的消息后,在發送相應的消息之前,若有下一層狀態機名不為空時,暫停當前狀態機,啟動執行另一個狀態機,再根據這個狀態機返回的狀態來決定本層狀態機的狀態遷移。
9、觸發器名稱表示在當前狀態下,需要通過觸發器類來啟動另一個并發的流程,一般是被叫流程,當前流程繼續運行。或者是啟動一個資源檢查過程,用來核查當前狀態下和資源,這需要OM資源查詢模塊的配合。最終用戶可以根據需要擴展觸發器類,以實現不同的測試需求,系統默認提供實現啟動被叫流程的觸發器類(CalleeTrigger)。
10、狀態說明表示在當前狀態下,系統處于何種邏輯狀況,如等待用戶接入、鏈路建立完成、小區建立完成等等。
消息信元回填映射表消息信元回填映射表保存了從接收消息中指定的信元和準備填入的發送消息,以“MSGIE”作為表的起始標識,表中各行沒有依賴關系,可以任意安排。表的每一行包含接收消息名、接收信元的路徑、發送消息名、發送信元的路徑等四項,各項以逗號分開,信元路徑用引號包含,信元路徑各部分以空格分隔。
當回填映射表中某項為“”時表示沒有相應的值或為空。
當回填映射表發送消息和發送信元的路徑都以“”時,表示接收消息是狀態機頭一條消息,并且需要從中取出標識信元ID,如IMSI或UEID。
當回填映射表中接收消息為“”接收信元為“ID”、“IMSI”時,表示需要向尋呼消息填入被叫的ID(UEID、IMSI等)。
從用戶易用性考慮,當需要回填的信元是一個序列(SEQUENCE OF)時,在信元路徑的最后標注序列的數量來代替信元路徑最后的偏移,則系統會依次回填所有的序列項。例如IMSI有15位數字,則用SimRNC-15表示。ISDN有11位,則用SimRNC-11表示,以此類推。例如MSGIE;主叫 用于創建用戶實體{″RRC_RRC_CONNECT_REQ″,″dllMsg struMsgChoice struRrc-MsgstruUU-RRC-CONN-SETUP-STRU struInitUeId u struImsi aucImsiSimRNC-15″,″″,″″};正常{RRC_RRC_CONNECT_REQ,″ulInstId″,RRC_RRC_CONNECT_SETUP,″ulInstId″};被呼
{″″,″ID″,Paging,″ulInstId″}{″″,″IMSI″,Paging,″dllMsg struMsgChoice struRrc-MsgstruUU-RRC-CONN-SETUP-STRU struInitUeId u struImsi aucImsiSimRNC-15″}針對狀態機描述的需求和并發執行的需求,需要模擬的有設備在執行器中以一個設備對象形式存在,每一個設備對象模擬一個設備,可以相同類的設備也可以不同類的設備,狀態機采用模板設計模式,狀態機描述文本作為只讀的數據源,以對象實例子的方式創建狀態機模板,由各個設備實例共享狀態機模板對象。其次,針對多層狀態機描述,同一設備實例的多個狀態機層次通過單向鏈表的方式表達,形成一個調用棧的關系,體現多層協議棧的實現需求,呼叫中的實例對象根據狀態機描述的要求維護該鏈表資源的創建、處理和釋放,鏈表中的對象則是代表某一個狀態機的實現實例的數據對象。再者,各個實例的狀態機鏈表對象通過適配對象與狀態機對象建立非排他性的一對一的幫定關系。最后,主控模塊通過消息泵接收前臺消息,根據消息類型進行分發和調度,實現多實例分時共享的目的。
系統劃分為執行引擎消息泵模塊,用戶對象模塊,狀態機實體模塊,狀態機適配模塊,協議層切換與測試檢查模塊和狀態機描述模塊,各個模塊用一個類來描述其功能和需要維護的數據,用戶的測試腳本啟動執行引擎消息泵,然后根據接收的消息來創建用戶對象,用戶對象根據接收的消息來確定如何與狀態機、狀態機適配等配合構成一個狀態機執行的實體。結構圖如圖1所示。
初始化時建立的系統用戶對象是包含缺省的公用流程,其它用戶對象是根據接收消息建立,例如它包含手機的呼叫流程。當流程中包含不止一個協議層消息時,每一層擁有一個狀態機實體(數據對象Entity),它通過適配器(Adapter)與某一個狀態機描述模板(TMSGFSM)邦定;狀態機模板對象擁有狀態機的描述表、測試消息集和回填信元關系表等狀態機的固有屬性,適配器(Adapter)保存狀態機的運行信息。這樣劃分的目的是只要更新狀態機描述擴展包即可以擴充狀態機執行引擎的執行能力,模擬不同的網元實體。狀態機協議層切換與觸發器(Trigger)是各層狀態機的轉接點,測試執行過程中的檢查點,Trigger的實例可以根據測試需要檢查當前的資源狀態,根據接收消息啟動并切換到另一層狀態機執行,或根據狀態機流程需要創建被叫實體,由狀態機實體解析狀態機描述后,根據需要來創建,完成任務后隨即釋放。執行器提供一般通用的觸發器功能,觸發器也作為一個外部接口。提供給用戶,狀態機描述中只需要給予新的觸發器名稱即可。在以TCL的實現執行器時,把觸發器作為一個模板類和規則,提供給用戶根據實際需要定制個性化的實現。
雖然通過參照本發明的優選實施例,已經對本發明進行了圖示和描述,但本領域的普通技術人員應該明白,可以在形式上和細節上對其作各種各樣的改變,而不偏離所附權利要求書所限定的本發明的精神和范圍。
權利要求
1.一種使用狀態機測試網元接口的方法,包括以下步驟采用面向對象技術,由不同狀態機對象表示相應的網元接口,其通過適配器與一個狀態機模板對象對應,狀態機執行器加載不同的狀態機對象來模擬不同的網元接口行為,不同網元在所述狀態機執行器中以相應網元對象表示,由各個網元對象實例共享所述狀態機模板對象。
2.根據權利要求1所述的使用狀態機測試網元接口的方法,其特征在于在狀態機描述文本中對狀態機描述表、消息信元回填映射表和測試消息集合進行描述,所述狀態機描述文本以屬性的方式與狀態機模板對象對應,測試系統根據所述狀態機描述文本創建所述狀態機模板對象的相應實例。
3.根據權利要求2所述的使用狀態機測試網元接口的方法,其特征在于在所述狀態機描述文本中根據子狀態機名對狀態機進行分層描述。
4.根據權利要求3所述的使用狀態機測試網元接口的方法,其特征在于同一網元對象實例的多個狀態機層次以單向鏈表的方式表達,形成調用棧的關系,所述測試系統的用戶流程根據狀態機描述的要求維護所述單向鏈表的創建、處理和釋放。
5.根據權利要求4所述的使用狀態機測試網元接口的方法,其特征在于所述狀態機執行器的觸發器對象根據測試需要啟動并發流程或檢查當前的資源狀態,根據接收消息啟動并切換到另一層狀態機執行。
6.根據權利要求5所述的使用狀態機測試網元接口的方法,其特征在于設置所述觸發器類為模板類。
7.根據權利要求6所述的使用狀態機測試網元接口的方法,其特征在于設置所述狀態機描述文本為只讀文本。
8.根據權利要求7所述的使用狀態機測試網元接口的方法,其特征在于所述測試系統初始化時建立缺省的公用流程,其它用戶流程根據接收消息建立,當一個流程中包含不止一個協議層消息時,每一協議層對應一個狀態機對象實例,其通過適配器與一個狀態機模板對象邦定。
9.根據權利要求8所述的使用狀態機測試網元接口的方法,其特征在于所述適配器保存狀態機對象的運行信息。
全文摘要
本發明公開了一種使用狀態機測試網元接口的方法,包括步驟由不同狀態機對象表示相應的網元接口,其通過適配器與一個狀態機模板對象對應,狀態機執行器加載不同的狀態機對象來模擬不同的網元接口行為,不同網元在所述狀態機執行器中以相應網元對象表示,由各個網元對象實例共享所述狀態機模板對象。在狀態機描述文本中對狀態機描述表、消息信元回填映射表和測試消息集合進行描述,狀態機描述文本以屬性的方式與狀態機模板對象對應,測試系統根據狀態機描述文本創建狀態機模板對象的相應實例。采用本發明的技術方案,由于在狀態機描述文本中對狀態機分層描述,使狀態機更清晰,狀態機和狀態機執行器分離,測試系統易于實現,易于維護。
文檔編號H04L12/26GK1787461SQ200410077328
公開日2006年6月14日 申請日期2004年12月6日 優先權日2004年12月6日
發明者胡成鋼 申請人:華為技術有限公司