WebService测试方案    

2014-09-18 18:41 狂师  阅读(844)  评论(0) 编辑 收藏    

1.WebService简介

WebService是一种革命性的分布式计算技术,本质上就是网络上可用的API,可以直接在网络环境调用的方法。

WebService常用的框架有axis、xfire、cxf等。

WebService发布后,其服务是封装在一个wsdl(Web Services Description Language,Web服务描述语言)文件中,客户端发请求主要是向发布好的wsdl地址以SOAP方式发请求,调用过程如下:

Ø  服务端:

n  生成服务描述文件,以供客户端获取。

n  接收客户端发来的SOAP请求消息,解析其中的方法调用和参数格式。

n  根据wsdl和wsml的描述,调用相应的COM对象来完成指定功能,并把返回值放入SOAP回应消息返回给用户。

Ø  客户端:

n  取得服务端的服务描述文件,解析该文件从而获得服务端的服务信息以及调用方式。

n  指定调用方法和参数,生成恰当的SOAP请求消息,发往服务端。

n  等待服务端返回的SOAP回应消息,解析得到返回值。

2.WebService测试说明

WebService的测试主要围绕功能测试、性能测试和安全性测试展开,下面主要描述WebService三大测试的要点。

2.1 WebService功能测试

测试目的:测试系统所实现WebService接口的功能。

进入条件:开发人员提供已实现功能的程序包,和待测试webservice的方法名、参数以及实现的功能描述。

测试要点:不同的参数组合,应按设计要求返回相应的信息。

2.2 WebService性能测试

测试目的:测试系统所实现WebService接口的性能。进入条件:WebService接口的功能测试已完毕。

测试要点:测试并发调用WebService接口,观察其性能表现,主要是在不同的并发量、持续运行时间和数据库不同容量下,事务的响应时间、总事务数、事务的成功率、点击率等,同时监控硬件资源的消耗情况。

2.3 WebService安全性测试

测试目的:测试系统所实现WebService接口的安全性。

进入条件:WebService接口的功能测试已完毕。

测试要点:测试WebService接口的调用是否有用户名、密码验证,恶意调用是否会导致系统崩溃等。

3.WebService功能测试

目前掌握的测试工具soapUI可以进行WebService的功能测试,下面以测试存储服务的PIXManager接口详细介绍使用soapUI进行WebService功能测试的操作步骤。

3.1 新建工程

1、单击‘File’->‘ New soapUI Project’,如下图:

WebService测试方案_测试开发

 

2、在弹出的对话框中输入待测试的ws信息,然后点击 [OK] 到下一步

Project Name:PIXManager

Initial WSDL/WADL:http://192.168.2.51:8181/WEB-INF/services/PIXManager?wsdl

Create Requests:选中

Create TestSuite:选中

Relative Paths:选中

 WebService测试方案_测试开发_02

 

 

3、保存project

 

 WebService测试方案_测试开发_03

4、生成初始的测试用例

选择One TestCase for each Operation:每个接口创建一个用例

选择Create new empty requests:创建一个空的请求

Operations:选择待测试的方法

选择Generates a default LoadTest for each created TeseCase:每个用例生成一个负责测试(为后面性能测试做准备

 WebService测试方案_测试开发_04

 

 

5、生成TestSuite

 

WebService测试方案_测试开发_05

这里可以根据习惯更改TestSuite的名称,如TestSuite:PIXManager。

6、在soapUI的左侧生成如下目录

 

 WebService测试方案_测试开发_06

此时新建project已完成!

3.2 发送请求

1、创建项目的时候我们选择了Create sample requests for all operations,所以每个接口方法都会自动创建一个请求,如下图:

WebService测试方案_测试开发_07

2、双击它就可以打开编辑面板,左边是请求内容,右边是响应内容。WebService测试方案_测试开发_08

 

3、在Form页面输入参数,单击 按钮执行,右侧查看结果。

 

WebService测试方案_测试开发_09

根据反馈的结果判断请求是否发送成功。

输入的xml内容如下:

 

4.WebService性能测试

目前掌握的是两个测试工具soapUI和LoadRunner,其中soapUI可以进行WebService的功能和性能测试,而LoadRunner主要是性能测试。

下面分别介绍两个工具进行WebService性能测试的步骤。

 

4.1 采用soapUI测试步骤

基于前面soapUI功能测试的步骤,若已成功,可将脚本参数化后用于性能测试,具体步骤如下:

4.1.1 数据生成器

1、右键单击Test Steps,‘Add Step’->‘DataGen’,如下图:

 WebService测试方案_测试开发_10
 

2、输入步骤名称

 

WebService测试方案_测试开发_11

3
、设置生成方法

1) 点击 WebService测试方案_测试开发_12新建

 

WebService测试方案_测试开发_13

2) 
定义名称和类型

 

WebService测试方案_测试开发_14

