性能测试JMeter工具必知必会知识系列(14) :JMeter测试Web服务

 

JMeter测试Web服务

14.1 Web服务简介

什么是Web服务

Web服务即Web Service。Web服务是一种服务导向架构的技术,通过标准的Web协议提供服务,目的是保证不同平台的应用服务可以互操作。

根据W3C的定义,Web服务(Web service)应当是一个软件系统,用以支持网络间不同机器的互动操作。网络服务通常是许多应用程序接口(API)所组成的,它们透过网络,例如国际互联网(Internet)的远程服务器端,执行客户所提交服务的请求。

Web服务三要素

SOAP

一个基于XML的可扩展消息信封格式,需同时绑定一个传输用协议。这个协议通常是HTTP或HTTPS,但也可能是SMTP或XMPP等其他协议。

SOAP协议有SOAP1.1与SOAP1.2两种主要的版本,SOAP可以运行在任何其他应用协议之上。

WSDL

一个XML格式文档,用以描述服务端口访问方式和使用协议的细节。通常用来辅助生成服务器和客户端代码及配置信息。

可以看成是Web服务的使用说明书。

UDDI

一个用来发布和搜索WEB服务的协议,应用程序可借由此协议在设计或运行时找到目标WEB服务。UDDI旨在将全球的WEB服务资源进行共享,促进全球经济合作。但是使用WEB服务并不是必须要使用UDDI,因为很多时候使用者已经知道了WEB服务地址就可以进行调用。

这些标准由这些组织制订:W3C负责XML、SOAP及WSDL;OASIS负责UDDI。

SOAP

SOAP构建模块

一条SOAP消息就是一个普通的XML文档,包含下列元素:

必需的Envelope元素,可把此XML文档标识为一条SOAP消息

可选的Header元素,包含头部信息

必需的Body元素,包含所有的调用和响应信息

可选的Fault元素,提供有关在处理此消息所发生错误的信息

所有以上的元素均被声明于针对SOAP封装的默认命名空间中:

http://www.w3.org/2001/12/soap-envelope

以及针对SOAP编码和数据类型的默认命名空间:

http://www.w3.org/2001/12/soap-encoding

SOAP消息组成

 

SOAP消息例子

股票查询服务,根据股票名称查询股票价格,返回股票价格。

 

WSDL

WSDL文档结构

WSDL元素结构示意图如下图所示:

其中,1.Types是一个数据类型定义的容器,包含了所有在消息定义中需要的XML元素的类型定义。

2.Message具体定义了在通信中使用的消息的数据结构,Message元素包含了一组Part元素,每个Part元素都是最终消息的一个组成部分,每个Part都会引用一个DataType来表示它的结构。Part元素不支持嵌套。

3.PortType具体定义了一种服务访问入口的类型,何谓访问入口的类型呢?就是传入/传出消息的模式及其格式。一个PortType可以包含若干个Operation,而一个Operation则是指访问入口支持的一种类型的调用。以上三种结构描述了调用Web服务的抽象定义,这三部分与具体Web服务部署细节无关,是可复用的描述(每个层次都可以复用)。

4.Service描述的是一个具体的被部署的Web服务所提供的所有访问入口的部署细节,一个Service往往会包含多个服务访问入口,而每个访问入口都会使用一个Port元素来描述。

5.Port描述的是一个服务访问入口的部署细节,包括通过哪个Web地址(URL)来访问,应当使用怎样的消息调用模式来访问等。其中消息调用模式则是使用Binding结构来表示。

6.Binding结构定义了某个PortType与某一种具体的网络传输协议或消息传输协议相绑定,从这一层次开始,描述的内容就与具体服务的部署相关了。比如可以将PortType与SOAP/HTTP绑定,也可以将PortType与MIME/SMTP相绑定等。

WSDL端口

<portType>元素是最重要的WSDL元素。它可描述一个Web service可被执行的操作以及相关的消息。可以把<portType>元素比作传统编程语言中的一个函数库(或一个模块,或一个类)。端口包含如下类型:

1.一个One-way操作的例子:

 

2.一个Request-response操作的例子:

一个绑定的例子:

14.2 应用案例(免费领取Python自动化学习资料  工具,面试宝典面试技巧,加QQ群,1140267353,群内还会大佬技术交流)

案例说明

这里以天气预报服务为例。

 

操作步骤

1.添加线程组;

2.添加HTTP请求取样器并配置;

3.在取样器节点下添加“HTTPHeaderManager”并配置;

4.在取样器节点下添加查看结果树;

5.执行看结果。

使用SOAP1.1时配置测试

HTTP请求配置:1.Server Name or IP: ws.webxml.com.cn2.Method: POST3.Path: /WebServices/WebServices/WeatherWebService.asmx4.Content encoding: utf-85.Body Data:<?xml version="1.0" encoding="utf-8"?><soap:Envelopexmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

<soap:Body>

<getSupportCityxmlns="http://WebXml.com.cn/"><byProvinceName>湖南</byProvinceName></getSupportCity>

</soap:Body>

</soap:Envelope>

其中"湖南"为传入的参数值(byProvinceName为参数名)

POST请求传递数据为SOAP消息,格式为XML。需要将SOAP消息放入BodyData中发送给服务器,并且需要告诉服务器对应的Content-Type。故需要添加一个“HTTPHeaderManager”配置元件,在其中添加两个首部“Content-Type”与“SOAPAction”,其中“SOAPAction”用来标识SOAPHTTP请求的目的地,其值是个URI地址。在SOAP1.1中这个首部若其值为空串(""),表示SOAP消息的目的地由HTTP请求的URI标识;无值则表示没有指定这条消息的目的地。1.Content-Type:text/xml;charset=utf-8

2.SOAPAction:"http://WebXml.com.cn/getSupportCity"

配置如下图所示:

使用SOAP1.2时配置测试

HTTP请求配置只需要将Body Data修改,其他配置项保持不变:

<?xml version="1.0" encoding="utf-8"?>

<soap12:Envelopexmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"><soap12:Body><getSupportCityxmlns="http://WebXml.com.cn/"><byProvinceName>string</byProvinceName></getSupportCity></soap12:Body>

</soap12:Envelope>

需要修改"HTTP Header Manager"配置元件,在SOAP1.2规范中,

SOAPAction首部被Content-Type的“action”属性所取代,但其作用和工作原理都没有变化。

Content-Type: application/soap+xml;charset=UTF-8;action="http://WebXml。com。cn/getSupportCity"配置如下图所示:

最后

俺叫小枫,一个成天想着一夜暴富的测试员

(1140267353)一起成长一起加油的伙伴群!软件测试,与你同行!
群内可领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!

点赞关注不迷路!!!【三连ღ】,有问题也可私聊哟~(*╹▽╹*)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值