CN100361127C - 一种脚本文件自动生成系统及自动生成方法 - Google Patents

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

Info

Publication number
CN100361127C
CN100361127C CNB2004100871456A CN200410087145A CN100361127C CN 100361127 C CN100361127 C CN 100361127C CN B2004100871456 A CNB2004100871456 A CN B2004100871456A CN 200410087145 A CN200410087145 A CN 200410087145A CN 100361127 C CN100361127 C CN 100361127C
Authority
CN
China
Prior art keywords
message
file
module
template
asn
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB2004100871456A
Other languages
English (en)
Other versions
CN1770148A (zh
Inventor
詹东华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CNB2004100871456A priority Critical patent/CN100361127C/zh
Publication of CN1770148A publication Critical patent/CN1770148A/zh
Application granted granted Critical
Publication of CN100361127C publication Critical patent/CN100361127C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

一种脚本文件自动生成系统,包括:模板库模块存储着用于生成脚本文件的模板文件,不同的模板文件使用不同的ID进行编号存储;索引库模块存储着所有的消息码和消息名对应关系的索引文件;消息库模块存储着所有的消息文件,消息文件描述了消息名以及对应的消息结构;脚本生成模块用于接收用户按照一定格式输入的测试用例文件,其中,测试用例文件中至少包含模板ID、消息码;脚本生成模块根据测试用例文件,读取出模板库模块中相应的模板、索引库模块中相应的消息名、消息库模块中相应的消息文件,将读取出的消息名、消息文件载入读取的模板中生成脚本文件。通过该系统,可以实现根据测试用例文件自动生成脚本文件,免去用户手动生成过程。

Description

一种脚本文件自动生成系统及自动生成方法
技术领域
本发明是一种脚本文件自动生成系统及自动生成方法。
背景技术
抽象语法规则(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、消息码;脚本生成模块根据测试用例文件中的模板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  Module1
#****************************************
source CommFile Define
set sendercpuid    $SENDID
set senderpid      0x$SENDPID
set receivercpuId  $RECVID
set receiverpid    0x$RECVPID
statemachine{
      test_init{
           set channel[opench TestChannel]
           if{$channel==-1}{
             puts″open channel fail″
             goto testend
            }
            #RECVA<->BMSG
            testconfig $channel NodebMsg-recv $RECVID$RECVPID
$SENDID$SENDPID
          #LOAD REQ/RESP/FAILMSG 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
      #SET REQ MSG IE,Here NEED ADD VALUE UNDER REQUIRMENT
      SET_MSG_IE_FLAG_HEAD
  }
  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-saveadmsg_received\
       $channel  RR_RPID_SS_SPID_RESP  {puts″SUCCESS TO
  RECVRESP MSG″;goto B_A_RESP}\
       $channel  RR_RPID_SS_SPID_FAIL  {puts″SUCCESS TO
  RECVFAIL 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 RECVB->AFAIL MSG!″
      goto testend
  }
  TIMEOUT {
      puts″SORRY,RECVMSG TIMEOUT!″
      goto testend
  }
  testend{
         set CloseFlag [closech$channel]
         if{$CloseFlag==-1}{puts″close channel fail″}
             goto end;
  }
}
索引库模块存储着所有的消息码和消息名的对应关系。消息码就是消息所对应的数字代码,例如,请求消息的代码为0x0001。由于消息码和消息名是对应的关系,因此也可以将消息码作为消息名的索引,这样可以实现在索引库模块中方便的根据索引(即消息码)查询到对应的消息名。如下示出了索引库中的部分内容:
0x0001  MSG-CFG-XXXXX-REQ
0x0002  MSG-CFG-XXXX-RESP
0x0003  MSG-CFG-XXXX-FAIL
消息库模块存储着所有的消息文件。消息文件是包括该消息名以及消息结构的描述,例如该消息所占字节等,因此可以认为消息库模块中的消息文件就是消息的实体。如下示出了消息库模块的部分内容:
som-SH-NBOM-CFG-XXXX-REQ     <TV,T|LEN-16>  [0x0001]
som-NBOM-SH-CFG-XXXX-RESP    <TV,T|LEN-16>  [0x0002]
som-NBOM-SH-CFG-XXXX-FAIL    <TV,T|LEN-16>  [0x0003]
脚本生成模块向用户提供了输入接口(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  Module1
#Date:    Script Was built automatic.
#*******************************************************************
source CommFileDefine
set sendercpuid     $SENDID
set senderpid       0x$SENDPID
set receivercpuId   $RECVID
set receiverpid     0x$RECVPID
set TransactionID    0
setHandle             0
statemachine {
      test_init{
           set channel[openchTestChannel]
           if{$channel==-1}{
             puts″open channel fail″
             goto testend
            }
            #RECVA<->BMSG
            testconfig$channelNodebMsg-recv$REC VID$REC VPID
 $SENDID$SENDPID
            #LOAD REQ/RESP/FAIL MSG FILE
            loadmsg-msgfileA_REQ  $msgdir/MSG--CFG-XXXX-REQ.msg
            loadmsg-msgfileRR_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
    #SETREQ MSG IE,Here NEEDADD VALUE UNDER REQUIRMENT
    setie-tree SS SPID_RR_RPID_REQ msg-header sendercpuid
    setie-tree SS_SPID_RR RPID_REQ msg-header senderpid
        setie-tree SS_SPID_RR_RPID_REQ    msg-headerreceivercpuid
        setie-tree SS_SPID_RR_RPID_REQ    msg-header receiverpid
        setie-tree SS_SPID_RR_RPID_REQ    struMsg struMsgChoice
som-SH-NBOM-CFG-XXXX-REQ dwTransactionId
        setie-tree SS_SPID_RR_RPID_REQ struMsg struMsgChoice
som-SH-NBOM-CFG-XXXX-REQwUserId
        setie-tree SS_SPID_RR_RPID_REQ  struMsg struMsgChoice
som-SH-NBOM-CFG-XXXX-REQ wHandle
        setie-tree SS_SPID_RR_RPID_REQ  struMsg struMsgChoice
som-SH-NBOM-CFG-XXXX-REQ bXXXXCabinetNo
         setie-tree SS_SPID_RR_RPID_REQ  struMsg struMsgChoice
som-SH-NBOM-CFG-XXXX-REQ bXXXXFrameNo
        setie-tree SS_SPID_RR_RPID_REQ  struMsgstruMsgChoice
som-SH-NBOM-CFG-XXXX-REQbXXXXSlotId
        setie-tree SS_SPID_RR_RPID_REQ  struMsg struMsgChoice
som-SH-NBOM-CFG-XXXX-REQbSwitchStatus
}
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 TO
RECVRESP MSG″;gotoB_A_RESP}\
         $channel  RR_RPID_SS_SPID_FAIL  {puts″SUCCESS TO
RECVFAIL MSG″;goto B_A_FAIL}\
         -timeout  6000{goto TIMEOUT}
       }
     B_A_RESP{
         puts″SUCCESS TO RECV B->ARESP MSG!″
         goto testend
       }
       B_A_FAIL{
           puts″FAILUREFOR RECVB->AFAIL MSG!″
      goto testend
  }
  TIMEOUT{
      puts″SORRY,RECVMSG 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    0x0001
define ID_NBOM_SH_CFG XXX_SWITCH_RESP    0x0002
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 wMsgType;            /*消息号*/
    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格式文件:
ROOT:NodebMsg.RROOT-MSG
PROTOCOL:NodebMsg12
ENDIAN:BIG
BOUNDARY:ALIGN
THREAD: MULTI
NodebMsg DEFINITIONS::=
BEGIN
************************************************************
*                   RootMessage                           *
************************************************************
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-STR U::=<TV>CHOICE
{
  som-SH-NBOM-CFG-XXXX-REQ      <TV, T|LEN-16> [0x0001]
SOM-SH-NBOM-CFG-XXXX-REQ,
  som-NBOM-SH-CFG-XXXX-RESP    <TV,T|LEN-16>   [0x0002]
SOM-SH-NBOM-CFG-XXXX-RESP,
  som-NBOM-SHCFG-XXXX-FAIL    <TV,T|LEN-16>     [0x0003]
SOM-SH-NBOM-CFG-XXXX-FAIL
}
***/以下为该部分的结构部分的定义/***
SOM-SH-NBOM-CFG-XXXX-REQ::=<V>SEQUENCE
{
    dw TransactionId    U32,
    wUserId             U16,
    wHandle             U16,
    bXXXXCabinetNo       U8,
    bXXXXFrameNo         U8,
    bXXXXSlotId         U8,
    bSwitchStatus      U8
}
SOM-SH-NBOM-CFG-XXXX-RESP::=<V>SEQUENCE
{
    dw TransactionId    U32,
    wUserId             U16,
    wHandole            U16,
}
SOM-SH-NBOM-CFG-XXXX-FAIL::=<V>SEQUENCE
{
    dw TransactionId    U32,
    wUserId             U16,
    wHandle             U16
}
另一方面,索引生成模块接收消息头定义输入模块、消息结构定义输入模块处理后的文档,根据文档中关键字和定义的消息码的对应关系生成索引文件,以记录消息码和消息名的对应关系。前文已经示出了索引文件的内容,此处不再举例。
文本消息构造模块接收索引生成模块和消息结构定义输入模块的输出信息,根据信息生成文本消息,如下:
{
msg-header
{
  sendercpuid 0,
  senderpid 0,
  receivercpuid 0,
  receiverpid 0
},
struMsg
  {
    struMsgChoice som-SH-NBOM-CFG-XXXX-REQ:
         {
            dwTransactionId0,
            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语言环境等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (5)

1、一种脚本文件自动生成系统,其特征在于,该系统包括:模板库模块、索引库模块、消息库模块、脚本生成模块,其中:
模板库模块存储着用于生成脚本文件的模板文件,不同的模板文件使用不同的ID进行编号存储;
索引库模块存储着所有的消息码和消息名对应关系的索引文件;
消息库模块存储着所有的消息文件,消息文件描述了消息名以及对应的消息结构;
脚本生成模块用于接收用户按照一定格式输入的测试用例文件,其中,测试用例文件中至少包含模板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文件将所述文本消息进行解析生成消息文件存储到消息库。
CNB2004100871456A 2004-11-01 2004-11-01 一种脚本文件自动生成系统及自动生成方法 Expired - Fee Related CN100361127C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2004100871456A CN100361127C (zh) 2004-11-01 2004-11-01 一种脚本文件自动生成系统及自动生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2004100871456A CN100361127C (zh) 2004-11-01 2004-11-01 一种脚本文件自动生成系统及自动生成方法

Publications (2)

Publication Number Publication Date
CN1770148A CN1770148A (zh) 2006-05-10
CN100361127C true CN100361127C (zh) 2008-01-09

Family

ID=36751453

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100871456A Expired - Fee Related CN100361127C (zh) 2004-11-01 2004-11-01 一种脚本文件自动生成系统及自动生成方法

Country Status (1)

Country Link
CN (1) CN100361127C (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101221530B (zh) * 2008-01-22 2010-06-16 中兴通讯股份有限公司 一种测试用例自动导入方法
CN101782868A (zh) 2009-01-21 2010-07-21 国际商业机器公司 一种用于对本地方法调用进行性能测试的方法和装置
CN101526919B (zh) * 2009-04-29 2011-12-28 福建星网锐捷网络有限公司 生成脚本文件对Web应用软件进行测试的方法及装置
CA2713247C (en) * 2009-08-31 2015-06-16 Accenture Global Services Gmbh Integration environment generator
CN102446090B (zh) * 2010-10-09 2014-01-29 金蝶软件(中国)有限公司 一种测试脚本的自动生成方法和装置
CN102521133A (zh) * 2011-12-15 2012-06-27 盛科网络(苏州)有限公司 基于tcl的白盒测试自动化方法及系统
CN103425574B (zh) * 2012-05-25 2018-02-23 腾讯科技(深圳)有限公司 一种测试应用程序的方法及装置
CN103236959A (zh) * 2013-05-09 2013-08-07 中国银行股份有限公司 用于测试业务处理模块的测试系统和方法
CN104252413B (zh) * 2013-06-27 2018-06-05 阿里巴巴集团控股有限公司 一种自动化脚本生成方法、装置及系统
CN107797917B (zh) * 2016-12-28 2020-04-17 平安科技(深圳)有限公司 性能测试脚本生成方法及装置
CN107688593A (zh) * 2017-04-13 2018-02-13 平安科技(深圳)有限公司 脚本文件生成方法和装置
CN107977206B (zh) * 2017-11-14 2020-11-27 北京思特奇信息技术股份有限公司 一种批量业务数据文件处理方法及装置
CN111459800B (zh) * 2020-03-04 2022-07-08 福建省农村信用社联合社 一种业务系统可用性验证方法、装置、设备和介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6424978B1 (en) * 1997-12-05 2002-07-23 Siemens Corporate Research, Inc. Formatting card-based hypermedia documents by automatic scripting
CN1520573A (zh) * 2001-06-25 2004-08-11 ������������ʽ���� 内容配送方法、脚本数据、记录介质及脚本数据产生方法
CN1521994A (zh) * 2003-02-14 2004-08-18 华为技术有限公司 实现智能业务自动测试的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6424978B1 (en) * 1997-12-05 2002-07-23 Siemens Corporate Research, Inc. Formatting card-based hypermedia documents by automatic scripting
CN1520573A (zh) * 2001-06-25 2004-08-11 ������������ʽ���� 内容配送方法、脚本数据、记录介质及脚本数据产生方法
CN1521994A (zh) * 2003-02-14 2004-08-18 华为技术有限公司 实现智能业务自动测试的方法

Also Published As

Publication number Publication date
CN1770148A (zh) 2006-05-10

Similar Documents

Publication Publication Date Title
CN100361127C (zh) 一种脚本文件自动生成系统及自动生成方法
CN101841515B (zh) 可变目标的协议数据单元编解码代码自动生成的实现方法
CN102929680B (zh) 一种将TTCN-3脚本转换为Java源代码的方法,装置和系统
US20200359094A1 (en) Screen parameter configuration system
CN111104317A (zh) 一种实现测试用例高效编辑和执行管理的方法
CN112860256B (zh) 一种Linux内核设备树的可视化配置系统和方法
CN102289375A (zh) 代码生成方法及系统
CN110673856A (zh) 一种数据处理方法、装置及机器可读存储介质
CN111177074A (zh) 适用testlink的xml转excel方法及系统
CN103336706B (zh) 将伪代码转换为编程语言的系统和方法
CN101754155B (zh) 话单格式转换方法和装置以及话单处理方法和系统
CN112328257A (zh) 代码转换方法及装置
CN102486731B (zh) 增强软件的软件调用栈的可视化的方法、设备和系统
CN110839022A (zh) 一种基于xml语言的车载控制软件通信协议解析方法
CN1115628C (zh) 一种软件模拟测试方法
KR20190088112A (ko) 신재생에너지의 발전량 데이터를 모니터링하는 메타 모델 기반 프로토콜의 저용량 전송을 위한 데이터 변형 방법 및 신재생에너지의 발전량 데이터를 모니터링하기 위한 메타 모델 기반 프로토콜의 저용량 전송을 위한 데이터 전송 시스템
CN114115832A (zh) 一种物联网嵌入式设备与云平台通信协议实现方法
CN101335960B (zh) 一种实现手机自动测试的方法和系统
CN114116900A (zh) 一种基于mdd模型的高效交易系统及开发方法
CN101141438B (zh) 消息数据单元的分析方法
CN110543371A (zh) 一种远程调用接口的方法、装置、电子设备和存储介质
CN101751321B (zh) 一种动态可视化查看变量的实现方法及系统
JPH1065762A (ja) 通信ソフトウェアの自動試験シミュレータ及びその自動試験方法
CN117874393B (zh) 通过xml文件构建sca模型工程的方法和系统
CN115827565A (zh) 一种动态类型数据传输、保存、应用的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20080109

Termination date: 20171101

CF01 Termination of patent right due to non-payment of annual fee