admin管理员组

文章数量:1531667

2024年4月23日发(作者:)

2011年第8期 

中图分类号:TP311 文献标识码:A 文章编号:1009-2552(2011)08—0205一o4 

基于TCL语言的MMLTOOL自动化测试工具的实现 

陈 刚 ,羌铃铃。 

(1.中软国际资源信息技术(无锡)有限公司,南京210031;2.深圳市金华业软件系统有限 

公司南京办事处,南京210031;3.江苏省测绘工程院,南京210013) 

摘要:随着软件开发规模的增大、复杂程度的增加,软件测试变得越来越困难,自动化软件 

测试工具能够有效降低软件测试难度。针对智能网平台MML命令传统手工测试繁重耗时且效率 

低下的特点,提出了一种基于TCL脚本语言的MML命令自动化测试工具。对该自动化测试工具 

的整体功能和设计环节进行了详细的说明。 

关键词:软件测试;MML;自动化测试;TCL脚本语言 

Implementation of automatic testing tool MMLTOOL 

based on TCL language 

CHEN Gang 。QIANG Ling—ling 

(1.China Software Internation Resource Information Techology(Wuxi)Limited Company,Nanjing 210031,China; 

2.Headware Software System Limitd Company eof Shenzhen,Nanjing 210031,China; 

3.Institute of Surveying and Mapping n iJingsau Province,Nanjng i210013,China) 

Abstract:With the increasing scale of software development and enormous complexity,software testing 

task becomes more and more dififcult,automated software testing tools can effectively reduce the dificulty 

of sofwarte testing.Because MML commands for the intelligent network platform have the traditional time— 

consuming manual testing and heavily inefifcient features,the article introduces a kind of automated 

testing tols based on TCL script language.The overall function of automatic testing tols and speciifc 

aspects have been descripted in detail. 

Key words:software testing;MML;automatic testing;TCL script language 

0 引言 

软件测试在软件开发中占有重要的地位,软件 

测试的效率和准确度直接关系到软件的开发周期和 

质量,因此对软件测试的要求越来越高,自动化测试 

替代手工测试是软件测试的主流趋势…。自动化 

1 智能网平台MML命令传统手工测 

试的分析 

MML(Man Machine Language)是智能网中连接 

平台组件之间、客户端和平台之间的通讯桥梁和纽 

带,在智能网中发挥越来越重要的作用。MML是智 

能网为方便客户端与平台交互而引入的通讯协议, 

测试就是通过软件程序模拟软件使用者,准备数据, 

调用功能接口,检查功能执行结果以验证功能的正 

确性的过程。采用自动化测试工具能有效地降低软 

件测试难度,是一种非常实用的手段 ]。在智能网 

平台中由于MML命令测试的工作存在着很多重复 

性劳动并且繁杂耗时,本文提出了一种基于TCL脚 

主要用于智能网中PBSMAP模块、WebSMAP模块、 

OMCAgent模块以及第三方管理客户端与平台之间 

的交互。 

MML是兼具有协议和API特性的语言,其手工 

收稿日期:2011一O1—19 

本语言的MMLTOOL自动化测试工具。 

作者简介:陈刚(1978一),男,工程师,研究方向为软件自动升级。 

即时聊天工具,地理信息系统,电厂MIS系统,智能网 

应用。 

-—-——

205-—-—— 

测试过程就是启动控制台端的MMLTOOL工具,然 

后组装MML命令,传递给服务进程处理,检查分析 

运行结果、数据库数据和日志。其测试过程有如下 

缺点:(1)MML命令需要重复组装,可以保存组装后 

的MML命令用于重复执行,但是参数固定,无法处 

理动态情况,比如手工测试时切换不同的付费类型、 

用户级别、帐号等,就需要重新修改MML命令。 

(2)检查点多且繁琐复杂,测试人员因为精力、时间 

关系无法一一做全面细致检查,从而在软件中留下 

隐患。(3)测试过程无法重复,重复测试需要耗费 

很多人时。每一次测试过程都需要从头开始,重新 

配置数据、重新装配MML命令。 

2 TCL语言的初步介绍 

TCL(Tool Command Language)是一种解释执行 

的脚本语言(Scripting Language)。它拥有一个固有 

的核心命令集,同时还具有和C/C++语言类似的 

控制结构:if控制、循环控制和switch控制等,并支 

持过程的定义和调用,对数组和字符串等简单数据 

结构也提供了支持 』。 

由于TCL的解释器是用一个C\C++语言的过 

