欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種腳本文件自動生成系統(tǒng)及自動生成方法

文檔序號:6434977閱讀:223來源:國知局
專利名稱:一種腳本文件自動生成系統(tǒng)及自動生成方法
技術(shù)領(lǐng)域
本發(fā)明是一種腳本文件自動生成系統(tǒng)及自動生成方法。
背景技術(shù)
抽象語法規(guī)則(Asn,Abstract Syntax Notation)是一種用來描述系統(tǒng)之間傳遞的信息格式的語言規(guī)范,被廣泛用在通信協(xié)議的信息格式定義中。
Asn.1是指采用Asn編碼生成的編碼文檔。當(dāng)前的Asn.1文檔地生成是人工根據(jù)Asn編碼規(guī)則去編寫出Asn.1文檔。ANS.1文檔編寫完成后,用戶可以利用Asn編譯器將Asn.1文本編譯成動態(tài)鏈接庫(dll,dynamic linklibrary)文件,其編譯成dll過程所使用的函數(shù)是系統(tǒng)函數(shù)。然后用戶在調(diào)用消息生成程序過程中,消息生成程序調(diào)用生成的dll文件來生成消息文件。
現(xiàn)有的集成測試工具ITT提供了一種全手動的方式來生成測試腳本,首先由用戶手動完成Asn.1文檔的編寫,然后,手動調(diào)用Asn編譯器編譯成dll文件,然后再手動調(diào)用消息生成程序生成消息,然后用戶根據(jù)要測試的內(nèi)容以及生成的消息,去編寫出測試腳本。
由于現(xiàn)有的技術(shù)完全需要用戶手工去完成Asn.1編碼,去調(diào)用Asn編譯器生成dll文件,手動調(diào)用消息生成程序去生成消息,最后再手工去生成測試腳本。這些手工的勞動,不僅需要花費大量的人力和時間,成本較高,而且在需要生成大量測試腳本時耗時較大,對于產(chǎn)品的開發(fā)是不利的。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種腳本文件的自動生成系統(tǒng),實現(xiàn)腳本文件根據(jù)用戶輸入的測試用例自動生成。
本發(fā)明的第二個目的在于提供一種腳本文件自動生成方法,實現(xiàn)腳本文件根據(jù)用戶輸入的測試用例的自動生成過程。
實現(xiàn)本發(fā)明的腳本文件自動生成系統(tǒng)包括模板庫模塊、索引庫模塊、消息庫模塊、腳本生成模塊。其中模板庫模塊存儲著用于生成腳本文件的模板文件,不同的模板文件使用不同的ID進行編號存儲;索引庫模塊存儲著所有的消息碼和消息名對應(yīng)關(guān)系的索引文件;消息庫模塊存儲著所有的消息文件,消息文件描述了消息名以及對應(yīng)的消息結(jié)構(gòu);腳本生成模塊用于接收用戶按照一定格式輸入的測試用例文件,其中,測試用例文件中至少包含模板ID、消息碼;腳本生成模塊根據(jù)測試用例文件,讀取出模板庫模塊中相應(yīng)的模板、索引庫模塊中相應(yīng)的消息名、消息庫模塊中相應(yīng)的消息文件,將讀取出的消息名、消息文件載入讀取的模板中生成腳本文件。
其中,該系統(tǒng)進一步包括管理模塊,用于接收用戶按照一定格式輸入的消息頭定義文件、消息結(jié)構(gòu)定義文件,生成消息文件和索引文件并分別存儲到消息庫模塊和索引庫模塊中。
其中,所述管理模塊包括消息頭定義輸入模塊、消息結(jié)構(gòu)定義輸入模塊、索引生成模塊、Asn生成模塊、編譯模塊、文本消息構(gòu)造模塊、消息生成模塊。其中,消息頭定義輸入模塊、消息結(jié)構(gòu)定義輸入模塊分別用于接收用戶按一定格式輸入的消息頭定義文件、消息結(jié)構(gòu)定義文件,并分別轉(zhuǎn)換為Asn.1格式的文檔;索引生成模塊和Asn生成模塊用于接收消息頭定義輸入模塊、消息結(jié)構(gòu)定義輸入模塊轉(zhuǎn)換后的Asn.1格式文檔,并分別生成索引文件和完整的Asn.1文件,其中索引文件記錄了消息碼和消息名的對應(yīng)關(guān)系;編譯模塊用于將Asn生成模塊生成的Asn.1文件編譯成dll文件;文本消息構(gòu)造模塊用于接收索引生成模塊和消息結(jié)構(gòu)定義輸入模塊的輸出信息,根據(jù)所述信息生成文本消息;消息生成模塊用于接收文本消息構(gòu)造模塊生成的文本消息,接收編譯模塊生成的dll文件,根據(jù)dll將所述文本消息進行解析生成消息文件。
本發(fā)明提供的腳本文件自動生成方法,預(yù)先設(shè)置模板庫、索引庫、消息庫,其中,模板庫存儲著用于生成腳本文件的模板文件,不同的模板文件使用不同的ID進行編號存儲;索引庫存儲著所有的消息碼和消息名對應(yīng)關(guān)系的索引文件;消息庫存儲著所有的消息文件,消息文件描述了消息名以及對應(yīng)的消息結(jié)構(gòu);該方法還包括以下步驟
A4、接收用戶按照一定格式輸入的測試用例文件,其中,測試用例文件中至少包含模板ID、消息碼;
B4、根據(jù)測試用例文件中的模板ID、消息碼,讀取出模板庫模塊中相應(yīng)的模板、索引庫模塊中相應(yīng)的消息名、消息庫模塊中相應(yīng)的消息文件;
C4、將讀取出的消息名、消息文件載入讀取的模板中生成腳本文件。
其中,該方法進一步包括生成消息文件并存儲到消息庫的步驟,包括
A5、接收用戶按一定格式輸入的消息頭定義文件、消息結(jié)構(gòu)定義文件,并分別轉(zhuǎn)換為Asn.1格式的文檔;
B5、根據(jù)消息頭定義文件、消息結(jié)構(gòu)定義文件轉(zhuǎn)換的Asn.1格式的文檔,分別生成索引文件和完整的Asn.1文件,其中索引文件記錄了消息碼和消息名的對應(yīng)關(guān)系;
C5、根據(jù)索引文件和消息結(jié)構(gòu)定義文件轉(zhuǎn)換后的Asn.1文檔生成文本消息;
D5、將Asn.1文件編譯成dll文件;
E5、根據(jù)dll文件將所述文本消息進行解析生成消息文件存儲到消息庫。
由上可以看出,本發(fā)明將人力從枯燥、繁瑣的手工勞動中解脫出來,用戶僅需要編寫輸入簡單的測試用例,系統(tǒng)就可以生成所需的腳本文件。系統(tǒng)存儲有模板庫、消息庫,因此不需要用戶反復(fù)編寫模板、消息文件部分,也不需要按照Asn編碼格式去編寫Asn.1文檔。
下面舉例來分析說明本發(fā)明的優(yōu)點以10萬行代碼為例,根據(jù)常規(guī)設(shè)計需要設(shè)計3000-4000個集成測試用例,以每測試測試用例最少需要使用三個消息為例,則需要使用9000-12000條消息,以每條消息結(jié)構(gòu)的結(jié)構(gòu)定義包括五條,測試最終的Asn.1編碼需要45000-60000行。
以熟悉的測試工程師為例,平均每人天完成3000行Asn編碼、生成消息150條、完成腳本50個為例,完成以上的工作需要的時間為最少45000/300+9000/150+3000/50=150+60+60=270(人天);最多60000/300+12000/150+4000/50=200+80+80=360(人天)
使用本發(fā)明,用戶僅需輸入測試用例,則Asn.1的生成時間可以忽略不計,消息的生成時間可以忽略不計,腳本的生成時間可以忽略不計,則最終只需要完成的內(nèi)容只是測試用例的簡單寫作,不需要去編寫整個的腳本文件,采用該方式寫出來的用例比傳統(tǒng)的用例設(shè)計需要的時間也至少要縮短一半以上。因此,可以大大節(jié)約工作時間,提高工作效率。簡化了用戶的輸入,不需要用戶去學(xué)習(xí)懂得Asn的編寫格式。
另外,本發(fā)明還提供了管理接口,根據(jù)用戶按一定格式輸入的消息頭定義文件、消息結(jié)構(gòu)定義文件自動生成Asn.1文檔,以及自動生成消息文件及索引文件進行存儲,便于用戶對消息庫和索引庫的維護擴充。這個過程中,用戶也不需要了解Asn的編碼格式,并且消息生成過程自動實現(xiàn),不需要用戶的手動進行。


