接口测试+自动化测试面试题汇总(附回答)


前言

1、有做过哪些接口的测试列举一下

银行贷款相关的接口有:
1)登录接口==》login
2.贷款申请界面信息提交接口==》submitLoanApplyInfo
3)绑卡接口==》bindCard
4)还款接口==》repayment
5)获取合同接口==》getContractList
6)获取绑卡银行列表接口==》getBankList
7)放款回调接口==》giveLoanFeedback
8)还款回调接口==》repaymentFeedback
9)逾期回调接口==》overdueFeedback
API接口签名生成规则:
将请求数据JSONObject转换成字符串 String data = dataJSONObject.toString();
拼装code、method、data与signKey拼装生成signStr String signStr = code+method+data+signKey;
生成签名:String sign = MD5Util.Encrypt(signStr);

电商方面的接口有:
1)商品列表接口==》product_list
2)添加商品接口==》add_product
3)添加购物车接口==》add_shopping_cart
4)领取优惠券接口==》Coupon_collection
5)订单总数接口==》order_list_count
6)订单列表接口==》order/list?pageNum=1&pageSize=10
7)优惠券列表接口==》coupon_list?pageNum=1&pageSize=10
8)商品分类接口==》productCategory/list/0?pageNum=1&pageSize=5
9)商品类型接口==》productAttribute/category/list?pageNum=1&pageSize=5
10)品牌管理接口==》brand/list?pageNum=1&pageSize=10

保险方面的接口有:
1)产品列表和详情==》product_list_and_details
2)保单签收==》policy_signing
3)添加投保人和被保人==》add_the_insured_and_insured
4)添加免责声明==》add_a_disclaimer
5)查看保单详情接口==》check_policy_details
6)查看电子保单接口==》view_your_e-policy
7)绑定银行卡接口==》attach_a_bank_card
8)续保接口==》renew_your_insurance
9)保全变更被保人信息接口==》security_changes_of_insured_information
10)受益人变更接口==》beneficiary_change
11)保障检视接口==》safeguard_review
12)条款查询接口==》terms_inquiry

2、你做过接口自动化测试吗?用什么做的?

做过,用的python+requests+unittest单元测试框架+ddt数据驱动来做的,那我大概和您讲一下我做接口自动化的流程吧

回答:
首先的话就是我需要打开pycharm然后新建一个py模块,然后导入requests库和time模块等等,然后再通过定义一个方法,把url接口地址,data入参和headers都定义好。

然后通过调用requests.post方法把url地址,data入参,headers都传入进去,发送接口请求,得到response返回值,最后通过assert方法进行断言,然后再调用方法。

这是我们最开始做接口自动化写的一些线性脚本,但是后面因为做的时间也比较久,用例也比较多,所以我们后续用了一些数据驱动和框架对我们的代码进行了分层封装。

3、面试官如果问:那你们后面是怎么封装的呢?

我们大概分了6-7层,来对我们的接口自动化进行了封装,要和您讲一下具体的代码吗?【超级重点】

答案一:
我们这个接口自动化框架大致分了6-7层,首先
第1层的话是config配置层,这个里面主要是封装了一些我们测试环境的url地址和一些连接数据库的IP地址,用户名密码等等

第2层是data数据层,这个里面主要放的是接口的用例,把接口的入参,接口的路径,接口的编号,请求方法都放在Excel表格里面了,有正常场景的也有异常场景的

第3层是一个library第三方的公共库层,里面主要是放了发邮件,生成测试报告的工具类,还有做数据驱动的ddt模块

第4层就是utils工具类层,主要封装了读取Excel表格,读取ini配置文件和发送接口请求的工具类

第5层就是testcase用例层,这里面会创建一个类,然后在里面创建以test开头的方法,然后用data装饰器用来接受Excel表格里面的接口入参,先把数据处理,然后发送接口请求拿到response响应信息进行断言

第6层就是run运行层,首先会通过把所有的用例加载到一个suite套件里面,然后再通过调用run方法运行这个套件,并且通过HTMLtestrunner模块生成测试报告放到第7层报告层里面,然后最后通过Jenkins做可持续集成,在回归测试阶段,每天晚上都会运行一下我们的接口自动化用例,大致的一个框架结构就是这样的。

答案二:
我们是使用 python+requests+unittest 来搭建我们的做接口自动化测试框架,使用 python,组建接口,把url接口地址,data入参和headers都定义好

调用第三方的库 requests 来根据我们接口方法 get 或者 post 来发送接口请求,并接收响应回来的数据转换为字典,再通过 unittest 框架提供的断言来判断响应结果是否符合我们预期,通过 HTMLTextRunner 的类库来输出 html 格式的测试报告。

在这个过程中,为了方便用例与数据的使用,做了分级处理。用例里面主要是编写发送接口请求的流程以及接口校验的流程,里面的测试数据不会直接写死在用例里面,而我们的用例会单独剥离出来放在其他的地方。这个过程我们采用分层封装的形式进行处理,那我们这个框架里面大概分了7层

比如说就是我的这个用例层也就是testcase层,主要是存放接口的用例,一般一个接口封装在一个类里面,一个类放在一个模块(.py)里面,以接口的形式去写的。

