Web服务测试内容和执行框架
2010-10-16陈向东
陈向东
(马鞍山师范高等专科学校 理工系,安徽 马鞍山 243041)
Web服务测试内容和执行框架
陈向东
(马鞍山师范高等专科学校 理工系,安徽 马鞍山 243041)
Web服务的测试内容包括系统功能测试和性能测试,性能直接决定Web服务所提供服务的质量水平,本文选择性能测试作为主要研究目标,根据Web服务测试的特点,对Web服务测试的内容进行分析.指定测试内容为:应用在服务请求端性能的测试、应用在网络上性能的测试和应用在Web服务提供端性能的测试.根据测试内容,提出了Web服务测试执行框架.测试执行框架由4个部分组成:测试主管、测试代理、测试用例、测试监视器.依据Web服务测试的内容和执行框架,使用.NET技术设计实现了一个Web服务测试工具WSTest.
Web服务;测试;内容;执行框架
1 导言
随着Web服务渗入到社会的各个应用领域,在市场需求的推动下,Web服务软件规模不断扩大,软件复杂性增加,但激烈的商业竞争使软件开发周期缩短,如何保证Web服务的正确性和可靠性越来越成为人们关注的问题.作为保证软件质量和可靠性的重要手段,Web服务软件测试就成为软件开发过程中的一个重要环节.由于Web服务软件的异构、分布、开发和平台无关等特性[1],因而不可能完全沿用传统软件测试技术对其进行测试,这使得对Web服务软件的测试要比传统程序的测试更加困难,从而在软件测试领域提出了新的挑战.
2 Web服务测试内容
测试是一种信息的收集和分析过程,过程中收集的数据用来预测怎样的负载水平将耗尽系统资源.测试保证程序具有良好的性能,能考察在不同的用户负载下,Web服务对用户请求做出的响应情况,以确保将来系统运行的安全性、可靠性和执行效率.测试的主要目的是为维护系统的性能,并找到有效的改善策略[2].测试在软件的质量保证中起着重要的作用,它包括的测试内容丰富多样.主要包括三个方面的测试:应用在服务请求端性能的测试、应用在网络上性能的测试和应用在Web服务提供端性能的测试.通常情况下,三方面有效、合理的结合,可以达到对系统性能全面的分析和瓶颈的预测.
2.1 应用在Web服务请求端性能的测试
应用在Web服务请求端性能测试的目的是考察Web服务的性能.它主要包括功能测试、性能测试、压力测试等,其中并发性能测试是重点[3].并发性能测试的过程是一个负载测试和压力测试的过程,即逐渐增加负载,直到系统的瓶颈或者不能接收的性能点,通过综合分析请求响应数据和资源监控指标来确定系统并发性能的过程.压力测试是确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统组成部分的相应输出项,例如吞吐量、响应时间、CPU负载、内存使用等来决定系统的性能,其中响应时间尤为重要,因为它直接反映了Web服务响应请求的速度.负载测试是一个分析软件应用程序和支撑架构、模拟真实环境的使用,从而来确定能够接收的性能过程.压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试.进行压力测试是指实际破坏一个Web服务,测试系统的反映.压力测试是测试系统的限制和故障恢复能力,也就是测试Web服务系统会不会崩溃,在什么情况下会崩溃.并发性能测试的目的主要体现在三个方面:以真实的业务为依据,选择有代表性的、关键的业务操作设计测试案例,以评价系统的当前性能:当扩展应用程序的功能或者新的应用程序将要被部署时,负载测试会帮助确定系统是否还能够处理期望的用户负载,以预测系统的未来性能.通过模拟成百上千个用户,重复执行和运行测试,可以确认性能瓶颈并优化和调整应用,目的在于寻找到瓶颈问题.负载测试,它是采用系统稳定运行情况下能够支持的最大并发用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作量强度性能的过程.如出现错误导致测试不能成功执行,则及时调整测试指标,例如降低用户数、缩短测试周期等.
2.2 应用在网络上性能的测试
应用在网络上性能的测试重点是利用成熟先进的自动化技术进行网络应用性能监控、网络应用性能分析和网络预测.网络应用性能分析的目的是准确展示网络带宽、延迟、负载和TCP端口的变化是如何影响用户的响应时间的.可以解决多种问题:服务请求端是否对数据库服务器运行了不必要的请求;当服务提供者从客户端接受了一个请求服务,应用服务器是否花费了不可接受的时间请求Web服务;在系统试运行之后,需要及时准确地了解网络上正在发生什么事情,什么应用在运行,如何运行;多少PC正在访问Web服务;哪些应用程序导致系统瓶颈或资源竞争.这时网络应用性能监控以及网络资源管理对系统的正常稳定运行是非常关键的.在大多数情况下用户较关心的问题还有哪些应用程序占用大量带宽,哪些用户产生了最大的网络流量.考虑到系统未来发展的扩展性,预测网络流量的变化、网络结构的变化对用户系统的影响非常重要.根据规划数据进行预测并及时提供网络性能预测数据.
2.3 应用在Web服务器上性能的测试
对于应用在服务提供者端上性能的测试,可以采用工具监控,也可以使用系统本身的监控命令.
3 Web服务测试执行框架
下面是执行Web服务测试时,提出的一个测试的框架,它由四部分组成:测试主管、测试代理、测试用例和测试监视器.这四部分可以同处一地,实际应用中通常分布在不同的地方,并且它们彼此之间使用SOAP(Simple Object Access Protocol)进行通讯.
测试监视器经常驻留和被测的Web服务同样的地方.测试监视器捕获在Web服务和测试代理客户端的信息,并且记录状态的变化.测试主管通过从数据库中创建案例(Scenarios)管理测试,并且通过使用SOAP并行的发送命令到一个或多个测试代理那运行[4].它也同步或异步的接受来自于一个或多个测试监视器的数据.
测试代理担当在Web服务方面测试主管的代理,它执行测试,验证结果,并且报告响应结果给测试主管.如果一个测试代理也和被测Web服务在同一位置的时候,它也能担当一个测试监视器的角色.
测试监视器经常驻留在与被测的Web服务同样的地方.测试监视器捕获在Web服务和测试客户端的信息,并且记录状态的变化.
测试主管通过从Web服务注册库中得到WSDL文档,并且通过使用SOAP并行的发送命令到一个或更多测试客户端那运行.它也同步或异步的接受来自于一个或更多测试监视器的数据.Web服务测试的执行框架如图1所示.
测试代理担当在Web服务方面测试主管的代理,它执行测试,验证结果,并且报告响应结果给测试主管.测试代理会先在注册库中搜寻需要的Web服务,如果一个测试客户端也和被测的Web服务在同一位置的时候,它也能担当一个测试监视器的角色.
Web服务测试用例的产生,由WSDL中得到能够使用的具体Web服务,以及调用每个Web服务需要输入的具体参数后,就能够通过CTM方法产生测试用例,该方法是针对功能性测试中面向黑盒产生测试用例的一种具体方法.通过CTM一个SUT(System Under Test)的输入和输出域的各个方面被划分成多个有效输入类,因此各个类之间的每种组合就是一个测试用例,这其中每个类之间的某种耦合或关联会减少有效测试用例的数量,这样会很大程度上提高产生测试用例的效率.目前,软件CTE(classification-tree editor)支持CTM,通过该CTE可以实现CTM,自动产生测试用例[5].
Web服务调用框架提供了一组基于WSDL文档驱动的简单API来调用、测试Web服务.只要服务采用WSDL文档描述,则不管服务是怎样提供或由哪里提供,均可以采用统一的模式来调用,过去仅局限于SOAP进行服务调用的模式转变为基于WSDL文档的通用服务调用模式.Web服务调用框架将Web服务调用的全部问题从以绑定为中心的观点转移到更抽象的级别上,与传统调用模式相比,Web服务测试框架具有以下一些特点:
(1)提供了一组对任何服务都独立于绑定访问的API;
(2)内置了端口类型编译器产生存根,允许使用抽象服务接口调用;
(3)允许无存根(完全动态)的服务调用;
(4)可以在运行时更新绑定;
(5)可以在运行时插入新的绑定;
(6)允许将绑定选择延后到运行时.
Web服务的最终承诺就是实现远程调用,通过对服务调用各阶段的分析,以及阶段间调用关系的总结,将服务从最初发现到最终调用的整个过程进行无缝连接,实现了服务的动态调用、测试[6].事实证明,它被直接设计用来调用由Web服务描述语言描述的Web服务,隐藏了底层访问协议 (如SOAP)的复杂性,由于WSDL文档的服务绑定部分本身是可扩展的,这样就可以通过给服务添加新的绑定,使之能够通过某个定制的协议访问该服务,Web服务测试执行框架不仅增加了面向服务应用的灵活性和扩展性,也在某种程度上将Web服务的调用提高到一个更抽象的不基于特定SOAP协议的高度,有效隐藏了底层访问协议的复杂性.
4 WSTest测试系统
4.1 设计思想
WSTest测试系统是在微软VS.NET2005环境下实现的.由于Web服务通信协议多采用标准的SOAP协议,因此.NET提供了一套API来实现SOAP的封装、传输、解析,作为SOAP处理机,它的处理对象就是SOAP消息..NET中对SOAP消息的处理是通过在处理器间传送一个MessageContext对象来完成的.MessageContext含有处理请求消息或响应消息所需的所有数据,其中关键数据有:一个请求消息、一个响应消息以及当前消息处理的所有元数据.每个处理器都可访问MessageContext的所有数据,因此,每一处理器都可使用修改请求消息及任何可能存在的响应消息.
WSTest测试程序主要包括6个部分:(1)输入WSDL地址,解析WSDL文档,得到Web服务信息.(2)初始化被测Web服务需要输入的参数值.(3)发送Web服务请求,封装请求消息为SOAP格式.(4)传输SOAP请求,得到返回结果.(5)解析SOAP消息,得到Web服务结果.(6)用二维图表显示不同测试的性能指标.程序主体框架描述如图2所示.
4.2 测试实验
WSTest的用户界面如图3所示,开始的时候,先要确定请求Web服务的WSDL地址的具体位置,如 http://localhost/service1.asmx,此时点击“测试”按钮,这一步就是在Web服务提供者位置查找到该Web服务的WSDL地址,并且把WSDL文件的内容解析出来.如果输入所需参数,则会返回不同的测试结果.
图3 测试名为service1.asmx的Web服务
5 结论
在进行Web服务测试时,需要确定测试内容,定义测试执行框架,然后设计具体测试系统进行测试.Web服务性能测试的内容主要包括应用在服务请求端性能测试、应用在网络上性能测试和应用在Web服务提供端性能测试.Web服务测试执行框架包括测试主管、测试代理、测试用例和测试监视器.
〔1〕汤永刚.Web service实现技术研究[J],福建电脑,2006,15(3):34-35,29.
〔2〕陈隋和,钟勇.一种增强 Web Services的服务质量和性能的方法[J].计算机应用,2006,26(2):472-475.
〔3〕宫去战.软件测试[M].北京:国防工业出版社,2006.
〔4〕李刚毅,金蓓弘.自动化回归测试的技术和实现[J].计算机应用研究,2006:186-188.
〔5〕W3C.WebServicearchitecture,W3C working Group Note,www.w3.org/tr/ws-arch/,2009.
〔6〕Davidson,N. Web Services Testing.The Red-gate software technical papers,2002.http://www.redgate.com.
〔7〕黄宁,余莹,张大勇.Web服务软件测试技术的研究与实现 [J].计算机工程与应用,2004,35:147-149.
TP311.5
A
1673-260X(2010)02-0056-03