一种脚本文件自动生成系统及自动生成方法

文档序号:6434977阅读:219来源:国知局
专利名称:一种脚本文件自动生成系统及自动生成方法
技术领域
本发明是一种脚本文件自动生成系统及自动生成方法。
背景技术
抽象语法规则(Asn,Abstract Syntax Notation)是一种用来描述系统之间传递的信息格式的语言规范,被广泛用在通信协议的信息格式定义中。
Asn.1是指采用Asn编码生成的编码文档。当前的Asn.1文档地生成是人工根据Asn编码规则去编写出Asn.1文档。ANS.1文档编写完成后,用户可以利用Asn编译器将Asn.1文本编译成动态链接库(dll,dynamic linklibrary)文件,其编译成dll过程所使用的函数是系统函数。然后用户在调用消息生成程序过程中,消息生成程序调用生成的dll文件来生成消息文件。
现有的集成测试工具ITT提供了一种全手动的方式来生成测试脚本,首先由用户手动完成Asn.1文档的编写,然后,手动调用Asn编译器编译成dll文件,然后再手动调用消息生成程序生成消息,然后用户根据要测试的内容以及生成的消息,去编写出测试脚本。
由于现有的技术完全需要用户手工去完成Asn.1编码,去调用Asn编译器生成dll文件,手动调用消息生成程序去生成消息,最后再手工去生成测试脚本。这些手工的劳动,不仅需要花费大量的人力和时间,成本较高,而且在需要生成大量测试脚本时耗时较大,对于产品的开发是不利的。

发明内容
有鉴于此,本发明的主要目的在于提供一种脚本文件的自动生成系统,实现脚本文件根据用户输入的测试用例自动生成。
本发明的第二个目的在于提供一种脚本文件自动生成方法,实现脚本文件根据用户输入的测试用例的自动生成过程。
实现本发明的脚本文件自动生成系统包括模板库模块、索引库模块、消息库模块、脚本生成模块。其中模板库模块存储着用于生成脚本文件的模板文件,不同的模板文件使用不同的ID进行编号存储;索引库模块存储着所有的消息码和消息名对应关系的索引文件;消息库模块存储着所有的消息文件,消息文件描述了消息名以及对应的消息结构;脚本生成模块用于接收用户按照一定格式输入的测试用例文件,其中,测试用例文件中至少包含模板ID、消息码;脚本生成模块根据测试用例文件,读取出模板库模块中相应的模板、索引库模块中相应的消息名、消息库模块中相应的消息文件,将读取出的消息名、消息文件载入读取的模板中生成脚本文件。
其中,该系统进一步包括管理模块,用于接收用户按照一定格式输入的消息头定义文件、消息结构定义文件,生成消息文件和索引文件并分别存储到消息库模块和索引库模块中。
其中,所述管理模块包括消息头定义输入模块、消息结构定义输入模块、索引生成模块、Asn生成模块、编译模块、文本消息构造模块、消息生成模块。其中,消息头定义输入模块、消息结构定义输入模块分别用于接收用户按一定格式输入的消息头定义文件、消息结构定义文件,并分别转换为Asn.1格式的文档;索引生成模块和Asn生成模块用于接收消息头定义输入模块、消息结构定义输入模块转换后的Asn.1格式文档,并分别生成索引文件和完整的Asn.1文件,其中索引文件记录了消息码和消息名的对应关系;编译模块用于将Asn生成模块生成的Asn.1文件编译成dll文件;文本消息构造模块用于接收索引生成模块和消息结构定义输入模块的输出信息,根据所述信息生成文本消息;消息生成模块用于接收文本消息构造模块生成的文本消息,接收编译模块生成的dll文件,根据dll将所述文本消息进行解析生成消息文件。
本发明提供的脚本文件自动生成方法,预先设置模板库、索引库、消息库,其中,模板库存储着用于生成脚本文件的模板文件,不同的模板文件使用不同的ID进行编号存储;索引库存储着所有的消息码和消息名对应关系的索引文件;消息库存储着所有的消息文件,消息文件描述了消息名以及对应的消息结构;该方法还包括以下步骤
A4、接收用户按照一定格式输入的测试用例文件,其中,测试用例文件中至少包含模板ID、消息码;
B4、根据测试用例文件中的模板ID、消息码,读取出模板库模块中相应的模板、索引库模块中相应的消息名、消息库模块中相应的消息文件;
C4、将读取出的消息名、消息文件载入读取的模板中生成脚本文件。
其中,该方法进一步包括生成消息文件并存储到消息库的步骤,包括
A5、接收用户按一定格式输入的消息头定义文件、消息结构定义文件,并分别转换为Asn.1格式的文档;
B5、根据消息头定义文件、消息结构定义文件转换的Asn.1格式的文档,分别生成索引文件和完整的Asn.1文件,其中索引文件记录了消息码和消息名的对应关系;
C5、根据索引文件和消息结构定义文件转换后的Asn.1文档生成文本消息;
D5、将Asn.1文件编译成dll文件;
E5、根据dll文件将所述文本消息进行解析生成消息文件存储到消息库。
由上可以看出,本发明将人力从枯燥、繁琐的手工劳动中解脱出来,用户仅需要编写输入简单的测试用例,系统就可以生成所需的脚本文件。系统存储有模板库、消息库,因此不需要用户反复编写模板、消息文件部分,也不需要按照Asn编码格式去编写Asn.1文档。
下面举例来分析说明本发明的优点以10万行代码为例,根据常规设计需要设计3000-4000个集成测试用例,以每测试测试用例最少需要使用三个消息为例,则需要使用9000-12000条消息,以每条消息结构的结构定义包括五条,测试最终的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(人天)
使用本发明,用户仅需输入测试用例,则Asn.1的生成时间可以忽略不计,消息的生成时间可以忽略不计,脚本的生成时间可以忽略不计,则最终只需要完成的内容只是测试用例的简单写作,不需要去编写整个的脚本文件,采用该方式写出来的用例比传统的用例设计需要的时间也至少要缩短一半以上。因此,可以大大节约工作时间,提高工作效率。简化了用户的输入,不需要用户去学习懂得Asn的编写格式。
另外,本发明还提供了管理接口,根据用户按一定格式输入的消息头定义文件、消息结构定义文件自动生成Asn.1文档,以及自动生成消息文件及索引文件进行存储,便于用户对消息库和索引库的维护扩充。这个过程中,用户也不需要了解Asn的编码格式,并且消息生成过程自动实现,不需要用户的手动进行。