采取了ddt数据驱动的形式去编写数据用例,这样可以让我达到一条用例执行我所有场景接口的情况,然后接口运行完会进行断言,断言的话一般会在用例里面加一些try except捕获异常语句,因为后续这个用例执行通不过的话,在报告里面直接可以看到报错信息直接进行修改

然后在用例里面获取的数据我们一般都会保存在data层里面。然后我需要去封装一些操作这些数据的工具方法出来,我们会把它集中封装在util工具层。

还有一个就是配置信息层,这个里面就是保存项目的配置文件,比如环境的信息,数据库的信息。

然后run层,可以保存不同的运行对象,在指定目录下用discover方法寻找以test开头的用例,形成一个套件对象,然后用run,运行不同组合下的用例。

然后还有一个library层存放我需要用到的一些公共库,比如htmltestrunner 或ddt驱动工具模块,在用例层直接导入即可,后续还用其他工具模块也可以直接放这里面。

在report层把生成报告指定保存在这个层里面,展示成功或者失败的用例,方便我查找问题,对用例进行一个管理和输出,整个接口自动化框架的分层处理就是这样的

4、接口自动化测试写了多少条用例?通过率怎么样? 运行接口自动化过程中碰到了哪些问题?【超级重点】

答:之前写了大概有1000-2000多条接口自动化用例吧,一般环境稳定的话最终通过率都能到100%

碰到的问题的话主要有:
1)我们跑接口自动化的时候后端经常在部署环境导致用例通不过
2)老接口的字段有改动,开发没有及时和我们讲,导致断言会出现失败的情况

3)老接口的逻辑有改动需要重新去维护之前的关联接口,重新调整yaml数据的入参

4)因为有的接口的返回值是动态的,需要做断言,但是后端数据库有时候会timeout连接超时和connection refused连接拒绝是因为数据库未开启和没权限导致的

5)还有就是之前我在数据库里面造了一些测试数据为了支持跑接口自动化但是有时候会被其他同事给删除了,这种情况我一般会提前在群里艾特其他同事和他们说一下我需要跑自动化了,让他们不要删我的数据

5、测试a,b两个接口,b接口未做好,但是测试a接口需要b接口的东西,怎么测试?

方法:通过mock server系统,模拟b接口数据的返回,用mock数据,然后先请求b接口然后拿到接口的返回值再作为下一个接口的入参,在jmeter中通过${变量}来引用上个接口的返回参数

6、接口的三次握手和四次挥手

接口三次握手的原理(面试简单版本):

第一次握手:客户端给服务器发送一个报文和seq序列号,告知服务器:我客户端想和你建立连接

第二次握手:服务器收到报文后给客户端回复一个确认的报文和新的报文,告知客户端:我服务器收到了你的请求,同意和你建立连接。但此时服务器不能确认客户端的接收功能和自己的发送功能是否正常,所以

第三次握手:客户端收到第二段报文后给服务器回复一个报文,告知服务器:我客户端收到了你的回复,知道你同意连接,那就开始建立连接了!

接口三次握手的原理(面试专业版本):

第一次握手:建立连接时,客户端发送syn包(syn=x)到服务器,并进入syn_send状态,等待服务器确认;

第二次握手:服务器收到SYN包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=k),即syn+ack包,此时服务器进入syn_recv状态;

第三次握手;客户端收到服务器的SYN+ACK 包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入established状态,完成三次握手。完成三次握手,客户端与服务器开始传送数据

三次握手的作用?(为什么要进行三次握手?两次握手不行吗?)

三次握手的作用:
1)确认双方的接受能力,发送能力是否正常。
2)指定自己的初始化序列号,为后面的可靠传送做准备。

接口四次挥手的原理(面试简单版本):

1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。
2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。
3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A。
4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1。

接口四次挥手的原理(面试专业版本):

1)第一次挥手:客户端发送一个FIN报文段,报文段中指定序号seq=u。此时客户端处于FIN_WAIT_1状态。

2)第二次挥手:服务器收到FIN报文后,立即发送一个ACK报文段,确认号为ack=u+1,序号设为seq=v。表明已经收到了客户端的报文。此时服务器处于CLOSE_WAIT状态。

在第二次挥手和第三次挥手之间的时间段内,由于只是半关闭的状态,数据还是可以从服务器传送到客户端的。

3)第三次挥手:如果数据传送完毕,服务器也想断开连接,那么就发送一个FIN报文,并重新指定一个序号seq=w,确认号还是ack=u+1,表明可以断开连接。

4)第四次挥手:客户端收到报文后,一样发出一个ACK报文段做出应答,上一次客户端发送的报文段序号为u,那么这次序号就是seq=u+1,确认号为ack=w+1。此时客户端处于TIME_WAIT状态,需要经过一段时间确保服务器收到自己的应答报文后,才会进入CLOSED状态。

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

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

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

人生最精彩的不是实现梦想的瞬间,而是追梦路上那个永不言弃的自己。那些看似遥不可及的目标,终会在你日复一日的坚持中触手可及。别怕慢,怕的是停下;别怕难,怕的是放弃!

你比自己想象的更强大!每个挫折都是成长的契机,每次坚持都在改写命运的轨迹。当别人选择放弃时,你的执着就是胜利的开始。向前奔跑吧,整个世界都会为追光者让路!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值