程库实现的,这个库中有丰富的用于扩展TCL命令 

的C\C++过程和函数,所以可以较为容易地在C\ 

C++应用程序中嵌入TCL,而且每个应用程序都可 

以根据自己的需要对TCL语言进行扩展。可以针 

对某一特定应用领域对TCL语言的核心命令集合 

进行扩展,加入适合于自己的应用领域的扩展命令; 

如果需要,甚至可以加入新的控制结构,TCL解释器 

将把扩展命令和扩展控制结构与固有命令和固有控 

制结构同等看待。扩展后的TCL语言将可以继承 

TCL核心部分的所有功能,包括核心命令、控制结 

构、数据类型、对过程的支持等。根据需要还可以屏 

蔽掉TCL的某些固有命令和固有控制结构,一旦新 

定义的命令和控制结构与固有命令和控制结构同 

名,固有命令和控制结构将被新定义的命令和控制 

结构所屏蔽。通过对TCL的扩展、继承或屏蔽,用 

户用不着象平时定义一种计算机语言那样对词法、 

语法、语义、语用等各方面加以定义,就可以方便地 

为自己的应用领域提供一种功能完备的脚本语言。 

3 整体功能与系统设计 

MMLTOOL是基于TCL语言的自动化测试工 

具,包括测试平台端与服务器功能端。在测试平台 

端编写测试用例,利用H11’P协议把测试用例发送 

到服务器功能端进行执行。用户可以使用它进行基 

于TCL脚本的用例设计、实现以及执行,并且还可 

..——

206 .—— 

以使用工具提供的扩展命令进行数据库操作、 P 

操作、TELNET操作等。其主要功能如下。 

3.1用例管理功能 

工具采用文本文件的方式进行用例管理,集用 

例的编写、执行、管理于一体,方便用户进行基于 

TCL脚本的测试。工具还可以通过目录的形式对用 

例进行分层管理,一个测试项可以分成不同的测试 

子项;借鉴c语言编程模式,通过工程脚本、预置脚 

本、后置脚本等形式将工程的公共部分、测试项的公 

共部分提取出来,方便脚本的重用和管理。 

3.2脚本编辑功能 

该工具提供了强大的脚本编辑功能:高亮度显 

示不同类型的关键字;通过灵活模板的形式提供快 

速的脚本编辑方式;提供脚本查找替换、打开脚本查 

找替换、工程查找替换等强大的查找替换功能。 

3.3问题定位功能 

分析测试用例执行的结果。如果不通过,可以 

通过查看MMLTOOL自身的日志及平台日志来分 

析。用户可以根据需要将用例的日志输出,如果用 

例执行错误,只需双击日志视图中的错误报告,就可 

以轻松定位到出错脚本所在的位置,脚本错误定位 

更快速。 

3.4结果保存功能 

工具可以分为不同的测试轮次保存每个轮次的 

执行结果,用户可以根据需要将测试结果导出,以方 

便对不同测试轮次的测试统计分析,用户还可以根 

据自己需要对输出结果按照不同的形式保存。 

3.5工具扩展功能 

用户可以根据需要将其他辅助测试工具集成到 

MMLTOOL测试工具当中,或者将TCL脚本文件集 

成到该测试工具当中。 

4 具体实现方法与技术思路 

4.1创建一个工程 

创建一个MMLTOOL的测试项目工程,其中包 

含整个项目的所有测试用例。 

MMLTOOL的用例组织结构为工程、测试项、用 

例、预置脚本、后置脚本,每一个工程都可以有一个 

工程脚本,工程脚本在每个用例执行之前都会执行, 

般在工程脚本中设置全局的数据、函数等。 

每个工程由若干个测试项组成,一个测试项是 

若干个测试子项或用例的组合,每个测试项可以有 

个预置脚本和后置脚本,在用例脚本中执行 

PreMML和AftMML时会执行本测试项或父测试项 

下的预置脚本和后置脚本,所以在预置脚本和后置 

脚本中可以设置本测试项下的公共数据设置部分。 

4.2环境设置 

DB、SCPDB、SERVICEKEY和数据库表名等。全局 

变量g—ResultFlag主要是在一些检查函数中用到, 

(1)Agent设置 

主要思想是在检查数据库结果或者MML返回值 

时,如果出错则将该变量置为1,在用例的最后统一 

检查g—ResultFlag字段,而不是出错即返回。这样 

保证了将一条MML命令的所有的检查点都检 

查到。 

设置MMLTOOL与SMP服务器的连接。利用 

TCL脚本编写实现访问SMP服务器的连接函数 

