SoapUI WebService 接口测试

一、SoapUI

先引用 SoapUI 官网一段官方介绍作为开篇

无论是开源的还是商业的,SoapUI 测试工具都可以轻松地在 REST,SOAP 和 GraphQL API,JMS,JDBC和其他Web服务上创建,管理并执行端到端测试,所以您可以比以往更快地交付软件。

image-20200905184251765

当然官网中提到的一些高级功能,如GraphQL API 测试只限 Pro 版, 开源版下载可前往 SoapUI官网,安装很简单并无特殊设置。由 SoapUI 的特性可知,REST 和 SOAP 协议类型的接口测试都是支持的,当然它尤其擅长 SOAP 类型,所以笔者我重点详细地介绍下这两种协议类型的接口测试过程。

二、SoapUI测试REST类型接口

1. REST 协议类型的测试

REST:Representational State Transfer,能完全通过 HTTP 协议实现的轻量级Web Service架构。

  • 新建 REST 工程

image-20200828223020759

  • 输入URI,也就是服务器地址端口

image-20200828224151443

  • Request 接口请求中,配置接口相关信息:

    接口请求方法(GET/POST/…),接口请求的服务器地址( http://ip:port ),接口路径,接口请求参数。

    image-20200828224518865

2. POST接口测试

(1) 简单的某个接口测试

禅道登录接口:

接口文档四要素
接口请求方法post-XML
接口请求地址http://118.25.179.224:1180/zentao/user-login.html
接口请求参数account:test001 password:123456
预期结果包含跳转的页面

依据《接口文档》在 Request 窗口中依次输入:

配置项配置值
MethodPOST
Endpointhttp://118.25.179.224:1180
Resource/zentao/user-login.html
Parameters?account=test001&password=123456

运行后,得到响应代码。可以增加断言,来测试所响应的代码是否包含或符合预期结果。

image-20200828230254405

(2) 组织多条用例测试

工程的树状结构为:

REST Project - URI
	    	 - TestSuite - TestCase - TestStep - REST Request
	    	 - 测试套件 - 测试用例 - 测试步骤 - REST请求

REST 工程 中新建测试套件 TestSuite

image-20200828230746018

TestSuite 中新建 TestCase 测试用例

image-20200828231300296

TestCase 下自带 TestSteps 测试步骤, 选择 Add Step 里的 REST Request 新建 REST 请求

image-20200828231649063

选择 REST 方法

image-20200828231947576

同理,TestSuite 中可创建多个 TestCase,进而每个 TestCase 创建多个 TestSteps

image-20200828235222588

Request 配置中的 Assertions + 号增加断言

image-20200828233413862

输入 Contains Assertion 包含型断言的 Content 内容

image-20200828234531784

此外,还有不包含断言,Xpath Match 断言等

image-20200828234834117

通过 TestSuite 批量执行其中的全部测试用例

image-20200829000821712

也可以使用 TestRunner 测试运行器批量执行

image-20200828235540097

image-20200828235914947

3. GET接口测试

测试网易云音乐镜像

http://118.25.179.224:3001/search?keywords=青花瓷

接口文档四要素
接口请求方法GET
接口请求地址http://118.25.179.224:3001/search
接口请求参数keywords=青花瓷
预期结果包含跳转的页面

注:get 请求参数会对中文进行URL编码,所以使用URL编码解码工具 即可

  • REST 工程中增加新的 URI (通过 URI 新建 REST 服务)

image-20200829002855494

  • 输入 URI 服务器地址接口

image-20200829003117984

  • 设置好 Request 请求配置项后运行,得到 JSON 格式的响应数据。可以看到响应内容包含预期结果“青花瓷”。

image-20200829004537165

  • 在 TestSuite 1中增加 MyCloudMusicTest 测试用例,并且 Add Step 添加测试步骤

image-20200829003924686

  • 选择对应的测试接口,去测试接口功能是否正确

image-20200829004057750

三、SoapUI测试SOAP类型接口

1. SOAP 协议类型的测试

SOAP(Simple Object Access Protocol)可简单理解为:RPC+HTTP+XML。
HTTP作为通信协议,RPC 作为调用途径协议,XML作为数据传输格式,允许服务提供者和客户进行通信交互。
如果要开展SOAP协议接口测试,必须拿到接口文档,WSDL文档,WSDL包含了多个接口。每个向服务器调用的方法,都是要向服务器发去请求,每个请求的方法都是对外提供的接口。

2. 测试外部系统接口的文档

测试外部系统接口:以webxml官网所提供的外部天气接口的测试为例。

以下是天气接口wsdl文档一般用于机器识别导入

image-20200902012125087

以下是天气接口asmx文档一般用于测试工程师阅读

image-20200901210417165

3. 测试业务

测试天气接口,获取浙江省杭州市的天气(p.s.明天要去西湖玩咯) 😃

  • 新建一个 SOAP项目,并输入 WSDL 文档的路径,从而生成项目导入接口方法。
    image-20200901211836275

  • 然后看到接口文档中的方法与SoapUI导入的逐一对应。再阅读 asmx 接口文档,熟悉每个接口功能,以便下一步测试开展。

image-20200901213018105

  • 新建 TestSuite (测试套件) – TestCase (测试用例) – Test Steps (测试步骤),在 TestSteps 右键菜单中 – Add Step (添加测试步骤) – SOAP Request (新建SOAP类型请求)

image-20200901213953308

  • 在出现的 TestRequest 测试请求中,选择对应要测试的接口,如 getWeather

image-20200901225817573

  • 为方便使用可自定义用例或测试请求的名称。当紧接着上一步后,打开 getWeather 这个 Soap 请求,直接运行会返回 “服务器无法处理请求”,原因是这是付费接口。当然,只需要在webxml官网注册免费得到 UserID,作为学习可免费试用,若是商用可以支持购买。

image-20200901230716672

需要明确的是,上图的 TestCase -> TestSteps —>(getWeather)Request,必须和下图的 WeatherWSSoap —> getWeather —> Request两个 Request 的请求参数 theCityCode,theUserID 保持一致,才能被服务器正常处理请求从而访问。

所以不难理解,之后要把上图的(getWeather)Request<web:getWeather/>单标签改为双标签,并填写所需参数。

image-20200901231747732

  • theCityCode 的获取

    • 先通过 getRegionProvince 获得中国省市区的id编码,比如浙江为31119。

    image-20200902000829026

    • 再通过 getSupportCityDataset 获得某省市区如“浙江省”的城市id编码,比如杭州为2057,即 getWeather 请求中必须包含的参数 theCityCode

      image-20200902002446902

    • 最后才通过 getWeather 获得某城市的天气,比如杭州2057的天气。

  • theUserID 的获取

    • 注册

    image-20200901215954635

    • 会员专区,获取到 Web 服务的用户 ID,即 getWeather 请求中必须包含的参数 theUserID

    image-20200901223743385

    点"如何使用"可看到官网介绍:

    WEB服务用户ID使用说明

    用户ID由32位的英文字母和数字组成。

可以在WEB服务上的方法的 UserID 参数中输入,如果没有输入 UserID 参数输入选项就使用以下方法:

参数+英文冒号+用户ID

如中国股票信息WEB服务上证指数输入:sh000001:xxxxxxxxxxx

  • 最后进入 “我的Web服务” 选择试用,即可获得自己的测试次数。

    image-20200901224552623

  • TestCase -> TestSteps —>(getWeather)Request 输入获取到的 theCityCode:2057,theUserID:xxxxx

  • 执行测试获取天气 getWeatherSoap 协议接口请求,接口会返回杭州市当日的天气状况。

  • 最后,可在 Assertions 中添加 Contains Aseertion 等断言,测试接口返回值的正确性。

    image-20200902011356736

4. SOAP请求与响应源码

附上 Request 源码

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://WebXml.com.cn/">
   <soapenv:Header/>
   <soapenv:Body>

  <web:getWeather>
     <!--getWeather必须包含的请求参数:theCityCode-->
     <web:theCityCode>2057</web:theCityCode>
     <!--getWeather必须包含的请求参数:theUserID-->
     <web:theUserID>xxxxxxxxxxxxxxxx</web:theUserID>
  </web:getWeather>

   </soapenv:Body>
</soapenv:Envelope

附上 Response 源码

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Body>
      <getWeatherResponse xmlns="http://WebXml.com.cn/">
         <getWeatherResult>
            <string>浙江 杭州</string>
            <string>杭州</string>
            <string>2057</string>
            <string>2020/09/02 00:50:31</string>
            <string>今日天气实况:气温:25℃;风向/风力:北风 1级;湿度:90%</string>
            <string>紫外线强度:中等。</string>

5. 同理可测试其他Web服务接口

webxml官网的Web服务十分丰富,有兴趣可以试用其他接口服务进行测试,若商用请支持选择正版。

image-20200905182241834

以下是电视节目预告的测试,接口测试分析过程与上面同理,不再赘述。

image-20200905183802365

四、博主原创手动码字,喜欢记得收藏点赞

博主(CSDN@崔同学)唯一首发CSDN,原创手动码字,感谢阅读到这里,喜欢记得收藏点赞哦 😉 ღ( ´・ᴗ・` )

  • 13
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值