WebService测试方案

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’,如下图:

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:选中

 

3、保存project

4、生成初始的测试用例

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

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

Operations:选择待测试的方法

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

 

 

5、生成TestSuite

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

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

此时新建project已完成!

3.2 发送请求

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

2、双击它就可以打开编辑面板,左边是请求内容,右边是响应内容。

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

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

输入的xml内容如下:


<?xml version="1.0"
encoding="GB2312"?>
        
<V_PATIENTREGC99999999
xsi:noNamespaceSchemaLocation="PATIENTREGC99999999.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  
        
<MEDICALSERVICE_NO>01</MEDICALSERVICE_NO>
                  
<NAME>小花</NAME>
                  
<BIRTH_DATE>1988-02-01T00:00:00</BIRTH_DATE>
         
        
<GENDER_CD>1</GENDER_CD>
         
<GENDER_VALUE>男性</GENDER_VALUE>
        
        
<MARITAL_ST_CD>10</MARITAL_ST_CD>
          
<MARITAL_ST_VALUE>未婚</MARITAL_ST_VALUE>
                 
<ID_NO_CD>01</ID_NO_CD>
              
<ID_NO_VALUE>居民身份证</ID_NO_VALUE>
              
<ID_NO>12586</ID_NO>
     
        
<MEDICARE_CD>01</MEDICARE_CD>
                
<MEDICARE_VALUE>社会基本医疗保险</MEDICARE_VALUE>
           
<MEDICAL_INSURANCE_NO>Y001</MEDICAL_INSURANCE_NO>
                  
<AR_CD>111</AR_CD>
                 
<AD_CD>01</AD_CD>
          
<AD_VALUE>户籍住址</AD_VALUE>
                 
<PROVINCE_NAME>上海</PROVINCE_NAME>
          
<CITY_NAME>上海</CITY_NAME>
         
<AREA_NAME>浦东区</AREA_NAME>
                
<STREET_ID>霞飞路</STREET_ID>
                
<VILLAGE_NAME>街</VILLAGE_NAME>
              
<HOUSE_NO>门牌号</HOUSE_NO>
               
<TEL_TYPE_CD>01</TEL_TYPE_CD>
            
<TEL_TYPE_VALUE>本人电话</TEL_TYPE_VALUE>
                  
<TEL_NO>1232312</TEL_NO>
     
        
<REGISTER_DATE>2010-09-27T14:31:00</REGISTER_DATE>
              
<RECORDER_NAME>小芳</RECORDER_NAME>
           
<REGISTER_PERSON_CODE>01</REGISTER_PERSON_CODE>
                  
<REGISTER_ORG_CODE>01</REGISTER_ORG_CODE>
       
        
<REGISTER_ORG_NAME>中科</REGISTER_ORG_NAME>
        
<SEND_TIME>2010-09-27T14:32:00</SEND_TIME>
   
        
<SEND_ORG_CODE>798921772</SEND_ORG_CODE>
       
        
<SEND_SYSTEM>222222222222</SEND_SYSTEM>
     
</V_PATIENTREGC99999999>

4.WebService性能测试

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

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

4.1 采用soapUI测试步骤

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

4.1.1 数据生成器

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

 
 

2、输入步骤名称

3、设置生成方法

1) 点击 新建

2) 定义名称和类型

Name:自定义,如MEDICALSERVICE_NO

Type:选择‘Number’型,

 

3) 设置为‘Randomize instead of
step

4.1.2 参数化

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

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

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

4.1.3 场景执行和监控

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

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

4.1.4 结果分析

4.2 采用LoadRunner测试步骤

4.2.1 脚本准备

1.选择协议

2、导入wsdl

3、Add Service Call

设置好后生成如下脚本:


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=<?xml version="1.0"
encoding="GB2312"?>
         
"

"<V_PATIENTREGC99999999
xsi:noNamespaceSchemaLocation="PATIENTREGC99999999.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">"

"
             
<MEDICALSERVICE_NO>01</MEDICALSERVICE_NO>"

"
             
<NAME>小花</NAME>"

"
             
<BIRTH_DATE>1988-02-01T00:00:00</BIRTH_DATE>"

"
             
<GENDER_CD>1</GENDER_CD>"

"
             
<GENDER_VALUE>男性</GENDER_VALUE>"