OpenMML,其中参数接口包括运行MML命令的服 

务名称例如newvpn,SMP服务器的地址例如lO.41. 

28.70、端口号例如26999,登陆用户名vpnadm与密 

码TELLIN。 

(2)initialization工程集 

MMLTOOL规定每个用例集都必须有一个预置 

脚本,其作用主要是传递MML命令及设置本用例 

集中的公共数据。Initialization中的预置脚本与其 

(2)数据库设置 

设置MMLTOOL自动化测试工具和数据库的连 

接。这里主要是设置运行MML命令时SMP和SCP 

数据库。通过TCL脚本编写实现数据库的访问函 

数OpenDB,实现参数包括数据库名DBName、连接 

的数据库的用户名UserName、连接的数据库的密码 

UserPass、连接数据库的字符串ConnectStr。 

数据库设置定义了MML测试中需要连接的服 

务数据库,数据库名是数据库连接的一个别名(用 

户可以自己定义),并不是一个真正的数据库服务 

器上的数据库名称,用户名称和用户密码为连接该 

数据库的真实用户名与密码,需要注意的是,此处设 

置的数据库连接是供工具使用的,主要用于MML 

命令执行前的数据设置和MML命令执行后的数据 

检查,并不是为MML服务进程设置数据库连接的。 

由于MML通常需要改变SMP和SCP的数据库,测 

试用例就需要对SMP和SCP的数据进行检查,数据 

库名一般设置为可以明确表示那个结点的数据库。 

(3)主机设置 

设置MMLTOOL自动化测试工具和主机的连 

接,主机设置主要是定义对应的SMP和SCP的机器 

IP地址,用户名和密码。主机名称是主机连接的一 

个标识;以便进行TELNET操作和FI1P操作。使用 

TCL语言编写函数I_ogin,实现参数信息包括:主机 

地址IP、主机名称HostName、登陆用户名Login. 

Name、登陆用户密码l_ ̄ginPass。要求成功搭建环境 

且环境正常启动,并且已经正确配置Informix Client 

且成功连接数据库。 

4.3测试用例公共数据设置 

其主要的目的是为用户编写用例,为各个测试 

用例的相互独立执行创造统一的初始化状态数据。 

其主要包括:工程脚本、initialization工程集。 

(1)工程脚本设置 

主要是设置一些多数用例都会执行的变量、函 

数等等。一般需要修改和定义的变量包括g

Re. 

sultFlag g

ServieeName SMPHOST SCPHOST SMP. 

他用例集中的区别是,没有将MML命令封装。 

对所用到的数据库中的表进行初始化,需要设 

置的初始化数据有已定义的资源池数据、权限数据、 

业务级表Service表数据以及其他测试过程中需要 

用到的初始数据。设置初始化数据使用AddTable— 

Data函数,这个函数可以向数据库中插入指定数据 

的记录,对于没有指定值的字段,插人默认值。注意 

别忘了丌P到相应的主机上,并将初始化数据导出 

备份,以待其他用例执行时再次导入。 

4.4 MML命令用例集设置 

4.4.1创建用例集 

用例集的划分一般依据MML命令来分组例如 

集团命令管理、成员命令管理等,命令名最好是能指 

明命令的功能。MML用例的一个显著特点是考察 

条命令可以细化为很多测试用例,因此用例组织 

方式可以按照MML命令组织,即一个MML命令一 

个用例集;也可以根据命令特性把多个命令组织为 

个更大的用例集。例如:集团命令管理、成员命令 

管理等。每个用例集都有自己特色的变量,这些变 

量就可以定义在预置脚本中。例如,每个用例集的 

MML命令都是不相同的,但是在一个用例集内部, 

都是使用项目的MML命令,就可以在预置脚本中 

设置MML命令。 

4.4.2创建用例 

用例的命名一般依据测试点,及测试要求来命 

名,在测试用例脚本中按照用例测试所需要的流程 

逐条编写实现。 

4.4.3创建预置脚本 

MMLTOOL规定每一个用例集都必须有一个预 

置脚本。为了减少MML命令测试对环境的依赖, 

MML命令测试所需要的基本业务数据是通过该脚 

本来设置的,而不是像传统的手工测试MML时通 

过SMAP设置数据。预置脚本需要完成BaseTab 

表,Service表等相关表数据的初始化。为了恢复初 

...——

207..—— 

始化数据,用例中用PreMML—R完成对函数“Init— 

4.5执行用例并记录执行结果 

DataBase“的调用。函数“InitDataBase“恢复由 

