全网最全,接口自动化测试面试题整理(附答案)


前言

1、能够大致讲一下你们接口自动化框架是怎么搭建的吗?

好的,我们采用unittest和ddt数据驱动思想搭建测试框架,(对数据excel读取、yaml配置、Requests接口请求、Re参数化、Pymysql数据库效验、日志等模块实现封装),其中,用

1)Openpyxl来处理excel,存储测试数据(用例数据)
2)pyyaml来配置文件(configparse,pyyaml)
3)Pymysql来连接mysql数据库,执行sql数据,进行数据效验
4)Requests请求库,来向接口发起请求
5)使用logging模块来创建日志器,记录项目中的日志信息
6)使用HttpTestRunner来生成HTML测试报告
7)使用re模块来实现参数化(正则匹配)
8)使用动态创建属性(类属性)的机制来实现接口之间的依赖 (setattr getattr)

比如:我们项目中客服指派订单的时候,需要上一个接口订单ID,首先要对上一个接口发送请求,获取订单id,通过实例化对象,创建属性名,获取属性值,从而实现指派订单接口的成功请求。

分层设计:
为了提升接口自动化测试框架的拓展性、稳定性、完整性,进而提升测试效率,往往会将测试框架工程化,整个流程会分为不同的层级,每个层级之间保持相对独立

cases:
测试执行逻辑层,用于存放所有的测试用例类

configs:
配置层,用于存放当前框架中的所有配置信息(使用不频繁,修改不频繁的数据)

datas:
测试数据层,用于存放所有的测试数据,测试参数(可以使用excel,json,yaml数据库来存储)

libs:
自定义库文件层,用于存放自定义或者二次开发的库文件

logs:
日志层,用于保存运行框架过程中产生的所有有效日志信息

reports:
报告层,用于保存所有的测试报告文件(一般为html报告)

scripts:
脚本封装层,用于保存所有的操作封装模块(yaml,excel,log,mysql,requests,参数化等)

run.py:
用例启动文件,使用套件加载用例,批量执行并生成报告

9)使用Jenkins来实现持续集成
比如,我们周三中午的时候运行自动化脚本,发送测试报告

2、接口自动化的流程?

a.需求 --需求文档、接口文档
b.评审
c.用例
d.编写自动化脚本
e.jenkins持续集成–定时执行脚本,生成报告
f.报告
g.发送邮件
h.提bug

3、你的项目中接口用例有多少?每次大概执行多长时间?

我们项目有65个接口;大概1200条用例,执行时间大概半个小时

4、cookie与session的区别?

cookie数据存放在客户的浏览器上,session数据放在服务器上;

cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗考虑到安全应当使用session;

session会在一定时间内保存在服务器上,当访问增多,会比较占用你服务器的性能考虑到轻服务器性能方面,应当使用cookie;

单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie;

所以个人建议:
将登陆信息等重要信息存放为session;
其他信息如果需要保留,可以放在cookie中;

5、Http和https区别?

https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl/tls加密传输协议。

6、在接口自动化中,如何让token不失效?

1)调用登录接口,拿到获取的token
2)将拿到的token放在header中,调用确认登录接口
3)确认登录接口调用成功,接口返回信息正常

7、下个接口请求参数依赖上个接口的返回数据?

不同的接口封装不同的函数或方法,需要的数据return出来,用一个中间变量a去接收,后面的接口传a就可以了

8、接口测试中依赖登录状态下的接口如何测试?

本质是:在每次发送请求时需要带上session或cookie才能发送成功,在构建post请求时添加必要的session或者cookie

9、依赖于登录的接口如何处理?

登录接口依赖token的,可以先登录后,token存到一个yaml或者json或者ini的配置文件里面。

后面所有的请求去拿这个数据就可以全局使用了;
如果是cookies的参数,可以用session自动关联;

10、依赖第三方的接口如何处理?

这个需要自己去搭建一个Mock服务、模拟接口返回数据

mock可以用在单元测试过程中,还有一个用途,当前端开发在开发页面的时候,需要服务端提供API接口,此时服务端还没开发完成,或者说没搭建测试环境,这时候前端开发会自己mock一个api服务端,自己给自己提供调用接口的返回数据。

11、接口产生的垃圾数据如何清理?

造数据的数据清理,需要python连接数据库,做增删改查操作;
测试用例前置,setUp做数据准备;
后置操作,tearDown做数据清理;

12、不可逆操作,如何处理,比如删除一个订单这种接口如何测试?

主要靠手工测试造数据,直接在数据库改字段状态。自动化也一样,造数据可以用python连接数据库,做增删改查的操作

测试用例前置,setUp做数据准备;
后置操作,tearDown做数据清理;

13、如何使你的接口自动化测试用例直接跳过前面几条,直接执行第 7 条?

可以在 Excel 创建一列,指定是否跳过,然后在用例时,过滤掉这些用例
使用条件判断,通过 case_id==7 来决定是否执行

14、如何使你的接口自动化脚本,对于同一个请求让同一个用户请求多次?

在 Excel 中设置相关执行次数的字段,在 ddt 数据驱动时,使用代码来控制执行次数。

params和data区别;
由于get请求无请求体,post请求有请求体;

使用params参数时,默认会把参数附加到url后面,所以发送get请求时应使用params参数;

使用data参数时,参数会存放到请求体中,所以发送post请求时不能使用params,应使用data,除非接口及支持get又支持post,同样get请求也不能使用data参数;

为什么要对requests进行封装?

通过封装,我可以直接把所有的请求参数统一使用字典来传递

比如,我们接口需要的数据也就是测试数据往往会保存在excel表里面,那么我们取到后是字符串类型,字符串类型是无法作为请求参数传递的,所有我每次都要做数据转换,再传递给接口,为了节省这个过程,我只需要把这个过程封装到我的requests里即可,每次取数据后会自动给我处理

第二,当我想保持某个状态时,不想每次都初始化一个session对象,那么我可以把它封装到我的reuqests里面,以后直接调用即可

如何使用Seesion解决接口保持状态?

初始化Session实例,通过这个实例调用request()方法发送请求

说说接口测试的流程,介绍一下request有哪些内容?

1)流程:获取接口文档,依据文档设计接口参数,获取响应,解析响应,校验结果,判断测试是否通过

2)request内容:
封装了各种请求类型,get,post等;
以关键字参数的方式,封装了各种请求参数,params,data,headers,token等。

封装了响应内容,status_code,json(),cookies,url
session会话对象,可以跨请求

B站首推!软件测试面试题合集(功能/接口/自动化/简历),拿捏面试官,轻松拿offer!

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

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

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

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值