内部接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口
对外包装的接口:后端与前端
前端:app(负责展示)
后端:后台提供数据,效验等等处理(负责业务逻辑)
测试最耗时在哪里? 业务逻辑、数据
排查以及修复一个缺陷的最长线在哪里? 服务端
加入接口测试环节的益处
可以更早的暴露问题
减少修复、测试成本
可以更快的了解业务需求,辅助我们更精准的定位分析问题
如何开展接口测试
参与服务端需求分析
有标准的接口文档,且文档是由客户端与服务端同学共同产出的
测试分层
业务逻辑处理、数据验证部分拆分到接口层做
客户端更多的关注于UI的展示以及前端的页面逻辑
移动端常用的接口协议
http/https
一种应用层协议,网络交互需要遵守的协议规范
由请求头和响应以及相应的信息头组成,http传输中,我们都是通过url来录找网络资源的
HTTP URL格式: http://host[:port][path]
✓ http表示要通过HTTP协议来定位⽹网络资源;
✓ host表示合法的Internet主机域名或IP地址;
✓ port⽤用于指定⼀个端⼝号,如果为空,则使⽤用缺省的端口80; ✓ path指定请求资源的具体地址
HTTP请求过程
✓ 连接:建⽴⼀个socket连接,因为socket是通过ip和端⼝建立的,在这之前还会进⾏DNS解析将域
名解析成对应的ID地址。
✓ 请求:连接成功后,向服务器器发送GET/POST请求。
✓ 响应:服务器收到这个请求,进行处理,再将响应数据传送回客户端。
✓ 关闭连接:响应结束后,客户端与服务器断开连接,以保证其它客户端与服务器建⽴连接。
HTTPS请求过程
✓ 当浏览器向服务器请求⼀一个https请求时,服务器就把它的数字证书和公匙发送给浏览器。
✓ 浏览器检查证书是不不是由可以信赖的机构颁发的,检查证书的数字签名是不是正确,确认证书有效和此证书是此属于指定⽹站的。
✓ 浏览器使⽤证书中提供的公钥加密⼀个随机⽣成对称密钥,并⽤用此对称密钥对http协议请求内容进 ⾏加密,加密后的信息⼀一起发送到服务器。
✓ 服务器用自⼰的私匙解密浏览器器发送过来的对称钥匙,然后⽤用这把对称加密的钥匙解密加密过的 http协议请求内容。
✓ 服务器用对称钥匙对http协议响应内容进行加密,并发送给浏览器,浏览器通过对称密钥解密加密信息,获得http协议的响应内容。
HTTPS和HTTP的区别
https协议需要ca证书
http的信息是明⽂传输,https则是具有安全性的ssl加密 http是直接与TCP进⾏数据传输,⽽https是经过一层SSL,用的端⼝也不不⼀样,http是80,https是443
http的连接很简单,是⽆状态的;HTTPS协议是由SSL+HTTP协议构建的可进⾏加密传输、身份认证 的⽹络协议,⽐http协议安全
常见的⼏种请求方式
Get
向服务器获取信息,查询数据
Post
向服务器上传信息,新建数据
Put
改变服务器上的信息,修改数据
Delete
删除服务器上的信息,删除数据
Head
检查服务器上是否有某些信息,判断数据
HTTP的响应状态码
1xx 消息,⼀般是告诉客户端,请求已经收到了,正在处理
2xx 处理成功,⼀般表示:请求收悉、我明⽩你要的、请求已受理、已经处理完成等信息
3xx 重定向到其它地方。它让客户端再发起⼀个请求以完成整个处理
4xx 处理发⽣错误,责任在客户端,如客户端的请求⼀个不存在的资源,客户端未被授权,禁⽌止访问等
5xx 处理发⽣错误,责任在服务端,如服务端抛出异常,路由出错,HTTP版本不⽀持等
常⻅状态代码、状态描述
200 OK:客户端请求成功。
400 Bad Request:客户端请求有语法错误,不能被服务器所理解。
403 Forbidden:服务器收到请求,但是拒绝提供服务。
404 Not Found:请求资源不存在,举个例子:输⼊了错误的URL。
500 Internal Server Error:服务器发⽣不可预期的错误。
503 Server Unavailable:服务器当前不能处理客户端的请求,⼀段时间后可能恢复正常。
常⻅的请求、响应头
Accept 浏览器可接受的mime类型
Cookie 客户端就是通过这个报文头属性传给服务器
User-agent 允许客户端将它的操作系统 浏览器和其他属性告诉服务器Cache-control 是否希望被缓存
Cache-control 响应输出到客户端后,服务端通过该报⽂告诉客户端如何控制响应内存缓存 Cache-type 服务器通知浏览器回送数据的类型
Set-cookie 设置和⻚面相关联的cookie
接⼝测试主要关注点
✓ 响应结构 ✓ 数据来源 ✓ 数据格式 ✓ 数据正确性 ✓ 业务逻辑
⽤例设计—参数要考虑的
请求参数必选或选填(例:参数缺失服务端是否正常解析)
请求参数边界值(例:存储⻓长度10位,传参⼤大 于10位,接⼝是否处理)
与服务端是否存在附加协议(例例:交互过程中服务端需要验证head中的数据; 或者是否有加密协议)
输⼊合法、⾮法参数(例:服务端只接收int类型,传递了 String类型,参数为空或为null 参数中存 在特殊字符的)
请求参数逻辑分⽀(例:type=1:查询北京 Type=2:查询天津)
⽤例设计—结果要验证的
异常请求处理
请求头协议
响应结构
所有value值的 正确性、有效性
数据库交互是 否生效
排序
存在业务关联的 是否⽣效
并发请求
事务的回滚
响应时间
重复提交
敏感数据
⽤例的管理与维护
• 功能测试模式:为了更快速会选⽤EXCEL、思维导图进⾏⽤例管理。
• ⾃动化测试模式:使⽤测试脚本进⾏管理。
注:
对于接口的提测,建议是分批提测,最好不要所有接口统一提测,分批测试可以在较
短的时间内完成接⼝测试,也可以提前辅助客户端进⾏联调,不会占⽤较⻓的项⽬周
期。
接⼝需求分析
结合需求文档+接⼝文档来进⾏对照分析
• 分析出需求文档中所有涉及接⼝的功能点,并罗列功能点相关业务逻辑
• 分析接⼝功能点是否包含在了接口文档中
• 分析接⼝文档中描述的实现是否能够满足或者覆盖接⼝功能点及其业务逻辑
• 是否需要上层服务支持,服务端是否已提交数据需求建议先与服务端达成⼀一致:
• 需求宣讲完成后,优先产出接⼝文档(便便于测试同学进⾏接⼝分析)
• 接⼝文档与客户端先⾏行行确认,再进⾏接⼝开发(预防后续反工的风险)
• 服务端提供接⼝开发排期表(方便进⾏测试排期)
如何抓包
抓包数据分析
断点
重写
弱网测试
弱网配置
bandwidth —— 带宽,即上行、下行数据传输速度
utilisation —— 带宽可⽤用率,大部分modern是100%
• round-trip latency —— 第一个请求的时延,单位是ms。
• MTU —— 最⼤传输单元,即TCP包的最⼤size,可以更真实模拟TCP层,每次传输的 分包情况。
• Releability —— 指连接的可靠性。这⾥指的是10kb的可靠率。用于模拟网络不稳定。
• Stability —— 连接稳定性,也会影响带宽可⽤性。用于模拟移动网络,移动⽹网络连接 一般不可靠
接口测试工具介绍
Postman或jmeter使⽤发起get请求 发起post请求 返回数据分析