接口测试
1.接口的定义
1. 什么是接口?
- 电脑: USB, 投影仪(数据传输)
- 软件: 统称API, 例: 微信提现和充值, 银联支付接口(权鉴码: token, key, appkey)
- 接口包括: 内部接口, 外部接口
- 内部接口: 开发人员自己开发的对自身系统提供的接口
- 外部接口: 开发系统调用外部的, (微信, 支付宝)等其他接口
- 接口就是软件提供给外部的一种服务, 用于做数据传输
2. 软件为什么需要接口?
接口能让内部数据被外部进行修改
3. 为什么做接口测试?
- 很多系统前后端分离, 开发的进度不一样, 需要把一开始发出来的接口进行测试. mock
- 基于安全考虑, 前端有验证很容易绕过, 直接请求接口, 特别: 身份证信息, 银行卡, 金钱交易
- 测试推崇的是测试左移, 测试能尽早介入
接口测试的本质: 查看测试接口能否正常的交互数据, 权限控制以及处理异常场景
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