admin 管理员组

文章数量: 1086019


2024年3月22日发(作者:为什么要少用leftjoin)

2016年第3期 

信息通信 

2016 

(总第159期) 

INFORMATION&COMMUNICATIONS 

(Sum.No 159) 

种基于TCL语言的通信设备自动化测试平台实现 

刘武明 

(广州海格通信集团股份有限公司,广东广州510663) 

摘要:软件自动化测试在应对软件复杂程度爆炸式增长、提高测试效率等方面一直是测试人员研究的重点方向。嵌入式 

通信设备的测试一般是基于命令行或网管协议操作的‘c命令一返回值”方式的测试过程。TCL脚本语言以其可扩展性 

好、简单易上手、字符串处理功能强大、系统兼容性好等特点,在通信设备自动化测试领域占据主流地位。文章介绍一种 

基于TCL脚本语言的嵌入式通信设备软件自动化测试平台的实现。 

关键词:自动化测试:TCL语言 

中图分类号: 文献标识码:A 文章编号:1673-1131(2016)03.0150.02 

1系统总体框架 

功能服务模块是对底层驱动的功能性封装,为上层软件 

TCL语言自动化测试平台总体框架分为四个层次:(1)驱 

提供可直接调用的功能项目API。功能服务层也可划分为两 

动层:负责与待测设备、测试仪表或扩展功能软件等进行通信, 

个子层:通用功能的封装和为特性、模块或产品而特别封装的 

实现对其控制。(2)功能服务层:封装提供具体功能的API接 

专用功能的封装。 

口,上层模块通过直接调用功能层封装好的API完成测试过 

功能服务模块的功能采用package的方式管理,用name. 

程。(3)应用层:不同测试用例的自动化测试脚本的具体实现。 

space的方式划分命名空间,避免命名冲突。当需要加载某个 

(4)任务层:是完成一次测试的任务列表和集合。TCL自动化 

功能或测试特性的基本函数库时,才对该功能进行加载,使用 

测试平台的总体框架图见图1所示。下面就结合总体框架图, 

完毕或模块测试完毕时,释放掉该功能库。制作、加载和释放 

对主要功能模块作详细介绍。 

的过程如下: 

在Fun_A.tcl文件中添加package和namespace: 

package provide Fun

A 1.00;≠f将扩展功能制作成package的 

方式进行加载 

一 --一 

namespace eval::Fun A{;拌每个扩展包都有唯一的命名空间 

虢獬鲁 翻 删 翱 散搬 

份,韧 诫 -幔 斌 试 试 璐赚, 

蚺纯, 脚 辨 脚 脚 脚 商矗麓 

global variables for function level 

环蟪静 雉 瘩 妊 术 毂l 

徽戤 t 2 l 2 ¨ 饿瓤 

一 __一 

procs ofr function leve1 

圆圈圈囡国图 

) 

曰圈图 

在pkglndex.tcl文件中添加package索引: 

package ifneeded Fun

A 1.0[1ist source[iflejoin【pwd][ifle 

图1 TCL自动化测试平台总体框架图 

dirname[info script]]Fun

A.tc1]】;}j}package索引 

1.1驱动层功能模块 

使用时直接加载: 

驱动模块位于系统最底层,存放测试平台对第三方测试 

package erquier Fun-_A 1.0;撑加载扩展功能包 

仪表或测试软件的驱动程序,例如对Spirent Smartbits,TestCen. 

使用完毕释放所加载的内容: 

ter,SNMP,Socket等的驱动代码,这部分代码提供对底层 

namespace forget Fun

_

A; 释放命名空问 

FPGA的接口,部分驱动代码由测试仪表或者软件厂商随设备 

namespacedeleteFun A;样删除命名空间 

开发和提供。 

package forget Fun_-A;撑释放扩展功能包 

底层驱动模块的功能随所控制设备仪表的软件版本升级 

1.3应用层测试脚本 

而升级,驱动代码的使用可查询设备厂商发布的用户手册来 

应用层为针对不同模块和产品开发出来的软件测试 

进行使用。底层驱动模块在测试平台软件启动时首先进行加 

脚本,脚本依据测试用例来开发,测试脚本串行执行,且前 

载,提供上层软件调用。 

项测试用例对系统所做的配置不能对后面的测试造成 

set drvLst”Smartbits SpirentTestCenter Snmp Iperf’ 

影响。 

foreach d¥drvLst{ 

个完整的脚本测试过程如图2所示。 

if[catch{source./Driverg¥d.tel}err]{ 

应用层脚本的工作主要有两个:一是完成本脚本所要做 

puts”Error:Failed to load/Drivers/¥d.tcl:¥err”red 

的测试内容;二是在完成测试的前提下,必须保证前面的脚本 

puts¥errorlnfo red 

对环境的配置对后面脚本没有影响。因此,必须在每个脚本 

} 

开始前备份好当前的测试环境配置,然后清理测试环境,预配 

) 

