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安全性测试

暂无

WebService测试方案的更多相关文章

  1. 从Google开源RE2库学习到的C++测试方案

    最近因为科研需求,一直在研究Google的开源RE2库(正则表达式识别库),库源码体积庞大,用C++写的,对于我这个以前专供Java的人来说真的是一件很痛苦的事,每天只能啃一点点.今天研究了下里面用到 ...

  2. webservice测试实例

    webservice测试实例(LR8.1) 接口声明:这个接口是sina的短信服务接口,我只是用来做脚本学习使用,不会对其产生压力:希望读者也只是用来进行录制学习,而不是产生压力. 接口文档:http ...

  3. 基于soapUI构建WebService测试框架

    基于soapUI构建WebService测试框架 http://www.docin.com/p-775523285.html

  4. Android MediaCodec硬编兼容性测试方案

    作者:阿宝 更新:2016-08-15 来源:彩色世界(https://blog.hz601.org/2016/08/15/android-mediacodec-hardcode-compatibil ...

  5. HttpDNS的坑以及一个针对安卓不太完善的测试方案

    背景:单位因为域名劫持(具体表象是某个地区的用户ping不通域名或者因为DNS解析的ip跨网段导致访问速度很慢)需要运维经常去定位,于是提出了httpDNS方案. 想法是美好的,现实是残酷的.没引入这 ...

  6. webservice 测试页面

    转载:http://www.cnblogs.com/JuneZhang/archive/2013/01/24/net.html 解决WebService 测试窗体只能用于来自本地计算机的请求 问题: ...

  7. 从轻测到上线,WeTest与《一起来捉妖》测试方案大公开

    从2016年Pokémon GO引发的AR游戏热潮开始,国内就一直在期待新的一款具备代表性的AR游戏的头部作品. 4月11日的腾讯首款AR探索手游<一起来捉妖>不仅为国内市场注入了新的活力 ...

  8. Memory及其controller芯片整体测试方案(下篇)

    {  第三部分  }  DDR总线的设计.调试和验证  在计算机架构中,DDR作为程序运算的动态存储器,面对如高性能计算.图形计算.移动计算.工业应用等领域的要求,发展出DDR4,以及用于图形计算的G ...

  9. Memory及其controller芯片整体测试方案(上篇)

    如果你最近想买手机,没准儿你一看价格会被吓到手机什么时候偷偷涨价啦! 其实对于手机涨价,手机制造商也是有苦难言,其中一个显著的原因是存储器芯片价格的上涨↗↗↗ >>> 存储器memo ...

随机推荐

  1. php 分析

    php  code in D:\10\11\php test in D:\10\11\php\test issue 1: <html><head><title>标记 ...

  2. mysql 提示too many connections”的解决办法

    最近使用python多线程连接mysq打数据,安装好mysql后,使用500线程连接发现提示:too many connections, 查询方法得知是需要进行配置才行: 产生这种问题的原因是: 连接 ...

  3. jquery选择器之基本筛选选择

    1.基本选择器 2.内容筛选选择器 3.可见性筛选选择器 4.属性筛选选择器 5.子元素筛选选择器 6.表单元素选择器 7.表单对象属性筛选器

  4. Java 服务器端手机验证码sdk

    感谢巨人们,站在巨人的肩膀上. 参考: http://blog.sina.com.cn/s/blog_80a6423d0102wm74.html#commonComment 1 点击生成验证码,发送到 ...

  5. Glide加载圆形图片

     方案1:经过验证,可以完美实现 Glide.with(context).load(url).asBitmap().centerCrop().into(new BitmapImageViewTarge ...

  6. Zend Studio 无法打开的解决办法

    今天郁闷的...正在写代码,突然 computer 嗝屁了,断电后自动重启了一次,开机后就悲剧了,Zend Studio 9 无法打开了,每次运行只弹窗个 请查看项目错误日志的提示 然后就没反应了.. ...

  7. 点(.)运算符和箭头(->)运算符的区别

    本机中,char类型数据占用1byte, unsigned int, int, long int, float类型的数据占用4 bytes, double类型的数据占用8bytes. 至于指向所有基本 ...

  8. submit 防止重复提交 --禁止提交

    <form action="/apply/apply" method="POST" id="indentForm"> <p ...

  9. 使用Cookie来统计浏览次数,当天重复刷新不增加

    这是一种不严谨的做法,在浏览量不是很重要的时候可以使用 var oldCookie = Request.Cookies["newsCookie"]; if (oldCookie = ...

  10. Gentoo安装详解(一) -- 安装基本系统

    前期准备 远程登录: 开启ssh服务: /etc/init.d/sshd start 设置密码: passwd 以便使用putty.ssh client远程登录上传stage等(有时在线下载很慢,而局 ...