爆肝整理,接口测试+接口自动化测试汇总(一)


前言

讲解接口基本原理,接口的组成?

客户端通过发送http或者https协议的请求给到服务器,服务器对请求进行处理,然后把处理后的结果,通过接口返回给到客户端
常见的协议有哪些:http、https、websocket(通信)、dubbo,RPC远程调用,MTTQ

接口的组成?
请求头
请求的方式 ==》get、post、put(更新资源)、delete(删除资源)
URL地址 ==》http://ip地址:8080端口/user/login?username=xxx&pwd=xxx
协议版本:http1.1/http2.0
Content-Type ==》请求的内容类型application/x-www-form-urlencoded ==》键值对
application/json 》入参就是json字符串
user-agent
》用户代理
token ==》token令牌
Cookie ==》存放在浏览器里面的cookie信息
Authorization ==》后面存放的就是token值 Berer + token

请求体
请求的入参 ==》键值对和json字符串等等

响应头
set-cookie ==》种cookie
Content-Type ==》请求的内容类型application/x-www-form-urlencoded ==》键值对
application/json ==》入参就是json字符串
服务器的时间和什么服务器 ==》Apache、Nginx、Tomcat等等

响应体
状态码
2XX ==》200表示发送请求成功、并且有正确的响应
3XX 》302表示重定向
4XX (客户端错误)
》401鉴权失败、403表示请求被服务器拒绝处理、404表示请求的资源在服务器不存在
5XX(服务器错误) ==》502网关错误
响应的message信息

面试题1:get请求方法和post请求方法的区别?

1)get请求的请求入参是在URL地址栏里面
2)post请求的请求入参是在body里面
3)get请求一般用于查询比较多,post请求可以用来查询也可以用来提交表单
4)get请求携带的数据比较少,大概只有2KB的数据,但是post请求可以携带2GB的数据
5)post的请求的安全性要高于get请求

面试题2:怎么对接口进行断言

1)对接口返回的响应状态码进行断言
2)对接口返回的具有唯一性的message信息进行断言
3)对接口返回的动态数据进行断言(看如下的答案)

面试题3:如果接口的返回值是一个动态的,你怎么断言?

1)我一般会通过pymysql模块连接数据库,编写对应的方法在数据库查询到对应的动态数据然后赋值给一个变量,然后再把这个变量和接口的响应信息进行对比和断言

鉴权的方式
1)cookie+session ==》一般web端会用,APP不会用
2)token鉴权 ==》web端和APP端都会用
3)密钥鉴权,api_key (MD5+AES+RSA加密)

面试题4:cookie,session,set-cookie和token的区别?【超级重点】

1)session是服务器端创建的,表示会话
2)session的失效时间一般比较短,大概只有30分钟左右
3)cookie是保存在客户端的,cookie的来源是服务器返回的
4)set-cookie可以把服务器返回的JsessionId设置或种到浏览器中,会放在接口的响应头里面,变成cookie
5)cookie的失效时间最长可达一个月
6)session和cookie是相辅相成的,缺一不可
7)token是令牌,是服务器创建的,一式俩份,服务器一份,还有一份通过接口的响应体返回 ==》access_token,token,Authorization(berer+token)本质上都是token
8)token的失效时间更短(手机APP银行2-3分钟会失效)

面试题5:接口抓包工具的原理?

抓包工具有哪些? ==》谷歌浏览器F12开发者调试模式,fiddler,Charles,wireshark(TCP和UDP协议等等用wireshark)
1)fiddler作为一个抓包工具,作为一个代理服务器,代理的是本地,端口是8888,客户端发送请求给到服务器,fiddler可以通过打请求前断点,修改请求入参然后放行资源,等到服务器处理完返回后,fiddler可以通过打响应后断点,修改响应后的数据并且放行资源。

2)请求前断点 ==》fiddler左下角有个黑色的输入框输入bpu + URL地址
3)响应后断点 ==》bpafter + URL地址
面试题:你用fiddler来干嘛?
1)抓包,定位前后端bug
2)打断点,进行接口测试

介绍当前常见的接口工具

postman、jmeter、swagger(网页版本的接口工具)、apifox、apipost

Mock是什么意思? ==》有的公司会给沙箱环境给用户调试

沙箱环境:就是第三方公司给到用户调试用的测试环境 ==》

概念:当我的后端接口还没被开发出来,接口也不能调通,或者是使用的第三方接口,第三方接口没有专门的测试环境给到我们测试。

