文章目录
一、SoapUI
先引用 SoapUI 官网一段官方介绍作为开篇
无论是开源的还是商业的,SoapUI 测试工具都可以轻松地在 REST,SOAP 和 GraphQL API,JMS,JDBC和其他Web服务上创建,管理并执行端到端测试,所以您可以比以往更快地交付软件。
当然官网中提到的一些高级功能,如GraphQL API 测试只限 Pro 版, 开源版下载可前往 SoapUI官网,安装很简单并无特殊设置。由 SoapUI 的特性可知,REST 和 SOAP 协议类型的接口测试都是支持的,当然它尤其擅长 SOAP 类型,所以笔者我重点详细地介绍下这两种协议类型的接口测试过程。
二、SoapUI测试REST类型接口
1. REST 协议类型的测试
REST:Representational State Transfer,能完全通过 HTTP 协议实现的轻量级Web Service架构。
- 新建 REST 工程
- 输入URI,也就是服务器地址端口
-
Request 接口请求中,配置接口相关信息:
接口请求方法(GET/POST/…),接口请求的服务器地址( http://ip:port ),接口路径,接口请求参数。
2. POST接口测试
(1) 简单的某个接口测试
禅道登录接口:
接口文档四要素 | 值 |
---|---|
接口请求方法 | post-XML |
接口请求地址 | http://118.25.179.224:1180/zentao/user-login.html |
接口请求参数 | account:test001 password:123456 |
预期结果 | 包含跳转的页面 |
依据《接口文档》在 Request 窗口中依次输入:
配置项 | 配置值 |
---|---|
Method | POST |
Endpoint | http://118.25.179.224:1180 |
Resource | /zentao/user-login.html |
Parameters | ?account=test001&password=123456 |
运行后,得到响应代码。可以增加断言,来测试所响应的代码是否包含或符合预期结果。
(2) 组织多条用例测试
工程的树状结构为:
REST Project - URI
- TestSuite - TestCase - TestStep - REST Request
- 测试套件 - 测试用例 - 测试步骤 - REST请求
REST 工程
中新建测试套件 TestSuite
TestSuite
中新建 TestCase
测试用例
TestCase
下自带 TestSteps
测试步骤, 选择 Add Step
里的 REST Request
新建 REST 请求
选择 REST 方法
同理,TestSuite
中可创建多个 TestCase
,进而每个 TestCase 创建多个 TestSteps
Request
配置中的 Assertions
+ 号增加断言
输入 Contains Assertion
包含型断言的 Content 内容
此外,还有不包含断言,Xpath Match 断言等
通过 TestSuite
批量执行其中的全部测试用例
也可以使用 TestRunner
测试运行器批量执行
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 服务)
- 输入 URI 服务器地址接口
- 设置好 Request 请求配置项后运行,得到 JSON 格式的响应数据。可以看到响应内容包含预期结果“青花瓷”。
- 在 TestSuite 1中增加 MyCloudMusicTest 测试用例,并且 Add Step 添加测试步骤
- 选择对应的测试接口,去测试接口功能是否正确
三、SoapUI测试SOAP类型接口
1. SOAP 协议类型的测试
SOAP(Simple Object Access Protocol)可简单理解为:RPC+HTTP+XML。
HTTP作为通信协议,RPC 作为调用途径协议,XML作为数据传输格式,允许服务提供者和客户进行通信交互。
如果要开展SOAP协议接口测试,必须拿到接口文档,WSDL文档,WSDL包含了多个接口。每个向服务器调用的方法,都是要向服务器发去请求,每个请求的方法都是对外提供的接口。
2. 测试外部系统接口的文档
测试外部系统接口:以webxml官网所提供的外部天气接口的测试为例。
以下是天气接口wsdl文档一般用于机器识别导入
以下是天气接口asmx文档一般用于测试工程师阅读
3. 测试业务
测试天气接口,获取浙江省杭州市的天气(p.s.明天要去西湖玩咯) 😃
-
新建一个 SOAP项目,并输入 WSDL 文档的路径,从而生成项目导入接口方法。
-
然后看到接口文档中的方法与SoapUI导入的逐一对应。再阅读 asmx 接口文档,熟悉每个接口功能,以便下一步测试开展。
- 新建 TestSuite (测试套件) – TestCase (测试用例) – Test Steps (测试步骤),在 TestSteps 右键菜单中 – Add Step (添加测试步骤) – SOAP Request (新建SOAP类型请求)
- 在出现的 TestRequest 测试请求中,选择对应要测试的接口,如 getWeather
- 为方便使用可自定义用例或测试请求的名称。当紧接着上一步后,打开 getWeather 这个 Soap 请求,直接运行会返回 “服务器无法处理请求”,原因是这是付费接口。当然,只需要在webxml官网注册免费得到 UserID,作为学习可免费试用,若是商用可以支持购买。
需要明确的是,上图的 TestCase -> TestSteps —>(getWeather)Request
,必须和下图的 WeatherWSSoap —> getWeather —> Request
中两个 Request 的请求参数 theCityCode,theUserID
保持一致,才能被服务器正常处理请求从而访问。
所以不难理解,之后要把上图的(getWeather)Request
的<web:getWeather/>
单标签改为双标签,并填写所需参数。
-
theCityCode
的获取- 先通过
getRegionProvince
获得中国省市区的id编码,比如浙江为31119。
-
再通过
getSupportCityDataset
获得某省市区如“浙江省”的城市id编码,比如杭州为2057
,即getWeather
请求中必须包含的参数theCityCode
-
最后才通过 getWeather 获得某城市的天气,比如杭州2057的天气。
- 先通过
-
theUserID
的获取- 注册
- 会员专区,获取到 Web 服务的用户 ID,即
getWeather
请求中必须包含的参数theUserID
点"如何使用"可看到官网介绍:
WEB服务用户ID使用说明
用户ID由32位的英文字母和数字组成。
可以在WEB服务上的方法的 UserID 参数中输入,如果没有输入 UserID 参数输入选项就使用以下方法:
参数+英文冒号+用户ID
如中国股票信息WEB服务上证指数输入:sh000001:xxxxxxxxxxx
-
最后进入 “我的Web服务” 选择试用,即可获得自己的测试次数。
-
TestCase -> TestSteps —>(getWeather)Request
输入获取到的theCityCode:2057,theUserID:xxxxx
-
执行 “
测试获取天气 getWeather
” Soap 协议接口请求,接口会返回杭州市当日的天气状况。 -
最后,可在 Assertions 中添加 Contains Aseertion 等断言,测试接口返回值的正确性。
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服务十分丰富,有兴趣可以试用其他接口服务进行测试,若商用请支持选择正版。
以下是电视节目预告的测试,接口测试分析过程与上面同理,不再赘述。
四、博主原创手动码字,喜欢记得收藏点赞
博主(CSDN@崔同学)唯一首发CSDN,原创手动码字,感谢阅读到这里,喜欢记得收藏点赞哦 😉 ღ( ´・ᴗ・` )