接口测试

1.接口的定义

1. 什么是接口?

  1. 电脑: USB, 投影仪(数据传输)
  2. 软件: 统称API, 例: 微信提现和充值, 银联支付接口(权鉴码: token, key, appkey)
  3. 接口包括: 内部接口, 外部接口
  4. 内部接口: 开发人员自己开发的对自身系统提供的接口
  5. 外部接口: 开发系统调用外部的, (微信, 支付宝)等其他接口
  6. 接口就是软件提供给外部的一种服务, 用于做数据传输

2. 软件为什么需要接口?

  接口能让内部数据被外部进行修改

3. 为什么做接口测试?

  1. 很多系统前后端分离, 开发的进度不一样, 需要把一开始发出来的接口进行测试. mock
  2. 基于安全考虑, 前端有验证很容易绕过, 直接请求接口, 特别: 身份证信息, 银行卡, 金钱交易
  3. 测试推崇的是测试左移, 测试能尽早介入

接口测试的本质: 查看测试接口能否正常的交互数据, 权限控制以及处理异常场景

 

2. 接口返回的数据

1. json格式(80%)

{key: value}

2. html格式

<html>

<title></title>

<body>

<error_code>0</error_code>

</body>

</html>

3. xml格式

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

<error_code>0</error_code>

</xml>

 

3. 接口测试协议

1. webservice协议: 接口地址: http://.....................?wsdl

soap协议 , wsdl

restful规则:

get获取数据, post提交数据, put修改数据, delete删除数据

2. dubbo协议: 接口地址: dubbo://.......

适用于少量数据传输, 大并发

3. http协议: 接口地址: http://

https = http + ssl安全传输协议  端口: 443

http 端口:80

 

什么是http协议?

  http超文本传输协议, 主要用于浏览器和服务器之间交互数据, 交互有两部分:

请求: get, post, put, delete

响应: 1xx信息, 2xx成功, 3xx重定向(跳转不传值), 4xx客户端错误, 5xx服务器

 

请求部分

请求行: 请求方式, 请求地址, 协议

GET http://tile-service.weather.microsoft.com/zh-CN/livetile/preinstall?region=CN&appid=C98EA5B0842DBB9405BBF071E1DA76512D21FE36&FORM=Threshold HTTP/1.1

请求头: 

Accept application/json, text/javascript, */*; q=0.01(客户端可以接收的数据格式)

X-Requested-With: XMLHttpRwequest(异步请求)
Connection: Keep-Alive(链接保持活跃)
User-Agent: Microsoft-WNS/10.0(客户端的用户)
Host: tile-service.weather.microsoft.com(请求主机地址)

Accept-Encoding: gzip, deflate, br(压缩方式)

Cookie:(Cookie信息)

Content-Length: 0(内容长度)

空行

请求正文

 

响应部分

响应行: 协议, 响应码, 响应信息

HTTP/1.1 200 OK

响应头:
Content-Type: text/xml; charset=utf-8
Server: Microsoft-IIS/10.0
X-ActivityId: 5b5a2253-dee8-4922-9e68-48fe688d4a43
Access-Control-Allow-Origin: *
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Cache-Control: public, max-age=125
Date: Fri, 26 Feb 2021 02:16:11 GMT
Content-Length: 4242
Connection: keep-alive

空一行

响应内容:

<?xml version="1.0" encoding="utf-8"?><tile><visual version="2" Branding="name" baseUri="http://blob.weather.microsoft.com/static/mws-new/" hint-lockDetailedStatus1="北京 3°" hint-lockDetailedStatus2="晴朗" hint-lockDetailedStatus3="最高气温 13°,最低气温 -3°"><binding template="TileSmall" hint-textStacking="center" hint-overlay="30" branding="none"><image placement="background" src="WeatherImages/210x173/1.jpg?a" /><text hint-style="caption" hint-align="center">北京</text><text hint-style="base" hint-align="center">3°</text></binding><binding template="TileMedium" DisplayName="北京" hint-overlay="30"><image placement="background" src="WeatherImages/210x173/1.jpg?a" /><text>晴</text><image hint-removeMargin="True" hint-align="center" src="ms-appx:///Assets/AppTiles/Spacer/6px.png" /><group><subgroup hint-weight="70" hint-textStacking="center"><image hint-removeMargin="True" hint-align="center" src="ms-appx:///Assets/AppTiles/Spacer/2px.png" /><text hint-style="titleNumeral">3°</text></subgroup><subgroup hint-weight="30"><image hint-removeMargin="True" hint-align="center" src="ms-appx:///Assets/AppTiles/Spacer/6px.png" /><text>13°</text><text hint-style="captionsubtle">-3°</text></subgroup></group></binding><binding template="TileWide" DisplayName="北京" hint-overlay="30"><image placement="background" src="WeatherImages/423x173/1.jpg?a" /><text>晴</text><image hint-removeMargin="True" hint-align="center" src="ms-appx:///Assets/AppTiles/Spacer/6px.png" /><group><subgroup hint-weight="32" hint-textStacking="center"><image hint-removeMargin="True" hint-align="center" src="ms-appx:///Assets/AppTiles/Spacer/2px.png" /><text hint-style="titleNumeral">3°</text></subgroup><subgroup hint-weight="20"><image hint-removeMargin="True" hint-align="center" src="ms-appx:///Assets/AppTiles/Spacer/6px.png" /><text>13°</text><text hint-style="captionsubtle">-3°</text></subgroup><subgroup hint-weight="10"><image hint-removeMargin="True" hint-align="center" src="ms-appx:///Assets/AppTiles/Spacer/6px.png" /><image hint-removeMargin="True" hint-align="center" src="LiveTile/Icons_Icon_PoP_sm.png?a" /><image hint-removeMargin="True" hint-align="center" src="ms-appx:///Assets/AppTiles/Spacer/4px.png" /><image hint-removeMargin="True" hint-align="center" src="LiveTile/W0.png?a" /></subgroup><subgroup hint-weight="38"><image hint-removeMargin="True" hint-align="center" src="ms-appx:///Assets/AppTiles/Spacer/6px.png" /><text>%</text><text>-- 公里/小时</text></subgroup></group></binding><binding template="TileLarge" DisplayName="北京" hint-overlay="30"><image placement="background" src="WeatherImages/210x173/1.jpg?a" /><text>晴</text><image hint-removeMargin="True" hint-align="center" src="ms-appx:///Assets/AppTiles/Spacer/6px.png" /><group><subgroup hint-weight="100"><image hint-removeMargin="True" hint-align="center" src="ms-appx:///Assets/AppTiles/Spacer/2px.png" /><text hint-style="subheaderNumeral">3°</text></subgroup></group><text /><group><subgroup hint-weight="18"><text hint-align="center">周五</text><image hint-align="center" src="WeatherIcons/30x30/5.png?a" /><text hint-align="center">13°</text><text hint-style="captionsubtle" hint-align="center">-3°</text></subgroup><subgroup hint-weight="18"><text hint-align="center">周六</text><image hint-align="center" src="WeatherIcons/30x30/10.png?a" /><text hint-align="center">5°</text><text hint-style="captionsubtle" hint-align="center">-1°</text></subgroup><subgroup hint-weight="18"><text hint-align="center">周日</text><image hint-align="center" src="WeatherIcons/30x30/24.png?a" /><text hint-align="center">4°</text><text hint-style="captionsubtle" hint-align="center">0°</text></subgroup><subgroup hint-weight="18"><text hint-align="center">周一</text><image hint-align="center" src="WeatherIcons/30x30/5.png?a" /><text hint-align="center">7°</text><text hint-style="captionsubtle" hint-align="center">-3°</text></subgroup><subgroup hint-weight="18"><text hint-align="center">周二</text><image hint-align="center" src="WeatherIcons/30x30/5.png?a" /><text hint-align="center">10°</text><text hint-style="captionsubtle" hint-align="center">-2°</text></subgroup></group></binding></visual></tile>

 

4. 企业接口测试的流程和方案

1. 拿到api接口文档, 熟悉接口业务, 接口地址, 鉴权, 入参, 出参, 错误码

2. 接口计划和方案

思路:

  正例: 输入正常的参数, 查看接口是否返回成功

  反例: 

    鉴权反例: 鉴权为空, 鉴权码错误, 鉴权码过期...

    参数反例: 参数为空, 参数类型异常, 参数长度异常, 错误码覆盖

    其他场景: 分页异常

3. 编写测试用例和评审

4. 执行接口测试

5. 输出接口测试报告

5. 接口测试工具

postman, jmeter, soupui, apipost, fiddler, charles