“initialize用例集”中的Initialize用例初始化的环境 

数据备份,其内部流程如下: 

(1)数据初始化。执行DelTableData删除表中 

数据,执行AddTableData向表中插入规划数据。 

(2)执行CreateInitSql创建load.sql和unload. 

sql 

(3)执行InitDataBase—u将数据导出到文件。 

4.4.4用例的编写 

用例脚本主要完成业务测试,需要完成的操作 

有:调用预置脚本、变量设置、用例数据设置、执行 

MML命令函数、检查分析执行结果和日志数据。本 

文重点阐述MMLTOOL用例构成的三个大的部分。 

(1)预置条件 

预置条件主要是完善用例数据的准备工作。包 

括:期望值(MML命令的期望值及日志的期望值)、 

从资源池中获取资源、执行预置脚本、设置变量数 

据、设置数据库数据。用例数据准备及用例数据微 

调。利用前面准备的数据库中的数据,对预操作记 

录的部分字段值通过函数进行调整,达到用例运行 

的数据准备。 

(2)执行命令 

将前面设置的数据,传人MML接口,并执行 

MML命令。例如: 

oMML Execute¥RETN ¥DESC MSISDN= 

¥AccountNumber,CUSTOMTYPE=l,RINGNO= 

123456 

(3)结果检查 

包括MML返回值检查、基本表检查、日志表检 

查、其他表检查、返回MML执行结果。 

if{¥g_ResuhFlag!:0}{ 

RetMML”用例执行失败!” 

} 

结果检查主要是完成MML执行后日志的检查 

及对命令操作的相关表是否进行改动的确认。 

4.4.5用例界面展现 

对测试用例集的界面化定购与可饰化展现。使 

用面向对象的可饰化界面编程工具例如Visual C++ 

或PowerBuilder,利用树型控件将大批量的测试用例 

集以及用例集下面的单个测试用例创建成以测试用 

例集作为树节点、单个测试用例作为叶节点的树型 

数据结构,并为每个叶节点前增加选择框,便于多个 

测试用例同时执行对应的MML命令,实现无人值 

守的批量自动化测试。 

...——

208 ..—— 

测试用例编写完毕后,就可以开始执行MML 

命令的这些测试用例了。 

MMLTOOL自动化测试工具可以分别为不同的 

测试轮次保存每个轮次的执行结果,如果一条测试 

用例执行结果与预期结果不一致,表示该用例执行 

失败,在程序设计时使用树型数据结构的属性或方 

法将树型结构图中该用例对应的树节点标记成红 

色;如果执行成功就标记为绿色。同时为当前测试 

用例的关键步骤记录操作日志。每一条对数据库内 

容进行改动的MML命令操作都会记录日志,其存 

在的目的是方便数据的维护。分析测试用例执行的 

结果时,可以通过查看MMLTOOL自身的日志及平 

台日志来分析。 

4.6用例统计及输出报表 

自动化用例执行完毕后,就需要分析执行结果, 

输出测试报表。 

(1)测试用例统计 

当前运行测试用例的工程信息。例如包括用例 

集有多少个,测试用例有多少个,预置脚本有多少 

个,后置脚本有多少。便于用户了解当前工程的测 

试用例信息。 

当前运行测试用例的通过信息。例如测试用例 

总数是多少,当前批次有多少用例没有执行,当前批 

次通过了多少个测试用例,还有多少个测试用例未 

通过。便于用户能够清楚地掌握当前批次测试用例 

的通过信息。 

每一个测试用例运行完毕都会生成这个测试用 

例的报告。当所有测试用例运行完毕,会根据所有 

测试用例的运行结果生成一个总的测试报告 J。 

(2)输出报表 

将所有测试用例从测试项目工程中导出到 

XML或CSV文件格式便于用户浏览。 

5 结束语 

MML自动化测试带来的优点有:(1)用例之间 

完全独立,易于定位问题。用例执行前都回滚到初 

始化状态,用例之间互不影响。(2)测试过程脚本 

化。把测试过程脚本化是MML自动化的最大优 

点,它保证每次测试过程规范化,从而使测试过程可 

追踪、可定位,易于评估分析。(3)检查点细致完 

备。完善的用例脚本设计完全可以规避由于人的劳 

累、疏忽、粗心等原因造成的漏测、漏检查等。 

(4)结果易于统计分析。 (下转第212页) 

点移动,直至保护动作,记录测试值为0.28A,实测 

差流计算值 =5—0.28×7.94=2.78A。 

