CN1900905A - 测试描述语言的实现方法及其装置 - Google Patents
测试描述语言的实现方法及其装置 Download PDFInfo
- Publication number
- CN1900905A CN1900905A CN 200510086185 CN200510086185A CN1900905A CN 1900905 A CN1900905 A CN 1900905A CN 200510086185 CN200510086185 CN 200510086185 CN 200510086185 A CN200510086185 A CN 200510086185A CN 1900905 A CN1900905 A CN 1900905A
- Authority
- CN
- China
- Prior art keywords
- test
- test suite
- virtual machine
- debugging
- soluble
- 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.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明涉及系统测试技术,公开了一种测试描述语言的实现方法及其装置,使得测试描述语言能够高效实现,与平台无关,测试用户使用方便,测试开发效率高。本发明中,通过抽象测试套到可解释测试套的自动转换并在虚拟机上解释运行的方法,高效实现测试描述语言的抽象测试套;在虚拟机中设置组件调度模块和测试事件管理模块,实现测试描述语言特有的并行测试系统建立及仿真、测试事件的检测和处理;通过抽象测试套和可解释测试套之间的映射关系实现测试描述语言级别的调试功能;通过数据定义与行为定义的精确二进制描述,实现简单、安全、高效的可解释测试套规范。
Description
技术领域
本发明涉及系统测试技术,特别涉及测试描述语言的实现方法和装置。
背景技术
系统测试在电子、通信及控制系统的设计及维护过程中都是必不可少的也是非常关键的。为了方便系统测试,业界统一使用测试描述语言来描述测试操作过程。由于系统应用层的越来越复杂,人们开始非常重视测试,进而公司迫切需要有效的自动化的测试方法,这种市场需求导致了测试描述语言的产生。特别是随着业界有越来越多的复杂的且动态的系统出现,所以迫切需要一种有效的、灵活的测试方法及其相关测试描述语言。测试及测试控制记法(Testing and Test Control Notation,简称“TTCN”)标准就是在这样的背景下发展起来的。
TTCN是一种抽象语言,使测试系统独立。这意味着用TTCN为某个应用设计的测试套(suite)可以应用于任何测试环境。比如电信、自动化、航空宇航以及国防工业的系统和集成测试。TTCN具有严格的语法规则和完整的操作语义,提供了很多测试专用的语法特性,用TTCN描述的测试套具有高度抽象性,独立于实际的被测系统。
测试及测试控制记法版本3(Testing and Test Control Notation,简称“TTCN-3”)是TTCN的最新版本,由欧洲电信标准部(EuropeanTelecommunication Standards Institute,简称“ETSI”)设计开发,并且被国际电信联盟-电信标准部(International Telecommunication UnionTelecommunication Standardization Sector,简称“ITU-T”)推荐。TTCN-3可以用做多种通信端口上的各种响应系统测试的描述语言。
TTCN-3与行业内许多新的技术领域,如网际协议(Internet Protocol,简称“IP”)相关技术的测试等关系密切。在过去的两年中,随着支持该语言的有力工具的开发,TTCN-3的用户数量取得了快速的增长。TTCN-3成为ETSI成员内部开发程序的首选测试语言。
TTCN-3是一种多目标的(multi-purpose)测试语言,并且是对成熟的、工业驱动的测试语言TTCN的加强。TTCN-3作为一种严格的、标准的测试语言带来很多好处,多年来在电信市场很受欢迎。TTCN-3的语法和通常的编程语言没有什么区别,并且包括同步、异步通讯机制,动态并行测试配置。典型的应用领域是协议测试(包括移动协议和互连网协议)、服务测试(包括增补服务)、模块测试、基于平台、应用程序接口(Application ProgrammingInterface,简称“API”)和公共对象请求代理体系结构(Common Object RequestBroker Architecture)测试。
基于TTCN-3的测试过程一般可分为三个阶段:首先,按照TTCN-3语言定义的规则描述抽象测试套(Abstract Test Suite),然后将抽象测试套转换成可执行测试套(Executable Test Suite),最后在特定的执行系统上运行可执行测试套,可执行测试套按测试序列的要求与被测系统通信,接收反馈,生成测试判决。
如前所述,现有的技术方案都是按照三个步骤进行的,即将TTCN-3语言描述的抽象测试套先转换为可执行测试套,可执行测试套的表示方式依赖于测试系统的实现,目前的TTCN-3商用工具一般是把TTCN-3抽象测试套转换为一组高级程序设计语言,比如C或C++的源文件,其中还需要用户编写必要的扩展代码,实现测试功能。然后利用现有的编译器编译这些源文件和用户编写的扩展代码并与工具提供的库文件链接,得到一个可执行文件,在特定的操作系统下运行这个可执行文件就相当于执行用户在抽象测试套中所编写的测试序列。图1示出了现有技术方案实现测试描述语言的流程。
可以看出,现有技术中从TTCN-3的抽象测试套到C/C++代码再到可执行测试套需要两次编译转换过程;为了实现C/C++语言代码的编译,对平台系统及链接库有一定要求;同时代码编写对测试用户也提出了要求。
另外TTCN-3具有很多专用于描述协议测试的语法结构和操作语义,C/C++等程序设计语言不能完全一一映射TTCN-3格式的抽象测试套,TTCN-3语言的一些高级特性无法直接实现,用户需要根据被测系统的实现自己编写部分测试实现代码。使得抽象测试套到C/C++代码的程序结构不是完全对应,无法进行测试语言级别的调试。
在实际应用中,上述方案存在以下问题:测试套开发效率低,测试效率低;对平台和执行系统依赖性强;用户开发过程复杂,使用困难;无法实现对测试描述语言级别的调试功能。
造成这种情况的主要原因在于,从TTCN-3的抽象测试套转换到高级语言代码后,还要经过编译、链接后才能得到可执行文件,过程复杂,导致测试套的开发效率很低;
高级语言代码的开发对语言编译器及平台和链接库具有依赖性;
TTCN-3语言到高级语言不能完全对应,不仅要求用户自己编写部分代码,测试用户使用起来困难,而且生成的可执行文件只能在高级语言级别进行调试,不能直接对TTCN-3语句进行调试,问题定位困难,严重影响开发效率。
发明内容
有鉴于此,本发明的主要目的在于提供一种测试描述语言的实现方法及其装置,使得测试描述语言能够高效实现,与平台无关,测试用户使用方便,测试开发效率高。
为实现上述目的,本发明提供了一种测试描述语言的实现方法,包含以下步骤,
A.转换器将所述测试描述语言描述的抽象测试套转换成可解释测试套;
B.在虚拟机上加载所述可解释测试套;
C.所述虚拟机解释执行所述可解释测试套;
其中所述可解释测试套能被所述虚拟机识别并直接解释执行,所述虚拟机基于计算机平台解释执行实现所述测试描述语言。
其中,还包含以下步骤,
D.用户通过所述虚拟机调试所述可解释测试套。
此外,所述步骤A包含以下子步骤,
A1所述转换器建立所述可解释测试套的文件标志,用于标志该可解释测试套,从而被所述虚拟机识别;
A2所述转换器建立所述可解释测试套的文件头,用于描述该可解释测试套的文件相关信息;
A3所述转换器建立所述可解释测试套的定义段头部和定义段,所述定义段用于描述所述抽象测试套的数据定义,所述定义段头部用于描述所述定义段的相关信息;
A4所述转换器建立所述可解释测试套的控制段头部和控制段,所述控制段用于描述所述抽象测试套的操作定义,所述控制段头部用于描述所述控制段的相关信息;
A5当用户需要调试时,所述转换器建立所述可解释测试套的调试段头部和调试段,所述调试段用于描述调试信息,所述调试段头部用于描述所述调试段的相关信息。
此外,所述步骤B包含以下子步骤,
B1所述虚拟机根据所述定义段建立内存映像,用于存储数据,在解释时进行操作;
B2所述虚拟机根据所述控制段建立内存映像,用于存储操作代码,在解释时调用运行;
B3所述虚拟机根据所述调试段在相应操作代码标记断点,用于完成调试。
此外,所述步骤C包含以下子步骤,
C1所述虚拟机的执行模块寻址当前操作指令、寻址操作相关数据,调用系统应用程序接口,完成操作;
C2所述虚拟机的堆栈模块管理、分配、回收内存;
C3所述虚拟机的组件调度模块建立测试所需功能实体,根据操作指令调度执行所述功能实体,仿真实现测试功能;
C4所述虚拟机的测试事件管理模块检测、处理所述虚拟机与被测系统之间的交互事件。
此外,所述步骤D包含以下子步骤,
D1所述虚拟机的调试模块识别所述断点并跳转;
D2所述调试模块解释执行用户输入的调试指令;
D3所述调试模块向用户输出观察信息。
此外,所述步骤C3进一步包含以下子步骤,
所述组件调度模块创建维护所述功能实体队列;
所述组件调度模块配合所述执行模块调度执行所述功能实体的操作指令。
此外,所述步骤C4进一步包含以下子步骤,
执行所述操作指令或检测所述被测系统的交互信息,引发所述测试事件;
所述测试事件管理模块配合所述执行模块处理所述测试事件。
此外,所述测试描述语言为测试与测试控制记法版本3。
本发明还提供了一种测试描述语言的实现装置,包含转换器、虚拟机和可解释测试套,
所述转换器用于将所述测试描述语言描述的抽象测试套转换成可解释测试套;
所述可解释测试套用于描述所述抽象测试套的数据、操作信息;
所述虚拟机用于解释执行所述可解释测试套。
其中,所述可解释测试套包含以下部分,
文件标志,用于标记文件为所述可解释测试套;
文件头,用于描述所述可解释测试套的文件相关信息;
定义段,用于描述数据定义信息;
定义段头部,用于描述所述定义段相关信息;
控制段,用于描述操作代码信息;
控制段头部,用于描述所述控制段相关信息;
当用户需要调试时,还包含,
调试段,用于描述用户调试信息;
调试段头部,用于描述所述调试段相关信息。
此外,所述虚拟机含以下部分,
执行模块,用于寻址当前操作指令、寻址操作相关数据,并调用系统应用程序接口完成操作;
堆栈模块,用于管理、分配、回收内存;
组件调度模块,用于建立测试所需功能实体,并根据操作指令调度执行所述功能实体,仿真实现测试功能;
测试事件管理模块,用于检测、处理所述虚拟机与被测系统之间的交互事件。
此外,所述虚拟机还包含调试模块,用于识别和实现调试断点并跳转,解释执行用户输入的调试指令并输出观察信息。
通过比较可以发现,本发明的技术方案与现有技术的主要区别在于,通过抽象测试套到可解释测试套的自动转换并在虚拟机上解释运行的方法,高效实现测试描述语言的抽象测试套;
在虚拟机中设置组件调度模块和测试事件管理模块,实现测试描述语言特有的并行测试系统建立及仿真、测试事件的检测和处理;
通过抽象测试套和可解释测试套之间的映射关系实现测试描述语言级别的调试功能;
通过数据定义与行为定义的精确二进制描述,实现简单、安全、高效的可解释测试套规范。
这种技术方案上的区别,带来了较为明显的有益效果,即转换器的自动转换及可解释测试套在虚拟机上的解释运行,使得测试描述语言的开发和实现效率大大提高,实现与平台无关性,提高独立性;
摒弃了传统的用户编写代码实现的高级语言的可执行测试套的方法,方便的用户操作,有利于测试语言的推广;
通过抽象测试套和可解释测试套之间的映射关系实现测试描述语言级别的调试功能,提高测试描述语言开发过程的效率,方便用户解决问题,提高测试代码性能;
简单、安全、高效的可解释测试套规范使得测试语言的解释实现方法可靠性、可扩展性强。
附图说明
图1是现有技术方案中实现TTCN-3语言的方法流程图;
图2是根据本发明的第二实施例的虚拟机的组成部分及相互关系示意图;
图3是根据本发明的第三实施例的可解释测试套的结构系示意图;
图4是根据本发明的第四实施例的TTCN-3语言实现方法流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。
为了解决现有技术中各种技术问题及缺点,实现发明目的,本发明摒弃传统的编译运行可执行测试套的方式,采用解释运行可解释测试套的方法,通过可解释测试套在虚拟机上解释运行的方法,高效实现测试描述语言的抽象测试套,同时利用解释运行的优点实现与平台无关性,抽象测试套到可解释测试套自动转换简化开发步骤,方便测试用户使用,可解释测试套与抽象测试套的对应关系使得测试描述语言级别的调试得以实现,提高开发过程中解决问题的效率。
本发明的关键在于可解释测试套及虚拟机的解释运行,其中虚拟机实时仿真抽象测试套的操作步骤及功能实体之间的交互过程,处理与被测系统交互的测试事件,还接收处理用户的调试操作;而可解释测试套则能被虚拟机所识别,并以简练有效的方式重新描述抽象测试套相关的数据定义和操作定义,包括功能实体的建立、相互并行交互过程、与被测系统之间的交互过程等。
可解释测试套到虚拟机的实现过程通过步骤:首先,用转换器自动完成从抽象测试套到可解释测试套;然后,将可解释测试套直接加载到虚拟机,虚拟机建立系统环境,包括内存映像等;最后虚拟机解释运行可解释测试套,并仿真相关测试动态过程,得到测试结果。
由于从抽象测试套转换到可解释测试套后,可以直接在与平台无关的虚拟机上解释运行,并且实现测试描述语言级别的调试功能,用户使用方便且开发效率高。本发明的核心部分是用于解释运行可解释测试套的虚拟机的实现,与传统高级语言虚拟机不同的地方在于,还要仿真多个功能实体的动态并行交互过程、实现功能实体与被测系统之间的交互及测试事件处理。本发明是通过虚拟机内部的组件调度模块和测试事件管理模块实现的。
本发明的第一实施例中,通过转换器、可解释测试套、虚拟机及计算机平台实现了从抽象测试套到可解释测试套的转换、虚拟机对可解释测试套的加载、解释执行,进行对被测系统的测试,实现TTCN-3语言描述的系统测试过程。
其中,转换器是用于将TTCN-3描述的抽象测试套自动转换成可解释测试套,而可解释测试套则是一种中间格式,用于描述抽象测试套的数据、操作信息,该格式能够被虚拟机加载和解释执行,本发明的关键部分即虚拟机是用于解释执行可解释测试套的。
可见,本发明需要首先开发能够执行TTCN-3类型的测试描述语言的虚拟机,该虚拟机与传统高级语言虚拟机不同的地方在于,它不仅仅是完成存储代码的解释运行,而且要实现测试语言的动态仿真过程,需要建立测试系统的各个组件并且维护它们,而且要管理测试事件的发生和处理,维护测试系统各个组件与被测系统的交互。
本发明的第二实施例在第一实施例的基础上,具体按以下模块实现虚拟机:执行模块、堆栈模块、组件调度模块、测试事件管理模块、调试模块。图2示出了该虚拟机的各个部分及其相互关系。
执行模块201用于寻址当前操作指令、寻址操作相关数据,并调用系统应用程序接口完成操作。解释执行时,执行模块201对指令和数据的进行寻址并解释指令执行,在不同的目标操作系统上,可解释测试套中的指令被执行模块201解释成对系统API或库函数的调用,以此来实现TTCN-3语句所描述的操作。当然这里的指令是指纯粹计算机操作的指令,而对于其他与测试系统相关的复杂指令或特殊指令则需要其他模块或多个模块的配合完成。
堆栈模块202用于管理、分配、回收内存。对于任何一个虚拟机都需要堆栈模块对内存进行动态管理维护。在可解释测试套执行期间,内存分配、回收和运行期符号表管理的任务即由堆栈管理模块完成。
组件调度模块203用于建立测试所需功能实体,并根据操作指令调度执行功能实体,仿真实现测试功能。组件的概念是TTCN-3等测试描述语言中特有的。
TTCN-3语言中定义了组件的概念,用于表示测试过程中各个相对独立的、具有特定功能的实体,用TTCN-3语言描述的测试套在执行时,测试系统内部可以被看作是多个组件实体的运行交互过程,虚拟机专门为此提供了组件调度模块203用于管理运行期的各个组件实体。执行测试套时,组件调度模块203维护着当前的组件实体队列,并依据特定的算法从当前处于活跃状态的实体所对应的指令区中取出数条指令码交由执行模块运行,执行模块运行完毕后将控制权交给组件调度模块重新获取下一轮需要运行的指令码。
测试事件管理模块204用于检测、处理虚拟机与被测系统之间的交互事件。测试套执行时,测试系统内部的各个组件之间以及测试系统的组件与被测试系统之间发生的发送、接收、调用、被调用、异常等操作被称为“测试事件”,测试事件管理模块即专为处理这些操作而设,负责检测处理组件与被测系统间的交互事件。
测试事件在以下两种情况下会被触发:执行模块201运行到会引起测试事件的指令时,例如发送和接收指令;或者测试驱动器侦测到从被测试系统发来的网络报文、过程调用或其它反馈信息时。测试驱动器是测试系统与被测试系统间通信中介的软硬件,即测试系统对外统一接口。
测试事件管理模块对这些触发作出响应,启动相应子程序处理各个测试事件。以发送操作为例,执行模块运行到发送操作指令时触发发送事件,事件管理模块被启动,从虚拟机中获取到需要发送的数据结构和编解码信息,调用编解码函数将数据编码后通过与测试驱动器的接口发送到被测试系统。
可见,通过组件调度模块203和测试事件管理模块204这两个特殊模块,才能实现测试套解释执行过程中一些复杂动态的操作及维护工作。也正是虚拟机中这两个模块的协作运行,才实现了对于TTCN-3语言的解释执行,从而摆脱传统的编译可执行测试套的方法,获得解释运行的相应优点。
调试模块205用于识别和实现调试断点并跳转,解释执行用户输入的调试指令并输出观察信息。当用户需要调试运行测试套时,调试模块205配合执行模块201实现断点指令的解释和执行,根据断点标记做相应的跳转。在动态调试交互过程中,调试模块205接收用户的调试指令输入,并即时转换成执行模块201可以识别的指令序列,做出相应的操作,并负责向用户输出调试信息。比如用户在断点处需要查看变量值时,调试模块205通知执行模块201读取该变量的值,然后输出到用户界面显示。解释运行的机制使得TTCN-3级别的调试功能得以实现,而调试模块205则完成了虚拟机的调试功能。
在实现虚拟机的同时本发明定义了可解释测试套的语法规范,它能够被虚拟机识别并解释运行,且尽量满足简单、安全、高效、可扩展性强等特点。本发明的第三实施例在第一实施例的基础上,具体设定以下结构作为可解释测试套的规范。可解释测试套是TTCN-3抽象测试套的解释执行格式,它是一种被精确定义的二进制文件,采用小端方式(little-endian)保存。图3示出了它的具体结构。
首先是文件标志用于标记文件为可解释测试套,这样易于被虚拟机识别,相当于一般可执行文件中的magic number,比如可以设置为固定值0x84846778,即ASCII码的“TTCN”。
然后是文件头用于描述可解释测试套的文件相关信息。文件头对于计算机二进制文件是必须的,用于描述该可解释测试套的文件相关信息,比如文件头本身的大小或字节数、文件的总字节数、对应的抽象测试套的文件名、转换时间、转换器的版本号、是否含有调试信息等。
接着是定义段头部用于描述定义段相关信息、控制段头部用于描述控制段相关信息、调试段头部用于描述调试段相关信息。之后为定义段、控制段和调试段。
其中定义段用于描述数据定义信息。定义段包含了抽象测试套里所有的全局定义体信息,包括定义体的个数以及常量、模块参数、模板、类型、函数、过程、测试例、可选步、外部常量和外部函数定义,每种定义体均被编译器转化成相应的二进制格式,中间文件中只有一个定义段,如果抽象测试套由多个TTCN-3模块组成,那么编译器将把所有模块的定义体合并到该定义段中。定义段头部即指示了定义段的位置、大小等信息。
控制段用于描述操作代码信息,即抽象测试套的操作定义。控制段包含了抽象测试套里所有控制部分或操作部分的信息,操作代码是抽象测试套的执行入口,虚拟机加载可解释测试套后从控制段开始执行操作,如果抽象测试套中含有多个控制部分,则预先由用户选择一个控制部分执行。同样的,控制段头部即指示了控制段的位置、大小等信息。
在可解释测试套中,调试段头部和调试段是可选的,它们包含了用于调试执行所需的全部符号信息和文件/行号映射以及在编译期间预设的断点,调试段是否存在由文件头部的相应标志位标志,如果可解释测试套中含有调试段,虚拟机就会将其加载到内存中,并把执行模式设置为调试状态,允许用户设置断点、进行单步执行和观察变量等操作。
可见,可解释测试套的核心内容是TTCN-3中各种定义体和执行语句的二进制表示格式,它们包含有寻址信息,能够被虚拟机所识别,并转换成对操作系统底层函数的调用。为了更详细的说明可解释测试套的格式,下面以类型表示代码和指令代码为例进行说明。
类型表示代码,TTCN-3抽象测试套中对数据结构的定义代码。所有的TTCN-3预定义类型和用户定义类型都有相应的二进制表示。可解释测试套中包含类型定义的作用主要有两点:用于运行期指导执行模块201在堆栈上动态地创建值对象;用于运行期的数值边界检查。
每个TTCN-3类型定义由不定长度的字节组成,均为4字节的整数倍,其中,前4个字节是类型的基本信息,具体地说,第1字节为类型属性,例如整型、布尔型,第2字节为各种状态位标志,如是否可选,是否带有参数等,第3-4字节为子域的个数。任何类型定义的二进制表示方式都至少包含这4个字节的内容,其后的字节可选,但如果有,必定是4字节的整数倍,例如第5-8字节存放类型的第一个子域入口地址,第9-12字节存放第二个子域入口地址,依此类推。
指令代码格式定义如下:第1字节为操作码,执行模块根据该操作码决定进行何种操作;第2字节为扩展标志字节,用于保存调试标志位、对操作码的扩展等;第3字节为操作数的个数和寻址方式;第4字节为断点指令在断点指令集中的位置;其后的字节可选,但如果有,必定是4字节的整数倍,例如第5-8字节为第一个操作数的入口地址,第9-12字节为第二个操作数的入口地址,依此类推。
而调试断点是一种特殊的指令,它的作用就在于使虚拟机执行到该条指令时能够停下来等待调试指令,断点指令的第1字节表示该指令为断点指令;第5-8字节直接则为断点的下一条语句的入口,用于继续执行时跳回主程序。
在本发明的第四实施例中,通过解释运行可解释测试套实现TTCN-3语言的抽象测试套大致分为三个步骤,如图4所示:
首先,由转换器将TTCN-3抽象测试套转换成可解释测试套。这里转换器是专门设计的能够将TTCN-3描述的抽象测试套对应转换为可解释测试套,当然可解释测试套的语法规则是事先定义的,定义的规范与虚拟机有关,只要虚拟机能够识别并解释执行即可完成发明目的。
然后在虚拟机上加载该可解释测试套。这一步加载的目的是将可解释测试套描述的数据定义及操作代码等建立解释执行所必须的执行环境,如内存分配空间、地址映射表等。
最后由虚拟机解释执行可解释测试套。虚拟机能够识别并解释执行可解释测试套,虚拟机是基于相应平台的API或库函数基础上的,比如微软视窗下的C运行期库,类似于现有的高级语言虚拟机,如Java虚拟机,虚拟机一旦建立以后,所执行的语言具有平台无关性。所有与平台及系统基础相关的内容都是体现虚拟机的建立过程中。
本发明将测试套称为可解释测试套是区别于可执行测试套的,因为传统的可执行测试套都是直接编译链接生成与平台有关的可执行文件实现的。本发明的关键即建立虚拟机,用于识别并直接解释执行可解释测试套,实现TTCN-3抽象测试套。
解释执行与编译执行的区别使得本发明解决了传统技术方案的缺点。抽象测试套只需经过一次转换即可实现,开发效率大大提高。可解释测试套能够完整地表示TTCN-3抽象测试套转换后所对应的可执行格式,并直接在一个专用的虚拟机上运行,可解释测试套不依赖于其它程序设计语言和编译器及系统平台,也不需要外部库文件的支持,除了必要的配置操作外,用户不需要编写额外的测试实现代码,方便用户使用,有利于TTCN-3的推广。
本发明的第五实施例在第四实施例的基础上,还引入了TTCN-3级别的调试功能。由于可解释测试套与传统的可执行测试套不同,它直接对应于抽象测试套,在转换过程中转换器可以建立抽象测试套中的标志符、语句信息以及他们与可解释测试套代码的映射关系,这些映射关系为TTCN-3语言级别的调试功能的实现提供了数据支持。
用户需要进行调试时,在可解释测试套中写入调试信息,在解释执行时,由虚拟机将可解释测试套代码加载到内存中,并根据调试信息设置相关的断点等,在执行过程中提供即时的调试支持。由于TTCN-3抽象测试套与可解释测试套存在映射关系,因此调试过程对于用户来说直接在TTCN-3级别,而实际虚拟机则通过映射关系转换到可解释测试套级别。
本发明的第三实施例在第二实施例的基础上,通过以下具体步骤实现每个过程,比如转换器将抽象测试套转换到可解释测试套、虚拟机加载可解释测试套、虚拟机解释执行可解释测试套等步骤的具体过程。
根据可解释测试套文件的结构,转换器按照以下步骤完成从抽象测试套到可解释测试套的转换:首先建立可解释测试套的文件标志。该标志用于标记文件是可解释测试套,从而被能够虚拟机识别;然后,转换器建立可解释测试套的文件头;接着,转换器建立可解释测试套的定义段头部和定义段,定义段即用于描述抽象测试套的数据定义,而定义段头部则用于描述定义段的相关信息;之后,转换器建立可解释测试套的控制段头部和控制段,控制段即用于描述抽象测试套的操作定义,而控制段头部则用于描述所述控制段的相关信息;当用户需要调试时,转换器还建立可解释测试套的调试段头部和调试段,调试段即用于描述调试信息,而调试段头部则用于描述调试段的相关信息。
事实上,转换器的关键步骤是将抽象测试套中的所有定义体和控制语句转换成虚拟机可以识别的二进制格式。其中抽象测试套中的数据定义,比如常量、参数、模板、变量等,被转换成虚拟机所支持的基本数据格式或它们的组合。而抽象测试套中的行为定义,比如函数、测试例,各种程序语句等,被转换成虚拟机的指令序列,而数据定义则做为指令的操作数。
在建立可解释测试套之后,虚拟机要加载到内存,建立运行环境,按以下步骤完成:首先,虚拟机根据所述定义段建立内存映像,用于存储数据,在解释时进行操作;其次,虚拟机根据所述控制段建立内存映像,用于存储操作代码,在解释时调用运行;最后,虚拟机根据调试段在相应操作代码标记断点,用于完成调试。
可见,虚拟机将可解释测试套加载到内存后,经过重定位操作将可解释测试套中的相对地址转换成内存中的绝对地址,生成相应的内存映象,虚拟机中的执行模块在调度模块的控制下,依次从内存映象中取出指令和数据进行运算并与被测系统交互,达到测试目的。
虚拟机解释执行可解释测试套是整个流程的关键。对应于虚拟机的各个模块具体包含以下步骤:
虚拟机的执行模块寻址当前操作指令、寻址操作相关数据,调用系统应用程序接口,完成操作。在可解释测试套的解释执行过程中,执行模块一直进行指令的解释运行,指令队列则是由调度模块管理安排的。
虚拟机的堆栈模块管理、分配、回收内存。运行的同时堆栈模块进行内存的维护管理。
虚拟机的组件调度模块建立测试所需功能实体,根据操作指令调度执行所述功能实体,仿真实现测试功能。根据TTCN-3描述的测试系统,组件调度模块创建维护功能实体队列,并配合执行模块调度执行功能实体的操作指令。各个功能实体是并行的关系,而且存在交互,因此调度模块要将活跃状态的功能实体的指令代码按一定算法公平排列到指令队列,由执行模块执行,实现并行的目的。
虚拟机的测试事件管理模块检测、处理所述虚拟机与被测系统之间的交互事件。如前所述由执行特殊的操作指令或检测到被测系统的交互信息时,会引发测试事件,比如发送消息等;此时测试事件管理模块配合执行模块处理这些测试事件。测试事件的交互是测试过程的关键,特别是通信系统的测试,主要的结果都是通过测试事件的发生处理得到的。因此测试事件的管理在TTCN-3实现过程是必不可少的。
虚拟机的调试模块在调试过程中完成用户和测试系统的交互。虚拟机的调试模块首先识别断点并跳转;在交互过程中,调试模块解释执行用户输入的调试指令,由执行模块执行后向用户输出观察信息。
在虚拟机加载了可解释测试套的调试段头部和调试段包含的用于调试执行所需的信息后,在内存中构造行号与标志符的映射表以及行号与指令的映射表,如果中间文件中含有在编译阶段预设的断点信息,虚拟机依据这些信息生成相应的断点指令,并设置断点在TTCN-3源文件中相应前一行所对应的最后一条指令的调试标志位和断点指令位置。这使得执行模块在执行到断点指令时,发生跳转。
含有断点信息的指令在执行完后,执行模块中的程序计数器会根据标志位和断点指令位置计算出下一条指令的位置,该位置恰好指向断点指令表的一条指令,执行模块在执行该断点指令时获取下一条正常指令的位置,但是并不执行,而是等待用户输入调试指令,以此来实现程序的调试执行功能。采用这种插入断点指令的执行方式,可以使执行模块在到达断点之前能全速运行,提高执行效率。
熟悉本领域的技术人员可以理解,本发明给出了通用的测试描述语言实现方法及装置,具有可扩展性能,对于非TTCN-3现有测试描述语言或将来出现的测试描述语言都适用,能实现发明目的,而不影响本发明的实质和范围。
虽然通过参照本发明的某些优选实施例,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
Claims (13)
1.一种测试描述语言的实现方法,其特征在于,包含以下步骤,
A.转换器将所述测试描述语言描述的抽象测试套转换成可解释测试套;
B.在虚拟机上加载所述可解释测试套;
C.所述虚拟机解释执行所述可解释测试套;
其中所述可解释测试套能被所述虚拟机识别并直接解释执行,所述虚拟机基于计算机平台解释执行实现所述测试描述语言。
2.根据权利要求1所述的测试描述语言的实现方法,其特征在于,还包含以下步骤,
D.用户通过所述虚拟机调试所述可解释测试套。
3.根据权利要求2所述的测试描述语言的实现方法,其特征在于,所述步骤A包含以下子步骤,
A1所述转换器建立所述可解释测试套的文件标志,用于标志该可解释测试套,从而被所述虚拟机识别;
A2所述转换器建立所述可解释测试套的文件头,用于描述该可解释测试套的文件相关信息;
A3所述转换器建立所述可解释测试套的定义段头部和定义段,所述定义段用于描述所述抽象测试套的数据定义,所述定义段头部用于描述所述定义段的相关信息;
A4所述转换器建立所述可解释测试套的控制段头部和控制段,所述控制段用于描述所述抽象测试套的操作定义,所述控制段头部用于描述所述控制段的相关信息;
A5当用户需要调试时,所述转换器建立所述可解释测试套的调试段头部和调试段,所述调试段用于描述调试信息,所述调试段头部用于描述所述调试段的相关信息。
4.根据权利要求2所述的测试描述语言的实现方法,其特征在于,所述步骤B包含以下子步骤,
B1所述虚拟机根据所述定义段建立内存映像,用于存储数据,在解释时进行操作;
B2所述虚拟机根据所述控制段建立内存映像,用于存储操作代码,在解释时调用运行;
B3所述虚拟机根据所述调试段在相应操作代码标记断点,用于完成调试。
5.根据权利要求2所述的测试描述语言的实现方法,其特征在于,所述步骤C包含以下子步骤,
C1所述虚拟机的执行模块寻址当前操作指令、寻址操作相关数据,调用系统应用程序接口,完成操作;
C2所述虚拟机的堆栈模块管理、分配、回收内存;
C3所述虚拟机的组件调度模块建立测试所需功能实体,根据操作指令调度执行所述功能实体,仿真实现测试功能;
C4所述虚拟机的测试事件管理模块检测、处理所述虚拟机与被测系统之间的交互事件。
6.根据权利要求2所述的测试描述语言的实现方法,其特征在于,所述步骤D包含以下子步骤,
D1所述虚拟机的调试模块识别所述断点并跳转;
D2所述调试模块解释执行用户输入的调试指令;
D3所述调试模块向用户输出观察信息。
7.根据权利要求5所述的测试描述语言的实现方法,其特征在于,所述步骤C3进一步包含以下子步骤,
所述组件调度模块创建维护所述功能实体队列;
所述组件调度模块配合所述执行模块调度执行所述功能实体的操作指令。
8.根据权利要求5所述的测试描述语言的实现方法,其特征在于,所述步骤C4进一步包含以下子步骤,
执行所述操作指令或检测所述被测系统的交互信息,引发所述测试事件;
所述测试事件管理模块配合所述执行模块处理所述测试事件。
9.根据权利要求1至8中任一项所述的测试描述语言的实现方法,其特征在于,所述测试描述语言为测试及测试控制记法版本3。
10.一种测试描述语言的实现装置,其特征在于,包含转换器、虚拟机和可解释测试套,
所述转换器用于将所述测试描述语言描述的抽象测试套转换成可解释测试套;
所述可解释测试套用于描述所述抽象测试套的数据、操作信息;
所述虚拟机用于解释执行所述可解释测试套。
11.根据权利要求10所述的测试描述语言的实现装置,其特征在于,所述可解释测试套包含以下部分,
文件标志,用于标记文件为所述可解释测试套;
文件头,用于描述所述可解释测试套的文件相关信息;
定义段,用于描述数据定义信息;
定义段头部,用于描述所述定义段相关信息;
控制段,用于描述操作代码信息;
控制段头部,用于描述所述控制段相关信息;
当用户需要调试时,还包含,
调试段,用于描述用户调试信息;
调试段头部,用于描述所述调试段相关信息。
12.根据权利要求10所述的测试描述语言的实现装置,其特征在于,所述虚拟机含以下部分,
执行模块,用于寻址当前操作指令、寻址操作相关数据,并调用系统应用程序接口完成操作;
堆栈模块,用于管理、分配、回收内存;
组件调度模块,用于建立测试所需功能实体,并根据操作指令调度执行所述功能实体,仿真实现测试功能;
测试事件管理模块,用于检测、处理所述虚拟机与被测系统之间的交互事件。
13.根据权利要求10所述的测试描述语言的实现装置,其特征在于,所述虚拟机还包含调试模块,用于识别和实现调试断点并跳转,解释执行用户输入的调试指令并输出观察信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510086185 CN1900905A (zh) | 2005-07-24 | 2005-07-24 | 测试描述语言的实现方法及其装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510086185 CN1900905A (zh) | 2005-07-24 | 2005-07-24 | 测试描述语言的实现方法及其装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1900905A true CN1900905A (zh) | 2007-01-24 |
Family
ID=37656795
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200510086185 Pending CN1900905A (zh) | 2005-07-24 | 2005-07-24 | 测试描述语言的实现方法及其装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1900905A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100524221C (zh) * | 2007-12-28 | 2009-08-05 | 中国科学院计算技术研究所 | 一种并行模拟器及方法 |
CN102662842A (zh) * | 2012-04-11 | 2012-09-12 | 贵州航天风华精密设备有限公司 | 一种基于Java平台的航天器测试软件构架及其测试方法 |
CN106648681A (zh) * | 2016-12-29 | 2017-05-10 | 南京科远自动化集团股份有限公司 | 一种可编程语言编译装载系统及方法 |
CN109352645A (zh) * | 2018-09-28 | 2019-02-19 | 库壳教育科技有限公司 | 一种应用于机器人教育的简易编程方法及装置 |
-
2005
- 2005-07-24 CN CN 200510086185 patent/CN1900905A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100524221C (zh) * | 2007-12-28 | 2009-08-05 | 中国科学院计算技术研究所 | 一种并行模拟器及方法 |
CN102662842A (zh) * | 2012-04-11 | 2012-09-12 | 贵州航天风华精密设备有限公司 | 一种基于Java平台的航天器测试软件构架及其测试方法 |
CN102662842B (zh) * | 2012-04-11 | 2016-02-03 | 贵州航天风华精密设备有限公司 | 一种基于Java平台的航天器测试软件构架及其测试方法 |
CN106648681A (zh) * | 2016-12-29 | 2017-05-10 | 南京科远自动化集团股份有限公司 | 一种可编程语言编译装载系统及方法 |
CN109352645A (zh) * | 2018-09-28 | 2019-02-19 | 库壳教育科技有限公司 | 一种应用于机器人教育的简易编程方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8887131B2 (en) | Optimized code generation by eliminating unused virtual function | |
CN1313920C (zh) | 一种基于统一构件封装件结构的构件组装方法 | |
CN101408849A (zh) | Ttcn-3语言的编译执行方法及系统 | |
CN1786925A (zh) | 基于c++映射的ttcn-3测试系统及测试方法 | |
CN1627254A (zh) | 嵌入式系统的调试方法及其装置 | |
CN1900905A (zh) | 测试描述语言的实现方法及其装置 | |
US10891214B2 (en) | Transferring a debug configuration amongst carrier threads for debugging a carried thread | |
CN109710218B (zh) | 一种对象自动转换方法及终端 | |
JP2010140408A (ja) | ソースコード変換装置 | |
CN1780236A (zh) | 一种电信智能业务的通用测试系统及方法 | |
CN1129846C (zh) | 程序执行方法 | |
JP2010140407A (ja) | ソースコード検査装置 | |
CN109614320A (zh) | 一种检测代码接口准确性的方法及终端 | |
Sarkar et al. | Higher-order concurrency for microcontrollers | |
CN101075190A (zh) | 资源管理平台中的数据引擎 | |
CN113448689A (zh) | 运行期Dubbo协议转换装置及方法 | |
Bräuer et al. | Model-level integration of the OCL standard library using a pivot model with generics support | |
CN1310446C (zh) | 镜像测试方法 | |
George et al. | Programming language inter-conversion | |
CN101751321B (zh) | 一种动态可视化查看变量的实现方法及系统 | |
CN1896954A (zh) | 用于复杂多业务的动态编译器的构件化实现 | |
Roubtsov et al. | Detecting modularity" smells" in dependencies injected with Java annotations | |
Maia et al. | OiL: An object request broker in the Lua language | |
Krook et al. | Higher-Order Concurrency for Microcontrollers | |
CN1916873A (zh) | 一种服务调试命令发射器及其处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |