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
A
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
版权声明:本文标题:一种基于TCL语言的通信设备自动化测试平台实现 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1711105232a588727.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论