开篇:润墨网以专业的文秘视角,为您筛选了一篇基于Android的Web服务自动测试研究与实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
摘要:随着移动平台的发展,Web服务在移动端的应用越来越广泛,这对移动端Web服务的正确性提出了一些新的挑战。本课题通过分析WSDL文档的结构和了解Android平台的开发方法以及学习Web服务测试的有关理论,最终在Android平台上实现了一个Web服务自动化测试的解决方案。理解Web服务的协议栈,包括SOAP、UDDI、WSDL等协议,重点学习WSDL的结构及其解析方法。为了保证Web服务的质量,必须对其进行详尽的测试,而由于Web服务是基于接口设计而实现的,采用自动化的测试方法对于提高Web服务测试的质量和效率显得尤为重要,本文在理解Web服务和测试相关知识,了解分析基于WSDL接口说明的Web服务自动测试方法的基础上,在android平台上实现了web服务自动化测试的解决方案。
关键词:Web服务;测试:Android:WSDL;SOAP
1、绪论
Web服务已经逐渐成为Internet上的重要组件之一,Web服务天生的优点使它完全适合于为移动设备提供服务;智能手机的不断普及,移动网民越来越多。Web服务和移动设备的结合,必将推动移动应用和移动互联网的发展。在此基础上,我们提出基于Android的Web服务自动测试研究与实现这一课题,为了保证Web Service的质量,必须对其进行详尽的测试,而由于Web服务是基于接口设计而实现的,因此采用自动化的测试方法对于提高Web服务测试的质量和效率显得尤为重要。本课题理解Web服务和测试相关知识,了解分析基于WSDL接口说明的Web服务自动测试方法。在当前Web服务和移动平台发展的大背景下,选择在Android平台下研究Web服务的自动化测试,即课题《基于Android的Web服务自动测试研究与实现》,研究在Android平台上Web服务的解决方案并实现。本文主要描述了Web服务及其测试的相关理论知识和Android平台下Web服务开发,最后介绍一种基于Android的Web服务自动测试研究与实现的实现方案。
2、Web服务描述语言(WSDL)
2.1 WSDL概述
Web服务描述语言(Web service s De scriDtionLanguage,WSDL)是用xML文档来描述Web服务的标准,是Web服务的接口定义语言,它用一种和具体语言无关的抽象方式定义了给定Web服务收发的有关操作和消息,与XM一样,具有可扩展性。通过WSDL,可以描述Web服务的以下三个基本属性:服务做些什么:服务所提供的操作(方法);如何访问服务:和服务交互的数据格式以及必要协议;服务位于何处;协议相关的地址,如URL。WSDL是一种XML Application,他将Web服务描述定义为一组服务访问点,客户端可以通过这些服务访问点对包含面向文档信息或面向过程调用的服务进行访问(类似远程过程调用)。WSDL首先对访问的操作和访问时使用的请求/响应消息进行抽象描述,然后将其绑定到具体的传输协议和消息格式上以最终定义具体部署的服务访问点。相关的具体部署的服务访问点通过组合就成为抽象的Web服务。
2.2 WSDL结构
一个基本的WSDL文档包含7个重要的元素。下面将分别介绍这几个元素以及他们的作用。WSDL文档的结构如图3—1所示。WSDLl文档在Web服务的定义中使用下列元素:
(1)Types-数据类型定义的容器,它使用某种类型系统(一般地使用XML Schema中的类型系统)。
(2)Message-通信消息的数据结构的抽象类型化定义。使用Types所定义的类型来定义整个消息的数据结构。
(3)Operation-对服务中所支持的操作的抽象描述,一般单个Operation描述了一个访问入口的请求/响应消息对。
(4)PortType-对于某个访问入口点类型所支持的操作的抽象集合,这些操作可以由一个或多个服务访问点来支持。
(5)Binding-特定端口类型的具体协议和数据格式规范的绑定。
(6)Port-定义为协议/数据格式绑定与具体Web访问地址组合的单个服务访问点。
(7)Service-相关服务访问点的集合。
3、Android与Web服务
3.1 Android简介
Android是基于linux开放性内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统,它采用了软件堆层(software stack)的架构,主要分为三部分。底层linux内核只提供基本的功能。其他的额应用则由各软件公司自行开发,部分程序以Java开发。Android不仅是一个操作系统,更是一个开源的体系架构。Android软件平台从上到下主要由五个部分构成:应用程序、应用程序框架、程序库、Android运行库以及Linux内核。
应用程序(Appl ieation):
Android的应用程序通常涉及用户界面和用户交互。Android本身提供了桌面(Home)、联系人(C0ntaet)、电话(Phone)和浏览器(Browsers)等众多的核心应用。所有的核心应用都使用Jave语言编写,同时开发者可以使用应用程序框架层的API实现自己的程序,这也是Androfd开源优势的体现。
应用程序框架(ApplicationFramework):
Android应用程序的开发基于程序框架和组件,开发人员拥有同核心应用程序一样的妙Is访问权限。应用程序后面是—系列的服务和系统,其中包括:
视图(Views)构造应用程序的视图部分,包括列表(Li8ts)、文本框(Textboxes)、按钮(Buttons)等。内容提供器(Content Providers)提供一种实现数据互访和共享的机制。
资源管理器(Resources Manager)负责管理非代码的访问,如本地字符串、图片资源及涉及布局的xML文件。
通知管理器(NotificationManager)用于将提示信息显示在状态栏上。例如,当有短信的时候,在状态栏上显示有新信息。
活动管理器(ActivityManager)用于管理应用程序的生命周期,并提供应用页面退出的机制。
通过这套应用框架,各种服务和组件可以被用户的应用重复利用。
程序库(Libraries):
Android本身还包含了一整套核心库,能被系统中不同的组件使用。它们通过Android应用程序框架为开发者提供服务。核心库主要包括:
C库-从BSD继承来的标准C系统函数库,是专门为基于嵌入式Linux设备制定的。
媒体库-该库支持多种常用的音频、视频格式的回放和录制,同时支持静态图像文件。编码格式包括MPEG4、H.264、MP3、AAC、ARM、JPG、PNG。
SurfaceManage-用于管理显示子系统,并为多个应用程序提供zD和3D图形层的无缝融合。
SGL一底层的zD图形引擎。3D1ibraries-基于PenGLESI.OApls实现,该库可以使用硬件加速,或者高度优化的3D软加速。
FreeType:提供位位图和矢量的字体显示。
SQLite-轻量级的关系型数据库。
Android运行库(RunTime):
所有的Android应用程序都运行在它自己的进程里,该进程是一个Dalvik虚拟机的实例。Dalvik虚拟机是Google自主研发的,它被设计成一个设备,可以同时高效地运行多个虚拟系统。Dalvik在保证API方面兼容的同时,针对移动手机进行了优化,占用更小的资源,提高了运行效率。Dalvik虚拟机依赖于底层linux内核提供的功能,如线程机制和内存管理机制。
Linux内核:
Android基于Linux2.6内核来提供系统的核心服务,如安全性,内存管理,进程管理,网络协议栈和驱动模型。Linux内核也同时作为硬件和软件栈之间的抽象层。从总体架构中看,Android平台显示出了自身的特点,如集成了WebKit浏览器、Dalvik虚拟机等模块。这些模块的应用也成为了Android开发的焦点,开发者可以利用Andrnid提供的模块接口,开发出具有特色的应用程序
3.2 Android应用程序构成
Android程序包括以下四部分:Activity、BroadcastIntent Receiver、Service、Content Provider
3.3 Android调用Web服务
利用Web服务可以将不同操作系统平台、不同语言、不同技术开发的应用整合到一起,具有非常广阔的应用前景。但是,在Android SDK中并没有提供调用Web服务的库。因此,为了实现在Android平台上访问Web服务的功能,我们需要借助第三方类库来实现。Android平台上常用的用来访问Web服务的软件包是kSoap2-android。k Soap2是JAVA环境下的一个轻量级Web服务客户端库,被设计用在Applets和J2ME中。kSoap2-android是其在Android平台下的移植,它提供了一个高效的Soap库,借助kSoap2我们就能够轻松访问Web服务。其实现过程简单、直接,对在Android平台上开发更多实用的应用程序提供很大的方便,也推动Web服务技术在Android平台上的发展。
4、基于Android的Web服务自动测试实现方案
4.1 需求分析
本课题是在android平台上实现Web服务自动化测试方案,需要了解以下一些知识:
Web服务概念,即什么是Web服务,Web服务有什么作用,参见第二章
Web服务的协议栈,重点是XML(参见2.2.1节)、SOAP(参见2.2.2节)、WSDL(参见第三章),对于WSDL需要彻底理解其结构以及如何解析
软件测试与Web服务测试(参见第四章),什么是软件测试,软件测试有哪些方法,软件测试的目的是什么,以及Web服务测试普通软件测试的有什么区别与限制
自动化测试的方法与其实现
移动平台Android应用开发框架的了解以及如何调用Web服务,在理解以上这些知识之后,然后来分析如何实现基于Android的Web服务自动化测试方案,作为一个Web服务请求者的角色对于一个给定的Web服务,只能够看到其WSDL文档,所有有关于该Web服务的相关信息,只能够从此WSDL文档的结构中得出来,而无法了解该Web服务的源码和实现细节。因此只能够采用黑盒测试,且仅实现功能测试部分。由于平台的限制该课题在Web平台上来实现本身就不具有实际的应用意义,因此仅限于在理论上研究并实现,不考虑其具体推广。首先需要解决是与实现平台无关的,如何获得指定的Web服务相关数据类型和操作相关信息,所以我们需要解析WSDL文档,解析出来的信息以一定的格式存放起来,例如:内存、文件或者数据库;以便在需要的时候可以调用;然后是在Android如何调用Web服务实现;测试数据的生成算法的实现;根据解析出来的Web服务相关信息,选定需要测试操作,根据操作指定参数类型生成参数;最后测试结果以友好的形式反馈给测试者。
4.2 WSDL解析实现
WSDL是一种特殊的XMLl文档,在Android(从APl8开始)平台上有三种解析方式:dom、sax和pull。但是这种解析方法只是将WSDL文档当成普通的XML文档,WSDL文档的结构关系需要自己去读懂,这种关系需要代码实现,反应到解析结构当中来,实现太复杂。所以没有采用普通的Android平台解析xML的三种方式。因为WSDL本身就是采用一定架构来实现的,针对这样的情况,IBM有解析WSDL的开源库。解析方案中采用的IBM的解析框架。解析过程当中引入了wssdl4j.jar、jdom.jar、xercesImpl.jar、castor-xml.jar等第三方库。
数据结构设计:
(1)一个类用于存放整个Web服务的相关信息:publ ic class ServiceInfo{/**服务名*/privateString name;/**WSDL文件位置*/private Stringwsdllocation://private String endpoint:privateString targetnamespace;private Schema wsdlType;/**The list of operations that this service defines,*/List operations。new ArrayList( ):……//省略相关参数的置值和返回的函数}该类当中包含一个变量:Listoperations=new ArrayList( );该变量就是存放相关操作的信息的,也是我们需要重点解析出来的。
(2)操作的存储结构类:
public class OperationInfo{
/**SOAP operation type*/
private String operationType=””;
/**The SOAP encoding style to use.*/
private String encodingStyle=””;
/**The URL where the target object is located。*/
private String targetURL=””;
/**The
namespace
URI
used
for
this
SOAPoperation.*/
private String namespaceURI=””;
/**The URI of the target object to invoke forthis SOAP operation.*/
private String targetObjectURl=””;
/**The name used to when making an invocation.*/
private String targetMethodName=””;
/**The input message.*/
private String inputMessageText=””;
/**The output message.*/
private String outputMessageText=””;
/**The name of input message.*/
private String inputMessageName=””;
/**The name of output message.*/
private String outputMessageName=””;
/**The action URI value to use when making ainvocation.*/
private String soapActionURI=””;
/**The encoding type“document”vs.“rpc”*/
private String style=“document”;
/**操作所对应的输入参数,一个参数对应一个Parameterlnfo类*/
private List inparameters=new ArrayList( );
/**操作所对应的输出参数,一个参数对应一个ParameterInfo类*/
private List outparameters=new ArrayList( ):
/**操作所对应的输入消息*/
private Message inmessage;
/**操作所对应的输出消息*/
private Message outmessage;
/**服务所对应的Schemas*/
private Vector wsdltypes;
private String serviceid;
……//省略相关参数的置值和返回的函数}
该数据结构中包含了输入参数List和输出参数List以及相应的参数的类型。
本课题是在Android平台的基础上,研究学习Web服务及其测试的相关知识。最终的成果是在Android平台是实现Web服务自动化测试解决方案,其创新点就是在移动终端来研究Web服务的自动化测试。Web服务相关协议是重点是难点,尤其是理解WSDLl文档结构。实现方案是PAWeb服务请求者的角色,注定无法了解其Web服务源码和实现细节,只能够采用黑盒功能测试。其次是因为在移动平台上实现,消耗流量比较严重,本课题具有一定的研究意义,但是在目前的移动网络情况下,不具有广泛推广意义。