webservice的测试,首先需要了解一下SOA ,对于他的定义我想大家可以从baidu或google上去了解和进一步学习,这里简单说明,
SOA---
面向服务的体系结构(Service-Oriented Architecture,SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以一种统一和通用的方式进行交互。
按我个人的理解,简单说,当一个公司使用了很多套业务系统 例如 OA,MIS,DataBase 等等,这些系统可能是通过不同的开发环境研发的产品,如果我们需要一个管理系统去统一管理这些系统的时候会发现,我们必须采用不同的开发语言研发出针对不同系统的接口,并调用这些接口,这实际上存在着很大的技术难度和维护成本,说白了你必须要拥有java,c,c#等等的开发技术人员。 而SOA的思想即提供了这样的一种模式,就是让每个产品都形成或留有统一的一套接口,当我们需要使用不同系统的接口时,只需要采用SOA规定出来的规范来编制就可以了,即采用一种技术语言实现,这就避免了跨语言的编制难度。
我们这里所说的webservice测试,实际是通过使用基于 XML 的语言(称为 Web 服务描述语言(Web Sevices Definition Language,WSDL))来描述接口,服务已经转到更动态且更灵活的接口系统中.实际上就是,研发人员在产品的 业务系统上 通过WSDL包上了一层接口,然后向外部提供可以执行业务的方法。而我们需要做的就是通过QTP连接到WSDL,获取到相应的方法,给入参数,执行测试。
上面对待侧内容做了一些说明,下面是具体操作
首先,操作环境QTP10,这个版本可以安装支持WDSL测试的插件,安装方法,如果你已安装了QTP10,那需要你再安装一个插件
选择上这个 Web Services Add-in 并执行 将安装在本地硬盘驱动器上 下一步,随后系统还会提示你安装几个工具组件,执行完安装。对于没有许可证的童鞋 或许你需要想办法破解一下组件了。。。baidu or google
重新打开QTP,选择web service插件 如下:
进入到系统后,可以看到一个比较明显的不同,如下:
接下来,是一个关键环节,既然产品中提供了统一的SOA接口,同时我们也拥有了支持这个接口的插件,接下来,我们就需要连接这个接口来提取我们需要的业务方法,执行Web Service Wizard 通过向导来建立我们的连接:
执行下一步,在下图中,输入WSDL的URL地址,这个地址一般由研发人员提供给你:
除了给出URL的方式,由于wsdl使用的xml扩展语言方式,那么我们也可以通过导入xml结构文件来实现,本次先不做介绍。执行下一步,连接一旦建立成功,QTP会把wsdl中包装的业务方法提取出来显示在列表中,我们只需要选择待侧的系统方法就可以了
完成界面,提示是否需要添加 xml检查点,我建议大家选上,特别是QTP的初学者,因为建立xml检查点似乎是有难度的。
形成的脚本很简单,注意,在方法addAppRoles中,对应的几个参数,其中第一个参数是一个对象结构,也就是xml的一个标准结构,如果是通过java语言执行的话,需要首先定义一个标准结构的对象,然后将这个对象作为参数,传入方法中,那么在qtp中如何实现呢??最初我一直在考虑如何去建立这样一个对象参数,但是,真正的实现方法远比我想象的要简单的多。进入到key view 模式:
可以看到,对应的语句,这里每一个参数都可以进行单独的参数化,如下:
选择第一个参数对应的参数化按钮,进入以下界面:
注意到,这个参数是一个xml structure类型的参数,选择edit xml structure按钮,进入到编辑界面:
qtp会将这个xml结构体结构导入,这样我们只需要操作具体的参数项就可以了,这里,将结构体中password这一参数进行了参数化。对这个结构体的参数化执行完毕。
接下来,可以通过同样的方法,把脚本代码中后面的参数也进行参数化,实现我们的自动化测试。
执行完以上内容,脚本就可以执行了,产生的结果报告中出现xml形式的报告模式,如下:
其中 没有权限 既是xml的返回结果,也是检查点检查的内容,根据输入条件的不同,会对应有不同的检查结果,需要对检查点也进行参数化。