摘要:近年来,Web服务测试得到了越来越多的关注。对Web服务及SOA(面向服务架构)进行简单介绍,分别从基于WSDL的Web服务测试、语义Web服务测试和基于形式化方法的Web服务测试3个方面进行阐述,并重点研究形式化规约的四大类方法:基于模型、基于有限状态、进程代数和代数规约在Web服务测试中的应用。
关键词:Web服务测试;形式化方法;Web服务
中图分类号:TP301
文献标识码:A
文章编号:16727800(2017)004020804
0引言
近年来,Web服务由于其自身的自治性、平台独立性以及服务技术的广泛性,得到了迅速发展。然而Web服务并没有获得预期的广泛市场应用,其主要原因是服务消费者和服务提供者之间存在着信任问题,尤其在服务动态选择和使用时,服务提供者能否为服务消费者提供可靠的Web服务是一个关键问题。针对此类问题,测试是一种有力的解决途径,是保证Web服务功能正确的重要技术。 与传统软件测试相比,SOA特性使得Web服务测试更加困难,从而给测试带来了一些新的挑战。除了服务开发者,其他用户只能访问服务接口,测试人员无法获得服务代码等实现细节,这使得测试人员只能根据服务提供者发布的服务描述文档进行基于规约的测试。服务运行架构的独立性使得测试人员缺乏对服务运行时的控制,组合服务执行中Web服务的动态性和自适应性也使得测试人员很难离线确定被激活的服务,这些动态特性均要求测试
人员实施在线测试;对服务进行的大规模使用和测试可能导致服务崩溃进而带来额外的测试开销。另外,构成软件的Web服务会不断更新变化,每次更新后的重新测试对于原本已经极具挑战的测试来说更是雪上加霜。因此,对Web服务测试技术进行深入的系统性研究非常必要。
1Web服务和面向服务架构
Web服务是一种可以通过网络来支持机器与机器间互操作的交互软件系统。Web服务平台所提供的功能是使用预定义的Web标准为不同的应用程序提供其所需的交互。为了确保集成后的模型能够满足异构系统所需的灵活性,Web服务的集成模型是松耦合的。 目前主要有两种类型的Web服务:一种是基于SOAP,另一种是基于REST。二者都是基于SOA,区别是它们使用的接口不同。基于SOAP的Web服务使用SOAP接口传递消息,并且使用WSDL来描述Web服务,而使用REST接口的Web服务则使用通用的HTTP方法(GET、DELETE、POST和PUT)来描述、发布和使用相关资源。 SOA是建立面向服务软件的一种策略,其目的是为了提供可以被其它服务使用的服务。SOA思想的出现早于Web服务,而Web服务的出现和使用使得SOA得到了快速发展。Web服务的自主性、平台独立性以及动态发现和组合等特性为SOA提供了重要的技术支持。由于Web服务的使用,现有的系统可以在不知道任何关于其它计算机系统技术信息的情况下交换信息。面向服务架构如图1所示。
在SOA中,有3个主要参与者:服务提供者、服务消费者和服务代理商。这3个参与者分别承担了SOA的3种基本活动:发布、发现和绑定。服务提供者是服务的拥有者,负责解决服务中出现的问题及服务的维护,同时也是服务演化的唯一控制者。服务提供者通过在服务代理商处登记注册来发布服务。通常将服务代理商视作服务的查询机制,通过它可以实现服务的发布和搜索功能。服务代理商允许用户查找符合用户需要的服务,并提供如何获得这些服务的信息。服务消费者也是最重要的参与者之一,参与了两项主要活动:发现与绑定。在找到满足其需求的服务之后,服务消费者通过使用从服务代理商处获得的绑定信息来调用相关服务。绑定信息包括了服务的地址、怎样调用服务,以及服务提供哪些功能等。
2Web服务测试
Web服务测试包括Web服务的基本功能测试、服务交互测试、服务质量测试等。Web服务测试发展的历史分为3个阶段[1]: 第一阶段(2002-2003):将Web服务看作由单元组成,测试也表现为单元测试。 第二阶段(2003-2005):提出SOA测试,同时探讨SOA的特性。这一阶段的测试包括发布、查找、Web服务绑定功能、异步Web服务消息传递功能和SOA的SOAP中介能力测试。另外,QoS的测试也在这一阶段中出现。 第三阶段(2004-至今):Web服务动态运行时的能力测试。Web服务组合测试与Web服务版本测试均在这一阶段出现。 由上述阶段可以看出,自2002年开始,面向Web服务软件测试的研究领域发展迅速,从单个服务的静态功能测试发展到服务组合的动态运行能力测试。在这一过程中,许多研究者们对SOA特性进行了探讨,从WSDL、BPEL、OWL-S的语法定义中以及有限钐机、标签转换系统、语法图与一阶逻辑等形式化模型中研究测试用例生成技术[27]。这些技术解决了Web服务的特定问题,例如处理无效输入以及调用序列中的错误、处理网络连接中断或依赖服务失效引起的错误等。
2.1基于WSDL的Web服务测试
由于服务提供者仅发布Web服务的描述信息而没有源码,消费者和代理商只可使用黑盒测试。基于规约的测试通过接口文档来验证待测系统,如用户接口描述、设计任务书、需求列表、使用手册等。通常,测试者获得的关于Web服务的信息就是服务的规约,如WSDL、OWLS等。大多数Web服务发布都只包含了WSDL文档,WSDL规约中包含了服务提供的操作和参数的抽象信息。目前已有大量的研究工作围绕着基于WSDL的Web服务测试展开。如:Bai等[8]使用WSDL生成测试用例,然而该方法并不依赖于输入消息参数的类型元素,并且没有生成形式化模型;Li等[9]结合WSDL和用户手册提出了一个Web服务测试用例生成方法,介绍了一个支持这种方法的工具WSTDGen。这个工具允许用户定制数据类型并为每一个数据类型选择测试生成规则。Wu等[10]从WSDL文档中生成基于错误的XML架构数据类型的测试数据。Ma等[11]提出基于WSDL的测试数据生成方法,为单操作Web服务产生测试数据,并为Web服务的WSDL规约中的输入元素建模。通过模型对Web服务的输入数据进行拆解,直到数据类型足够简单,最后由模型底层的简单数据类型开始不断向上层递归生成Web服务的测试数据。但是,该方法只能为单个操作产生测试数据,不可以为多操作生成测试数据。 2.2语义Web服务测试
WSDL文档中仅指明了接口语法,而缺少服务的行为信息。因此许多研究人员寻找其它可用的、能够提供更多行为信息的规约。语义Web服务技术的出现为Web服务提供了丰富的语义规约。目前语义Web服务的描述规范主要包括:WSDLS、OWLS、WSMO、METEORS和SWSA/SWSL等,它们比WSDL包含了更多的信息。Web服务的本体语言(OWLS)不仅包含了行为信息,而且提供了服务操作中数据类型的语义信息。因此,这种带有语义的规约成为了研究的新热点。例如:Zhang和Zhu[12]使用本体来描述软件测试领域的概念和本体之间的关系,基于本体,使用语义Web服务技术来规定和实现服务之间的互操作性;Huang等[13]将OWL-S应用于SWS(语义Web服务)组合的模式检测,将OWL-S转换成一种类C语言PDDL,使用BLAST工具,可以生成消极与积极两种测试用例;Bai等[14]提出了一个基于本体测试的模型,可以对测试关系、概念和语义进行描述;Ramollari等[15]提出使用IOPE描述Web服务的语义,该方法使用RIF-PRD规则描述Web服务操作的前提条件(Preconditions)和影响(Effects),并使用OWL本体语言描述Web服务的数据模型。通过IOPE描述,将服务行为转换成SXM模型,最后用W方法产生测试用例。不足之处是该方法不能完全自动化,在IOPE转换SXM模型过程中部分操作需要手工完成。Kil和Nam[16]研究基于语义的Web服务组合问题,如Web服务元素间的语义关系等,并基于语义匹配给出了两种形式化认证技术:Boolean Satisfiability Solving和Symbolic Model Checking。
2.3基于形式化方法的Web服务测试
为实现面向服务软件系统的自动化测试,学术界和工业界越来越多地倾向于形式化规约方法。作为一种使用基于数学定义的语言描述软件系统及其特性的方法,形式化规约不仅可以在开发早期引入系统模型形式化地验证软件正确性,更为重要的是,从形式化规约中可以生成功能性测试用例,并且能够用于检验测试结果的正确性。形式化规约主要分为基于模型、基于有限状态、进程代数和代数规约四大类方法[17]。 基于模型的形式化规约方法旨在建立预期行为的模型,使用Z、VDM和B语言描述系统状态以及改变状态的操作。大部分已有方法都是从规约中衍生出一个有限自动机,生成测试操作序列,但是从有限自动机中生成的路径可能是不可行路径。例如:Bertolino等[18]提出了用协议状态机PSM增加服务描述WSDL。PSM是一个UML2.0图,用来定义状态、操作命令及关联前置和后置条件。将PSM模型映射到符号转换系统STS模型,然后产生自动化的测试用例,紧接着可以调用服务测试产生的测试用例,从而验证服务的一致性。此方法的关键技术在于使用PSM模型描述的存取协议来测试Web服务实体的一致性。 对于有限状态结构的系统可以使用基于有限状态的形式化规约描述方法,在一个有限值集合中定义状态,使用有限状态机或状态图等表示状态及状态转换。但是有时很难根据内部变量值的所有组合生成一个有限状态机,而且即使状态空间有限也会产生状态组合爆炸问题。例如:Keum等[19]提出了用扩展的有限状态机EFSM来为Web服务建模,定义了一个用WSDL规约来获得EFSM的过程。这个过程需要先填写一个表格,但是缺乏自动化实现填写功能的工具。Bourhfir等[20]提出了一个基于有限状态的用来生成测试用例的算法,该算法覆盖了模型的控制流和数据流。但是他们提出的方法在面对复杂的WSDL时却变得更加困难,由于没有相关的自动化工具支持,这种方法的实现过于繁重。同时,基于EFSM方法的消息请求与响应是成对的,一个请求需要紧随一个响应,对于消息的请求和响应不能是任意顺序。进程代数把系统描述成一系列通信的并发进程,如通信序列进程CSP、标签转换系统LTS和符号转换系统STS。与基于状态的方法相比,进程代数的表达能力更强,能够处理非确定性,定义测试者观察系统的实现关系。但是如何将实现关系有效地转换成测试领域的故障模型是一个尚未完全解决的问题。例如:Frantzen等[21]提出了一个叫做Jambition的工具,这个工具为Web服务在线产生测试用例。首先将服务的WSDL信息转变成STS模型,用STS模型来规定服务功能方面;然后将STS模型导入Jambition工具,该工具会对STS中是否存在描述错误进行判断,并生成测试用例,调用Web服务进行测试。为了覆盖所有的转换状态,Jambition产生的测试用例比手工测试要多。由于Jambition工具是基于Java Library砟DSTS,其中的一个限制就是Library缺少递归循环的数据类型,而且Jambition工具不能对无效用例进行测试。 近年来,在基于代数规约的软件测试技术研究方面,由于渐增式集成测试策略的引进,解决了测试组合大爆炸问题,使代数测试技术对于面向对象的软件和基于构件的软件的测试趋于实用。为了将代数规约方法运用于面向服务软件的测试,研究者们对行为代数和有限代数进行了扩展和组合,改进了代数规约语言[22],并开发了可以从描述Web服务的WSDL文档中自动化生成代数规约基调单元部分的工具,以GoGrid系统为例进行了案例分析[2324]。在这些工作的基础上,Liu等[2526]又提出了新的代数规约语言SOFIA,它更适合用于面向服务的测试。研究表明[24,2728],应用代数规约语言描述软件系统时,其规约具有简短精确易于理解的特点,能够在不暴露被测系统实现细节的前提下描述系统的可观察行为。更为重要的是,它能够使测试全过程自动化,包括测试用例生成、测试平台生成和测试结果的正确性检验,这对于面向服务软件在线测试来说至关重要。
3结语
在当前以面向服务计算思想为核心、广泛使用以更系统更高效的松散耦合服务来构建分布式应用的形势下,Web服务测试技术为保证服务质量提供了可靠的技术支持。国内外学者对Web服务测试进行了大量研究,并取得了一些研究成果,然而还存在着一些不足,例如在Web服务运行时动态组合测试、分布式协作测试、测试用例的在线自动化生成技术等方面还需要作进一步研究。 ⒖嘉南祝
[1]BOZKURT M,HARMAN M,HASSOUN Y.Testing web services:a survey[D].London:King's College London,2010.
[2]BENTAKOUK L,POIZAT P,ZADI F.A formal framework for service orchestration testing based on symbolic transition systems[M].Testing of Software and Communication Systems.Springer Berlin Heidelberg,2009:1632.
[3]HOU S S,ZHANG L,LAN Q,et al.Generating effective test sequences for BPEL testing[C].9th International Conference on Quality Software,2009:331340.
[4]MEI L,CHAN W K,TSE T H.Data flow testing of serviceoriented workflow applications[C].ACM/IEEE 30th International Conference on Software Engineering,2008:371380.
[5]MEI L,CHAN W K,TSE T H.Data flow testing of service choreography[C].Proceedings of the the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering,2009:151160.
[6]MEI L,CHAN W K,TSE T H,et al.An empirical study of the use of FranklWeyuker data flow testing criteria to test BPEL web services[C].Computer Software and Applications Conference,33rd Annual IEEE International,2009:8188.
[7]HANNA S,MUNRO M.An approach for wsdlbased automated robustness testing of web services[M].Information Systems Development.Springer US,2009:10931104.
[8]BAI X,DONG W,TSAI W T,et al.WSDLbased automatic test case generation for web services testing[C].ServiceOriented System Engineering,2005:207212.
[9]LI Z J,ZHU J,ZHANG L J,et al.Towards a practical and effective method for web services test case generation[C].ICSE Workshop on Automation of Software Test,2009:106114.
[10]XU W,OFFUTT J,LUO J.Testing web services by xml perturbation[C].16th IEEE International Symposium on ISSRE 2005,2005:10266.
[11]MA C,DU C,ZHANG T,et al.WSDLbased automated test data generation for web service[C].2008 International Conference on Software Reliability Engineering,Computer Science and Software Engineering,2008:731737.
[12]ZHANG Y,ZHU H.Ontology for service oriented testing of web services[C].IEEE International Symposium on ServiceOriented System Engineering,2008:129134.[13]HUANG H,TSAI W T,PAUL R.Automated model checking and testing for composite web services[C].Eighth IEEE International Symposium on ObjectOriented RealTime Distributed Computing,2005:300307.
[14]BAI X,LEE S,TSAI W T,et al.Ontologybased test modeling and partition testing of web services[C].IEEE International Conference on Web Services(CWS'08),2008:465472. [15]RAMOLLARI E,KOURTESIS D,DRANIDIS D,et al.Leveraging semantic web service descriptions for validation by automated functional testing[M].The Semantic Web:Research and Applications.Springer Berlin Heidelberg,2009:593607.
[16]KIL H,NAM W.Semantic web service composition using formal verification techniques[M].Computer Applications for Database,Education and Ubiquitous Computing.Springer Berlin Heidelberg,2012:7279.[17]GARCAFANJUL J,DE LA RIVA C,TUYA J.Generation of conformance test suites for compositions of web services using model checking[C].Testing:Academic and Industrial ConferencePractice and Research Techniques,TAIC PART 2006,2006:127130.
[18]BERTOLINO A,FRANTZEN L,POLINI A,et al.Audition of web services for testing conformance to open specified protocols[M].Architecting Systems with Trustworthy Components.Springer Berlin Heidelberg,2006:125.[19]KEUM C S,KANG S,KO I Y,et al.Generating test cases for web services using extended finite state machine[M].Testing of Communicating Systems.Springer Berlin Heidelberg,2006:103117.
[20]BOURHFIR C,DSSOULI R,E ABOULHAMID,et al.Automatic executable test case generation for EFSM specified protocols[C].International Workshop on Testing of Communicating Systems (IWTCS’97),1997:7590.
[21]FRANTZEN L,DE LAS NIEVES HUERTA M,KISS Z G,et al.Onthefly modelbased testing of web services with jambition[M].Web Services and Formal Methods.Springer Berlin Heidelberg,2009:143157.
[22]ZHU H,YU B.Algebraic specification of web services[C].2010 10th International Conference on Quality Software,2010:457464.
[23]LIU D,ZHU H,BAYLEY I.Applying algebraic specification to cloud computinga case study of infrastructure as a service gogrid[C].Proceeding of The Seventh International Conference on Software Engineering Advances (ICSEA 2012),2012:407414.
[24]LIU D,ZHU H,BAYLEY I.A case study on algebraic specification of cloud computing[C].2013 21st Euromicro International Conference on Parallel,Distributed and NetworkBased Processing (PDP),2013:269273.
[25]ZHU H,LIU D,BAYLEY I.Reference manual of the SOFIA algebraic specification language[J].Department of Computing and Communication Technologies,Oxford Brookes University,Technical Report TRCCTAFM012013,2013.
[26]LIU D,ZHU H,BAYLEY I.SOFIA:An algebraic specification language for developing services[C].2014 IEEE 8th International Symposium on Service Oriented System Engineering (SOSE),2014:7075.
[27]LIU D,ZHU H,BAYLEY I.From algebraic specification to ontological description of service semantics[C].2013 IEEE 20th International Conference on Web Services (ICWS),2013:579586.
[28]⒂钚.基于代数规约的Web服务自动化测试技术研究[D].南京:南京理工大学,2015.
Web服务测试综述
下一篇:SharpGL三维建模技术实现