发明名称 一种基于接口语义契约模型的Web服务建模与测试方法
摘要 一种基于接口语义契约模型的Web服务建模与测试方法,涉及软件测试建模与测试用例自动生成领域,所述方法适用于Web服务测试,可以扩展现有服务接口描述能力、用于生成测试数据和测试用例,通过知识描述和推理技术,提高测试生成的自动化和智能化程度。方法包括三个方面:建立(1)建立服务接口语义契约模型,以扩展现有服务接口描述能力;(2)基于接口数据本体描述,生成测试输入数据,并生成测试用例。
申请公布号 CN103064788A 申请公布日期 2013.04.24
申请号 CN201210566806.8 申请日期 2012.12.24
申请人 清华大学 发明人 白晓颖;侯可佳;李树芳
分类号 G06F11/36(2006.01)I;G06F9/44(2006.01)I 主分类号 G06F11/36(2006.01)I
代理机构 北京众合诚成知识产权代理有限公司 11246 代理人 薄观玖
主权项 一种基于接口语义契约模型的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),得到一组测试用例,构成一个测试用例集合。
地址 100084 北京市100084-82信箱