接口和接口自动化重点梳理

1.  讲解接口基本原理,接口的组成?get请求方法和post请求方法的区别?怎么对接口进行断言,鉴权的方式,cookie,session,set-cookie和token的区别?
1)接口的原理:客户端发送http或者https协议的接口请求给到服务器,服务器对请求进行处理,把处理后的结果返回给到客户端
其他的协议,可以参考:https://www.cnblogs.com/xiaoshubass/p/17729410.html
2)接口的组成:
http://49.233.201.254:8080/cms/manage/loginJump.do
① 请求头
    请求的协议http ==》http1.0和http2.0
    ip地址和端口
    请求的URL地址
    接口的请求方法 ==》get、post、delete、put
    user-agent ==》用户代理
    content-type ==》内容类型==》application/json(json串)  或 application/x-www-form-urlencoded(键值对)
    cookie ==》本地缓存技术
    token ==》令牌
    Authorization ==》主要用来做鉴权==》Berer+token
② 请求体
    请求的参数==》userAccount=admin&loginPwd=123456
③ 响应头
    content-type ==》内容类型==》application/json(json串)  或 application/x-www-form-urlencoded(键值对)
    server ==》服务器的名称
    时间戳 ==》服务器返回数据的时间戳
    set-cookie ==》种cookie或者叫设置cookie
④ 响应体
    token ==》令牌
    响应的文本信息msg
    响应状态码

不同的响应状态码及含义:参考地址:https://www.cnblogs.com/xiaoshubass/p/16963822.html
2xx (成功类)==》表示成功处理了请求的状态代码
200 (成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页
3XX(重定向)==》HTTP状态码3XX表示重定向,表明浏览器需要执行某些特殊的处理以正确处理请求。==》重定向后的地址,看location
301 永久性定向。该状态码表示请求的资源已被分配了新的URI,以后应使用资源现在所指的URI。
302 临时性重定向。该状态码表示请求的资源已被分配了新的URI,希望用户(本次)能使用新的URI访问。和301相似,但302表示的资源不是永久移动,只是临时性的。
4xx(客户端请求错误)==》这些状态代码表示请求可能出错,妨碍了服务器的处理。
400 (错误请求) 服务器不理解请求的语法。
401 (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
403 (禁止) 服务器拒绝请求。
404 (未找到) 服务器找不到请求的网页。
5xx(服务器错误)==》这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。
500 (服务器内部错误) 服务器遇到错误,无法完成请求。
501 (尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。
502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。
503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
504 (网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。
505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本

3)get请求方法和post请求方法的区别【超级重点】
① get请求的请求参数在URL地址栏里面,安全性比较差
② post请求的请求参数在请求体body里面,安全性比较高
③ post请求携带的数据量比get请求更多,post一般没有限制,但是可以设置最大可携带2GB,get请求一般最多携带2kb的数据
④ post一般用来做表单提交,get请求一般用来做数据查询
⑤ get请求刷新服务器或回退没有影响,post请求回退时会重新提交数据请求
⑥ get请求可以被缓存,post请求不会被缓存

4)怎么对接口进行断言?==》你平常会对接口断言哪些内容?
① 对接口的响应状态码进行断言
② 对接口返回的具有唯一性的文本信息进行断言 msg
③ 当返回值有动态数据需要进行判断的时候怎么办?==》首先我会通过Python结合pymysql去封装一个操作数据库的工具方法,然后通过查询数据库中对应的数据赋值给到一个变量,然后在把这个变量的值和返回值进行断言和对比

5)鉴权的方式
① cookie+session ==》web端用的比较多
② token鉴权 ==》APP和web都可以用
③ api_key秘钥鉴权 ==》商品消费型的
web项目可以采用 cookie+session、token鉴权 api_key秘钥鉴权
APP项目只能采用 token鉴权 api_key秘钥鉴权

6)cookie,session,set-cookie和token的区别?
参考地址:https://www.cnblogs.com/xiaoshubass/p/13114740.html
① cookie是一种本地缓存技术,是由服务器生成并返回的,但是保存在浏览器和客户端,cookie最长的失效时间为1个月
② session是会话技术,是又服务器生成的,保存在服务器端,session一般默认的失效时间是30分钟
③ set-cookie是设置cookie,服务端生成session,并且给session进行编号,编号就是JsessionId,然后通过接口的响应头返回,并且种到浏览器当中去
④ token是令牌,服务器生成的,一式两份,一份在服务器,一份给到接口的响应体,token是有失效时间的,不同的APP失效时间不一样的,一般银行类的APP失效时间1-3分钟,一般的APP有30-60分钟不等