Name:自定义,如MEDICALSERVICE_NO

Type:选择‘Number’型,

 

3) 设置为‘Randomize instead of step

 

WebService测试方案_测试开发_15

4.1.2 参数化

打开待参数化的请求,找到需参数化的内容,选中并右键单击,如下图:。

 

WebService测试方案_测试开发_16

选择‘Get Data’->‘Step 1:[DataGen]’->‘property [MEDICALSERVICE_NO]’

原来的数据被替换为:${DataGen#MEDICALSERVICE_NO}

4.1.3 场景执行和监控

1、打开‘TestSuite:PIXManager’->‘registerPatientInterface’->‘Load Tests’->‘registerPatientInterface

 WebService测试方案_测试开发_17
       

2、设置并发线程,单击 执行测试

WebService测试方案_测试开发_18
 

4.1.4 结果分析

        

4.2 采用LoadRunner测试步骤

 

4.2.1 脚本准备

1.选择协议

 

WebService测试方案_测试开发_19

2
、导入wsdl

 

 

 

 

WebService测试方案_测试开发_20

WebService测试方案_测试开发_21

WebService测试方案_测试开发_22

WebService测试方案_测试开发_23

3
、Add Service Call

 

 WebService测试方案_测试开发_24

WebService测试方案_测试开发_25

设置好后生成如下脚本:

         web_service_call( "StepName=registerPatientInterface_101",

                 "SOAPMethod=PIXManager_Service|PIXManager_ServicePort|registerPatientInterface",

                   "ResponseParam=response",

                   "Service=PIXManager_Service",

                   "ExpectedResponse=SoapResult",

                   "Snapshot=t1294907356.inf",

                   BEGIN_ARGUMENTS,

                   "msgID=",

                   "sendMsgOrgID=",

                   "sendMsgPosID=",

                   "eventDateTime=",

                   "eventDateTimeSpecified=",

                   "xml=",

                   END_ARGUMENTS,

                   BEGIN_RESULT,

                   "return=Param_return",

                   END_RESULT,

                   LAST);

 

4、输入参数

1)输入msgID、sendMsgOrgID、sendMsgPosID、eventDateTime、eventDateTimeSpecified;

                   "msgID=11111",

                   "sendMsgOrgID=111111",

                   "sendMsgPosID=111111",

                   "eventDateTime=2011-01-12 10:10:10",

                   "eventDateTimeSpecified=true",

 

2)输入Xml;

                   "xml=

                   "

                   "               "

                   "               "

                   "               "

                   "               "

                   "               "

                   "               "

                   "               "

                   "               "

                   "               "

                   "               "

                   "               "

                   "               "

                   "               "

                   "               "

                   "               "

                   "               "

                   "               "

                   "               "

                   "               "

                   "               "

                   "               "

                   "               "

                   "               "

                   "               "

                   "               "

                   "               "

                   "               "

                   "               "

                   "               "

                   "               "

                   "               "

                   "               "

                   "               "

                   "      ",

  

5、脚本增强

1)参数化;

 

 

 

 

 WebService测试方案_测试开发_26

 

WebService测试方案_测试开发_27


WebService测试方案_测试开发_28

WebService测试方案_测试开发_29

2)增加事务并打印返回结果;

 

         lr_start_transaction("registerPatientInterface");

 

                  if (strstr(lr_eval_string("{Param_return}"),"C99999999$")==NULL)    {

 

 

                   if (strstr(lr_eval_string("{Param_return}"),"empty!")==NULL) {

                           

                            lr_end_transaction("registerPatientInterface", LR_STOP);

                            lr_output_message(lr_eval_string("出错了!返回的信息如下:{Param_return}"));

                   }

 

 

                   else{

                           

                            lr_end_transaction("registerPatientInterface", LR_FAIL);

                            lr_output_message(lr_eval_string("请求成功,保存失败!返回的信息如下:{Param_return}"));

                   }

 

         }

 

         else{

                  

                   lr_end_transaction("registerPatientInterface", LR_PASS);

                   lr_output_message(lr_eval_string("请求成功,保存成功!返回的信息如下:{Param_return}"));

 

         }

 

3)调试;

在run-time settings中设置增强日志类型,以便看到更详细的信息。

 

WebService测试方案_测试开发_30

调试完成后调整为:Send messages only when an error occurs

4)去掉默认的事务划分;

 

 WebService测试方案_测试开发_31

4.2.2 场景执行和监控

1、脚本调试成功后,点击‘Tools’->‘Create Controller Scenario’,如下图:

 

WebService测试方案_测试开发_32

2
、设置虚拟用户数,如下图:

 

WebService测试方案_测试开发_33

3
、调整虚拟用户的增长、下降方式

 

WebService测试方案_测试开发_34

4.2.3 结果分析

  

4.WebService安全性测试

暂无

  • 分类            LoadRunner,            Web Service
  •