CN100403264C - Ttcn测试用例执行方法 - Google Patents
Ttcn测试用例执行方法 Download PDFInfo
- Publication number
- CN100403264C CN100403264C CNB011346167A CN01134616A CN100403264C CN 100403264 C CN100403264 C CN 100403264C CN B011346167 A CNB011346167 A CN B011346167A CN 01134616 A CN01134616 A CN 01134616A CN 100403264 C CN100403264 C CN 100403264C
- Authority
- CN
- China
- Prior art keywords
- class
- ttcn
- test case
- test
- internal memory
- 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
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种TTCN测试用例执行方法,首先输入以MP文件格式编写的测试用例或多个测试用例组成的测试套,再将MP文件中的所有元素转化为相应的内存中对象,通过对所述的内存中对象进行执行、调试完成对TTCN测试用例的执行,省去了MP文件转换为C程序、与库函数的链接等过程,大大提高了执行效率,并且通过对可控对象的操作进行诸如获取某个对象的值、设置某个对象的值、设置断点、单步跟踪等调试。
Description
技术领域
本发明涉及用于协议一致性测试的TTCN(Tree and TabularCombined Notation)国际标准的测试用例执行方法。
背景技术
TTCN标准是一种测试用例的表示法,提供了一个编程的语言,TTCN中用Tabular(表)来描述数据结构,用Tree(树)来描述执行过程,通过执行过程与数据结构的结合,实现测试用例的描述。
用户按照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测试用例执行方法,不需要C语言编译器、工具库函数等额外支持。
本发明采用的技术方案是:一种TTCN测试用例执行方法,输入步骤,输入MP文件格式的测试用例或多个测试用例组成的测试套;转换步骤,将MP文件格式的测试用例或多个测试用例组成的测试套中的所有元素转化为相应的内存中对象;执行步骤,对内存中对象进行执行、调试完成对TTCN测试用例的执行。
采用本发明方法后,以MP文件作为输入,把MP文件编译为内存中对象,然后对此对象进行执行、调试。通过这种方法,省去了MP文件转换为C程序、与库函数的链接等过程,大大提高了执行效率。并且由于MP文件中所有元素一一转化为内存中对象,这些对象都是可控的,可以对这些对象进行诸如获取某个对象的值、设置某个对象的值、设置断点、单步跟踪等调试。
附图说明
图1是现有技术中TTCN测试用例执行过程图。
图2是本发明方法总体过程示意图。
图3是本发明方法具体实施方式中的类组成图。
具体实施方式
下面结合附图和实施例对本发明作进一步描述,图1所示是现有技术中TTCN测试用例执行过程。
参照图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
{CMemArray m_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对象,又执行若干个语句,实现了多个线程的分时执行,并可以在运行中进行包括设置断点、单步跟踪、获取某个对象的值等各种调试。
Claims (3)
1.一种TTCN测试用例执行方法,其特征在于:该方法包括以下步骤,输入步骤,输入MP文件格式的测试用例或多个测试用例组成的测试套;转换步骤,将MP文件格式的测试用例或多个测试用例组成的测试套中的所有元素转化为相应的内存中对象;执行步骤,对内存中对象进行执行、调试完成对TTCN测试用例的执行。
2.如权利要求1所述的TTCN测试用例执行方法,其特征在于:所述内存中对象包括数值运算类、语句类、测试用例类和测试套类四个基本类型;
一个测试套类对象可以包含多个测试用例类对象,一个测试用例类对象可以包含多个语句类对象,一个语句类对象由多个数值运算类对象组成;其中:
数值运算类包括数值类和表达式类,数值类包括以下八类:整数类、布尔类、浮点类、结构类、集合类、有顺序数组类、无顺序数组类和联合类。
表达式类包括以下八类:加法运算类、减法运算类、乘法运算类、除法运算类、等于类、不等类、与运算类和或运算类。
语句类包括以下八类:条件转向类、条件判断类、循环类、发送消息类、接收消息类、无条件转向类、返回类和赋值类。
3.如权利要求1所述的TTCN测试用例执行方法,其特征在于:所述对内存中对象进行执行、调试是对TTCN脚本的多个线程作分时处理,对每个线程用一个线程状态对象保存线程当前状态;每个线程状态对象记录以下四项内容:
(1)动态分配的内存指针;
(2)记录线程中的函数执行状态和调用顺序的堆栈;
(3)记录事件队列的数组;
(4)系统时钟。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB011346167A CN100403264C (zh) | 2001-11-07 | 2001-11-07 | Ttcn测试用例执行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB011346167A CN100403264C (zh) | 2001-11-07 | 2001-11-07 | Ttcn测试用例执行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1417678A CN1417678A (zh) | 2003-05-14 |
CN100403264C true CN100403264C (zh) | 2008-07-16 |
Family
ID=4672615
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB011346167A Expired - Fee Related CN100403264C (zh) | 2001-11-07 | 2001-11-07 | Ttcn测试用例执行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100403264C (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012016443A1 (zh) * | 2010-08-06 | 2012-02-09 | 中国科学院软件研究所 | 一种ttcn语言与数据描述语言的集成方法 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100435113C (zh) * | 2005-03-08 | 2008-11-19 | 中国科学院软件研究所 | 基于c++映射的ttcn-3测试系统及测试方法 |
CN100377108C (zh) * | 2005-04-30 | 2008-03-26 | 华为技术有限公司 | 一种测试用例的执行方法 |
CN1984171B (zh) * | 2006-04-06 | 2011-04-13 | 华为技术有限公司 | 实现语音设备功能测试的系统和方法 |
CN101727345B (zh) * | 2008-10-29 | 2013-09-04 | 国际商业机器公司 | 控制动态链接库dll加载状态的方法和系统 |
CN102195773B (zh) * | 2010-03-03 | 2013-09-11 | 中国人民解放军信息工程大学 | 一种分组密码算法分析方法及系统 |
CN102395141B (zh) * | 2011-11-04 | 2014-06-04 | 大唐联仪科技有限公司 | 一种基于一致性测试的重现方法和设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06241840A (ja) * | 1993-02-18 | 1994-09-02 | Kodo Tsushin Syst Kenkyusho:Kk | 適合性試験スイート作成装置 |
JPH0787165A (ja) * | 1993-09-13 | 1995-03-31 | Kodo Tsushin Syst Kenkyusho:Kk | 抽象試験ケース分割装置 |
-
2001
- 2001-11-07 CN CNB011346167A patent/CN100403264C/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06241840A (ja) * | 1993-02-18 | 1994-09-02 | Kodo Tsushin Syst Kenkyusho:Kk | 適合性試験スイート作成装置 |
JPH0787165A (ja) * | 1993-09-13 | 1995-03-31 | Kodo Tsushin Syst Kenkyusho:Kk | 抽象試験ケース分割装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012016443A1 (zh) * | 2010-08-06 | 2012-02-09 | 中国科学院软件研究所 | 一种ttcn语言与数据描述语言的集成方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1417678A (zh) | 2003-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7316005B2 (en) | Data race detection using sequential program analysis | |
US8458681B1 (en) | Method and system for optimizing the object code of a program | |
US9672133B2 (en) | Systems and methods for debugging applications using dual code generation | |
EP1074911A2 (en) | Aspect-oriented programming | |
US8429632B1 (en) | Method and system for debugging merged functions within a program | |
CN101408849A (zh) | Ttcn-3语言的编译执行方法及系统 | |
CN102819492A (zh) | 一种基于Android的关键字驱动自动化测试框架 | |
US8381198B2 (en) | Systems, methods and computer program products for safety checking executable application programs in a module | |
CN102591777A (zh) | 一种单元测试代码生成方法及装置 | |
CN101246449B (zh) | 跟踪函数调用轨迹的方法和装置 | |
CN110861085B (zh) | 一种基于VxWorks的机械臂指令解释器系统 | |
US10496423B2 (en) | Method for opening up data and functions of terminal application based on reconstruction technology | |
CN101639805A (zh) | 用于在程序调试中跟踪变量的方法和设备 | |
CN100403264C (zh) | Ttcn测试用例执行方法 | |
CN109542444B (zh) | Java应用的监控方法、装置、服务器和存储介质 | |
US7287246B2 (en) | Debugging optimized flows with breakpoints using stored breakpoint trigger indicators | |
CN102331961A (zh) | 并行模拟多个处理器的方法及系统、调度器 | |
Sundaram et al. | Diagnostic tracing for wireless sensor networks | |
CN103631585A (zh) | 一种用于开发应用程序的方法及系统 | |
EP2634693A1 (en) | Method and apparatus for interacting with runnung software | |
EP3619612B1 (en) | Temporary de-optimization of target functions in a cloud debugger | |
CN112740187A (zh) | 调试程序的方法和系统 | |
US20060101398A1 (en) | Program output management | |
He et al. | Stethoscope: A sustainable runtime debugger for wireless sensor networks | |
Misurda et al. | Jazz2: a flexible and extensible framework for structural testing in a Java VM |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
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: 20080716 Termination date: 20161107 |
|
CF01 | Termination of patent right due to non-payment of annual fee |