置本脚本所需要的系统环境,再进行相应的测试。测试结束 

1.2功能服务模块 

时,再重新将备份的配置还原到系统中,从而达到脚本与脚本 

15O 

信息通信 

之间不相互影响。 

测试结果记录模块将每个测试用例的名称、测试开始和 

结束时间、测试结果以及相应的调试信息完整记录在测试结 

刘武明:一种基于TCL语言的通信设备自动化测试平台实现 

set error

return

[catch{source¥RUNNINGTEST)error

— 

result】 

果文件中。当测试用例执行失败时,测试结果记录模块需将 

测试脚本运行错误、测试用例相关的系统运行配置和状态参 

数等查询上来,记录在测试结果的调试信息内容中,用来对测 

试失败的测试用例进行分析和定位。 

) 

2一个完整测试过程 

个完整的基于此测试平台的自动化测试过程如下: 

(1)启动自动化测试平台。当系统正常启动后会进入等 

待测试任务状态,且系统状态处于IDLE状态。 

(2)输入待测试任务。平台正常启动后,便可输入待测试 

任务。如果只执行一个脚本文件的自动化测试,以Fun A的 

图2一个完整的脚本测试过程 

1.4任务模块 

任务层是对测试任务管理的模块。测试的内容由任务层 

安排,一般分为单个功能测试的单任务测试和多个功能串行 

测试的多任务测试。单测试任务时系统直接调用任务所指的 

测试脚本。多测试任务时,采用任务列表的方式对任务进行 

串行管理。多任务测试完整过程见图3所示。 

任务l

一一 L

 I 一任务2

、 

 

 l 

● 

——

i___1 ● 

嘲试脚掌l_,I l潮试释攀2一ll I鬻I试鞠奉 lI 

l l 

———1—一

mU*,- ̄l

 

 J渊{盎睇率2吨} l嚣斌脚奉n幢I 

± 1....。. ..一 l 

. 

苎 l I黼试脚枷nl 

图3多任务测试完整过程 

创建任务lists文件,将待测试的脚本的路径放置其中,例 

如,在task.1ist文件中,包括三个待测试模块: 

/Tests/Fun

A/FunAfunction.test 

———

/Tests/Fun

A/FunA

performance.test 

_

/Tests/FunB/Fun

Bfunction.test 

———

系统运行时,判断所要进行的测试是多个任务的list的测 

试,则会逐个对任务进行加载和测试: 

foreach RUNNING

TEST¥SELECT_-TEST__LIST{ 

功能测试自动化脚本为例,输入: 

run./Tests/Fun

A/Fun

function.test 

——

如果要执行多个脚本的测试,仍以Fun A为例,执行其功 

能和性能两个测试,可先创建多个任务的测试list文件 

task.1ist,然后输入: 

run./Lists/Fun

A/task.1ist 

(3)执行自动化脚本。脚本之间依先后顺序串行执行。每 

个脚本执行时都依据图2中顺序和流程进行,执行完毕后进 

入下一个脚本的执行。全部执行完成后重新进入IDLE状态, 

等待新的任务或者退出。 

(4)完成自动化测试。脚本执行完毕,系统配置恢复到执 

行之前的状态,脚本执行所产生的log文件,即脚本的执行结 

果和定位分析信息文件已经产生,此时可以结束自动化测试 

平台。 

3测试结果分析 

自动化测试的结果以.CSV格式的文件的方式保存在相 

应的测试结果目录。测试结果中,用例名称,测试执行结果, 

测试期望数据(Expected Value),测试实际数据(Actual 

Value)以及脚本执行错误(error result)或必要的调试数据 

等是定位问题的有效信息。一般测试用例执行失败的情况 

下,从用例名称、测试结果期望数据和实际数据的差别就可 

以大致判断出失败的原因是测试脚本错误还是待测特性的 

缺陷。再通过调试信息中系统当时的状态、配置、参数,基 

本可以在不通过分析详细的测试log就可以快速判断出问 

题的所在。 

4结语 

自动化测试能够快速、高效、准确测试系统的功能、性 

能等主要特性,一个好的自动化测试平台能够为自动化测 

试、脚本调试、测试结果分析带来极大的便利。从实际测试 

角度出发,总结手动测试过程和自动化测试中常见的问题, 

设计合理、利于脚本连续稳定运行、测试结果检查准确无误 

和快速处理测试结果并定位和确定问题的自动化测试平 

台,是软件自动化测试开发人员应该不断思考的问题和讨 

论的方向。 

参考文献: 

[1]陈锦富,卢炎生,谢晓东,等.一个组件安全自动化测试平台 

的设计与实现[J].计算机科学,2008 

[2] 戴志华,王烈,周奇.基于XML的软件集成测试自动化方 

法[J].开发研究与设计技术,2007.4 

151 


本文标签: 测试 脚本 功能 结果 任务