"
             
<MARITAL_ST_CD>10</MARITAL_ST_CD>"

"
             
<MARITAL_ST_VALUE>未婚</MARITAL_ST_VALUE>"

"
             
<ID_NO_CD>01</ID_NO_CD>"

"
             
<ID_NO_VALUE>居民身份证</ID_NO_VALUE>"

"
             
<ID_NO>13504568756</ID_NO>"

"
             
<MEDICARE_CD>01</MEDICARE_CD>"

"
             
<MEDICARE_VALUE>社会基本医疗保险</MEDICARE_VALUE>"

"
             
<MEDICAL_INSURANCE_NO>Y001</MEDICAL_INSURANCE_NO>"

"
             
<AR_CD>111</AR_CD>"

"
             
<AD_CD>01</AD_CD>"

"
             
<AD_VALUE>户籍住址</AD_VALUE>"

"
             
<PROVINCE_NAME>上海</PROVINCE_NAME>"

"
             
<CITY_NAME>上海</CITY_NAME>"

"
             
<AREA_NAME>浦东区</AREA_NAME>"

"
             
<STREET_ID>霞飞路</STREET_ID>"

"
             
<VILLAGE_NAME>街</VILLAGE_NAME>"

"
             
<HOUSE_NO>门牌号</HOUSE_NO>"

"
             
<TEL_TYPE_CD>01</TEL_TYPE_CD>"

"
             
<TEL_TYPE_VALUE>本人电话</TEL_TYPE_VALUE>"

"
             
<TEL_NO>1232312</TEL_NO>"

"
             
<REGISTER_DATE>2010-09-27T14:31:00</REGISTER_DATE>"

"
             
<RECORDER_NAME>小芳</RECORDER_NAME>"

"
             
<REGISTER_PERSON_CODE>01</REGISTER_PERSON_CODE>"

"
             
<REGISTER_ORG_CODE>01</REGISTER_ORG_CODE>"

"
             
<REGISTER_ORG_NAME>中科</REGISTER_ORG_NAME>"

"
             
<SEND_TIME>2010-09-27T14:32:00</SEND_TIME>"

"
             
<SEND_ORG_CODE>798921772</SEND_ORG_CODE>"

"
             
<SEND_SYSTEM>222222222222</SEND_SYSTEM>"

"
    
</V_PATIENTREGC99999999>",

 

5、脚本增强

1)参数化;

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中设置增强日志类型,以便看到更详细的信息。

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

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

4.2.2 场景执行和监控

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

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

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

4.2.3 结果分析

4.WebService安全性测试

暂无

时间: 2024-12-13 08:48:39

WebService测试方案的相关文章

汽车车载天线整车测试方案

随着生活水平的提高,我国的汽车普及率也越来越高,汽车产业发展迅速.而且,车载通信技术和车联网技术也在不断的发展进步,相应地,汽车制造行业对汽车天线测试尤其是整车天线测试的需求越来越多.但是,目前在国内整车天线测试的测试环境不足,测试效率不够高,在一定程度上制约了汽车制造业的发展. 天线测试行业根据汽车行业的市场需求,推出了整车天线测试方案. 车载天线测试平台(方案之一) 汽车作为一个综合体,有多种频段通信的需求,包括: (1)0.15MHz~2.5GHz频段 (2)2.5GHz-30GHz频段

测试计划与测试方案的区别

 测试计划与测试方案的关系对比: 测试计划 测试方案 目标      对测试全过程的组织.资源.原则等进行规定和 约束,并制订测试全过程各个阶段的任务以及时 间进度安排,提出对各项任务的评估.风险分析 和需求管理      描述需要测试的特性.测试的方法.测试环境的 规划.测试工具的设计和选择.测试用例的设计 方法.测试代码的设计方案. 关注点      组织管理层面的文件,从组织管理的角度对一次 测试活动进行规划      技术层面的文档,从技术的角度度一次测试活动 进行规划 具体内容  1.

【总结】A/B测试方案

