CN100440759C - 实现脚本并行执行的方法 - Google Patents

实现脚本并行执行的方法 Download PDF

Info

Publication number
CN100440759C
CN100440759C CNB021525536A CN02152553A CN100440759C CN 100440759 C CN100440759 C CN 100440759C CN B021525536 A CNB021525536 A CN B021525536A CN 02152553 A CN02152553 A CN 02152553A CN 100440759 C CN100440759 C CN 100440759C
Authority
CN
China
Prior art keywords
parallel
order
script
executed
branch
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
CNB021525536A
Other languages
English (en)
Other versions
CN1501603A (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 CNB021525536A priority Critical patent/CN100440759C/zh
Publication of CN1501603A publication Critical patent/CN1501603A/zh
Application granted granted Critical
Publication of CN100440759C publication Critical patent/CN100440759C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

一种实现脚本并行执行的方法,它包括这样的过程:建立一套能够实现脚本并行的命令,将其存放在扩展库中,在需要脚本并行的情况下,把扩展库中的命令加载到内存;执行扩展库中的命令,实现脚本并行。其效果是使并行执行不依赖于具体的测试工具,对于支持TCL语言的测试仪器和工具来说可以通用,编写的测试脚本能够灵活控制,能够在同一个脚本文件上实现多个并行执行的动作。

Description

实现脚本并行执行的方法
技术领域
本发明属于通讯的测试领域,具体地说,是一种实现脚本并行执行的方法。
背景技术
在智能网产品测试中,目前普遍采用基于脚本的测试技术,如TCL脚本。脚本是为了达到测试目的而编写的,通过执行该脚本命令后判断执行后的结果以达到测试的目的。一般来说,脚本是由一系列的脚本语句组成的,但脚本语句本身不会执行,其执行是在其相应的解释器中执行的,每一脚本都有其配套的解释器,在解释器中有解释程序,当脚本执行时,由解释器执行脚本中定义的脚本语句。这样,有时会涉及多个测试脚本需要同时一起运行的问题,即测试脚本并行执行的问题。
现有的脚本并行实现方法主要有两种:并行脚本执行器方法、多解释器方法。
并行脚本执行器方法,如图1所示,这种方法通过实现一个特殊的并行脚本执行器(1),该并行脚本执行器可以根据事先制定的规则创建多个线程,然后在线程中创建解释器,在不同线程上执行不同的脚本,来达到脚本的并行执行效果的。图1中,有4个线程,分别是线程1(2)、线程2(3)、线程3(4)、线程4(5),分别创建解释器1(10)、解释器2(11)、解释器3(12)、解释器4(13),在线程1(2)、线程2(3)、线程3(4)、线程4(5)上分别执行脚本1(6)、脚本2(7)、脚本3(8)、脚本4(9)。
这种实现方法有以下缺陷:
1、由于这种并行执行功能依赖于并行脚本执行器,使得该功能依赖于具体的测试工具,无法应用到其他工具,无法做到在各个测试工具上的通用。这样,并行脚本执行器本身的配置情况也会影响测试脚本的执行,当不断更换测试脚本进行测试时,就会进行很多无谓的与被测系统无关的脚本执行器的配置工作,影响使用效率。并行脚本执行器需要从脚本当中识别出用例和并行执行的脚本部分,这都会限制测试脚本的实现,使测试脚本的编写只能依赖特定的工具。
2、由于这种实现方法不同的线程运行不同的脚本文件,难于做到在同一个脚本文件上实现多个并行执行的动作。
3、脚本的执行控制由并行脚本执行器负责,但是一般一套脚本就是一套测试用例,用例自己才知道不同的脚本何时和怎样来执行,检测的用户很难知道脚本的具体执行情况,只知道一个结果,所以这种实现方法也就很难做到灵活的执行控制。
多解释器方法,如图2所示,它是利用TCL脚本自身支持在一个线程里运行多个解释器,每个解释器有自己独立的变量空间和运行自己的脚本的特性,通过这个特性,直接利用TCL的解释器(interp)命令族的命令可达到脚本并行执行的效果。在图2中,14代表任意脚本执行器,15是一个运行多个解释器的线程,在该线程中运行解释器1(10)、解释器2(11)、解释器3(12)、解释器4(13),分别执行脚本1(6)、脚本2(7)、脚本3(8)、脚本4(9)。
这种实现方法虽然在同一线程内可以执行多个脚本,提高了运行的效率,但也有以下缺点:
1、脚本执行器也需要从脚本当中识别出用例和并行执行的脚本部分,这都会限制测试脚本的实现,使测试脚本的编写只能依赖特定的工具。
2、由于TCL的解释器(interp)命令族仅做到脚本级并行,由于这种实现方法仍然是不同的解释器运行不同的脚本文件,难于做到在同一个脚本文件上实现多个并行执行的动作。
3、由于TCL自身的解释器(interp)命令族仅支持独立的命名空间、过程和全局变量、脚本,所以脚本的执行控制不够灵活,而且并行之间的通信方法单调。
目前支持TCL语言的测试仪器、工具很多,由于TCL语言自身的并行执行功能很弱,所以现有的工具对此支持都很不够,无法满足测试当中对于多路并发的各种复杂需求。总结前面所述的并行实现方法的缺点如下:
1、并行执行功能依赖于具体的测试工具,无法应用到其他测试仪器和工具,即并行执行功能不通用于所有支持标准TCL的环境。测试工具的配置会影响测试脚本的执行,测试脚本更换时必须重新配置测试工具的参数。
2、难于做到在同一个脚本文件上实现多个并行执行的动作。
3、用例自己才知道不同的脚本何时和怎样来执行,检测的用户很难知道脚本的具体执行情况,很难做到灵活的执行控制。
另外,下面这样情况也是现有的并行执行方法很难实现的:
1、脚本之间进行同步,同时也要保证这种能力通用于所有测试仪器和工具。
2、达到函数级并行,即并行执行的可以是TCL语句或语句块,实现函数级的并行。
3、主执行体创建子执行体时,要求子执行体继承主执行体的各种全局变量、函数、文件、数据库连接、远程登陆(Telnet)连接等。
4、无论怎样并行,在任何标准TCL环境下都可以自动识别用例,和接收测试结果。
发明内容
本发明提供一种实现脚本并行执行的方法,以解决现有技术的并行执行方法存在的并行执行依赖于具体的测试工具,对于支持TCL语言的测试仪器和工具来说通用性较差的问题。
为此,本发明的实现脚本并行执行的方法,它包括以下步骤:
a、建立一套能够实现脚本并行的命令,将其存放在扩展库中,在需要脚本并行的情况下,把扩展库中的命令加载到内存;所述命令至少包括:定义并行任务的命令,定义至少一个并行任务;以及启动并行任务的命令,创建并启动线程运行已定义的并行任务;
b、执行扩展库中的命令,并行执行脚本定义的并行任务。
其中,所述定义并行任务的命令为:parellel命令,定义并行执行体,并行执行体包括若干分支,每一分支是一个欲实现的并行任务,在缓冲区中建立并行执行体和它的分支的数据;
所述启动并行任务的命令为:parellel-start命令,把定义并行执行体时建立的数据保存在缓冲区,然后创建并启动每个分支对应的线程,这个线程执行过程中创建解释器,并在这个解释器上加载保存的定义并行执行体时建立的数据,最后执行该分支对应的并行任务;
所述的实现脚本并行的命令还包括:
parellel-close命令,终止分支对应的线程,它可以终止一个、多个或者全部的分支线程,同时释放对应的解释器。
parellel-delete命令,会清除并行执行体在缓冲区所占的资源。
所述的实现脚本并行的命令还包括实现同步的命令:
parellel-resume命令,启动一个、多个或者全部的分支线程;
parellel-wait命令,执行它可以等待该并行执行体的其他分支和并行执行体主解释器执行完毕后,该命令才终止,进入下一步的情况。
所述的实现脚本并行的命令还包括记录测试结果机制的命令:
RecordInit命令,负责连接客户端应用程序编程接口,应用程序编程接口在客户端公用,它创建套接字等待Tcl脚本连接它,同时要求客户提供一个回调函数,把该回调函数登记到这个应用程序编程接口上,当该应用程序编程接口收到测试结果并解析好之后,就通过回调函数传给客户端;
record命令,负责把测试结果发送给客户端应用程序编程接口;
RecordExit命令,负责关闭到客户端应用程序编程接口的连接;
Testcase命令,声明测试用例,以便在record命令报告测试结果时,明确报告的是什么用例的结果。
由于本发明建立了一套能够实现脚本并行的命令,通过把需要执行的各并行任务放在并行执行体的分支中来实现并行执行,并行启动多少个执行体、哪些执行体是写在脚本里面的,与测试工具无关,所以测试脚本不依赖于工具配置,对于支持TCL语言的测试仪器和工具来说可以通用。并行执行体没有直接在工具内部实现,而是以扩展库方式实现,这项改进直接就决定了该并行执行体的通用性。
由于本发明的Testcase命令能够自动识别用例,在record命令报告测试结果时,明确报告的是什么用例的结果,这样,用户不但知道测试结果,而且也知道脚本的具体执行情况,能够做到灵活的执行控制,使得并行执行时的用例识别以及结果报告都很容易定位到用例。
由于本发明通过把需要执行的各并行任务放在并行执行体的分支中来实现并行执行,所以能够在同一个脚本文件上实现多个并行执行的动作。
另外,本发明采用parellel-resume命令和parellel-wait命令实现脚本之间的同步,由于这种同步是通过命令的形式,与测试工具无关,所以这种能力能够通用于所有测试仪器和工具,测试脚本也不依赖工具配置。
再者,由于本发明并行执行体的分支中可以是TCL语句或语句块,也就是说并行执行的是TCL语句或语句块,分支定义支持的是脚本语句,而不是脚本文件,就实现了函数级的并行。
又,由于本发明在启动parellel-start命令时,把定义并行执行体时建立的数据包括主执行体的各种全局变量、函数、文件、数据库连接、远程登陆连接等都保存在缓冲区,然后创建并启动每个分支对应的线程,这个线程执行过程中创建解释器,并在这个解释器上加载保存的定义并行执行体时建立的数据包括主执行体的各种全局变量、函数、文件、数据库连接、远程登陆连接等,最后执行该分支对应的并行任务,这样,就达到了主执行体的各种全局变量、函数、文件、数据库连接、远程登陆连接等都被子执行体继承下来的效果,从而使得测试脚本编写时脚本和数据可以作到完全分离,能够轻易达到脚本变化而无须配置测试工具。
由于本发明的Testcase命令能够自动识别用例,它是通过命令完成的,不依赖于TCL环境,达到无论怎样并行,在任何标准TCL环境下都可以自动识别用例,和接收测试结果的效果。
附图说明
图1是现有技术并行脚本执行器实现方法示意图。
图2是现有技术多解释器实现方法示意图。
图3是本发明的方法流程图。
图4是利用10种命令实现本发明的过程示意图。
具体实现方式
图3是本发明的方法流程图。下面就结合该流程图具体讲述本发明的具体实现方式。
首先,建立一套能够实现脚本并行的命令,我们称作并行支持命令族。并行支持命令族分为三种,分别是主命令、实现同步的命令和记录测试结果机制的命令。
主命令包括parellel、parellel-start、parellel-close、parellel-delete,实现同步的命令包括parellel-resume、parellel-wait,记录测试结果机制的命令包括record、RecordInit、RecordExit、testcase命令。
为了达到脚本并行方法能够通用于所有的TCL,那么就要采取不依赖任何测试工具的实现方案。正好TCL支持扩展库功能,通过把上述功能实现在一个动态库,即扩展库里,在需要脚本并行的情况下,执行扩展包加展(Package require)命令后,即可把该扩展库实现的命令加载进内存供用户使用。扩展包加展(Package require)命令是将扩展库里的数据包加载进内存的命令。所以该脚本并行的方法的实现,就是靠实现一个这样的扩展库来达到目的,该动态库名字叫TCLTCM。
下面结合图4讨论10种命令的功能及利用10种命令实现本发明目的的过程。
称执行parellel命令的解释器线程为parellel线程。该线程的解释器是主解释器(17),一般是先执行parellel命令(14)定义并行执行体,然后通过parellel-start(15)或者parellel-resume(16)启动执行体中的一个或多个或者全部的分支,每个分支实际上就是一个线程,它启动线程运行和新建解释器(38),创建出分支解释器(39),执行分支中定义的脚本语句。分支线程如图4右上部所示,它就是我们实现脚本并行,所要启动的各个并行执行的部分,它们可以和parellel所在线程并发执行,而且执行不同的脚本。由于分支定义支持脚本语句,而不是脚本文件,所以可以作到函数级甚至语句级的并行。
下面对10种命令进行分述。
主命令:
parellel命令(14)定义并行执行体,在并行执行体缓冲区(37)中建立并行执行体和它的分支的数据(26),这些数据的字段包括并行执行体名字、用户变量数组、Tcl环境数组、Tcl函数数组,还包括分支数量以及每个分支的名字、分支执行的语句等。其次,把所在解释器(17)的用户变量声明为全局变量(25),以便于进行分支解析时,分支能够见到。
parellel-start命令(15)先把用户变量、Tcl环境、Tcl函数(27)保存在对应的并行执行体的并行执行体缓冲区(37),然后创建并启动每个分支对应的线程,这个线程执行过程中创建分支解释器(39),并在这个解释器上加载该并行执行体对应的用户变量、Tcl环境、Tcl函数,最后执行该分支对应的语句(40),这样就可以执行用户定义的每个并行部分该执行的功能。
parellel-close命令(18)终止分支对应的线程(28),它可以终止一个、多个或者全部的分支线程,同时释放对应的解释器。
parellel-delete命令(19)会清除并行执行体在并行执行体缓冲区(37)所占的资源(29),这样在执行该命令之后该并行执行体就已经不可用,如未执行此命令,实际上该并行执行体是可以通过parellel-start和parellel-resume重新启动的。
实现同步的命令:
parellel-resume命令(16)可以启动一个、多个或者全部的分支线程(30),启动之后的分支如parellel-start启动之后的分支一样干相同的工作。
parellel-wait命令(20)主要用于并行脚本之间同步,执行它可以等待该并行执行体的其他分支和并行执行体的主解释器执行完毕后,该命令才终止(31),进行下一程序。这在实际测试当中,在需要其他多个并行任务完成才能进入到下一步的情况很有用。
记录测试结果机制的命令:
testcase命令(24),并行执行时如果仅仅输出日志是无法知道每一部分结果的,所以需要一种识别用例的机制,这是通过testcase来声明用例(36),而在后面的record命令报告测试结果时,就知道报告的是什么用例的结果。这样,对于用户来说,不但知道测试的结果,还知道脚本的具体执行情况。
报告测试结果需要一种公共的机制,否则它就将依赖于具体的测试工具。这里的实现是在需要获得结果的客户端(33)实现一个公用的应用程序编程接口(API)可以给所有工具使用,只要该工具调用该应用程序编程接口(API),就可以在需要的时候源源不断地获得测试结果。这个应用程序编程接口(API)实际上是一个服务端,它创建套接字等待Tcl脚本连接它,同时要求用户提供一个回调函数,把该回调函数登记到这个应用程序编程接口(API)上,这样当该应用程序编程接口(API)收到测试结果并解析好之后,就直接通过回调函数传给具体的工具。
RecordInit命令(21)负责连接客户端应用程序编程接口(API),建立连接的过程在图4中用32表示。
record命令(22)负责把测试结果发送给客户端应用程序编程接口(API),发送过程在图4中用34表示。
RecordExit命令(23)负责关闭到客户端应用程序编程接口(API)的连接(35)。
通过上面的过程,就实现了本发明的脚本并行。
将本发明的并行支持命令族的10个命令详细说明如下:
1、parellel
[命令含义]
定义一个并行执行体。
[命令说明]
定义一个并行任务。这个并行任务可以包含一个或多个分支,每个分支可以由不同的脚本构成,也就是说,每一分支是一个欲实现的并行任务,在执行任务时各个分支将并行执行。parellel并行任务在使用之前预先定义,使用完以后再删除。如果当前已经定义了parellelName,则以新定义为准,删除旧的任务定义。所有并行相关命令都包含在“parellel”域里。
[命令格式]
parellel parellelName{
    branch branchName1?-hold??-suspend?Script
    branch branchName2?-delay time??-hold??-suspend?Script
    ......
}
[参数说明]
parellelName:并行执行体的名字。
branchName1、2......:并行执行体内的一个分支的名字,一个执行体内可以定义多个分支,每个分支是一个需要执行的并行任务的脚本。每个分支都有可以有独立的变量、函数、文件、数据库连接、远程登陆连接等。
夹在两个?号之间的表示该项为可选项。
-delay time:分支延迟启动时间值,单位为秒,分别标识每个分支启动后过多长时间开始执行,如无该项则该分支是启动后立即执行。
-hold:指明分支不会自动终止,如无该项表示会自动终止。
-suspend:指明分支是阻塞的,即挂起,如无该项表示分支是启动的。
Script:这是实际的TCL语句,可以是用{}括起来的复合语句。
[返回值说明]
字符串类型,返回ok代表成功,fail代表失败。
[命令示例]
parellel A{
   branch aa{source a.tcl}
   branch bb{
      set catchReturn2[catch{source b.tcl}]
      if{catchReturn2!=″0″}{
         A close aa
      }
   }
}
在上例中,定义了一个并行执行体,该并行执行体有2个分支:aa和bb。其中,分支aa是较简单的语句,而分支bb稍复杂。
2、parellel-start
[命令含义]
启动一个并行执行体。
[命令说明]
无。
[命令格式]
parellelName start
[参数说明]
parellelName:并行执行体的名字。
[返回值说明]
字符串类型,返回ok代表成功,fail代表失败。
[命令示例]
A start
该命令表示启动并行执行体A,如果要启动并行执行体A的某一特定分支时,要用下面的parellel-resume语句。
3、parellel-close
[命令含义]
结束正在运行的并行执行体之中的任务分支,也可以结束所有分支。
[命令说明]
结束正在运行的任务分支。如果不指定任务分支名字,则结束所有分支。
[命令格式]
parellelName close?branchName...?
[参数说明]
parellelName:并行执行体的名字。
branchName:并行执行体内的一个分支的名字,夹在两个?之间,表明该参数是可选的,当该参数存在时,则结束该参数对应的分支,如该参数不存在,则结束整个并行执行体。
[返回值说明]
字符串类型,返回ok代表成功,fail代表失败。
[命令示例]
A close aa
上述命令表示结束并行执行体A中的分支aa。
4、parellel-delete
[命令含义]
清除一个并行执行体,这个命令会释放与并行执行体有关的资源。而上面的parellel-close命令则仅是结束并行执行体或其分支,并不释放其资源。
[命令格式]
parellelName delete
[参数说明]
parellelName:并行执行体的名字。
[返回值说明]
字符串类型,返回ok代表成功,fail代表失败。
[命令示例]
A delete
上述命令表示删除并行执行体A,并释放与其有关的全部资源。
5、parellel-resume
[命令含义]
启动指定的阻塞分支。如果不指定分支名字,则启动所有的阻塞分支。
[命令格式]
parellelName resume?branchName...?
[参数说明]
parellelName:并行执行体的名字。
branchName:并行执行体内的一个分支的名字,夹在两个?之间,表明该参数是可选的,如该参数存在,表示启动该并行执行体中的某个阻塞分支,如该参数不存在,表示启动整个并行执行体。
[返回值说明]
字符串类型,返回ok代表成功,fail代表失败。
[命令示例]
A resume aa
上述命令表示启动并行执行体A的aa分支。
6、parellel-wait
[命令含义]
等待指定名字的分支运行返回。
[命令格式]
parellelName wait-any?branchName...?
[参数说明]
parellelName:并行执行体的名字。
-any:带该参数就应该省略branchName参数,该参数指明等待所有的分支运行返回。
branchName:并行执行体内的一个分支的名字,夹在两个?之间,表明该参数是可选的,如果该参数存在,则没有-any参数,表明等待该分支运行返回,如果无该参数,应有-any参数,表明等待所有的分支运行返回。
[返回值说明]
字符串类型,返回ok代表成功,fail代表失败。
[命令示例]
A wait aa
上述命令表示等待并行执行体A的分支aa运行返回。
7、RecordInit
[命令含义]
测试结果报告机制准备,任何需要报告测试结果的脚本最初都要执行这个脚本命令。
[命令说明]
此命令还设置记录测试结果的方式,有通过套接字记录到客户端(OUI)、写测试结果日志两种方式,可以两种方式同时使用,一个参数都没有的缺省值为-oui:127.0.0.1。
[命令格式]
RecordInit  -oui:x-log:LogPathName
[参数说明]
-oui:x:选择记录测试结果到客户端(OUI)的结果记录方式,x是客户端(OUI)的IP地址,如果缺省x项,则默认缺省值为-oui:127.0.0.1。
-log:LogPathName:选择写测试结果日志记录方式,LogPathName是设置的结果日志文件全路径。
[返回值说明]
字符串类型,成功则返回″ok″,失败将抛出异常,catch可以捕获。
[命令示例]
RecordInit-oui:10.76.144.152
上述命令表明选择记录测试结果到客户端(OUI),其IP地址为10.76.144.152。
8、RecordExit
[命令含义]
测试结果报告机制关闭。
[命令格式]
RecordExit
[返回值说明]
字符串类型,总返回ok代表成功。
[命令示例]
RecordExit
该命令表示测试结果报告机制关闭。
9、record
[命令含义]
报告测试结果。
[命令格式]
record-cmdinfo?message??-result string??-error string??-msg string?
[参数说明]
-cmdinf确定发送的不是测试结果,而是脚本命令执行过程信息,该选项用于脚本、用例调试;
?message?是记录信息文本,也可以用后面的?-msg string?命令字来记录文本信息,但两者不同时出现,本参数是可选的;
?-result string?,result是命令字,表示结果信息,对于命令字result,string是与其对应的测试记录字,本参数是可选的;
?-error string?,error是命令字,表示错误信息,对于命令字error,string是与其对应的测试记录字,本参数是可选的;
?-msg string?是记录信息文本,也可以用前面的?message?命令字来记录文本信息,但两者不同时出现,本参数是可选的。
[返回值说明]
成功返回ok,失败则抛出异常供catch捕获。
[命令示例]
Record-result ok
上述命令表明测试结果的测试记录字是ok,结果测试成功。
10、testcase
[命令含义]
定义一个测试用例。
[命令格式]
testcase name{args}{body}
[参数说明]
name:测试用例的名称。
args:用例的参数表。
body:测试脚本语句体。
无返回值。
[命令示例]
Testcase Dial200{Caller Callee}{
   Dial 200
   Redial 1
   ...
}
上述命令定义了一个测试用例,其名称叫Dial200,有Caller、Callee两个参数,脚本语句的意思是先拨号200,再二次拨号1,测试交换机端的反应是否正常。

Claims (4)

1、一种实现脚本并行执行的方法,其特征在于,它包括以下步骤:
a、建立一套能够实现脚本并行的命令,将其存放在扩展库中,在需要脚本并行的情况下,把扩展库中的命令加载到内存,所述命令至少包括:
parellel命令,定义并行执行体,并行执行体包括若干分支,每一分支是一个欲实现的并行任务,在缓冲区中建立并行执行体和它的分支的数据;以及
parellel-start命令,把定义并行执行体时建立的数据保存在缓冲区,然后创建并启动每个分支对应的线程,这个线程执行过程中创建解释器,并在这个解释器上加载保存的定义并行执行体时建立的数据,最后执行该分支对应的并行任务;
b、执行扩展库中的命令,并行执行脚本定义的并行任务。
2、根据权利要求1所述的实现脚本并行执行的方法,其特征在于:步骤a中,所述的一套能够实现脚本并行的命令还包括:
parellel-close命令,终止分支对应的线程,它可以终止一个、多个或者全部的分支线程,同时释放对应的解释器;
parellel-delete命令,会清除并行执行体在缓冲区所占的资源。
3、根据权利要求1所述的实现脚本并行执行的方法,其特征在于:步骤a中,所述的一套能够实现脚本并行的命令还包括以下实现同步的命令:
parellel-resume命令,启动一个、多个或者全部的分支线程;
parellel-wait命令,执行它可以等待该并行执行体的其他分支和并行执行体主解释器执行完毕后,该命令才终止,进入下一步的情况。
4、根据权利要求1所述的实现脚本并行执行的方法,其特征在于:步骤a中,所述的一套能够实现脚本并行的命令还包括以下记录测试结果机制的命令:
RecordInit命令,负责连接客户端应用程序编程接口API,应用程序编程接口API在客户端公用,它创建套接字等待工具命令语言Tcl脚本连接它,同时要求客户提供一个回调函数,把该回调函数登记到这个应用程序编程接口API上,当该应用程序编程接口API收到测试结果并解析好之后,就通过回调函数传给客户端;
record命令,负责把测试结果发送给客户端应用程序编程接口API;
RecordExit命令,负责关闭到客户端应用程序编程接口API的连接;
Testcase命令,声明测试用例,以便在record命令报告测试结果时,明确报告的是什么用例的结果。
CNB021525536A 2002-11-17 2002-11-17 实现脚本并行执行的方法 Expired - Fee Related CN100440759C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB021525536A CN100440759C (zh) 2002-11-17 2002-11-17 实现脚本并行执行的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB021525536A CN100440759C (zh) 2002-11-17 2002-11-17 实现脚本并行执行的方法

Publications (2)

Publication Number Publication Date
CN1501603A CN1501603A (zh) 2004-06-02
CN100440759C true CN100440759C (zh) 2008-12-03

Family

ID=34234791

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB021525536A Expired - Fee Related CN100440759C (zh) 2002-11-17 2002-11-17 实现脚本并行执行的方法

Country Status (1)

Country Link
CN (1) CN100440759C (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100370432C (zh) * 2004-08-18 2008-02-20 华为技术有限公司 一种嵌入式软件自动化测试的装置及其方法
CN100359466C (zh) * 2004-08-27 2008-01-02 华为技术有限公司 工具命令语言集成开发系统
CN100456710C (zh) * 2007-02-08 2009-01-28 华为技术有限公司 实现Tclsh指令远程调用的方法和系统
CN101916187B (zh) * 2010-08-11 2013-05-01 深圳市共进电子股份有限公司 一种命令行界面的实现方法
CN103235758A (zh) * 2013-05-14 2013-08-07 盛科网络(苏州)有限公司 实现并发性测试脚本的测试平台的方法和装置
CN107391266B (zh) * 2017-06-01 2021-03-30 华南理工大学 一种图形化编程多线程同步方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001024448A1 (de) * 1999-09-30 2001-04-05 Siemens Aktiengesellschaft Konfigurieren eines telekommunikationsnetzes mit mehreren netzregionen
WO2002019732A1 (en) * 2000-09-01 2002-03-07 Nokia Corporation Architecture for service script execution and management
CN1357981A (zh) * 2000-12-04 2002-07-10 深圳黎明电脑网络有限公司 可进行多种应用协议测试的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001024448A1 (de) * 1999-09-30 2001-04-05 Siemens Aktiengesellschaft Konfigurieren eines telekommunikationsnetzes mit mehreren netzregionen
WO2002019732A1 (en) * 2000-09-01 2002-03-07 Nokia Corporation Architecture for service script execution and management
CN1357981A (zh) * 2000-12-04 2002-07-10 深圳黎明电脑网络有限公司 可进行多种应用协议测试的方法

Also Published As

Publication number Publication date
CN1501603A (zh) 2004-06-02

Similar Documents

Publication Publication Date Title
US7496815B2 (en) Method and apparatus for automatic generation of system test libraries
CN109670951B (zh) 一种区块链智能合约调试发布方法及系统
CN100468356C (zh) 通过属性控制的测试实例继承
US6405149B1 (en) System and method for testing a telecommunication system
US7600220B2 (en) Extensible execution language
CN105868105A (zh) 一种应用遍历测试方法、设备及移动终端
CN107832207A (zh) 接口性能测试方法、装置、存储介质和计算机设备
EP2171584A2 (en) Extensible execution language
CN111782513B (zh) 基于dll的卫星地面通用自动化测试方法
CN101137170A (zh) 一种嵌入设备的软件自动测试工具及方法
CN101226502B (zh) 一种自动化测试方法及系统
CN109542712A (zh) 服务器压力测试方法、装置、计算机设备和存储介质
CN109582517A (zh) 系统应用自动化测试方法、装置、系统及工具存储端
CN102118281A (zh) 自动化测试方法、装置及网络设备
CN109726134A (zh) 接口测试方法和系统
CN100440759C (zh) 实现脚本并行执行的方法
CN105045699A (zh) 移动终端与智能卡一致性测试自动连跑的方法及系统
EP1156418A1 (fr) Interface applicative multiprocesseur, ne nécessitant pas l'utilisation d'un système d'exploitation multiprocesseur
CN109271316A (zh) 安卓设备及其自动化测试方法、存储器
CN113590491B (zh) 一种测试平台和产品测试方法
CN104182344B (zh) 一种覆盖安装测试方法及装置
US8305910B2 (en) Method and apparatus for configuring, and compiling code for, a communications test set-up
CN100349126C (zh) 一种在Python中实现API钩子测试的方法
CN112416790B (zh) 一种嵌入式软件离线重放调试方法和装置
CN103678054B (zh) 用于BACnet设备的测试方法及装置

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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20081203

Termination date: 20121117