TTCN测试用例执行方法技术

技术编号:2877782 阅读:278 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种TTCN测试用例执行方法,首先输入以MP文件格式编写的测试用例或多个测试用例组成的测试套,再将MP文件中的所有元素转化为相应的内存中对象,通过对所述的内存中对象进行执行、调试完成对TTCN测试用例的执行,省去了MP文件转换为C程序、与库函数的链接等过程,大大提高了执行效率,并且通过对可控对象的操作进行诸如获取某个对象的值、设置某个对象的值、设置断点、单步跟踪等调试。(*该技术在2021年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及用于协议一致性测试的TTCN(Tree and TabularCombined Notation)国际标准的测试用例执行方法。用户按照TTCN标准编写测试用例脚本后,测试用例以MP(符合TTCN标准的文本文件)文件格式保存,该MP文件中一般包含多个测试用例组成的测试套。之后就需要提供一套方法来执行此MP文件,从而达到运行测试用例的目的,目前的TTCN商用工具采用的执行方法是把MP文件转换为C语言源文件,再用其他C语言工具对这些代码进行编译、链接,最后得到一个可执行文件(EXE),通过执行这个EXE文件实现对用户编写的测试用例的执行,具体过程还包括TTCN工具一般提供一些库函数,用户还需要根据TTCN工具提供的Lib(库函数)进行编程,编程内容包括编解码模块、与被测系统的通信模块。用户编写的C语言程序与MP文件生成的C语言程序再加上TTCN工具提供的库函数,一起编译、链接,最后生成一个独立的可执行文件,测试用例的执行就是执行此可执行文件。这种方法的缺点是 1)需要把MP文件转换为C语言代码,然后编译、链接、调试过程复杂,速度比较慢。而在编写用例过程中,经常需要修改用例、调试用例,需要不断重复这些过程,效率低下。2)使用此方法需要C语言编译器、工具库函数等额外支持,依赖性比较强。3)最后生成的EXE文件只能简单地运行,或者利用C语言调试器进行调试,而这种调试只能以C语句为基础进行,不能以TTCN语句为基础进行调试,所以不能直接地定位。本专利技术采用的技术方案是一种TTCN测试用例执行方法,首先输入以MP文件格式编写的测试用例或多个测试用例组成的测试套,再将MP文件中的所有元素转化为相应的内存中对象,通过对所述的内存中对象进行执行、调试完成对TTCN测试用例的执行。采用本专利技术方法后,以MP文件作为输入,把MP文件编译为内存中对象,然后对此对象进行执行、调试。通过这种方法,省去了MP文件转换为C程序、与库函数的链接等过程,大大提高了执行效率。并且由于MP文件中所有元素一一转化为内存中对象,这些对象都是可控的,可以对这些对象进行诸如获取某个对象的值、设置某个对象的值、设置断点、单步跟踪等调试。图2是本专利技术方法总体过程示意图。图3是本专利技术方法具体实施方式中的类组成图。参照图2,本专利技术的TTCN测试用例执行方法总体上包括三个过程,首先,输入测试用例,即以MP文件格式编写的测试用例或多个测试用例组成的测试套,再将MP文件中的所有元素转化为相应的内存中对象,最后,通过对所述的内存中对象进行执行、调试完成对TTCN测试用例的执行。参照图3,本专利技术方法为MP文件中的每种元素设计一个对应的C++类,此类作为此元素在内存中的表现方式。MP文件编译时,每个元素分别转化为代表自己的类,把相应的信息以对象的形式保存到内存中。编译完成后,整个MP文件变为了内存中的一系列对象,这一系列对象可以完整地反映整个MP文件所包含的信息,内存中对象可以包括数值运算类CValue、语句类CLine、测试用例类CTestCase和测试套类CTestSuit四个基本类型;一个测试套类对象可以包含多个测试用例类对象,一个测试用例类对象可以包含多个语句类对象,一个语句类对象由多个数值运算类对象组成;其中数值运算类包括数值类和表达式类CExpr,数值类包括以下八类(1)整数类CIntegerValue,(2)布尔类CBoolValue,(3)浮点类CFloatValue,(4)结构类CSetValue,(5)集合类CSetOfValue,(6)有顺序数组类CSequenceValue,(7)无顺序数组类CSequenceOfValue,(8)联合类CChoiceValue;以上类对应于MP文件中的各类数值,用于实现数值在内存中的表示;表达式类包括以下八类(1)加法运算类CPlusExpr,(2)减法运算类CMinusExpr,(3)乘法运算类CMultiplyExpr,(4)除法运算类CDivideExpr,(5)等于类CIsEqualExpr,(6)不等类CNotEqualExpr,(7)与运算类CAndExpr,(8)或运算类COrExpr;以上类对应于MP文件中的各类表达式,用于实现表达式在内存中的表示;语句类包括以下几类(1)条件转向类CWhileLine,(2)条件判断类CIfLine,(3)循环类CForLine,(4)发送消息类CSendLine,(5)接收消息类CReceiveLine,(6)无条件转向类CGotoLine,(7)返回类CReturnLine,(8)赋值类CAssignmentLine;以上类对应于MP文件中的各类语句,用于实现TTCN语句在内存中的表示;对内存中对象进行执行、调试可以是对TTCN脚本的多个线程作分时处理,对每个线程用一个线程状态对象保存线程当前状态;每个线程状态对象记录以下四项内容(1)动态分配的内存指针;(2)记录线程中的函数执行状态和调用顺序的堆栈;(3)记录事件队列的数组;(4)系统时钟。根据内存对象进行用例执行,在执行过程中需要进行分配和回收内存、收发消息、开始和终止时钟等各种操作。TTCN标准支持多线程功能,执行过程中涉及到线程间的切换,对于每个线程用一个线程状态对象CRunContext对象保存它的运行上下文,即保存每个线程当前状态,使线程切换后,还能得到上次运行的最后状态,并从最后状态处继续运行。具体实施中可对类CRunContext定义如下class CRunContext{CMemArraym_ContextMemArray;∥用于记录运行中动态分配的内存,进行内存回收,实现内存管理ARRAY(CFunc)m_FuncStack;∥函数调用堆栈ARRAY(CEvent) m_EventQueue; ∥事件队列CTimerPool m_TimerPool;∥时钟队列}m_ContextMemArray用于把运行过程中动态分配的内存指针保存起来,这些内存在运行一个函数后统一释放。一个线程中包含多个函数的层次调用,m_FuncStack用于记录函数调用堆栈。调用一个函数前把函数指针压入此堆栈中,一个函数调用完成后退栈,从而实现堆栈管理。通过此堆栈还可以观察当前程序执行到哪个函数,函数的调用顺序等信息,从而实现调试功能。m_EventQueue用于记录事件队列,以数组形式记录如消息、时钟超时等可以触发程序运行的事件,收到一个事件后把事件放到此数组中,等待处理。m_TimerPool记录了目前系统启动的时钟,调度程序不断判断这些时钟是否已经超时,如果超时,则把它从m_TimerPool中删除,并在m_EventQueue中增加一个超时事件。当执行程序切换到一个CRunContext对象,对此对象中的m_TimerPool进行判断,看是否有时钟超时,并检查m_EventQueue中是否有需要处理的事件,如果有则让此线程运行。线程运行时各语句会对这些事件进行处理。一个线程执行若干语句后,切换到另一个CRunContext对象,又执行若干个语句,实现了多个线程的分时执行,并可以在运行中进行包括设置断点、单步跟踪、获取某个对象的值等各种调试。权利要求1.一种TTCN测本文档来自技高网...

【技术保护点】
一种TTCN测试用例执行方法,其特征在于:首先输入以MP文件格式编写的测试用例或多个测试用例组成的测试套,再将MP文件中的所有元素转化为相应的内存中对象,通过对所述的内存中对象进行执行、调试完成对TTCN测试用例的执行。

【技术特征摘要】

【专利技术属性】
技术研发人员:卢伟攀
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1