自动生成测试用例_基于OWL-S的Web服务测试用例自动生成方法研究

2022-09-19 其他范文 阅读:

  摘要:Web服务只给用户提供描述信息,采用传统测试方法很难对其进行有效测试,无法保证软件质量,这越来越成为其发展的瓶颈。随着语义Web的发展,基于语义的Web服务描述也逐渐成为主流。针对基于语义的服务描述自动生成测试用例的相关研究将为Web服务测试提供更有力的手段,具有很重要的意义。该文以采用OWL-S服务标记语言描述的单个简单Web服务为研究对象,定义输入数据模型(IDM),利用本体等价分区划分、数据约束限制等,实现了测试用例的自动生成,并提出了具体算法。最后,通过expressBuyBook服务案例充分验证了该算法的正确性和有效性。
  关键词:OWL-S;Web服务;本体;测试用例;自动生成
  中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)10-2257-05
  OWL-S-Based Automated Test Case Generation for Web Service
  SU Shi-han1,2, HAN Ke2
  (1. Institute of Command and Control, PLA University of Science and Technology, Nanjing 210007, China; 2. Institute of China Electronic Systems Equipment Company, Beijing 100141, China)
  Abstract: Web Service can’t be tested easily by traditional testing methods,which only provides description message for user,so the software quality is hard to pledging. At every turn,this becomes a choke point of Web Service development.Along with the progress of semantic Web,semantic-based Web Service specification has become mainstream gradually.The research will provide a powerful artifice, which aims at automated test case generation of semantic semantic-based Web Service specification. Targeted to single and simple Web services described in the OWL-S specification, this paper defines a input data model(IDM), presents a specific method to generate test case automatically which utilizes facts such as equivalence dividing of ontology and data restriction, and puts forward detailed algorithm, and it’s correctness and availability is validated by the case of Web Service named expressBuyBook.
  Key words: OWL-S; web service; ontology; test case; automated generation
  Web服务是一种基于SOA的全新技术架构,具有松散耦合、高度集成、数据信息规范、平台独立和数据可复用等特点,近年来得到广泛的关注和应用。它基于开放和通用的协议与平台,采用接口的方式向外提供服务,其服务质量与可信性等方面均可能存在问题,这将阻碍Web服务向前发展。有效的测试能够对Web服务进行验证和确认,可以提高服务提供者、服务请求者和服务注册中心之间的信任度,也能对服务质量作出保证。随着Web服务的快速发展,Web服务的数量呈爆炸性增长,很难逐一进行手动测试。所以,迫切需要提供Web服务测试的自动化。
  语义Web技术和Web服务的结合产生了语义Web服务,是当前Web服务发展的主流趋势。它采用OWL-S服务标记语言,在OWL的本体框架下对服务规约进行描述,使得计算机能够理解以前只能由人工进行处理的服务规约信息,并自动根据这些描述信息来获取Web服务的各种参数。
  早期,国内外学者在Web服务测试用例自动生成方面的研究主要基于WSDL语言[1-3]。还有的学者通过对WSDL语言添加扩展信息来生成测试用例[4-5]。随着语义Web服务的兴起,越来越多的学者开始研究利用语义Web描述服务规约的Web服务测试用例自动生成方法[6-9]。姜瑛利用合约变异对随机生成的测试数据集进行筛选优化[6],但由于采用随机生成初始测试数据,存在很多冗余和无效数据。Noikajana将语义描述中的输入、输出、前置条件和后置条件(IOPE)转换为决策表中的条件入口、行动入口、条件桩和行动桩,构建一个有限决策表来产生测试用例[7]。但是这种方法需要人工对条件桩和行动桩进行构造。
  该文通过对OWL-S文档进行解析,定义输入数据模型(IDM),结合本体类等价划分,基数约束和属性限制,以及SWRL规则,提出了测试用例自动生成的具体算法,在一定程度上实现了测试用例自动生成,为Web服务自动化测试提供了有力手段。
  1背景知识
  OWL-S是一种基于本体描述语言OWL的Web服务标记语言,对Web服务的规约信息进行语义描述,使Web服务成为计算机可以理解的实体,从而可以自动完成诸如发现、调用、互操作和监控等任务。
  OWL-S通过(hasValue、allvaluesFrom、someValuesFrom)来限制类中指定属性的值域,通过(minCardinality、maxCardinality、cardinality)来约束类中属性可以出现的次数,这些可以在等价分区生成时作为关键划分条件。OWL-S中的数据属性指向具体的数据类型和取值,是测试数据生成的重要依据,它重用了XMLSchema和RDF中的全部数据类型,还包括通过添加诸如minLength、maxInclusive等刻画约束,从基本数据类型中衍生出来的自定义数据类型。
  这里我们将这些属性限制、基数约束和数据类型刻画约束进行分类,分别采取边界值、等价类划分和随机生成法等来生成测试数据。具体分类如表1所示。
  表1约束条件分类和数据生成方法
  
  2测试用例生成方法
  2.1具体步骤
  本体中的类概念具有层次结构,如果把父类看作一个输入空间的话,子类在一定程度上可以看成是父类的一个子空间,利用子类来对父类所代表的个体集合进行划分,能够产生各种有效和无效的等价分区。OWL-S中包含对Web服务所需输入参数的描述,其类型可以是内建数据类型或自定义数据类型的地址引用,也可以是类的地址引用。对于类型为类的输入参数,可以根据从本体中获取的类和属性信息,根据一定的规则生成有效和无效等价分区,再为每一个等价分区生成测试数据作为输入参数的备选测试数据。最终,生成整个Web服务的测试用例。
  测试用例生成方法主要包括等价分区生成,测试数据集生成,测试数据选取三部分,具体步骤如下:
  1)将被测服务的OWL-S描述文件导入分析器中,分析器根据需要利用OWL-S API导入相关的本体文件,解析出所有OWL实体,存入OWLOntology中。
  2)获取被测服务中需要测试的Process服务,得到该Process服务的IOPE信息。对Inputs中的参数逐一进行分析。
  3)根据该Input参数的OWL数据结构、约束条件等,进行等价子类划分。
  4)根据Precondition和Effect信息,对等价分区进行再次细化。
  5)对每一个等价分区逐一调用数据生成器,生成相应的测试数据,并保存在测试数据库中。
  8)为每个Input参数选择一个等价类实例作为输入数据,最终生成测试用例。
  2.2输入数据模型定义
  利用美国Fujitsu实验室开发的OWL-S API,能够实现对OWL文件及OWL-S文件的读写,从而获取指定Web服务的全部本体信息。但为指定输入参数生成测试数据,只需要对部分涉及到的本体信息进行分析。为了能够更好地组织和保存与输入参数相关的各种OWL本体信息,我们定义一个输入数据模型(IDM),将涉及指定输入参数的本体类、属性以树的形式组织起来,这样更加方便测试用例生成算法的实现。
  该模型形式化定义为六元组:IDM=,其中:
  C表示OWL类的集合。
  IN表示OWL个体的集合。
  OP表示对象属性的集合,元素形式为:{PURI,Domain,Range}。其中,PURI表示该属性的URI地址;Domain∈C;Range∈C∪IN。
  DP表示数据属性的集合,元素形式为:{PURI,Domain,DataType,DR},其中Domain∈C;DataType包括OWL-S支持的所有数据类型;DR表示对该数据类型的数据约束刻画,DR中的元素形式:{x,nonNegativeInteger or patternExpression},其中x为表1中刻画约束关键词。
  EP表示类与属性之间的关系,元素形式为:{c,f,p},其中c∈C;p∈OP∪DP;f∈PR∪{¢},PR表示属性约束(Property Restriction),元素形式为:{x,Drange},其中x为表1中属性限制关键词,DRange∈Range∪DataType};f表示类与属性之间的基数约束,元素形式为:{x,nonNegativeInteger},其中x为表1中基数约束关键词,并且f可以是f1∪f2的形式。
  nr表示开始节点,且nr∈C。
  2.3 IDM生成算法
  具体的IDM生成算法如下:
  Step1:建立类的结构树。
  1)使得C=¢,IN,OP=¢,DP=¢,R=¢,EP=¢;利用OWL-S API获取该Web服务的本体信息OWLOntology Ont;
  2)判断输入参数的ParamType,如果指向内建数据类型或自定义数据类型,则建立dp={puri,domain,datatype,dr},其中,puri= ParamType,domain等于输入参数的ParamName;datatype和dr从本体信息中获取;并将dp放入集合DP中,即DP=DP∪{dp};然后,转到step2;否则,以该输入参数的ParamType值,建立OWLClass node,并将该节点放入集合C。即C=C∪{n},令nr=node;
  3)在Ont中递归的查找类node的全部子类,放入C中。
  Step2:递归建立类与属性之间的关系。
  1)令node=nr,如果node=null,则转到Step4;
  2)否则,从Ont中逐个获取node类的每一个属性,如果该属性为对象属性,利用该属性的puri,domain,range,建立op={puri,domain,range},并将op放入集合OP中,即OP=OP∪{op};获取该属性的基数约束和属性限制f1,建立ep={node,f1,op},并将ep放入集合EP中,即Ep=EP∪{ep};转到Step3;
  3)如果该属性为数据属性,利用该属性的puri,domain,datatype,dr,建立dp={puri,domain,datatype,dr},并将dp放入集合DP中,即DP=DP∪{dp};获取该属性的基数约束和属性限制f2,建立ep={node,f2,op} ,并将ep放入集合EP中,即Ep=EP∪{ep};转到Step4。
  Step3:获取对象属性指向的类的IDM子结构。
  1)从Ont中获取该对象属性的range所指代的类,建立OWLClass range,并将该类放入集合C。即C=C∪{range}。
  2)按照Step1(3)步和Step2中的方法获取range的子类、数据属性和对象属性信息,分别保存到相应的集合C、DP、OP和EP中,转到Step4。
  Step4:Return IDM。
  2.4测试数据生成算法
  测试数据生成算法以IDM作为输入,生成的测试数据保存在测试数据库中,具体程序伪代码如下:
  Algorithm:GeneratData
  Input:IDM idm=
  {IF (idm.C.getsize()= =0)&&( idm.EP.getsize()!=0)
  根据EP中数据属性的数据约束刻画dr和数据类型,采用边界值法、等价类划分和随机测试的方法,可以生成指定数量的有效和无效测试数据,保存在测试数据库中。
  Return;//结束程序
  Else
  {owlclass node=nr;
  owlclassList nodes=EquipandSubOf(node); //获取类node的等价类和子类。
  Foreach“n”in nodes;
  List individuals=Generatindividual(n,idm);
  equipValue.add(individuals);//将生成的个体存储到测试数据库中。
  End Foreach
  }
  EndIF
  }
  其中部分局部函数定义:
  List Generatindividual(OWLClass n,IDM idm,)
  {
  List eps=getEP(n,idm .EP) //获取EP中,Domain为node或其等价类、父类的属性。
  Foreach“ep”in eps;
  If isdataproperty(ep.property) //如果ep中包含的属性为数据属性。
  {PR pr=ep.F.PR;
  F f=ep.F.F;//获取该属性的属性限制和基数约束。
  DataType dt=ep.property.DataType;
  DR dr=ep.property.DR;//获取该属性的数据约束刻画和数据类型。
  根据属性限制pr、基数约束f以及数据约束刻画dr等,采用边界值法、等价类划分和随机测试的方法,可以生成指定数量的有效和无效测试数据,保存在测试数据库中。
  }
  End Foreach
  Foreach“ep”in eps;
  If isobjectproperty(ep.property)
  F f=ep.F.F;
  DataType dt=ep.property.DataType;
  List individuals= Generatindividual(ep.property.Range);
  根据individuals中的个体以及属性限制pr和基数约束f,采用第2章中介绍的相关方法,产生指定数量的有效和无效测试数据, 保存在测试数据库中。
  End Foreach
  采用一定的选取规则,从数据属性产生的数据值和对象属性产生的数据值中分别选择合适的数据值,构建n类的个体集List finalindividuals。
  Return finalindividuals;
  }
  2.5案例分析
  为了更加详细的说明测试用例的生成方法,本节以expressBuyBook服务作为案例进行分析。它是一个B2C网站(http://www.省略)提供的在线书籍销售服务只包含一个expressBuy类型的输入参数。利用3.3节中介绍的算法,可以生成IDM如图1所示。
  
  图1输入参数Order的IDM模型
  这样我们根据数据类型的刻画约束可以为每一个叶节点的数据类型生成有效和无效的测试数据,结合基数约束,可以得出每一种OWL数据属性的取值。具体取值数量和数值如表2所示。
  表2叶节点数据类型数据生成
  
  在得到IDM中每一个叶节点取值后,下面我们考虑expressBuy类的整体取值个数,对于没有基数约束的属性hasbook,分别取基数为0,1,2进行处理。如果采用完全组合的方式来选用测试数据,expressBuy类的测试数据理论取值个数为:5700,里面包含了很多复杂重复的测试用例。考虑到IDM的树形结构,以及类的概念,我们引入面向对象的思想对测试数据进行组合。按照图1中每个类所处的层数,从大到小,利用基于解析空间树的组合测试方法,依次对每个类生成测试数据,逐个向上递归直到回溯到根节点,过程中,类与类、类与数据属性之间以类为整体,生成测试数据。在本例中,首先生成custInfo类的测试数据,取值个数为:8;其次生成OrderItem类的测试数据,取值个数为:22;最后,结合数据属性OrderID的取值数为5,生成OrderRequest类的测试数据,取值数为152。由此可以看出,测试用例数得到了显著降低,但每两个测试取值都满足了两两覆盖要求。
  利用生成的测试用例对该服务进行测试,发现的错误如表3所示。
  表3实验结果
  
  3结论
  该文以基于OWL-S描述的Web服务单个简单服务为研究对象,定义了输入数据模型(IDM),介绍了一种自动生成测试用例的方法,并给出了具体实现算法,为实现Web服务的有效测试提供了手段。通过实验,说明该方法能够产生有效的测试数据。
  该方法只限于对单个简单服务进行测试。但随着Web服务的发展,一个功能通常需要利用多个简单服务的组合来实现,各个简单服务之间的调用顺序,业务逻辑以及输入输出匹配等方面都很容易发生错误。所以,在下一步的研究中我们重点针对组合服务测试用例的自动生成,希望能够进一步提高Web服务测试数据自动生成的质量和效率。
  参考文献:
  [1] Bai X Y,Dong W,Tsai W,et al. Chen. WSDL-Based Automatic test case generation for Web Services testing[C].Proceedings of the 2005 IEEE International Workshop on Service-Oriented System Engineering(SOSE’05),20-21,China,2005:215-220.
  [2] Hanna Samer,Munro Malcolm.An Approach for Specification-based Test Case Generation for Web Services[C]. Computer Systems and Applications,2007.AICCSA’07.IEEE/ACS International Conference on,2007:16-23.
  [3] Ma C Y,Du C L,Zhang T. WSDL-Based Automated Test Data Generation for Web Service[C]. International Conference on Computer Science and Software Engineering,2008:731-737.
  [4] Tsai W T,Ray Paul.Extending WSDL to Facilitate Web Services Testing[C].Proceedings of the 7thIEEE International Symposium on High Assurance Systems Engineering(HASE’02), 2002:1-2.
  [5]陈佳蕊,蔡国永.基于扩展WSDl变异的Web服务测试方法[J].计算机应用, 2007, 27 (7).
  [6]姜瑛,辛国茂,单锦辉.一种Web服务的测试数据自动生成方法[J].计算机学报,2005,28(4):568-577.
  [7] Noikajana S,Suwannasart T. Web Service Test Case Generation Based on Decision Table[C]. Proc. of the 2008 The Eighth International Conference on Quality Software,2008:321-326.
  [8] Noikajana S,Suwannasart T. An Approach for Web Service Test Case Generation Based on Web Service Semantics[C].Proceedings of the International Conference on Semantic Web and Web Services,2008:171-177.
  [9]张晓燕,黄宁,余莹.基于OWL-S的测试用例生成[J].北京航空航天大学学报,2008,34 (3).
  [10]史亮,聂长海,徐宝文.基于解空间树的组合测试数据生成[J].计算机学报,2006,29 (6).

自动生成测试用例_基于OWL-S的Web服务测试用例自动生成方法研究

http://m.zgzsclpt.com/content/200569.html

推荐访问:自动生成 测试 方法 研究

其他范文推荐文章

推荐内容

上一篇:课程网站的设计与实现_基于PHP的优质课程网站设计及实现 下一篇:微机接口技术课后答案 [微机接口技术的新教学体系探讨]