作者:zhanhailiang 日期:2014-11-26 上个版本迭代,实现了针对移动m站首页的AB测试功能,总结下对AB测试的理解. 1. 基本概念 所谓A/B测试,就是为同一个目标制定两个方案(比如两个页面),让一部分用户使用A方案,另一部分用户使用B方案,记录下用户的使用情况,看哪个方案更符合设计目标. 其中需要注意以下3点: 进行A/B测试必须是单变量.有时我们的多个设计稿可能会有非常大的差异,这样的情况一般不太适合做A/B测试,因为它们的变量太多了,变量之间会有较多的干扰,我们很难通

移动app测试方案及流程&测试点归纳

移动app测试方案及流程 1.首先是测试 资源确认及准备 (1)产品需求文档,产品原型图 ,接口说明文档及设计文档应该齐全 (2)测试设备及测试工具 的准备:IOS和android的不同年版本的真机,以及测试相关工具的准备 2.测试用例的设计及评审 (1)根据产品需求文档,产品原型图等文档,设计客户端的一般功能测试用例 (2)测试用例评审,修改与完善,评审过后着手进入正式测试阶段 3. UI测试 (1)确保手头的原型图与效果图为当前最新版本,符合产品经理及用户需求 (2)测试过程一切以效果图为准

代码审计:安全性测试方案

安全性测试方案 一.静态代码测试 主要通过对源代码进行安全扫描,根据程序中数据流.控制流.语义等信息与其特有软件安全规则库进行匹对,从中找出代码中潜在的安全漏洞.   代码审计工具RIPS:   介绍:RIPS是一个用php编写的源代码分析工具,它使用了静态分析技术,能够自动化地挖掘PHP源代码潜在的安全漏洞.渗透测试人员可以直接容易的审阅分析结果,而不用审阅整个程序代码.由于静态源代码分析的限制,漏洞是否真正存在,仍然需要代码审阅者确认.RIPS能够检测XSS, SQL注入, 文件泄露,Hea

代码审核:安全性测试方案

安全性测试方案 一.静态代码测试 主要通过对源代码进行安全扫描,根据程序中数据流.控制流.语义等信息与其特有软件安全规则库进行匹对,从中找出代码中潜在的安全漏洞.   代码审计工具RIPS:   介绍:RIPS是一个用php编写的源代码分析工具,它使用了静态分析技术,能够自动化地挖掘PHP源代码潜在的安全漏洞.渗透测试人员可以直接容易的审阅分析结果,而不用审阅整个程序代码.由于静态源代码分析的限制,漏洞是否真正存在,仍然需要代码审阅者确认.RIPS能够检测XSS, SQL注入, 文件泄露,Hea

黑盒测试基础之测试方案制定

1.     测试方案的重要性?   古人云:运筹帷幄之中,决胜千里之外.古人足不出户,通过正确的部署就能决定千里之外战争的胜利!而今对于测试人员而言,制定正确的测试方案,就是日后测试过程是否顺利的决定性因素!更是一个好的测试人员必备的技能之一! 所谓测试方案,是指整个测试过程中对测试人员.资源以及时间分配.合理的测试方案,能帮助测试过程有条不紊的进行,避免在测试过程中遭遇人员.时间.资源的冲突,以及测试环境搭建对测试进度的影响. 2.     测试计划OR测试方案傻傻分不清楚?一张图表回答你:

移动弱网测试方案之一

移动app在测试时,有时需要考虑弱网的情形下,app的表现,那么怎么营造这样子的环境呢? 一.首先需要控制网络,有两种方式其一使用网络损伤仪进行,其二采用软件方式.硬件采购费用太贵,因此使用win平台下的ShunraVESMBEditon或者Network Emulator for Windows Toolkit.两者都能达到控制丢包率,延迟等功能.考虑到ShunraVESMBEditon收费,接下来使用Network Emulator for Windows Toolkit软件. 二.手机ap

软件测试基础(五) 测试方案与测试计划

测试计划Testing plan,描述了要进行的测试活动的范围.方法.资源和进度的文档.它确定测试项.被测特性.测试任务.谁执行任务.各种可能的风险.测试计划可以有效预防计划的风险,保障计划的顺利实施.简而言之,测试计划说的是“做什么”. 测试方案描述的是测试需要测试的特性,测试的方法,测试环境的规划,测试工具的设计和选择,测试用例的设计以及测试代码的设计方案.简而言之,测试方案说的是“怎样做”. 测试计划编写6要素 1) why——为什么要进行这些测试: 2) what—测试哪些方面,不同阶段