录入资料-贷前调查-调用公安的系统(公安的系统属于第三方系统),但是此时公安的系统会开放接口的技术文档给你
录入资料-贷前调查-调用本地的mock数据

面试题:第三方接口你们是怎么测试的?

1)我们会要到第三方接口的接口文档,然后在本地mock服务上面去构建对应的mock数据,然后调mock接口就可以了。
http://ip:8080/user/auth ==》公安的实名认证接口
http://改为我们自己的本地服务器IP地址:8080/user/auth ==》mock地址

2)第三方公司会给我们提供沙箱的环境,我们会通过沙箱环境的接口文档进行测试(沙箱环境就是第三方公司的测试环境)

接口设计测试用例应该从哪些方面去考虑?

http://cms.e70w.com/manage/loginJump.do 这是一个登录接口
接口的入参:
username string 必填 用户名 长度限制:6-8位
pwd string 必填 密码 长度限制:6-8位
接口的返回值:
10001 用户名错误
10002 密码错误
10003 系统异常
10004 用户和密码加密失败

接口怎么设计测试用例?【超级重点】

1)接口的入参长度限制,必填和非必填,参数的类型校验
2)根据接口的不同的返回值构建不同的入参,来对场景进行覆盖
3)关联接口之间的逻辑校验
4)要关注如果Redis里面有数据就从Redis缓存数据库里面去拿,如果没有先从mysql数据库里面拿到之后再同步到Redis数据库里面
5)是否支持不同的接口请求方法比如get或者post去请求
6)用失效的token,错误的token去测试
7)还要关注接口的幂等性 ==》比如有一个转账的功能,1秒钟点击转账按钮10次预期结果是只能转账成功一次

接口的入参:
username string 必填 用户名 长度限制:6-8位
pwd string 必填 密码 长度限制:6-8位
正常场景
边界值
username ==》6位字符串,8位字符串,7位字符串
pwd ==》6位字符串,8位字符串,7位字符串
等价类
username ==》6-8位字符串
pwd ==》6-8位字符串
异常场景
边界值
username ==》5位字符串,9位字符串
pwd ==》5位字符串,9位字符串
无效等价类
username ==》为空的情况,小于5位字符串,大于9位字符串,数字字符,中文字符,特殊字符
pwd ==》为空的情况,小于5位字符串,大于9位字符串,数字字符,中文字符,特殊字符
少写一个字段
多增加一个字段
不加请求头
无效或者错误的token等等

6.接口的幂等性是什么意思?对于接口幂等性你适合怎么测试的?

我们都是用jmeter去测接口的幂等性,首先把接口组建好,设置50个并发线程数,设置集合点开始请求,如果只有1个接口调通,其他49次接口请求都失败,说明做了接口的幂等性校验。

前端怎么做幂等性校验:已有相同金额的转账记录是否要再次转账,拼夕夕砍了一刀按钮置灰了
后端怎么做幂等性校验?

1)update操作可以通过加数据库锁(悲观锁:先锁数据,后操作,乐观锁:先不锁数据,等待要更新的时候再去看version有没有被更新,如果有更新就不操作)
2)insert插入数据可以通过给订单号,合同编号,保险单号加唯一索引
3)可以通过加token
4)Redis防重,加分布式锁

面试题:你给后端接口做幂等性校验,那这个key(唯一索引)加在哪个字段上面?

1)电商项目:加在订单号上面
2)贷款项目:加在合同编号,贷款申请号等等
3)保险项目:加在保险单号上面

面试题:你们在测试过程当中有没有出现过资损的情况?怎么防止资损或者资损这块怎么测

信贷有贷款7折优惠券 ==》抢购优惠券
1)之前没有出现过

2)首先我们公司之前会从这几个方面防止资损,第1个技术层面后端代码当中会用到bigdecimal数据类型,不会用double和float保证金额的精度,第2个会做前端和后端的幂等性校验,比如增加按钮置灰,隐藏按钮和后端代码加锁来保证,第3个在测完功能会定时巡检和进行金额的结算和对账。

接口测试项目实战

下面是我整理的2025年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

人生最耀眼的不是站在聚光灯下的瞬间,而是黑暗中依然前行的勇气。当你觉得撑不住时,请记住:每个伟大的突破都藏在"再坚持一天"的决定里。你的脚步,正在创造属于自己的传奇!

别被暂时的风雨模糊了视线!那些让你流泪的磨练,正在雕刻更璀璨的未来。当别人选择放弃时,你的坚持就是胜利的宣言。向前奔跑吧,整个世界都在等待你的光芒绽放!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值