一种实现测试脚本语言转换成可执行指令的方法及***
技术领域
本发明涉及通信领域,尤其涉及一种实现测试脚本语言转换成可执行指令的方法及***。
背景技术
TTCN3(Testing and Test Control Notation vesion3,测试及测试控制表示法第3版)作为一种标准化的测试描述和测试实施的测试脚本语言,已经广泛的应用于各种电信协议和互联网协议测试领域中,如可包括一致性测试、互操作测试、单元测试等。由于编解码模块是TTCN3***中重要的软件功能,因此,在进行测试***开发时,开发人员需要首先根据不同的测试平台设置相应的编解码模块,并基于设置的编解码模块对相应的被测***进行后续的开发工作。
TTCN3是一种描述性的脚本语言,不能直接用于驱动被测***,只有将TTCN3转化成可执行指令(可以是二进制的可执行指令)之后才能实现对被测***的控制;因此,在运行TTCN3脚本语言之前需要对TTCN3脚本语言进行编解码,即将TTCN3脚本语言转换成可执行指令;而在对TTCN3脚本语言进行编解码过程中所使用到的TTCN3编解码则显得尤为重要。
目前,生成TTCN3编解码的方式,主要通过开发人员手动生成,具体包括以下步骤:
步骤1、开发人员针对当前TTCN3测试脚本,梳理出该TTCN3测试脚本所需要的所有测试原语。
步骤2、开发人员针对梳理出的每一条测试原语,分析该测试原语在TTCN3测试脚本中所采用的数据结构,并结合使用的编译工具,确定出对该条测试原语进行编解码所需要使用的API(Application Programming Interface,应用程序编程接口)函数。
步骤3、开发人员确定出每条测试原语在当前测试***中所对应的控制接口(控制接口是指编解码对应的控制码流)。
步骤4、开发人员针对每条测试原语,采用编译工具根据该条测试原语对应的控制接口、数据结构以及API函数对相应软件程序进行编译,生成与该条测试原语相对应的TTCN3编解码。
采用现有的生成TTCN3编解码的方式,存在以下技术缺陷:
(1)能否成功生成TTCN3编解码较大的依赖于开发人员的自身素质,如需要开发人员不仅了解TTCN3测试脚本语法,还需要了解API函数对应的编程语言等。
(2)梳理、分析测试原语与当前的测试***的规模有紧密联系,测试***越复杂,需要梳理、分析的测试原语数量越多,工作量越大、越繁琐;在实际的开发工程中,往往可能会由于前期梳理、分析工作的遗漏或错误,将给后期的开发工作带来较大的修正、增补等工作。
(3)当在测试***中增加新的测试原语时,还需要技术人员对新增加的测试原语进行上述(1)和(2)的工作,当新增加的测试原语较多时,通过该种人工生成编解码的方式工作量大、效率低,从整体上来说不利于对测试***的开发、升级等。
发明内容
本发明实施例提供一种实现测试脚本语言转换成可执行指令的方法及***,以提高将测试脚本语言转换成可执行指令的速度、效率和成功率。
一种实现测试脚本语言转换成可执行指令的方法,包括:
接收携带有待转换测试脚本的转换请求;
从所述待转换测试脚本中确定出待转换控制原语;
从存储的控制原语与编解码的对应关系中,确定出与所述待转换控制原语对应的编解码;
采用确定出的编解码对所述待转换控制原语进行编码,形成相应的可执行指令。
较佳地,所述对应关系为当前运行所述待转换测试脚本的测试***所对应的对应关系。
较佳地,上述方法,在接收到所述转换请求之前,还可包括步骤:
从所有的测试脚本源文件中提取出控制原语;
针对每个测试***,从提取出的控制原语中选取与所述测试***相对应的控制原语;生成分别与选取的控制原语相对应的编解码,并建立选取的控制原语与相应的编解码的对应关系并存储。
较佳地,上述方法中,从测试脚本源文件中提取控制原语,可包括:从所述测试脚本源文件中查找控制输出端口对应的结构定义符;将查找到的结构定义符对应的原语确定为需要提取的控制原语。
较佳地,上述方法中,生成分别与选取的控制原语相对应的编解码,可包括步骤:针对每条选取的控制原语,根据选取的控制原语对应的控制输出端口的结构定义符分析出所述控制原语对应的数据结构,并确定出所述数据结构中每个数据成员对应的应用程序编程API接口;采用所述测试***对应的编译工具对所述数据结构中的数据成员对应的API接口进行编译,得到的编译结果即为选取的控制原语所对应的编解码。
较佳地,所述待转换测试脚本的语言为测试及测试控制表示法第3版TTCN3语言。
基于前述方法,本发明实施例还提供一种实现测试脚本语言转换成可执行指令的***,该***包括:
接收装置,用于接收携带有待转换测试脚本的转换请求;
控制原语确定装置,用于从所述待转换测试脚本中确定出待转换控制原语;
编解码确定装置,用于从存储的控制原语与编解码的对应关系中,确定出与所述待转换控制原语对应的编解码;
转换装置,用于采用所述编解码确定装置确定出的编解码对所述控制原语确定单元确定出的控制原语进行编码,形成相应的可执行指令。
较佳地,所述对应关系为当前运行所述待转换测试脚本的测试***所对应的对应关系。
较佳地,上述***还可包括:
编解码生成装置,用于在所述接收装置接收到所述转换请求之前,从所有的测试脚本源文件中提取出控制原语;针对每个测试***,从提取出的控制原语中选取与所述测试***相对应的控制原语,生成分别与选取的控制原语相对应的编解码,并建立选取的控制原语与相应的编解码的对应关系并存储。
较佳地,可将上述编码生成装置划分为:
控制原语查找单元,用于从所有的测试脚本源文件中提取出控制原语;
控制原语裁剪单元,用于针对每个测试***,从所述控制原语查找单元提取出的控制原语中选取与所述测试***相对应的控制原语;
编解码生成单元,用于针对每个测试***,生成分别与所述测试***对应的选取控制原语相对应的编解码;
存储单元,用于建立选取的控制原语与相应的编解码的对应关系,并存储所述对应关系。
较佳地,所述控制原语查找单元,具体用于:从所述测试脚本源文件中查找控制输出端口对应的结构定义符;将查找到的结构定义符对应的原语确定为需要提取的控制原语。
较佳地,所述编解码生成单元,具体用于:
针对每条选取的控制原语,根据选取的控制原语对应的控制输出端口的结构定义符分析出所述控制原语对应的数据结构,并确定出所述数据结构中每个数据成员对应的应用程序编程API接口;
采用所述测试***对应的编译工具对所述数据结构中的数据成员对应的API接口进行编译,得到的编译结果即为选取的控制原语所对应的编解码。
本发明实施例还提供一种应用于测试脚本语言转换过程中的编解码生成装置,该编解码生成装置可包括:
控制原语查找单元,用于从所有的测试脚本源文件中提取出控制原语;
控制原语裁剪单元,用于针对每个测试***,从所述控制原语查找单元提取出的控制原语中选取与所述测试***相对应的控制原语;
编解码生成单元,用于针对每个测试***,生成分别与所述测试***对应的选取控制原语相对应的编解码;
存储单元,用于建立选取的控制原语与相应的编解码的对应关系,并存储所述对应关系。
较佳地,所述控制原语查找单元,具体用于:从所述测试脚本源文件中查找控制输出端口对应的结构定义符;将查找到的结构定义符对应的原语确定为需要提取的控制原语。
较佳地,所述编解码生成单元,具体用于:
针对每条选取的控制原语,根据选取的控制原语对应的控制输出端口的结构定义符分析出所述控制原语对应的数据结构,并确定出所述数据结构中每个数据成员对应的应用程序编程API接口;
采用所述测试***对应的编译工具对所述数据结构中的数据成员对应的API接口进行编译,得到的编译结果即为选取的控制原语所对应的编解码。
本发明实施例中,在接收到携带有待转换测试脚本的转换请求时,从该待转换测试脚本中确定出待转换控制原语,并从存储的控制原语与编解码的对应关系中,确定出与所述待转换控制原语对应的编解码,然后再采用确定出的编解码对所述待转换控制原语进行编码,形成相应的可执行指令。采用本发明技术方案,在对待转换测试脚本中的控制原语进行编码时,所采用的编解码可直接从预存的控制原语与编解码的对应关系中获取,相对于现有技术中针对每条控制原语需要通过技术人员人为的进行数据结构分析、确定数据结构中各数据成员对应的API接口、采用相应的编译工具对各数据成员对应的API接口进行编译等操作得到与该控制原语对应的编解码而言,本发明技术方案从一定程度上提高了获取控制原语对应的编解码的速度,从而提高了将控制原语转换成可执行指令的速度,继而从整体上提高了将测试脚本语言转化成可执行指令的速度和效率,在控制原语较多的情况下显得尤为明显;另外,本发明技术方案不需要依赖于技术人员的技术程度,因此,在一定程度上降低了人为因素而导致将控制原语转换成可执行指令失败的问题,以提高将控制原语转换成可执行指令的成功率,人为因素如分析控制原语对应的数据结构不准确、确定数据结构中各数据成员的API接口不准确、编译错误等。
附图说明
图1为本发明实施例中实现测试脚本语言转换成可执行指令的方法流程图;
图2为本发明实施例中预设控制原语与编解码的对应关系的方法流程图;
图3为本发明实施例中从所有测试脚本源文件中查找控制原语的方法流程图;
图4为本发明实施例中实现测试脚本语言转换成可执行指令的***的结构示意图之一;
图5为本发明实施例中实现测试脚本语言转换成可执行指令的***的结构示意图之二;
图6为本发明实施例中编解码生成装置的结构示意图。
具体实施方式
针对现有技术存在的技术问题,本发明实施例提供一种实现测试脚本语言转换成可执行指令的方法及***,以提高将测试脚本语言转换成可执行指令的速度、效率和成功率。实现测试脚本语言转换成可执行指令的方法,包括:接收携带有待转换测试脚本的转换请求;从所述待转换测试脚本中确定出待转换控制原语;从存储的控制原语与编解码的对应关系中,确定出与所述待转换控制原语对应的编解码;采用确定出的编解码对所述待转换控制原语进行编码,形成相应的可执行指令。采用本发明技术方案,在对待转换测试脚本中的控制原语进行编码时,所采用的编解码可直接从预存的控制原语与编解码的对应关系中获取,相对于现有技术中针对每条控制原语需要通过技术人员人为的进行数据结构分析、确定数据结构中各数据成员对应的API接口、采用相应的编译工具对各数据成员对应的API接口进行编译等操作得到与该控制原语对应的编解码而言,本发明技术方案从一定程度上提高了获取控制原语对应的编解码的速度,从而提高了将控制原语转换成可执行指令的速度,继而从整体上提高了将测试脚本语言转化成可执行指令的速度和效率,在控制原语较多的情况下显得尤为明显;另外,本发明技术方案不需要依赖于技术人员的技术程度,因此,在一定程度上降低了人为因素而导致将控制原语转换成可执行指令失败的问题,以提高将控制原语转换成可执行指令的成功率,人为因素如分析控制原语对应的数据结构不准确、确定数据结构中各数据成员的API接口不准确、编译错误等。
下面结合说明书附图对本发明技术方案进行详细的描述。
参见图1,为本发明实施例中实现测试脚本语言转换成可执行指令的方法流程图,该方法可包括步骤:
步骤101、接收携带有待转换测试脚本的转换请求。
步骤102、从所述待转换测试脚本中确定出待转换控制原语。
步骤103、从存储的控制原语与编解码的对应关系中,确定出与所述待转换控制原语对应的编解码。
步骤104、采用确定出的编解码对所述待转换控制原语进行编码,形成相应的可执行指令。
较佳地,本发明实施例中,可预先针对所有的测试脚本源文件,从该测试脚本源文件中提取出控制原语(从各测试脚本源文件中提取出的控制原语可构成控制原语集合),并针对提取出的控制原语生成相对应的编解码,并建立各控制原语与编解码之间的对应关系并存储,以便为后续对待转换测试脚本中的控制原语进行编码时直接获取控制原语对应的编解码。优选地,由于同一个测试脚本可以应用于不同的测试***,而不同的测试***可能需要的控制原语和使用的编译工具不同,因此,为适应不同的测试***,以便在测试***中运行还测试脚本能够准确的控制该测试***,本发明实施例中,针对每个测试***,可从控制原语集合中选取与所述测试***相对应的控制原语,并生成分别与选取的控制原语相对应的编解码,并建立选取的控制原语与相应的编解码的对应关系,即每个测试***对应于一个控制原语与相应编解码的对应关系;即在测试脚本在当前测试***中运行时,对该测试脚本中的控制原语进行编码的编解码是根据该当前测试***对应的控制原语与编解码的对应关系确定出的,从而使得对测试脚本中的控制原语进行编码得到的可执行指令更符合当前测试***,运行该可执行指令能够更加准确的对当前测试***进行控制。基于上述内容,本发明实施例中,在上述方法流程之前还包括控制源码与相应编解码的对应关系的预设流程,该预设流程如图2所示,可包括步骤:
步骤201、从所有的测试脚本源文件中提取出控制原语。
步骤202、针对每个测试***,从步骤201提取出的控制原语中选取与所述测试***相对应的控制原语。
步骤203、针对步骤202中涉及到的测试***,为该测试***对应的每条控制原语生成对应的编解码;并建立该测试***对应的控制原语与其相应编解码的对应关系。
较佳地,本发明实施例中,为实现准确的对当前测试***进行控制,上述方法流程中的步骤103中使用的对应关系是与当前测试***相对应的对应关系。
较佳地,在测试***中,可能会有很多的控制原语,但并不是测试脚本中所有的原语都需要编码,开发的编解码仅需要针对测试脚本中控制输出端口的结构定义符涉及的原语进行编码即可;因此,上述步骤201中,具体的实现方式如下:针对每个测试脚本源文件,从该测试脚本源文件中查找控制输出端口对应的结构定义符;将查找到的结构定义符对应的原语确定为需要从该测试脚本源文件中提取出的控制原语。从所有的测试脚本源文件中提取控制原语的方式,具体的流程可如图3所示。本发明实施例中的待转换测试脚本的语言可以是TTCN3或TTCN2,由于待转换测试脚本具有自身的特定语法(即TTCN语法),比如:如何定义结构、如何定义Union、如何定义Port(即前述控制输出端口);因此,上述方法流程的步骤103中,可通过查找与词法分析,从所述待转换测试脚本中确定出待转换控制原语。词法分析主要是根据TTCN语法在测试脚本源文件中查找对应的定义并记录,如需要查找所有的Port,则在源文件中查找“Type port port名称message{}”的字符串(即前述的结构定义符)即可。
较佳地,上述方法流程中的步骤203中,针对每个测试***对应的每条控制原语,生成与该控制原语对应的编解码,包括:
针对每条控制原语,根据该控制原语对应的控制输出端口的结构定义符分析出所述控制原语对应的数据结构,并确定出所述数据结构中每个数据成员对应的应用程序编程API接口;采用所述测试***对应的编译工具对所述数据结构中的数据成员对应的API接口进行编译,得到的编译结果即为选取的控制原语所对应的编解码。
参见图3,为本发明实施例中从所有的测试脚本源文件中提取控制原语的方法流程图,该方法包括:
步骤301、从当前测试脚本源文件中查找控制输出端口对应的结构定义符,该当前测试脚本源文件为当前没有进行控制输出端口的结构定义符查找操作的脚本测试源文件中的其中一个。
步骤302、记录从该当前测试脚本源文件中查找到的控制输出端口的结构定义符。
步骤303、判断是否已经对所有的测试脚本文件进行了控制输出端口结构定义符的查找,若是则执行步骤304,否则对下一个未进行控制输出端口的结构定义符查找操作的脚本测试源文件执行步骤301。
步骤304、从步骤302中记录的控制输出端口的结构定义符中选取待分析的结构定义符,并对该待分析的结构定义符对应的控制原语进行分析,得到与该控制原语涉及到的数据结构,若该数据结构包含子结构的,还得到该数据结构的子结构,所述当前控制输出端口为步骤302中记录中当前还没有进行控制原语分析的控制输出端口中的其中一个。
步骤305、记录步骤304对当前控制输出端口的结构定义符对应的控制原语进行分析得到的对应的数据结构及其子结构。
步骤306、判断是否对步骤302记录的所有控制输出端口的结构定义符对应的控制原语进行了分析,若是则执行步骤307,否则对下一个未进行控制原语分析的控制输出端口的结构定义符执行步骤304。
步骤307、结束流程。
较佳地,为了更进一步的减少冗余信息,确保控制测试***的精准性,以减少测试***的传输负荷,上述步骤202中,选取与测试***相对应的控制原语,具体如下:根据测试***所要实现的功能,根据选取用于实现各功能对应的控制原语;将各控制原语转换成可执行指令,并设定各可执行指令所需要的比特数。
基于前述方法流程,本发明实施例还提供一种实现测试脚本语言转换成可执行指令的***,该***的结构可如图4所示,包括:
接收装置41,用于接收携带有待转换测试脚本的转换请求;
控制原语确定装置42,用于从所述待转换测试脚本中确定出待转换控制原语;
编解码确定装置43,用于从存储的控制原语与编解码的对应关系中,确定出与所述待转换控制原语对应的编解码;
转换装置44,用于采用编解码确定装置43确定出的编解码对控制原语确定单元42确定出的控制原语进行编码,形成相应的可执行指令。
较佳地,所述对应关系为当前运行所述待转换测试脚本的测试***所对应的对应关系。
较佳地,上述***还可包括编解码生成装置45,可如图5所示:
编解码生成装置45,用于在接收装置41接收到所述转换请求之前,从所有的测试脚本源文件中提取出控制原语;针对每个测试***,从提取出的控制原语中选取与所述测试***相对应的控制原语,生成分别与选取的控制原语相对应的编解码,并建立选取的控制原语与相应的编解码的对应关系并存储。
较佳地,本发明实施例还可对编解码生成装置45进行划分,如图6所示划分为控制原语查找单元451、控制原语裁剪单元452、编解码生成单元453、存储单元454,其中:
控制原语查找单元451,用于从所有的测试脚本源文件中提取出控制原语;
控制原语裁剪单元452,用于针对每个测试***,从所述控制原语查找单元提取出的控制原语中选取与所述测试***相对应的控制原语;
编解码生成单元453,用于针对每个测试***,生成分别与所述测试***对应的选取控制原语相对应的编解码;
存储单元454,用于建立选取的控制原语与相应的编解码的对应关系,并存储所述对应关系。
较佳地,控制原语查找单元451,具体用于:从所述测试脚本源文件中查找控制输出端口对应的结构定义符;将查找到的结构定义符对应的原语确定为需要提取的控制原语。
较佳地,编解码生成单元453,具体用于:针对每条选取的控制原语,根据选取的控制原语对应的控制输出端口的结构定义符分析出所述控制原语对应的数据结构,并确定出所述数据结构中每个数据成员对应的应用程序编程API接口;采用所述测试***对应的编译工具对所述数据结构中的数据成员对应的API接口进行编译,得到的编译结果即为选取的控制原语所对应的编解码。
本发明实施例还提供一种应用于测试脚本语言转换过程中的编解码生成装置,该编解码生成装置的结构如图6所示,包括控制原语查找单元451、控制原语裁剪单元452、编解码生成单元453、存储单元454,各单元的功能如前所述,在此不再赘述。
本发明实施例中,一方面,在对待转换测试脚本中的控制原语进行编码时,所采用的编解码可直接从预存的控制原语与编解码的对应关系中获取,相对于现有技术中针对每条控制原语需要通过技术人员人为的进行数据结构分析、确定数据结构中各数据成员对应的API接口、采用相应的编译工具对各数据成员对应的API接口进行编译等操作得到与该控制原语对应的编解码而言,本发明技术方案从一定程度上提高了获取控制原语对应的编解码的速度,从而提高了将控制原语转换成可执行指令的速度,继而从整体上提高了将测试脚本语言转化成可执行指令的速度和效率,在控制原语较多的情况下显得尤为明显;另外,本发明技术方案不需要依赖于技术人员的技术程度,因此,在一定程度上降低了人为因素而导致将控制原语转换成可执行指令失败的问题,以提高将控制原语转换成可执行指令的成功率,人为因素如分析控制原语对应的数据结构不准确、确定数据结构中各数据成员的API接口不准确、编译错误等;另一方面,在预先设置控制原语与编解码的对应关系时,针对不同的测试***设置相应的对应关系,即在测试脚本在当前测试***中运行时,对该测试脚本中的控制原语进行编码的编解码是根据该当前测试***对应的控制原语与编解码的对应关系确定出的,从而使得对测试脚本中的控制原语进行编码得到的可执行指令更符合当前测试***,运行该可执行指令能够更加准确的对当前测试***进行控制;再一方面,在针对每个测试***预设控制原语与编解码的对应关系时,是对选取出的与该测试***对应的控制原语生成相应的编解码并存储对应关系,因此不需要对测试***不对应的控制原语生成相应的编解码操作,因此,不仅提高了编解码生成速度,而且还更进一步的减少冗余信息,以减少测试***的传输负荷。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若对本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。