圖1為腳本文件自動生成系統(tǒng)的結(jié)構(gòu)圖。
圖2為腳本生成流程圖。
圖3為消息生成流程圖。
具體實施例方式
本發(fā)明提供的腳本文件自動生成系統(tǒng),由用戶輸入測試用例,然后腳本文件自動生成系統(tǒng)根據(jù)用于生成腳本文件的模板和前期自動生成的消息文件及相關(guān)的索引文件生成測試腳本文件。并且,腳本自動生成系統(tǒng)還向用戶提供了管理模塊,便于用戶擴充新的消息文件和索引文件。
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下通過具體實施例和參照附圖1,對本發(fā)明進一步詳細(xì)說明。
如圖1示出了腳本文件自動生成系統(tǒng)的結(jié)構(gòu)圖。該系統(tǒng)包括模板(Module)庫模塊、索引(Index)庫模塊、消息(Msg)庫模塊、腳本(script)生成模塊。其中
模板庫模塊存儲著用于生成腳本的模板,每一個模板都使用一個ID(也可稱為Module Number)進行編號存儲。如下示出了一個采用tcl編程語言編寫的模板,該模板ID為1,該模板用來生成的腳本為接收一個信息作為請求信息,然后相應(yīng)的回送接收成功響應(yīng)信息或接收失敗響應(yīng)信息,該模板如下
#****************************************#Module Type Module 1#****************************************source CommFileDefineset sendercpuid$SENDIDset senderpid 0x$SENDPIDset receivercpuId $RECVIDset receiverpid0x$RECVPIDstatemachine{test_init{   set channel[opench TestChannel]   if{$channel==-1}{   puts″open channel fail″   goto testend   }   #RECV A<->B MSG   testconfig $channel NodebMsg-recv $RECVID$RECVPID$SENDID$SENDPID   #LOAD REQ/RESP/FAIL MSG FILE   loadmsg-msgfile SS_SPID_RR_RPID_REQ$msgdir/A_B_REQU_MSG   loadmsg-msgfile RR_RPID_SS_SPID_RESP $msgdir/B_A_RESP_MSG   loadmsg-msgfile RR_RPID_SS_SPID_FAIL $msgdir/B_A_FAIL_MSG<!-- SIPO <DP n="5"> --><dp n="d5"/>   #SET REQ MSG IE,Here NEED ADD VALUE UNDER REQUIRMENT   SET_MSG_IE_FLAG_HEAD  }  test_begin{  if{[sendmsg $channel SS_SPID_RR_RPID_RER]==1}{   puts″SEND SS_SPID_RR_RPID_REQ MSG OK!″   goto WAIT_MSG  }else{   puts″SEND SS_SPID_RR_RPID_REQ MSG FAIL!″   goto testend  }  }  WAIT_MSG{   recvmsg-savead msg_received\   $channel RR_RPID_SS_SPID_RESP{puts″SUCCESS TORECV RESP MSG″;goto B_A_RESP}\   $channel RR_RPID_SS_SPID_FAIL{puts″SUCCESS TORECV FAIL MSG″;goto B_A_FAIL}\   -timeout 6000{goto TIMEOUT}   }   B_A_RESP{   puts″SUCCESS TO RECV B->A RESP MSG!″   goto testend   }   B_A_FAIL{   puts″FAILURE FOR RECV B->A FAIL MSG!″   goto testend  }   TIMEOUT{   puts″SORRY,RECV MSG TIMEOUT!″   goto testend  }   testend{  set CloseFlag[closech$channel]  if{$CloseFlag==-1}{puts″close channel fail″}  goto end;   }}
索引庫模塊存儲著所有的消息碼和消息名的對應(yīng)關(guān)系。消息碼就是消息所對應(yīng)的數(shù)字代碼,例如,請求消息的代碼為0x0001。由于消息碼和消息名是對應(yīng)的關(guān)系,因此也可以將消息碼作為消息名的索引,這樣可以實現(xiàn)在索引庫模塊中方便的根據(jù)索引(即消息碼)查詢到對應(yīng)的消息名。如下示出了索引庫中的部分內(nèi)容
0x0001 MSG-CFG-XXXX-REQ
0x0002 MSG-CFG-XXXX-RESP
0x0003 MSG-CFG-XXXX-FAIL
消息庫模塊存儲著所有的消息文件。消息文件是包括該消息名以及消息結(jié)構(gòu)的描述,例如該消息所占字節(jié)等,因此可以認(rèn)為消息庫模塊中的消息文件就是消息的實體。如下示出了消息庫模塊的部分內(nèi)容
som-SH-NBOM-CFG-XXXX-REQ <TV,T|LEN-16>
som-NBOM-SH-CFG-XXXX-RESP <TV,T|LEN-16>
som-NBOM-SH-CFG-XXXX-FAIL <TV,T|LEN-16>
腳本生成模塊向用戶提供了輸入接口(input3),用于接收用戶按照一定格式輸入的測試用例文件,該測試用例文件中要求至少包含模板ID、消息碼。腳本生成模塊根據(jù)測試用例文件,讀取出模板庫模塊中相應(yīng)的模板、索引庫模塊中相應(yīng)的消息名、消息庫模塊中相應(yīng)的消息文件,將讀取出的消息名、消息文件載入讀取的模板中生成腳本文件。
下面舉例來詳細(xì)說明腳本生成模塊。用戶編寫的測試用例文件如下所示,包含用例號(testcase number),即本次測試用例文件的編號;生成腳本所要使用的模板ID(module_number)為1;該ID為1的模板所需要的消息對應(yīng)的消息碼,其中該模板需要測試用例中包含3個消息,因此下面的實例中有3個消息碼0x0001、0x0002、0x0003。
BEGIN
testcase_number=IT-133-001001-01
module_number=1
message_req=0x0001
message_resp=0x0002
message_fail=0x0003
END
腳本生成模塊根據(jù)用戶輸入的測試用例文件中的模板ID讀取出模板庫模塊中存儲的對應(yīng)的模板,根據(jù)測試用例文件中的消息碼,從索引庫模塊中檢索出對應(yīng)的消息名,以及根據(jù)消息碼從消息庫模塊中檢索到對應(yīng)的消息文件,建立消息名和消息文件的對應(yīng)關(guān)系,以及將得到的消息名、消息文件輸入到所選擇的模板中,按照模板來生成設(shè)定格式的腳本文件。本例中,生成的腳本文件如下
#*******************************************************************#Module Type Module 1#Date Script Was built automatic.#*******************************************************************source CommFileDefineset sendercpuid$SENDIDset senderpid 0x$SENDPIDset receivercpuId $RECVIDset receiverpid0x$RECVPIDset TransactionID 0set Handle 0statemachine{   test_init{   set channel[opench TestChannel]   if{$channel==-1}{   puts″open channel fail″   goto testend   }   #RECV A<->B MSG   testconfig $channel Nodeb Msg-recv $RECVID$RECVPID$SENDID$SENDPID   #LOAD REQ/RESP/FAIL MSG FILE   loadmsg-msgfile A_REQ $msgdir/MSG--CFG-XXXX-REQ.msg   loadmsg-msgfile RR_RPID_SS_SPID_RESP$msgdir/MSG-NBOM-SH-CFG-XXXX-RESP.msg   loadmsg-msgfile RR_RPID_SS_SPID_FAIL$msgdir/MSG-NBOM-SH-CFG-XXXX-FAIL.msg   #SET REQ MSG IE,Here NEED ADD VALUE UNDER REQUIRMENT   setie-tree SS_SPID_RR_RPID_REQ msg-header sendercpuid   setie-tree SS_SPID_RR_RPID_REQ msg-header senderpid<!-- SIPO <DP n="8"> --><dp n="d8"/>  setie-tree SS_SPID_RR_RPID_REQ msg-header receivercpuid  setie-tree SS_SPID_RR_RPID_REQ msg-header receiverpid  setie-tree SS_SPID_RR_RPID_REQ struMsg struMsgChoicesom-SH-NBOM-CFG-XXXX-REQ dw TransactionId  setie-tree SS_SPID_RR_RPID_REQ struMsg struMsgChoicesom-SH-NBOM-CFG-XXXX-REQ wUserId  setie-tree SS_SPID_RR_RPID_REQ struMsg struMsgChoicesom-SH-NBOM-CFG-XXXX-REQ wHandle  setie-tree SS_SPID_RR_RPID_REQ struMsg struMsgChoicesom-SH-NBOM-CFG-XXXX-REQ bXXXXCabinetNo  setie-tree SS_SPID_RR_RPID_REQ struMsg struMsgChoicesom-SH-NBOM-CFG-XXXX-REQ bXXXXFrameNo  setie-tree SS_SPID_RR_RPID_REQ struMsg struMsgChoicesom-SH-NBOM-CFG-XXXX-REQ bXXXXSlotId  setie-tree SS_SPID_RR_RPID_REQ struMsg struMsgChoicesom-SH-NBOM-CFG-XXXX-REQ bSwitchStatus   }   test_begin{   if{[sendmsg $channel SS_SPID_RR_RPID_REQ]==1}{   puts″SEND SS_SPID_RR_RPID_REQ MSG OK!″   goto WAIT_MSG   }else{   puts″SEND SS_SPID_RR_RPID_REQ MSG FAIL!″   goto testend   }   }   WAIT_MSG{   recvmsg-savead msg_received\   $channel RR_RPID_SS_SPID_RESP{puts″SUCCESS TORECV RESP MSG″;goto B_A_RESP}\   $channel RR_RPID_SS_SPID_FAIL{puts″SUCCESS TORECV FAIL MSG″;goto B_A_FAIL}\   -timeout 6000{goto TIMEOUT}   }   B_A_RESP{   puts″SUCCESS TO RECV B->A RESP MSG!″   goto testend   }   B_A_FAIL{   puts″FAILURE FOR RECV B->A FAIL MSG!″<!-- SIPO <DP n="9"> --><dp n="d9"/>   goto testend   }   TIMEOUT{   puts″SORRY,RECV MSG TIMEOUT!″   goto testend   }  testend{   set CloseFlag[closech $channel]   if{$CloseFlag==-1}{puts″close channel fail″}   goto end;   }}
其中,從tcl語言編寫的模板到生成設(shè)定格式的腳本文件過程中,涉及到一種編寫語言到另一種編寫語言的格式轉(zhuǎn)換,其轉(zhuǎn)換是根據(jù)兩種語言的語法規(guī)則的對應(yīng)關(guān)系來實現(xiàn),關(guān)于格式如何轉(zhuǎn)換的部分不是本發(fā)明重點,這里不再進行描述。
相應(yīng)的提供的腳本文件自動生成方法可以歸納為以下步驟,預(yù)先設(shè)置好模板庫模塊、索引庫模塊、消息庫模塊的內(nèi)容后,還包括
步驟201接收用戶按照一定格式輸入的測試用例文件,其中,測試用例文件中至少包含模板ID、消息碼;
步驟202根據(jù)測試用例文件中的模板ID、消息碼,讀取出模板庫模塊中相應(yīng)的模板、索引庫模塊中相應(yīng)的消息名、消息庫模塊中相應(yīng)的消息文件;
步驟203將讀取出的消息名、消息文件載入讀取的模板中生成腳本文件。
可以看出,通過以上所述的腳本自動生成系統(tǒng)及相應(yīng)的生成方法,當(dāng)該系統(tǒng)的索引庫模塊、消息庫模塊存儲著足夠的信息時,僅需要用戶按照格式編寫測試用例文件就可以生成腳本文件。相對于背景技術(shù)來說,用戶可以不去了解Asn.1文檔的格式、不需要去編寫Asn.1文檔、免去手動生成消息文件的過程。
本發(fā)明腳本自動生成系統(tǒng)還向用戶提供了管理模塊,管理模塊向用戶提供了輸入接口。用戶可以通過管理模塊來生成新的消息文件、索引文件,并存儲到相應(yīng)的消息庫模塊、索引庫模塊中,以實現(xiàn)消息庫、索引庫內(nèi)容的擴充。這樣,當(dāng)消息庫模塊、索引庫模塊中不存在所需的文件時,用戶可以利用該管理模塊生成需要的文件。下面參見附圖1,對本發(fā)明所述的管理模塊進行詳細(xì)的說明。
如圖所示,該管理模塊包括消息頭定義輸入模塊、消息結(jié)構(gòu)定義輸入模塊、索引生成模塊、Asn生成模塊、編譯模塊、文本消息構(gòu)造模塊、消息生成模塊。
消息頭定義輸入模塊、消息結(jié)構(gòu)定義輸入模塊分別為用戶提供了消息頭定義文件和消息結(jié)構(gòu)定義文件的輸入接口(input1和input2),由用戶按照設(shè)定的格式輸入消息定義文件和結(jié)構(gòu)定義文件。其中,消息頭定義輸入模塊將用戶輸入的消息碼定義頭文件(input1)轉(zhuǎn)換成Asn.1格式的文檔;消息結(jié)構(gòu)定義輸入模塊將用戶輸入的結(jié)構(gòu)定義文件(input2)轉(zhuǎn)換成Asn.1格式的文檔。
Asn生成模塊接收消息頭定義輸入模塊、消息結(jié)構(gòu)定義輸入模塊的輸出,并將接收的信息進行整合處理,生成完整的Asn.1文檔。總體來看,消息頭定義輸入模塊、消息結(jié)構(gòu)定義輸入模塊、Asn生成模塊實現(xiàn)了用戶輸入信息的格式到Asn.1文檔格式的轉(zhuǎn)換,關(guān)于文檔格式的轉(zhuǎn)換,是根據(jù)兩種語言的語法規(guī)則對應(yīng)的關(guān)系來實現(xiàn),關(guān)于格式如何轉(zhuǎn)換的部分不是本發(fā)明重點,這里不進行詳細(xì)描述,僅參考下例進行簡述。
如下示出了用戶輸入的以tcl語言進行編寫input1、input2文檔,分別記為msg.tcl、struct.tcl
#****************************************# msg.tcl#****************************************define ID_SH_NBOM_CFG_XXXX_SWITCH_REQ 0x0001define ID_NBOM_SH_CFG_XXXX_SWITCH_RESP 0x0002<!-- SIPO <DP n="11"> --><dp n="d11"/>define ID_NBOM_SH_CFG_XXXX_SWITCH_FAIL 0x0003#****************************************#struct.tcl#****************************************ifndef_NBOM_MSG_STRUCT_H_define_NBOM_MSG_STRUCT_H_pragma pack(1)typedef struct{  VOS_MSG_HEADER  U16 wMsgType;  U32 dwTransactionId;  U16 wUserId;  U16 wHandle;  U8 bXXXXCabinetNo;  U8 bXXXXFrameNo;  U8 bXXXXSlotId;  U8 bSwitchStatus;}MSG_SH_NBOM_CFG_XXXX_SWITCH_REQ;typedef struct{  VOS_MSG_HEADER  U16 wMsgTrpe;/*消息號*/  U32 dwTransactionId;/*過程號*/  U16 wUserId; /*用戶ID*/  U16 wHandle; /*窗口號*/}MSG_NBOM_SH_CFG_XXXX_SWITCH_RESP;typedef struct{  VOS_MSG_HEADER  U16 wMsgType; /*消息號*/  U32 dwTransactionId; /*過程號*/  U16 wUserId; /*用戶ID*/  U16 wHandle; /*窗口號*/}MSG_NBOM_SH_CFG_XXXX_SWITCH_FAIL;
Asn生成模塊接收消息頭定義輸入模塊、消息結(jié)構(gòu)定義輸入模塊處理后的Asn.1格式的文檔,并按照Asn.1格式要求進行整合處理,如添加換行、格式要求的符號(如end、大括號)等,生成完整的Asn.1文件。下面給出了所生成的Asn.1格式文件
ROOTNodebMsg.ROOT-MSGPROTOCOLNodebMsg12ENDIANBIGBOUNDARYALIGNTHREADMULTINodebMsg DEFINITIONS::=BEGIN************************************************************* Root Message*************************************************************ROOT-MSG::=<V>SEQUENCE{  msg-header MsgHeader,  struMsg SOM-MSG-STRU}SOM-MSG-STRU::=<LV,L|LEN-32>SEQUENCE{struMsgChoice SOM-CHOICE-STRU}*************************************************************Message Header*************************************************************MsgHeader::=<V>SEQUENCE{  sendercpuid <V,V|LEN-32>U32,  senderpid <V,V|LEN-32>U32,  receivercpuid <V,V|LEN-32>U32,  receiverpid <V,V|LEN-32>U32}SOM-CHOICE-STRU::=<TV>CHOICE{som-SH-NBOM-CFG-XXXX-REQ <TV,T|LEN-16>
SOM-SH-NBOM-CFG-XXXX-REQ,som-NBOM-SH-CFG-XXXX-RESP <TV,T|LEN-16>
SOM-SH-NBOM-CFG-XXXX-RESP,som-NBOM-SH-CFG-XXXX-FAIL <TV,T|LEN-16>
SOM-SH-NBOM-CFG-XXXX-FAIL<!-- SIPO <DP n="13"> --><dp n="d13"/>}***/以下為該部分的結(jié)構(gòu)部分的定義/***SOM-SH-NBOM-CFG-XXXX-REQ::=<V>SEQUENCE{  dwTransactionId U32,  wUserId U16,  wHandle U16,  bXXXXCabinetNo U8,  bXXXXFrameNo U8,  bXXXXSlotId U8,  bSwitchStatus U8}SOM-SH-NBOM-CFG-XXXX-RESP::=<V>SEQUENCE{  dwTransactionIdU32,  wUserIdU16,  wHandleU16,}SOM-SH-NBOM-CFG-XXXX-FAIL::=<V>SEQUENCE{  dwTransactionIdU32,  wUserId U16,  wHandleU16}
另一方面,索引生成模塊接收消息頭定義輸入模塊、消息結(jié)構(gòu)定義輸入模塊處理后的文檔,根據(jù)文檔中關(guān)鍵字和定義的消息碼的對應(yīng)關(guān)系生成索引文件,以記錄消息碼和消息名的對應(yīng)關(guān)系。前文已經(jīng)示出了索引文件的內(nèi)容,此處不再舉例。
文本消息構(gòu)造模塊接收索引生成模塊和消息結(jié)構(gòu)定義輸入模塊的輸出信息,根據(jù)信息生成文本消息,如下
{msg-header{  sendercpuid 0,  senderpid 0,receivercpuid 0,  receiverpid 0},struMsg<!-- SIPO <DP n="14"> --><dp n="d14"/>{struMsgChoice som-SH-NBOM-CFG-XXXX-REQ  {   dw TransactionId 0,   wUserId 0,   wHandle 0,   bXXXXCabinetNo 0,   bXXXXFrameNo 0,   bXXXXSlotId 0,   bSwitchStatus 0  }}}
編譯模塊將Asn生成模塊生成的Asn.1文檔編譯生成dll文件,該編譯過程通過調(diào)用系統(tǒng)函數(shù)完成。
消息生成模塊接收文本消息構(gòu)造模塊生成的文本消息,接收編譯模塊生成的dll文件,根據(jù)dll將文本消息構(gòu)造模塊生成的文本消息解析為消息文件,并傳送給消息庫模塊進行存儲。其中,該消息生成模塊的功能可以由creatmsg函數(shù)實現(xiàn),creatmsg函數(shù)為一個系統(tǒng)函數(shù),本發(fā)明只是直接調(diào)用使用該createmsg函數(shù)。由于creatmsg函數(shù)并非本發(fā)明重點,這里不對此函數(shù)進行描述。
相應(yīng)的管理模塊生成消息的步驟包括
步驟301接收用戶按一定格式輸入的消息頭定義文件、消息結(jié)構(gòu)定義文件,并分別轉(zhuǎn)換為Asn.1格式的文檔;
步驟302根據(jù)消息頭定義文件、消息結(jié)構(gòu)定義文件轉(zhuǎn)換的Asn.1格式的文檔,分別生成索引文件和完整的Asn.1文件,其中索引文件記錄了消息碼和消息名的對應(yīng)關(guān)系;
步驟303根據(jù)索引文件和消息結(jié)構(gòu)定義文件轉(zhuǎn)換后的Asn.1文檔生成文本消息;
步驟304將Asn.1文件編譯成dll文件;
步驟305根據(jù)dll文件將所述文本消息進行解析生成消息文件存儲到消息庫。
可以看出,通過上述的管理模塊,用戶便可以輸入msg.tcl文件、stru.tcl文件,由系統(tǒng)自動生成消息文件和索引文件,分別發(fā)送給消息庫模塊、索引庫模塊進行存儲。
其中,上述索引生成模塊和索引庫模塊可以由一個功能單元實現(xiàn),消息生成模塊和消息庫模塊可以由一個功能單元實現(xiàn)。
以上以應(yīng)用于tcl語言環(huán)境下來自動生成腳本為例進行說明。不難理解,在實際應(yīng)用中,根據(jù)用戶的需要使用不同的語言環(huán)境,例如也可以是c語言環(huán)境等。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1、一種腳本文件自動生成系統(tǒng),其特征在于,該系統(tǒng)包括模板庫模塊、索引庫模塊、消息庫模塊、腳本生成模塊,其中
模板庫模塊存儲著用于生成腳本文件的模板文件,不同的模板文件使用不同的ID進行編號存儲;
索引庫模塊存儲著所有的消息碼和消息名對應(yīng)關(guān)系的索引文件;
消息庫模塊存儲著所有的消息文件,消息文件描述了消息名以及對應(yīng)的消息結(jié)構(gòu);
腳本生成模塊用于接收用戶按照一定格式輸入的測試用例文件,其中,測試用例文件中至少包含模板ID、消息碼;腳本生成模塊根據(jù)測試用例文件,讀取出模板庫模塊中相應(yīng)的模板、索引庫模塊中相應(yīng)的消息名、消息庫模塊中相應(yīng)的消息文件,將讀取出的消息名、消息文件載入讀取的模板中生成腳本文件。
2、根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,該系統(tǒng)進一步包括管理模塊,用于接收用戶按照一定格式輸入的消息頭定義文件、消息結(jié)構(gòu)定義文件,生成消息文件和索引文件并分別存儲到消息庫模塊和索引庫模塊中。
3、根據(jù)權(quán)利要求2所述的系統(tǒng),其特征在于,所述管理模塊包括消息頭定義輸入模塊、消息結(jié)構(gòu)定義輸入模塊、索引生成模塊、Asn生成模塊、編譯模塊、文本消息構(gòu)造模塊、消息生成模塊,其中,
消息頭定義輸入模塊、消息結(jié)構(gòu)定義輸入模塊分別用于接收用戶按一定格式輸入的消息頭定義文件、消息結(jié)構(gòu)定義文件,并分別轉(zhuǎn)換為Asn.1格式的文檔;
索引生成模塊和Asn生成模塊用于接收消息頭定義輸入模塊、消息結(jié)構(gòu)定義輸入模塊轉(zhuǎn)換后的Asn.1格式文檔,并分別生成索引文件和完整的Asn.1文件,其中索引文件記錄了消息碼和消息名的對應(yīng)關(guān)系;
編譯模塊用于將Asn生成模塊生成的Asn.1文件編譯成dll文件;
文本消息構(gòu)造模塊用于接收索引生成模塊和消息結(jié)構(gòu)定義輸入模塊的輸出信息,根據(jù)所述信息生成文本消息;
消息生成模塊用于接收文本消息構(gòu)造模塊生成的文本消息,接收編譯模塊生成的dll文件,根據(jù)dll將所述文本消息進行解析生成消息文件。
4、一種腳本文件自動生成方法,其特征在于,預(yù)先設(shè)置模板庫、索引庫、消息庫,其中,
模板庫存儲著用于生成腳本文件的模板文件,不同的模板文件使用不同的ID進行編號存儲;
索引庫存儲著所有的消息碼和消息名對應(yīng)關(guān)系的索引文件;
消息庫存儲著所有的消息文件,消息文件描述了消息名以及對應(yīng)的消息結(jié)構(gòu);該方法還包括以下步驟
A4、接收用戶按照一定格式輸入的測試用例文件,其中,測試用例文件中至少包含模板ID、消息碼;
B4、根據(jù)測試用例文件中的模板ID、消息碼,讀取出模板庫模塊中相應(yīng)的模板、索引庫模塊中相應(yīng)的消息名、消息庫模塊中相應(yīng)的消息文件;
C4、將讀取出的消息名、消息文件載入讀取的模板中生成腳本文件。
5、根據(jù)權(quán)利要求4所述的方法,其特征在于,該方法進一步包括生成消息文件并存儲到消息庫的步驟,包括
A5、接收用戶按一定格式輸入的消息頭定義文件、消息結(jié)構(gòu)定義文件,并分別轉(zhuǎn)換為Asn.1格式的文檔;
B5、根據(jù)消息頭定義文件、消息結(jié)構(gòu)定義文件轉(zhuǎn)換的Asn.1格式的文檔,分別生成索引文件和完整的Asn.1文件,其中索引文件記錄了消息碼和消息名的對應(yīng)關(guān)系;
C5、根據(jù)索引文件和消息結(jié)構(gòu)定義文件轉(zhuǎn)換后的Asn.1文檔生成文本消息;
D5、將Asn.1文件編譯成dll文件;
E5、根據(jù)dll文件將所述文本消息進行解析生成消息文件存儲到消息庫。
全文摘要
一種腳本文件自動生成系統(tǒng),包括模板庫模塊存儲著用于生成腳本文件的模板文件,不同的模板文件使用不同的ID進行編號存儲;索引庫模塊存儲著所有的消息碼和消息名對應(yīng)關(guān)系的索引文件;消息庫模塊存儲著所有的消息文件,消息文件描述了消息名以及對應(yīng)的消息結(jié)構(gòu);腳本生成模塊用于接收用戶按照一定格式輸入的測試用例文件,其中,測試用例文件中至少包含模板ID、消息碼;腳本生成模塊根據(jù)測試用例文件,讀取出模板庫模塊中相應(yīng)的模板、索引庫模塊中相應(yīng)的消息名、消息庫模塊中相應(yīng)的消息文件,將讀取出的消息名、消息文件載入讀取的模板中生成腳本文件。通過該系統(tǒng),可以實現(xiàn)根據(jù)測試用例文件自動生成腳本文件,免去用戶手動生成過程。
文檔編號G06F11/36GK1770148SQ20041008714
公開日2006年5月10日 申請日期2004年11月1日 優(yōu)先權(quán)日2004年11月1日
發(fā)明者詹東華 申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
班戈县| 尼木县| 盐山县| 杭锦后旗| 内丘县| 县级市| 扶风县| 彝良县| 都匀市| 婺源县| 樟树市| 长兴县| 石门县| 洛隆县| 浑源县| 扶沟县| 大新县| 广东省| 安阳县| 深水埗区| 梁平县| 桂平市| 增城市| 石林| 澄迈县| 汽车| 嵊州市| 建宁县| 沿河| 方山县| 洪江市| 延长县| 嘉鱼县| 临澧县| 沭阳县| 泽州县| 开平市| 历史| 巧家县| 巧家县| 蒙自县|