2.  接口抓包工具的原理?介绍当前常见的接口测试工具,接口设计测试用例应该从哪些方面去考虑?你们1个接口可以写多少条自动化测试用例?你测过多少个接口?总共有多少条接口自动化用例,每次运行时间要多久? 你们自动化和功能测试的占比是怎样的?
1)常见的抓包工具:fiddler、Charles、wrieshark(TCP/UDP)、浏览器F12开发者调试模式
2)抓包工具的原理:fiddler作为一个代理服务器,代理的是本地,端口号8888,客户端发送请求给到服务端,fiddler可以打请求前断点进行拦截,修改请求的数据,然后发送给到服务端,服务端接收到数据进行处理并响应,然后fiddler可以打响应后断点,修改响应后的数据,再把响应后的数据返回给到客户端
打断点:
① 全局断点
② 单个断点
请求前断点 ==》bpu + 接口路径 ==》取消断点:bpu
响应前断点 ==》bpafter +接口路径 ==》取消断点:bpafter
【面试题】你主要用fiddler来做什么?
答:用来抓包、打断点 ==》那你还能用来做什么?==》还可以进行mock测试,弱网测试
 ==》为什么要打断点?==》通过断点修改请求参数和响应的内容来对接口进行正常场景和异常场景的测试

3)常见的接口测试工具 ==》postman、jmeter、swagger(存接口)、apifox、apipost
Apifox = Postman + Swagger + Mock + JMeter
Apipost = Postman + Swagger + Mock + Jmeter
apifox、apipost ==》团队协作更为鉴权
Postman ==》不登录也是可以使用的
apifox ==》必须要扫码登录

4)接口设计测试用例应该从哪些方面去考虑【超级重点】
① 首先我会考虑接口入参的必填和选填,参数的长度校验和类型校验
② 不同的请求方法,比如把post换成get请求
③ 不同的请求的内容类型,比如表单键值对换成json字符串
④ 还会根据接口不同的返回值去设计不同的入参来进行覆盖
⑤ 还会考虑接口之间的逻辑关系,比如关联接口等等
⑥ 用户无效的token或者错误的token进行鉴权
⑦ 还有需要考虑接口的幂等性
⑧ 还会考虑接口查询数据的性能表现==》会不会有慢SQL等等的问题

5)你们1个接口可以写多少条自动化测试用例?你测过多少个接口?总共有多少条接口自动化用例,每次运行时间要多久? 你们自动化和功能测试的占比是怎样的?
1个接口大概写8-10条自动化测试用例
之前项目组测了大概有100多个接口==》100个接口*8-10条=800-1000条用例==》接口自动化测试用例写了大概了1000多条==》1000*0.5秒每条=8-9分钟
自动化和功能测试的占比==》功能和业务占到60-70%,UI和接口自动化以及性能占30%左右


3.  对于接口幂等性你是怎么测试的?
幂等性的概念:接口幂等性就是用户对同一个接口发起一次或多次请求的结果是一致的,不会因为多次请求而产生不同的结果
查:是有天然幂等,不需要再做额外的幂等
删:也是有天然幂等的
更新操作==》数据库锁
1)数据库悲观锁==》指的就是每次操作的时候,先把记录锁定起来,其他人无法操作这条记录
2)数据库乐观锁==》就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号机制。

新增操作==》唯一索引
前端:如防止表单重复提交,按钮置灰、隐藏、按钮不可点击等方式
后端:唯一索引

posted @ 2025-04-09 19:18  uai  阅读(27)  评论(0)    收藏  举报