[发明专利]一种基于接口语义契约模型的Web服务建模与测试方法有效
申请号: | 201210566806.8 | 申请日: | 2012-12-24 |
公开(公告)号: | CN103064788A | 公开(公告)日: | 2013-04-24 |
发明(设计)人: | 白晓颖;侯可佳;李树芳 | 申请(专利权)人: | 清华大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F9/44 |
代理公司: | 北京众合诚成知识产权代理有限公司 11246 | 代理人: | 薄观玖 |
地址: | 100084 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 接口 语义 契约 模型 web 服务 建模 测试 方法 | ||
1.一种基于接口语义契约模型的Web服务建模与测试方法,其特征在于,是在开放的Web服务平台上,依次按以下步骤实现的:
步骤(1) Web服务平台初始化
输入:Web服务的类型、名称、描述、参数、参数类型和参数描述,
Web服务所需要的接口操作集合以及每个接口所需要的输入参数和输出参数,
Web服务的领域概念以及各种约束依赖关系,
步骤(2) 按以下步骤建立接口语义契约模型:
步骤(2.1)建立接口数据的语义描述,即建立接口语义契约用的数据模型:
Data:=<T,R>,其中:
T={Ti},为数据类集合,i=1,2,..,i.,,I,I为数据类的数目,其中,分为基本数据类型和领域集合类型:
基本数据类型包括:简单数据类型以及由简单数据构成的复杂数据类型,
领域数据类型包括:领域内的基本数据及其相互关系;
R=T×T,为数据类型之间的关系集合,包括:
继承关系Sub(T1,T2),子类数据 T1继承父类数据T2所有的属性并可扩展,
等价关系Eq(T1,T2),表示子类数据T1和父类数据T2相同,有互换性,
互斥关系Dj(T1,T2),表示数据T1和数据T2没有交集;
根据属性,数据分为:
数值型数据,至少包括:有效数据集合、最大值和最小值,
字符串型数据,至少包括:字符串有效长度、最大长度、最小长度和有效排列模式,
复杂数据类型,包括其所包含的数据元素及相互关系,
步骤(2.2)数据约束模型,包括:
基数约束,表述被约束对象的取值数量的限制,
值域约束:表示被约束对象的取值范围的限制,
用语义规则描述的多个数据以及多个属性之间的约束关系,包括:同一数据不同属性之间的约束关系和不同数据的属性之间的约束关系,
步骤(2.3)构建接口契约中的本体数据模型:
服务输入,服务在运行中从外界获取的数据,
服务输出,服务运行后应产生的输出数据以及异常信息,
服务之间的依赖关系,包括控制依赖关系和数据依赖关系,其中:
控制依赖关系,指执行顺序的各种约束条件,顺序约束包括:
在先执行,Before(S1,S2),服务S1领先服务S2执行,
在后执行,After(S1,S2),服务S1滞后服务S2执行,
并行执行,Parallel(S1,S2),服务S1和服务S2并行执行,
数据依赖关系,表述数据在顺序执行中的依赖关系,包括:输入依据,输出依据,以及输入-输出依赖,其中:
输入依赖关系表示为:
若:d1∈S1.Input且d2∈S2.Input,
则:IIDep(S1,S2),其中:
d1、d2分别表述输入、输出数据,
S1.Input、S2.Input分别表示服务S1的输入数据集合和服务S2的输入数据集合,
IIDep(S1.S2)表示服务S1和服务S2存在输入依赖关系,服务S2的输入参数由服务S1的输入参数决定,
输出依赖关系表示为:
若:d1∈S1.Output且d2∈S2.Output,
则:OODep(S1,S2),其中:
S1.Output、S2.Output分别表示服务S1的输出参数集合和服务S2的输出参数集合,
OODep(S1,S2)表述服务S1和服务S2存在输出依赖关系,服务S2的输出参数由服务S1的输出参数决定,
输入-输出依赖表示为:
若:d1∈S1.Output且d2∈S2.Input,
则:IODep(S1,S2),表示:服务S2的输入参数由服务S1的输出参数决定,
步骤(3) 根据步骤(2.2)得到的数据约束模型和步骤(2.3)得到的本体数据模型,按以下步骤生成测试用例:
步骤(3.1)定义测试数据类的合法性和非法性:
合法测试数据类是指符合服务需求的测试输入,服务应产生正确的执行结果,
非法测试数据类是指不符合服务需求测试输入,服务应能安全地处理各种不合理的输入,
步骤(3.2)根据步骤(3.1)中规定的数据类型的分类标准对各个数据类分区,并建立对应的合法测试数据分区和非法测试数据分区,
步骤(3.3)对步骤(3.2)中的各合法测试数据类,根据其中的子类数据在所述数据依赖关系中的地位建立对应的合法测试数据子分区,再根据各子类数据之间的数据依赖关系定义对应的合法测试数据子分区之间的关系:
若:子类数据之间为等价关系,则:相应的合法测试数据子分区之间也相互等价,
若:子类数据之间为互斥关系,则:相应的合法测试数据子分区之间也相互排斥,
若:子类数据由其他子类数据通过交集、并集或补集运算得到,则:相对应的合法测试数据子分区也要通过相应的合法测试数据子分区经过相同运算得到,
最后,根据所述数据属性类型的取值方式,定义合法测试数据分区中的子分区,
步骤(3.4)对步骤(3.2)中的各非法测试数据分区,根据属性约束条件,定义对应的测试子分区,
步骤(3.5)在步骤(3.3)和步骤(3.4)的每一个数据分区内,根据其数据依赖关系,采用随机生成的方法,生成数据类型的实例,得到每一个类对应的实例集合,每一个实例包括:服务名称、分区序号、分区名称以及分区含义,
步骤(3.6)按以下步骤合成测试数据用例集:
步骤(3.6.1)根据服务所提出的测试目标,确认所设计的各个输入数据Ii∈S.Input选取的子分区Pp,Ii为与所述测试目标有关的序号为i的输入数据,i=1,2,..,i,..I,I为与所述测试目标有关的所有测试数据的数量,Pp为Ii所选取的序号为p的子分区,p=1,2,..,p,..P,P为子分区总数,
步骤(3.6.2)根据子类数据之间的约束关系,定义选择测试用例时的目标函数,
步骤(3.6.3)搜索所述测试用例输入数据Ii的取值,用Ii.Pp.dy表示,y为输入数据值的序号,y=1,2,..,y,..Y,Y为输入数据值y的个数,直至所选测试用例的输入数据满足目标函数要求,或是达到限定的最高重复次数,搜索结果得到一个测试用例Ii.Pp.dy,
步骤(3.6.4)重复步骤(3.6.3),得到一组测试用例,构成一个测试用例集合。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于清华大学,未经清华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210566806.8/1.html,转载请声明来源钻瓜专利网。