川石教育
全国咨询热线:136-9172-9932
  1. 首页 > 资讯与干货 > IT资讯

JMeter如何进行测试Web服务的

作者:川石学院 日期:2022-05-26 11:03:34 点击数:

一天一个关于测试知识点,5分钟内讲解你最关心的软件测试问题,今天就接着来谈谈关于软件测试中的“JMeter如何进行测试Web服务的”。

Jmeter:接口测试基础介绍(图1)

  1、Web服务简介

  ▲ 什么是Web服务

  Web服务即Web Service。

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

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

  Web服务组成如下图所示:

JMeter如何进行测试Web服务的(图2)

  ▲ 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

  1.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

  2.SOAP消息组成

<?xml version="1.0"?> 

<soap:Envelope 

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

soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> 

<soap:Header> 

... 

</soap:Header> 

<soap:Body> 

... 

<soap:Fault> 

... 

</soap:Fault> 

... 

</soap:Body> 

</soap:Envelope> 

  3.SOAP消息例子

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

  1)SOAP消息请求:

POST /StockQuote HTTP/1.1 

Host: example.com 

Content-Type: text/xml; charset="utf-8" 

Content-Length: nnnn 

SOAPAction: "http://example.com/GetLastTradePrice" 


<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 

SOAP- 

ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> 

<SOAP-ENV:Body>

<m:TradePriceRequest xmlns:m="http://example.com/stockquote.xsd"> 

<tickerSymbol>MSFT</tickerSymbol > 

</m:TradePriceRequest> 

</SOAP-ENV:Body> 

</SOAP-ENV:Envelope> 

  2)SOAP消息响应:

HTTP/1.1 200 OK 

Content-Type: text/xml; charset="utf-8" 

Content-Length: nnnn 


<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 

SOAP- 

ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> 

<SOAP-ENV:Body> 

<m:TradePriceResult xmlns:m=" http://example.com/stockquote.xsd "> 

<price>74.5</price> 

</m:TradePriceResult > 

</SOAP-ENV:Body> 

</SOAP-ENV:Envelope> 

  ▲ WSDL

  1.WSDL文档结构

JMeter如何进行测试Web服务的(图3)

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

JMeter如何进行测试Web服务的(图4)

  其中:

  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相绑定等。

  2.WSDL端口

  元素是最重要的WSDL元素。

  它可描述一个Web service可被执行的操作以及相关的消息。

  可以把元素比作传统编程语言中的一个函数库(或一个模块,或一个类)。

  端口包含如下类型:

JMeter如何进行测试Web服务的(图5)

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

<message name="newTermValues"> 

<part name="term" type="xs:string"/> 

<part name="value" type="xs:string"/> 

</message> 

<portType name="glossaryTerms"> 

<operation name="setTerm"> 

<input name="newTerm" message="newTermValues"/> 

</operation> 

</portType >

  在这个例子中,端口"glossaryTerms"定义了一个名为"setTerm"的one-way操作。

  这个"setTerm"操作可接受新术语表项目消息的输入,这些消息使用一条名为"newTermValues"的消息,此消息带有输入参数"term"和"value"。不过,没有为这个操作定义任何输出。

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

<message name="getTermRequest"> 

<part name="term" type="xs:string"/> 

</message> 

<message name="getTermResponse"> 

<part name="value" type="xs:string"/> 

</message> 

<portType name="glossaryTerms"> 

<operation name="getTerm"> 

<input message="getTermRequest"/> 

<output message="getTermResponse"/> 

</operation> 

</portType> 

  在这个例子中,端口“glossaryTerms”定义了一个名为“getTerm”的request-response操作。

  “getTerm”操作会请求一个名为“getTermRequest”的输入消息,此消息带有一个名为“term”的参数,并将返回一个名为 “getTermResponse”的输出消息,此消息带有一个名为“value”的参数。

  3.WSDL绑定

  一个绑定的例子:

<message name="getTermRequest"> 

<part name="term" type="xs:string"/> 

</message> 

<message name="getTermResponse"> 

<part name="value" type="xs:string"/>

</message> 


<portType name="glossaryTerms"> 

<operation name="getTerm"> 

<input message="getTermRequest"/> 

<output message="getTermResponse"/> 

</operation> 

</portType> 


<binding type="glossaryTerms" name="b1"> 

<soap:binding style="document" 

transport="http://schemas.xmlsoap.org/soap/http" /> 

<operation> 

<soap:operation soapAction="http://example.com/getTerm"/> 

<input><soap:body use="literal"/></input> 

<output><soap:body use="literal"/></output> 

</operation> 

</binding> 

  binding元素有“name”和“type”两个属性。“name”属性定义binding的名称,而“type”属性指向binding的端口,在这个例子中是“glossaryTerms”端口。

  soap:binding元素有“style”和“transport”两个属性。“style”属性可取值为“rpc”或“document”。

  在这个例子中我们使用“document”。“transport”属性定义SOAP使用的协议,在这个例子中使用HTTP。

  operation元素定义了每个端口提供的操作符。对于每个操作,相应的SOAP行为都需要被定义。同时必须知道如何对输入和输出进行编码。在这个例子中使用了“literal”。


相关文章
  • 亚马逊运营成功转行软件测试,薪资13K表示很满意!2022-05-26 11:03:34
  • 西安川石的兰朋友喊你来当他的学弟学妹啦!2022-05-26 11:03:34
  • 国外的月亮也不一定比国内测试猿的年薪美~2022-05-26 11:03:34
  • 建筑工程专业朱同学成功转行为软件测试人!2022-05-26 11:03:34
  • 财务管理专业转行软件测试月薪甩会计几条街!2022-05-26 11:03:34
  • 只有技术沉淀才能成功上岸,深圳就业薪资13K!2022-05-26 11:03:34
  • 薪资11K!实现自我价值,从掌握一门IT技术开始...2022-05-26 11:03:34
  • 文科生转行软件测试照样拿下高薪15K!2022-05-26 11:03:34
  • 恭喜罗同学喜提19.5K,成功入行软件测试!2022-05-26 11:03:34
  • 毕业1年,迷茫的他最终选择转行软件测试2022-05-26 11:03:34