图1为脚本文件自动生成系统的结构图。
图2为脚本生成流程图。
图3为消息生成流程图。
具体实施例方式
本发明提供的脚本文件自动生成系统,由用户输入测试用例,然后脚本文件自动生成系统根据用于生成脚本文件的模板和前期自动生成的消息文件及相关的索引文件生成测试脚本文件。并且,脚本自动生成系统还向用户提供了管理模块,便于用户扩充新的消息文件和索引文件。
为使本发明的目的、技术方案及优点更加清楚明白,以下通过具体实施例和参照附图1,对本发明进一步详细说明。
如图1示出了脚本文件自动生成系统的结构图。该系统包括模板(Module)库模块、索引(Index)库模块、消息(Msg)库模块、脚本(script)生成模块。其中
模板库模块存储着用于生成脚本的模板,每一个模板都使用一个ID(也可称为Module Number)进行编号存储。如下示出了一个采用tcl编程语言编写的模板,该模板ID为1,该模板用来生成的脚本为接收一个信息作为请求信息,然后相应的回送接收成功响应信息或接收失败响应信息,该模板如下
#****************************************#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;   }}
索引库模块存储着所有的消息码和消息名的对应关系。消息码就是消息所对应的数字代码,例如,请求消息的代码为0x0001。由于消息码和消息名是对应的关系,因此也可以将消息码作为消息名的索引,这样可以实现在索引库模块中方便的根据索引(即消息码)查询到对应的消息名。如下示出了索引库中的部分内容
0x0001 MSG-CFG-XXXX-REQ
0x0002 MSG-CFG-XXXX-RESP
0x0003 MSG-CFG-XXXX-FAIL
消息库模块存储着所有的消息文件。消息文件是包括该消息名以及消息结构的描述,例如该消息所占字节等,因此可以认为消息库模块中的消息文件就是消息的实体。如下示出了消息库模块的部分内容
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、消息码。脚本生成模块根据测试用例文件,读取出模板库模块中相应的模板、索引库模块中相应的消息名、消息库模块中相应的消息文件,将读取出的消息名、消息文件载入读取的模板中生成脚本文件。
下面举例来详细说明脚本生成模块。用户编写的测试用例文件如下所示,包含用例号(testcase number),即本次测试用例文件的编号;生成脚本所要使用的模板ID(module_number)为1;该ID为1的模板所需要的消息对应的消息码,其中该模板需要测试用例中包含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
脚本生成模块根据用户输入的测试用例文件中的模板ID读取出模板库模块中存储的对应的模板,根据测试用例文件中的消息码,从索引库模块中检索出对应的消息名,以及根据消息码从消息库模块中检索到对应的消息文件,建立消息名和消息文件的对应关系,以及将得到的消息名、消息文件输入到所选择的模板中,按照模板来生成设定格式的脚本文件。本例中,生成的脚本文件如下
#*******************************************************************#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语言编写的模板到生成设定格式的脚本文件过程中,涉及到一种编写语言到另一种编写语言的格式转换,其转换是根据两种语言的语法规则的对应关系来实现,关于格式如何转换的部分不是本发明重点,这里不再进行描述。
相应的提供的脚本文件自动生成方法可以归纳为以下步骤,预先设置好模板库模块、索引库模块、消息库模块的内容后,还包括
步骤201接收用户按照一定格式输入的测试用例文件,其中,测试用例文件中至少包含模板ID、消息码;
步骤202根据测试用例文件中的模板ID、消息码,读取出模板库模块中相应的模板、索引库模块中相应的消息名、消息库模块中相应的消息文件;
步骤203将读取出的消息名、消息文件载入读取的模板中生成脚本文件。
可以看出,通过以上所述的脚本自动生成系统及相应的生成方法,当该系统的索引库模块、消息库模块存储着足够的信息时,仅需要用户按照格式编写测试用例文件就可以生成脚本文件。相对于背景技术来说,用户可以不去了解Asn.1文档的格式、不需要去编写Asn.1文档、免去手动生成消息文件的过程。
本发明脚本自动生成系统还向用户提供了管理模块,管理模块向用户提供了输入接口。用户可以通过管理模块来生成新的消息文件、索引文件,并存储到相应的消息库模块、索引库模块中,以实现消息库、索引库内容的扩充。这样,当消息库模块、索引库模块中不存在所需的文件时,用户可以利用该管理模块生成需要的文件。下面参见附图1,对本发明所述的管理模块进行详细的说明。
如图所示,该管理模块包括消息头定义输入模块、消息结构定义输入模块、索引生成模块、Asn生成模块、编译模块、文本消息构造模块、消息生成模块。
消息头定义输入模块、消息结构定义输入模块分别为用户提供了消息头定义文件和消息结构定义文件的输入接口(input1和input2),由用户按照设定的格式输入消息定义文件和结构定义文件。其中,消息头定义输入模块将用户输入的消息码定义头文件(input1)转换成Asn.1格式的文档;消息结构定义输入模块将用户输入的结构定义文件(input2)转换成Asn.1格式的文档。
Asn生成模块接收消息头定义输入模块、消息结构定义输入模块的输出,并将接收的信息进行整合处理,生成完整的Asn.1文档。总体来看,消息头定义输入模块、消息结构定义输入模块、Asn生成模块实现了用户输入信息的格式到Asn.1文档格式的转换,关于文档格式的转换,是根据两种语言的语法规则对应的关系来实现,关于格式如何转换的部分不是本发明重点,这里不进行详细描述,仅参考下例进行简述。
如下示出了用户输入的以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生成模块接收消息头定义输入模块、消息结构定义输入模块处理后的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"/>}***/以下为该部分的结构部分的定义/***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}
另一方面,索引生成模块接收消息头定义输入模块、消息结构定义输入模块处理后的文档,根据文档中关键字和定义的消息码的对应关系生成索引文件,以记录消息码和消息名的对应关系。前文已经示出了索引文件的内容,此处不再举例。
文本消息构造模块接收索引生成模块和消息结构定义输入模块的输出信息,根据信息生成文本消息,如下
{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文件,该编译过程通过调用系统函数完成。
消息生成模块接收文本消息构造模块生成的文本消息,接收编译模块生成的dll文件,根据dll将文本消息构造模块生成的文本消息解析为消息文件,并传送给消息库模块进行存储。其中,该消息生成模块的功能可以由creatmsg函数实现,creatmsg函数为一个系统函数,本发明只是直接调用使用该createmsg函数。由于creatmsg函数并非本发明重点,这里不对此函数进行描述。
相应的管理模块生成消息的步骤包括
步骤301接收用户按一定格式输入的消息头定义文件、消息结构定义文件,并分别转换为Asn.1格式的文档;
步骤302根据消息头定义文件、消息结构定义文件转换的Asn.1格式的文档,分别生成索引文件和完整的Asn.1文件,其中索引文件记录了消息码和消息名的对应关系;
步骤303根据索引文件和消息结构定义文件转换后的Asn.1文档生成文本消息;
步骤304将Asn.1文件编译成dll文件;
步骤305根据dll文件将所述文本消息进行解析生成消息文件存储到消息库。
可以看出,通过上述的管理模块,用户便可以输入msg.tcl文件、stru.tcl文件,由系统自动生成消息文件和索引文件,分别发送给消息库模块、索引库模块进行存储。
其中,上述索引生成模块和索引库模块可以由一个功能单元实现,消息生成模块和消息库模块可以由一个功能单元实现。
以上以应用于tcl语言环境下来自动生成脚本为例进行说明。不难理解,在实际应用中,根据用户的需要使用不同的语言环境,例如也可以是c语言环境等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1、一种脚本文件自动生成系统,其特征在于,该系统包括模板库模块、索引库模块、消息库模块、脚本生成模块,其中
模板库模块存储着用于生成脚本文件的模板文件,不同的模板文件使用不同的ID进行编号存储;
索引库模块存储着所有的消息码和消息名对应关系的索引文件;
消息库模块存储着所有的消息文件,消息文件描述了消息名以及对应的消息结构;
脚本生成模块用于接收用户按照一定格式输入的测试用例文件,其中,测试用例文件中至少包含模板ID、消息码;脚本生成模块根据测试用例文件,读取出模板库模块中相应的模板、索引库模块中相应的消息名、消息库模块中相应的消息文件,将读取出的消息名、消息文件载入读取的模板中生成脚本文件。
2、根据权利要求1所述的系统,其特征在于,该系统进一步包括管理模块,用于接收用户按照一定格式输入的消息头定义文件、消息结构定义文件,生成消息文件和索引文件并分别存储到消息库模块和索引库模块中。
3、根据权利要求2所述的系统,其特征在于,所述管理模块包括消息头定义输入模块、消息结构定义输入模块、索引生成模块、Asn生成模块、编译模块、文本消息构造模块、消息生成模块,其中,
消息头定义输入模块、消息结构定义输入模块分别用于接收用户按一定格式输入的消息头定义文件、消息结构定义文件,并分别转换为Asn.1格式的文档;
索引生成模块和Asn生成模块用于接收消息头定义输入模块、消息结构定义输入模块转换后的Asn.1格式文档,并分别生成索引文件和完整的Asn.1文件,其中索引文件记录了消息码和消息名的对应关系;
编译模块用于将Asn生成模块生成的Asn.1文件编译成dll文件;
文本消息构造模块用于接收索引生成模块和消息结构定义输入模块的输出信息,根据所述信息生成文本消息;
消息生成模块用于接收文本消息构造模块生成的文本消息,接收编译模块生成的dll文件,根据dll将所述文本消息进行解析生成消息文件。
4、一种脚本文件自动生成方法,其特征在于,预先设置模板库、索引库、消息库,其中,
模板库存储着用于生成脚本文件的模板文件,不同的模板文件使用不同的ID进行编号存储;
索引库存储着所有的消息码和消息名对应关系的索引文件;
消息库存储着所有的消息文件,消息文件描述了消息名以及对应的消息结构;该方法还包括以下步骤
A4、接收用户按照一定格式输入的测试用例文件,其中,测试用例文件中至少包含模板ID、消息码;
B4、根据测试用例文件中的模板ID、消息码,读取出模板库模块中相应的模板、索引库模块中相应的消息名、消息库模块中相应的消息文件;
C4、将读取出的消息名、消息文件载入读取的模板中生成脚本文件。
5、根据权利要求4所述的方法,其特征在于,该方法进一步包括生成消息文件并存储到消息库的步骤,包括
A5、接收用户按一定格式输入的消息头定义文件、消息结构定义文件,并分别转换为Asn.1格式的文档;
B5、根据消息头定义文件、消息结构定义文件转换的Asn.1格式的文档,分别生成索引文件和完整的Asn.1文件,其中索引文件记录了消息码和消息名的对应关系;
C5、根据索引文件和消息结构定义文件转换后的Asn.1文档生成文本消息;
D5、将Asn.1文件编译成dll文件;
E5、根据dll文件将所述文本消息进行解析生成消息文件存储到消息库。
全文摘要
一种脚本文件自动生成系统,包括模板库模块存储着用于生成脚本文件的模板文件,不同的模板文件使用不同的ID进行编号存储;索引库模块存储着所有的消息码和消息名对应关系的索引文件;消息库模块存储着所有的消息文件,消息文件描述了消息名以及对应的消息结构;脚本生成模块用于接收用户按照一定格式输入的测试用例文件,其中,测试用例文件中至少包含模板ID、消息码;脚本生成模块根据测试用例文件,读取出模板库模块中相应的模板、索引库模块中相应的消息名、消息库模块中相应的消息文件,将读取出的消息名、消息文件载入读取的模板中生成脚本文件。通过该系统,可以实现根据测试用例文件自动生成脚本文件,免去用户手动生成过程。
文档编号G06F11/36GK1770148SQ20041008714
公开日2006年5月10日 申请日期2004年11月1日 优先权日2004年11月1日
发明者詹东华 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1