面向标准符合性测试的接口标准建模方案
2015-07-02崔艳婷
崔艳婷
(中国传媒大学 信息工程学院,北京 100024)
面向标准符合性测试的接口标准建模方案
崔艳婷
(中国传媒大学 信息工程学院,北京 100024)
为了减少标准符合性测试工作中标准文档编写以及自然描述语言转化的人工工作量,对自然描述语言向结构化的数据格式的转换进行了研究,提出了对标准进行建模的解决方案,该方案建立了接口类标准的可扩展的公共标签库,基于该标签库可以自动生成接口描述文档及标准文档的接口描述部分,提高标准符合性测试的效率。
符合性测试;建模;标签库
1 概述
标准是为了在一定的范围内获得最佳秩序,经协商一致制定并由公认机构批准,共同使用和重复使用的一种规范性文件[1]。软件信息标准的作用是统一软件开发上的数据格式、通信方式和设计模式等,目的是实现资源共享,最终在软件使用上方便用户[2]。在标准实施过程中,为保证各个软件开发商都能准确遵循相应标准工作,人们提出了标准符合性测试的技术手段。
软件标准符合性测试是指从标准出发,对软件产品进行严格、定量的测试,以确认产品是否符合该标准,或在多大程度上符合标准[3]。国内目前的标准符合性测试从被测内容来分可分为三个方面,分别是超大容量字符集的选择性验证、接口类的编程规范检验和数据库中数据和设计方面在应用上的约束性规范。在目前的国内市场上除了接口类的部分测试工作借助于智能机操作,其他两个方面基本上都是手工进行的[2]。标准的符合性测试工作从最初的自然语言收集到最终的测试报告,一般需要经历自然语言整理、描述语言转化、测试用例生成和对被测软件的运行结果解析四个阶段的工作[2],目前自然语言的整理即标准文档的编写工作是由标准编写人员在word环境下编写,工作量大且容易出错;将自然描述语言转换为机器可读的语言即信息格式化也是由人工编写代码来完成,工作繁琐,耗费大量时间与精力,同时在测试用例的生成中也需要人工添加约束条件,无法批量生成测试用例。
本文从这两个问题出发,提出了对标准进行建模的解决思路,根据对接口类的标准文档进行整理后设计出一套较完整的并支持可扩展的公共标签库。基于该标签库,借助可视化的XML文档编辑工具,可自动生成接口描述文档,一方面,由于该文档是以XML(可扩展标记语言)格式存储的,是机器可读的表达形式,可直接用于测试用例的批量生成;另一方面,通过解析接口描述文档,可自动生成标准文档中的接口描述部分,省去了其在word中编辑的工作量,改变传统标准编写的流程,有利于技术人员通过XML语言来实现标准中部分内容的自动生成。
2 公共标签库的设计思路
公共标签库的设计原则:
1.科学性公共标签库用于标准的编写及标准描述文档的生成,因此必须遵循标准编写的规范,本文设计的公共标签库严格遵循接口类标准中对接口描述的规范,每个标签都有其特定的意义,适用于接口类标准,保证了公共标签库的科学性。
2.完整性通过对分析综合多个接口类标准文档后提取出来的标签,基本包含了自然语言对接口的所有描述,保证了公共标签库的完整性。
3.可扩展性为了能适应未来的标准文档,公共标签库需支持可扩展,本文设计的公共标签库是基于XML语言的,而XML语言本身具有良好的可扩展性,保证了公共标签库的可扩展性。
(1)接口标准的基本结构
在接口类的标准文档中,关于接口说明的内容与格式是固定的。一个标准里包含多个接口,对每个接口规定了其描述的内容与格式。首先是对接口的名称及其说明描述;其次对接口的参数分类描述,包括输入参数、输出参数及返回参数;最后是对每个参数的详细描述。
如表1是一个接口的输入参数的示例。
表1 接口输入参数示例
(2)公共标签库的整体框架
将接口标准中描述的内容提取为标签加入标签库中,并根据实际情况设置该标签的可选性。由于接口描述文档是以XML格式存储的,因此标签库应该有直观严谨的层次关系,图1是公共标签库的基本结构。需要名称标识的标签都可贴上一个属性标签,如接口函数标签有一个属性标签,标签名为名称。
图1 公共标签库的整体框架
(3)标签类型的定义
在接口描述文档中,每个标签的内容都有一定的类型规范,因此需要为每个标签定义其类型,以确保用户在信息录入时的格式正确,最底层的标签为简单类型,其他标签为自定义的复杂类型。表2为部分标签的类型定义示例。
(4)约束类的设计
在接口描述文件中,每个参数都有自己的类型,包括简单类型和复杂类型,需要针对各种类型的参数进行不同的约束,以保证测试用例的生成。在标签库中将对参数的约束分为以下几种:无约束、长度范围、取值范围、集合长度、枚举范围、日期格式、特定值、正则表达式、文件类型和文件路径,对于每一种不同的约束需
表2 部分标签的类型定义
要不同的标签来完成约束条件。表3为各个约束类的约束标签,在对参数进行约束时,每个参数只能选择其中一种约束,所以各个约束类是多选一的关系,并且所选择的约束类中的约束标签必须全部出现且只出现一次,因此将同一个约束类下的约束标签定义为标签组的形式。
表3 约束类和约束标签定义
公共标签库设计完成之后,为每一个标签添加内容,得到标准约束文档。基于该标签库生成的标准描述文档应具有如下的格式:
〈接口 名称=“接口描述”〉
〈接口所在类 名称=“接口所在类名 ”〉
〈接口函数 名称=“接口函数名”〉
〈中文名称〉接口中文名称〈/中文名称〉
〈参数 名称=“参数名”〉
〈中文名称〉参数中文名称〈/中文名称〉
〈输入输出类型〉输入输出类型〈/输入输出类型〉
〈删除标识〉是否可删除〈/删除标识〉
〈类型定义〉参数的类型定义〈/类型定义〉
〈类定义全名〉参数的类定义全名〈/类定义全名〉
〈简单类型标识〉是否为简单类型〈/简单类型标识〉
〈集合类型标识〉是否为集合类型〈/集合类型标识〉
〈可选性〉参数的可选性〈/可选性〉
〈编码方式〉参数的编码方式〈/编码方式〉
〈约束类 名称=“ 约束类名”〉 〈!--无约束时省略--〉
〈!--具体的约束描述--〉
〈/约束类〉
〈说明〉对该参数的说明〈/说明〉
〈示例〉参数示例〈/示例〉
〈参数〉〈/参数〉 〈!--当参数是简单类型时省略--〉
〈/参数〉
〈/接口函数〉
〈/ 接口所在类 〉
〈/接口〉
从接口描述文档中可以看出,基于本文设计的公共标签库生成的接口描述文档,基本覆盖了对所测接口的信息描述,根据该文档中描述的接口信息与约束条件可批量生成测试用例;在标准编写时,解析该文档,提取标准文档描述需要的标签与内容,可自动生成标准文档中的接口描述部分。
3 公共标签库的应用实例
现根据标准《数字家庭项目标准—数字家庭地理信息服务接口规范》[4],在本文所设计的公共标签库的基础上,利用XML可视化编辑工具对其文化教育接口的请求参数描述进行建模。在标准中对这个接口的请求参数描述如表4所示:
表4 天气信息接口请求参数
注:可选性分为:必选:M;条件必选:C。
操作步骤如下:
1.根据给出的接口参数信息,对应公共标签库中的各个标签(标签库如图1所示),在可视化工具中录入接口信息。该接口函数有四个输入参数,分别将其对应的标签内容录入。
2.选择需要进行约束的接口并输入约束条件。该函数有三个接口有约束,接口ID与接口名称的约束是特定值,请求查询的类型的约束是枚举范围,分别给这三个参数录入不同的约束条件。
3.根据1和2中录入的信息生成接口描述文档:
〈interface name=“接口描述”〉
〈mainClass name=“”〉
〈operation name=“EducationInfo”〉
〈cnName〉文化教育接口〈/cnName〉
〈param name=“InterfaceID”〉
〈cnName〉接口ID〈/cnName〉
〈ioType〉输入参数〈/ioType〉
〈isDelete〉false〈/isDelete〉
〈className〉integer〈/className〉
〈packClass〉integer〈/packClass〉
〈bSimple〉true〈/bSimple〉
〈bArray〉false〈/bArray〉
〈isRequired〉必选〈/isRequired〉
〈encodeMode〉无编码〈/encodeMode〉
〈restrictClsName name=“fixObject”〉
〈value〉8〈/value〉
〈/restrictClsName〉
〈/param〉
〈param name=“InterfaceName”〉
〈cnName〉接口名称〈/cnName〉
〈ioType〉输入参数〈/ioType〉
〈isDelete〉false〈/isDelete〉
〈className〉string〈/className〉
〈packClass〉string〈/packClass〉
〈bSimple〉true〈/bSimple〉
〈bArray〉false〈/bArray〉
〈isRequired〉必选〈/isRequired〉
〈encodeMode〉无编码〈/encodeMode〉
〈restrictClsName name=“fixObject”〉
〈value〉EducationInfo〈/value〉
〈/restrictClsName〉
〈/param〉
〈param name=“CityName”〉
〈cnName〉城市名称〈/cnName〉
〈ioType〉输入参数〈/ioType〉
〈isDelete〉false〈/isDelete〉
〈className〉string〈/className〉
〈packClass〉string〈/packClass〉
〈bSimple〉true〈/bSimple〉
〈bArray〉false〈/bArray〉
〈isRequired〉必选〈/isRequired〉
〈encodeMode〉无编码〈/encodeMode〉
〈/param〉
〈param name=“Type”〉
〈cnName〉请求查询的类型〈/cnName〉
〈ioType〉输入参数〈/ioType〉
〈isDelete〉false〈/isDelete〉
〈className〉integer〈/className〉
〈packClass〉integer〈/packClass〉
〈bSimple〉true〈/bSimple〉
〈bArray〉false〈/bArray〉
〈isRequired〉可选〈/isRequired〉
〈encodeMode〉无编码〈/encodeMode〉
〈restrictClsName name=“enumObject”〉
〈objectList〉1#2#3〈/objectList〉
〈/restrictClsName〉
〈/param〉
〈/operation〉
〈/mainClass〉
〈/interface〉
4 结语
本文提出的基于公共标签库的建模方案,建立了一套较完整的公共标签库,是一个较大的突破点与创新点。实现了标准描述文档的自动生成,在该基础上可批量生成测试用例以及自动生成标准文档的接口描述部分。该方案具有以下特点:
1.高效率性。从本方案的设计目的上不难看出,将自然语言的转化和标准文档的生成交给计算机来完成,大大减轻了人工工作量,提高了标准符合性测试的工作效率。
2.直观性。标签库的设计是基于XML的,XML本身结构层次清晰,便于阅读,用户在使用可视化工具的时候也避免了与程序语言打交道,可直观的从用户界面录入接口信息。
3.可扩展性。XML的主要特点是它的可扩展性和灵活性[5],支持用户自定义标签,基于XML设计的标签库必然也具有良好的可扩展性。
[1]GB/T 20000.1-2002,标准化工作指南 第1部分:标准化和相关活动的通用词汇[S].北京:中国标准出版社,2002.
[2]范国梅.标准符合性测试平台的研究与实现[D].北京:北方工业大学,2012.
[3]邓日矢,刘又诚.软件标准符合性测试[J].北京航空航天大学学报,1997,23(1):68-73.
[4]XBSZJT 12-2013,数字家庭项目标准 数字家庭地理信息服务接口规范[S].北京:数字家庭服务解决方案与系统集成技术研究课题组,2013.
[5]孙更新,肖冰,彭玉忠.XML编程与应用教程[M].北京:清华大学出版社,2010.
(责任编辑:王谦)
The Modeling Scheme of Interface Standard for Standards Compliance Testing
CUI Yan-ting
(College of Information Engineering,Communication University of China,Beijing 100024,China)
To reduce the artificial work of standard document writing and natural description language transformation,the transformation from natural description language to structured data format were studied and a modeling of standard program was proposed.A scalable public tag library of interface standard was built;the structured interface description document and the interface description part in standard document could be automatically generated based on the public tag library.The Efficiency of standards compliance testing was improved.
compliance testing;modeling;tag library
2015-03-02
崔艳婷(1991-),女(汉族),云南昭通人,中国传媒大学硕士研究生.E-mail:cuiyanting7@qq.com
TP317.2
A
1673-4793(2015)06-0044-06