④同理,在测试C点时, =8A。在测试仪b 

相通入发电机a相电流, =8 0。A测试仪a相通 

人变压器A相电流, =0.52 180。A;测试仪c相 

通人发电机c相电流, =4.1 180。A。变量为,Ⅱ, 

图4比率制动系数测试 

②在线段AD上任取两点B、c,保证两点的横 

坐标位于, 和 之间。例如,设 =5A,,zc=8A 

(为保证测试的准确性,两个电流值不宜太接近)。 

③在测试B点时,如果在测试仪b相通人发电 

机a相电流为5A,相位角为0。;理论上变压器高压 

侧折算至低压侧的临界动作值为 ,根据公式(3) 

可知:(5一X):0.4(5—2)+1.5,X:2.3A,理论上 

B点临界差流I,B=5—2.3=2.7A。由计算结果也 

可验证,B点制动电流 =max[5,2.3]=5A。将 

折算到变压器高压侧,得到变压器A相理论临界 

动作电流为2.3/7.94=0.29A,相位为180。。 

为保证初始测试点B 点可靠位于制动区,即初 

始测试差流, <2.7A,变压器A相实际通人电流 

应略大于0.29A。由以上分析可知,测试点B 的横 

坐标同B点,1,8=5A;纵坐标, <2.7A,即B 点位 

于B点正下方。 

为消除变压器C相差流对A相差动比率制动特 

性测试的影响,发电机c相应通人的电流为 

2.3 180。A,实际测试期间即便变压器高压侧A相电 

流略有调整(即实际A相电流可能在0.29A附近), 

在c相所产生的差流也不足以引起保护误动作。 

经上述分析,在测试仪b相通人发电机a相电 

流 =5/_0。A;测试仪a相通人变压器A相电流 

步长为0.01A,启动后保护不应该动作,缓慢减小 

则测试点由C 点向c点移动,直至保护动作,记 

录测试值为0。51A,如图5所示。实测差流计算值 

值, c=8—0.51 X7.94=3.95A。 

图5测试窗口 

⑤比率制动系数测试值 

示。 

/c'= I ic—I 忸3

95—2.78 

的计算,如表2所 

0.4l 

3.3.4测试速断区斜率 

由于速断区斜率为微机保护固化值,理论上为 

O,因此该参数不可调,可采用与测试比率制动系数 

相似的方法进行测试,此处不再赘述。 

注:由于该项测试时通入测试仪的电流较大,应 

加快测试速度,防止测试仪烧坏。 

参考文献: 

[1]浅析测试仪有关差动保护制动特性的试验[J].江西电力职业 

技术学院学报,2006(12). 

ta=0.3 180。A;测试仪c相通入发电机c相电流 

:2.3 18O。A。变量为 ,步长为0.01A,启动后保 

护不应该动作,缓慢减小Io,则钡4试点由B 点向B 

(上接第208页) 

[2]郭光荣.电力系统继电保护[M].北京:高等教育出版社,2006. 

责任编辑:刘新影 

手工测试不易于采集测试数据,难评估测试结果,自 

的测试工作中得到了广泛的应用。 

参考文献: 

[1]杨柳,王晓斌.基于SSLVPN自动化测试工具设计与实现[J]. 

动化简化了测试数据采集、统计输出的工作。(5)自 

动化用例的继承性,使回归版本、现版本及后继版本 

成都信息工程学院学报,2009,24(4):361—365. 

[2]朱芳,李曦,赵振西.一种多平台自动化测试工具的设计与实 

现,计算机工程,2004,30(24):186—188. 

不仅减轻了工作量而且更好地保证了版本的质量。 

软件测试是软件开发过程中的一个非常重要环 

节,通过软件测试发现软件中错误和缺陷,这样使得 

软件测试是保证软件质量、提高软件可靠性的重要 

手段 J。基于TCL脚本的MMLTOOL自动化测试 

工具同传统手工测试方法相比带来的优点的确极大 

地提高了测试工作效率,在智能网平台MML命令 

[3]赵丽.基于TCL脚本的自动化测试工具的研究与实现[J].信息 

化研究,2009,35(11):28—30. 

【4]韩振斌,苗克坚.一种分布式软件自动化测试工具的设计与实 

现[J].科学技术与工程,2007,7(8):1774—1777. 

[5]崔红军,饶若楠,邵培南.一种API自动化测试工具的设计与 

实现[J].计算机工程,2007,33(4):270—274.责任编辑:肖滨 

21 2一 

本文标签: 测试用例脚本命令执行