在线计费接口自动化测试系统及应用
2015-01-18范典华杨奇民
范典华 杨奇民 代 蕊
(中国移动(深圳)有限公司,广东 深圳 518048)
在线计费接口自动化测试系统及应用
范典华 杨奇民 代 蕊
(中国移动(深圳)有限公司,广东 深圳 518048)
为了解决目前电信运营商在数据流量业务方面基于DCC协议的在线计费接口测试存在的工作量大、测试用例复杂易出错、测试重复性强等问题,本文提出了一种在线计费接口消息自动化测试系统。该系统将接口抓取的文件基于CAP等协议分割,同时自动筛选出全面的消息类型、并利用测试与工具开发解耦的自动化测试执行模块,实现了测试执行过程的全自动化,同时满足了测试效率、测试准确性和测试全面性要求,在生产运营中具有很强的可用性,目前已在国内运营商进行了推广使用。
数据流量业务;在线计费;DCC协议;计费系统;自动化测试
1 引言
在线计费(Online Charging System,OCS)是以在线计费消息作为计费依据并进行实时欠费风险控制的计费模式[1-3]。近几年国内外大部分电信运营商都在从离线计费转向在线计费,OCS将逐步成为新一代的电信业计费方式[4,5]。
OCS在线计费系统一般分为接口层、核心功能层、数据层和应用层[6]。在线计费接口是指核心网与业务支撑网间Gy接口,该接口涉及的厂家设备多,接口消息差异大,导致了不同网元间的接口成功率受影响,在跨省漫游时问题尤为突出,影响了用户的业务使用[7-9]。
2 在线计费接口测试特点
在线计费接口测试具有消息量大、消息结构复杂人工易出错、测试工作重复性强等特点。以中国某运营商某省的流量业务在线计费接口消息量为例,平均每天产生的消息文件为TB级别,消息量为亿级别;接口消息按DCC协议组织,层次多,字段多,字段间关系嵌套、关联、互斥关系复杂,且不同省份的接口测试内容具有90%以上的重复性[10]。目前业界由于缺乏专门的检测工具,在线计费接口测试仍采用人工检测为主[11]。但是由于接口消息量大,人工筛选无法筛选出低频使用的消息类型,导致测试覆盖不全;接口结构复杂,现有测试只能借助一些简单的消息查看工具测试消息的内部细节,结果很容易导致人为错误;不同省间的相同消息人工重复测试,效率极低。
本文提供了一种在线计费接口消息自动检测系统,解决了上述问题。该系统已在国内某运营商的生产上线测试中实际使用,具有较强的实用性。
3 在线计费接口测试系统设计
3.1 系统平台设计
针对在线计费接口消息结构复杂、接口变化快、测试人员开发技能要求低等特点本系统采用基于MVC4+EasuUI技术的Web开发框架,视图层使用JQuery EasyUI组件进行布局展示,控制层主要是业务逻辑的处理,数据层使用文件和MySQL数据库进行数据存储。下面给出了该系统的框架设计图:
视图层(View)通过界面配置测试任务和测试用例,通过多层可伸缩扩展的结构树,使各种场景所需测试用例的配置全界面化;
控制层(Controller)为测试执行模块,根据测试任务,通过调用各个系统程序子模块和相应组件,自动执行测试过程,输出测试结果;此过程利用基于数据驱动的自动化分析技术,自动识别测试任务中的测试用例、自动查找相应的输入数据,再进行比对,整个测试过程全自动化,提升测试效率。
数据层(Model)存放测试输入输出数据。一次性执行的输入数据、过程数据,以文件形式存放同,一次写多次读的数据,例如控制层输出的详细结果记录、统计结果等数据保存到数据库中,用于存档和输出测试报告。
本系统的MVC三层设计实现了将测试用例的配置与后台测试执行逻辑层分离,测试用例的变更不会影响到底层系统代码,实现了用例配置的场景通用性、架构与业务的松耦合性、以及功能组件的易扩展性,并解决了其它自动化测试工具存在对测试人员的代码编写或脚本编写能力有依赖的问题[12]。
3.2 功能框架设计
本设计将在线计费接口自动化测试的核心功能主要分为四大模块。分别为消息分割模块、消息筛选模块,测试用例配置模块和测试执行模块。
消息的分割与筛选模块主要完成接口文件上传和拆分,消息码筛选条件的界面设置和保存、以及自动筛选过功能。
标准用例管理模块主要完配置测试用例的功能。在多层结构树界面中,实现用例的可携带性、字段层次、字段格式等内容的配置,并进行增、删、改、查等操作管理。
消息自动比对功能模块完成测试自动化执行功能。根据前台配置好的测试用例、标准结果,自动匹配输入数据进行全量比对,并将测试结果保存在基于XML的树形数据库中。
测试结果统计模块完成结果管理功能。将比对完的测试结果保存在数据库中,通过XML形式详细记录结果和问题类型,自动生成测试统计结果、测试报告。
3.3 业务处理流程
基于上述平台框架的设计思路和实现的主要功能逻辑,本测试流程在实际的在线计费接口自动化测试的应用中的关键流程步骤,如图2所示。
图2 在线计费自动检测系统业务处理流程图
(1)对从生产系统服务器端口获取到的CAP等格式的在线计费接口消息文件,利用文件分割技术进行分割,从报文文件中剥离出所有独立的十六进制DCC消息原始码,并以文件形式存放。
(2)基于系统设置的筛选规则和自动筛选技术,从海量的DCC消息原始码文件中自动筛选出符合要求的消息包。
1)配置筛选规则。各类消息配置对应的筛选规则,包括消息类型、AVP字段的取值、是否包含、筛选消息条数属性等;
2)解析DCC消息原始码文件,用多层次的树形结构XML文件来保存解析后的DCC消息;
3)逐条过滤,判断解析后的DCC消息是否符合配置筛选规则。
(3)根据前台配置的各类消息测试用例、标准结果和后台比对规则,对每一个输入的消息包的格式及其包含的所有AVP字段进行层次化的全量对比。
1)配置各类消息的测试用例。包括消息结构、层次、可携带性、必选字段和可选字段的取值、数据取值区间、数据值、数据格式等;
2)自动地将各类消息的测试用例和相应输入的消息进行匹配;
3)解析消息包,将消息包按照后台AVP字段配置进行解析,封装成XML格式,保存到数据库;
4)逐层逐个字段检测与标准结果进行比较:包括携带关系、字段间关联关系、互斥关系、嵌套关系、数据格式和取值等。
(4)将自动化测试执行产生的结果统计和入库。
1)对检测出问题的AVP字段按照分类用不同的标记进行标识,并将问题描述分类保存起来;
2)将对比后的消息包和详细描述封装成XML,并保存到数据库中;
3)自动生成问题统计结果和测试报告。
4 在线计费接口测试系统实现
本测试系统在本地接口和漫游接口测试工作中已取得了显著应用效果。本章介绍该系统关键模块的技术实现。
4.1 文件分割模块
主要是使用基于CAP的文件分割技术,将从在线计费业务服务器IP端口中获取的CAP文件根据CAP、TCP、ETHERNET等协议来寻找分割点,去除消息包中的各类报文头,并进行自动分析和分割,从CAP文件包中剥离出独立的DCC消息,每个CAP文件处理后输出大量的DCC消息原始码,并以文本形式存放。本模块功能为后续的筛选、测试分析简化了数据形式,大大提升自动化测试执行速度。具体实现如下:
第一步:从IP端口获取cAp文件,保存到file中,并获取file文件的输入文件流is;
第二步:根据以太网帧格式,将is分割成多个以太网帧。然后对每一个以太网帧做如下处理:去掉以太网帧、IP数据报、TCP报文的头部(即去掉开始的64个字节),将TCP报文的内容保存到hexStr中;
第三步:将hexStr保存到指定目录,文件名按照cAp文件名称+时间戳+计数器;
4.2 消息筛选模块
筛选模块的要求是准确和效率。本系统主要采用多线程并行分析技术、多进程批量对不同原始码文件进行处理解决效率问题。通过设置的筛选规则和自动筛选技术,从拆分好的海量十六进制DCC消息中筛选出各类场景所使用的不同接口消息并组装成包含属性标记、有层次、与平台无关的XML格式DCC消息,从而使得筛选过程简单、快速化,使消息获取过程自动化,自动获取符合要求的输入消息。筛选过程具体的主要代码实现如下:
public static int file Filter()
{
//过滤DCC原始消息文件
//先将指定路径的DCC消息原始文件进行解析,然后判断其是否符合筛选条件的
fileFilter(path,avpcode1,avpvalue1,isHave,num);
//返回找到符合筛选条件的DCC原始消息文件的条数
return threadCount;
}
4.3 标准用例配置模块
前面设计中提到,接口变更带来的测试用例变更,应与系统底层逻辑代码无关,所以接口的字段、格式及结构关系等不能固化在后台,需通过前台进行灵活配置,并通过按照一定的规则传递给后台。按照3GPP国际标准,在线接口消息非常复杂,例如:字段间至少4层嵌套关系;同一个字段,在同一消息中可能出现多次;可选字段在有些消息中为必选等。所以配置界面中这些逻辑的配置和传递是实现的难点,本系统通过特殊字符映射规则和可伸缩的树形结构解决了该难点。特殊字符映射规则是指通过消息字段中不可能用到的特殊符号映射结构关系和关联关系。可伸缩的树形结构如图3所示,对同一个aVP字段需要出现多次的情况,在配置界面,点击字段后面的“+”号,将会在下面增加一行。
具体实现为调用JS脚本中相应的增加函数addrows(),见下面实现:
function addrows(){//在table表格的最后增加一行
var len=optionlist.rows.length;//得到table的行数
var obj=optionlist.insertRow(len);//在最后一行插入
/**插入第一列**/
obj.insertCell(0);
obj.cells(0).innerHTML=
"<input type=text name=Str_avp_value size=377>";
}
图3标准用例配置界面
4.4 测试执行模块
测试执行模块是整个自动化系统的核心模块,通过本过程判断出输入的接口消息是否符合标准要求。由于消息结构层次丰富,字段繁多,字段间关系错综复杂,所以比对的执行过程是系统的难点,需要精确的自动匹配和严谨的逻辑处理。本系统自动测试执行的实现代码如下:
public void compareDccInfoFile(){
//解析DCC原始消息文件,返回解析结果result
String result=decodeDccInfo();
//将解析完的结果文件保存为XML文件
Document document=DocumentHelper.parseText(result);
Element rootElm0=document.getRootElement();
//遍历整个解析后的xml消息包,保存到AppearavpMap中
getAllavpMap(rootElm0,AppearavpMap);
//判断AppearAvpMap出现的AVP是不是用例中要求必不携带的和有没
//有出现包含必选字段
if(false!=isAvpMapFitForUserCase())
return;
//对消息每个aVP字段进行携带允许、关联关系、互斥关系、嵌套关系、数据格
//取值等标准化方面的层次化全量比对
getNodesSaveXml(rootElm,commandCode,xml);
}
5 结束语
本论文针对在线计费数据流量业务中各电信运营商系统中出现的严重的接口互通问题,介绍了一种自主开发的在线计费接口自动化检测系统,并对该系统的功能、设计流程、实现技术做了说明,该测试系统提供了一种新的在线计费接口消息检测技术,解决了现阶段人工测试存在的即耗费人力和时间成本,结果又不全面不准确的问题,大大提升测试准确性、全面性和测试效率,具有很强的实用性。
[1]李湘宜,廖建新,王纯,等.一种基于移动智能网的欠费风险控制方式[N].北京工商大学学报:自然科学版,第4期.2007.
[2]Peter Reichl,Burkhard Stiller,Bruno Tuffin.Network Economics for Next Generation Networks[M].Springer.2009.
[3]丁亚.基于Diameter协议的在线计费系统的设计与实现[J].北京邮电大学,2007.
[4]范典华.数据流量业务的一种在线计费方案[J].通信技术,2013,3.
[5]Hai Huang,Jian-xin Liao,Xiao-min Zhu,et al.A Least Common Multiple Capacity load-balancing algorithm for content-based online charging system in 3G networks.Communications and Networking in China,2008.
[6]朱颖辉.OCS在线计费系统解决方案分析[J].信息通信技术,2009,6.
[7]黄瑛,黄巍.基于DCC协议在线计费数据业务的高可用性方案[J].电子商务.2013,10.
[8]IETF RFC 4006.Diameter Credit-Control Application[S].USA: IETF,2011.
[9]王一新,冯征.基于Gy接口的分组域实时计费系统[J].电信工程技术与标准化,2012,9.
[10]杨仕荣.计算机技术在移动通信欠费风险控制中的应用[J].山东大学,2008.
[11]纪雷,陶勇.分组域网元与OCS计费平台对接验证测试的研究[J].中国新通信,2014,07.
[12]刘方军.基于MVC三层架构模式的研究与应用[J].广东工业大学,2011.
Online Charging Interface Automation Test System and Its Applications
Fan Dianhua Yang Qimin Dai Rui
(China Mobile(Shenzhen)Limited,Shenzhen 518048,Guangdong)
In order to solve the problems of the large amount of work,the complexity of the test case,and the strong test repeatability which Appearing in the telecom operator at present based on the DCC protocol in the data traffic service,this paper presents an online billing interface message automatic test system.The system can make the interface files segmentation automatically based on CAP and other protocols.and at the same time,it can select test message Comprehensive and execute the test module,which takes advantage of test and tool development decoupling of the automatic test in the implementation process.The system also meets the test efficiency,test accuracy and test requirements.It has a strong availability in the production and operation,and has been made full use of in the domestic operators.
data traffic service,online billing,DCC protocol,billing system,automatic test
TN929.5
A
:1008-6609(2015)12-0075-04
范典华,女,广东紫金人,硕士,工程师,研究方向:移动通信系统。