2023精选接口测试面试题(建议收藏)

前言

接口测试是现在软件测试面试中的重点,基本上每家公司面试都会问到,学姐整理一下接口测试相关的面试题,顺便给出一些参考答案。

01

Q1:一个接口用例中有多个API接口,前后两个 API 之间如何进行参数传递的?

也就是上下游接口的依赖,A接口的响应结果a,是B接口的请求入参。
一种方法是:动态获取a的值。
另一种方法:比如在接口测试工具Postman、Jmeter中设置参数变量。也就是说A接口运行完毕后,将结果提取出来放在全局变量中。这样一来,其余接口就可以获取到这个值了。如果这个变量不想放在全局中共享,也可以只提供给当前测试套件使用。

02

Q2:你在实施接口自动化测试的过程中,如果某些接口第一次调用长时间没有返回,如何保证流程顺利进行又可以记录错误信息?

如果一个接口长时间没有返回,会影响整体测试的执行时间以及执行结果。
所以我们要为每个接口设置一个超时时间,比如3秒。一个接口超过3秒还没有返回,就可以定位为异常。
当然也不是一个接口一次调用超时了,就一定是异常了,要设置失败重试(一般为3次),如果执行了3次还是超时,就可以认为是一个异常。在Python中很多单元测试框架都可以添加用例失败重跑机质。另外也可以使用while循环实现用例的重复执行。
当一个接口用例,最终重试了三次依然失败或超时,我们就需要将该问题记录到系统日志中并最终显示在测试报告中。但是该用例执行完毕后,还要保证剩下的用例继续执行。如果在不使用单元测试框架的情况下,我们就需要捕获接口调用超时或错误的异常,以保证测试任务不会中断。
总结一下,要保证每个接口用例执行不会时间过长,不会单次失败就误报,又能成功记录错误信息,保证测试任务不中断。我们需要做到三点:设置超时、添加失败重跑机质、记录错误日志,有必要时要捕获异常对象。
在自动化实施过程中,除了要保证正常流程之外,还要对异常场景做合理的处置。

03

Q3:对于加密接口,如何进行测试?

在调用接口的时候,要搞清楚接口的加密方式时什么。

如果是对称加密,要先从开发那里获取对称密钥,基于对称密钥可以加密请求数据,以及解密响应报文。
如果是非对称加密,先从开发获取服务器公钥和私钥,也要知道当前用户的公钥和私钥信息。以便完成接口的数据加密和解密。

04

Q4:你在接口测试中是怎么校验结果是否正确?

1)验证接口响应状态码是否是200。这是接口测试的最基本要求,响应状态码200代表了该接口能接收请求,能返回响应。
2)验证响应的完整内容是否等于预期。当接口响应正文比较短,响应正文内容固定时,可以验证响应内容是否精确地等于预期的内容。
3)验证响应报文是否包含关键信息。当响应内容较长时,可以判断响应内容中是否包含一些关键信息,以此作为验证接口功能的验证点。
4)验证响应报文关键字段是否存在。当响应正文为XML格式或JSON格式时,可以通过XPATH或JSONPATH表达式,指定其中的某个节点,判断它是否存在。
5)验证响应报文关键字段,值是否正确。除了可以验证字段是否存在,如果值是固定的或有确定规则的,还可以验证其值是否正确。若值固定可以验证相等,如果不固定可以考虑用正则表达式匹配。
6)查询数据库或调用其余接口查询。当要验证的信息在当前测试接口的响应内容中不存在时,可以调用其他接口来验证。例如,一个增加用户信息的接口,要验证信息确实增加成功了,可以再调用查询用户信息接口来确认用户信息添加成功。当然,在获取数据库查询权限的情况下,也可以直接查询数据库来验证。
7)以上说的都是功能方面的验证,另外从性能角度,还可以验证接口的响应时间,看是否在一个合理的范围内。

05

Q5:cookie和session有什么区别?

cookie数据存放在客户的浏览器上,不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗。
session会在一定时间内保存在服务器上。当访问增多,会比较占用服务器的性能。
单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie,可以将登陆信息等重要信息存放为session,其他信息需要保存,可以放在cookie。

06

Q6:如何分析一个bug是前端还是后端的?

这种情况很容易判断,先抓包看请求报文,对着接口文档,看请求报文有没有问题,有问题就是前端发的数据不对;
请求报文没问题,那就看返回报文,返回的数据不对,那就是后端开发的问题。

07

Q7:接口测试如何设计测试用例?

接口测试一般考虑入参形式的变化和接口的业务逻辑,一般设计接口测试用例采用等价类、边界值、场景法居多。
接口测试设计测试用例的思路如下:1.正常用例,验证接口逻辑是否正确。根据业务逻辑、输入参数、输出值的描述,对正常输入情况下所得的输出值
2.异常用例,为了保证数据的安全及程序在异常情况下的逻辑的正确性而进行的测试。
模块接口测试的主要包括以下几个方面:1)鉴权码token异常(鉴权码为空<没有鉴权码>,错误的鉴权码,过期的鉴权码)。2)请求参数正常/异常。 3)返回结果校验,数据库比对

08

Q8:jmeter参数化的方式有哪些?

1)配置元件---用户定义的变量元件可以设置全局变量。
2)函数助手对话框中可以选择比如随机字符串、随机日期、随机数字作为参数化。
3)可以使用 csv 文件作为参数化,通过配置元件中的 csv data set config 元件进行设置即可。

09

Q9:你平常做接口测试的过程中发现过哪些bug?

可以发现很多在页面上操作发现不了的bug。可以修改请求参数,突破前端页面输入限制。
举例说明:
1、比如一个订单支付时,我们页面上是无法改变订单金额的,但我们可以通过抓包工具捕获订单支付请求,然后修改订单金额后提交,然后出现了一个原价100元的订单我们用1分钱完成了支付。
2、比如一个转账的页面,前段做了限制导致我们无法在转账金额的输入框输入负数,但我们可以通过抓包工具修改,然后出现了一个转账金额为负数的bug。

10

Q10:依赖于第三方数据的接口如何进行测试?

1)通过mock工具模拟第三方返回
2)测试环境本身支持mock数据,将mock数据写入json文件中,命名格式与开发代码一致。请问接口时,查看日志直接调用mock数据。

11

Q11:常见的 post 提交数据方式?

application/x-www-form-urlencoded
multipart/form-data
application/json
text/xml

最后: 可以在公众号:【自动化测试老司机】免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/13329.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[分块][STL][树]【Centroids】不一样的解法

前言 一道好题&#xff0c;也就花了我一个下午而已。 本人做法比较清奇&#xff0c;可以当做开阔思路参考&#xff0c;并不太建议实操&#xff08;太难调了&#xff01;&#xff09;。 文章较啰嗦&#xff0c;谅解。 思路 众所周知&#xff0c;我并不太喜推式子&#xff0…

矩阵系统源码智能回复私信场景开发

抖音矩阵系统源码智能回复私信场景开发 一、要想开发私信功能开发者需要准备的工作 开发者需要先对接官方api接口以及去申请api提交审核&#xff0c;目前需要了解官方对开发者对该能力开发权限的功能符合开发需求&#xff0c;其次需要了解官方私信触达的规则 1.申请流程&…

Codeforces-Round-883-Div-3

Codeforces Round 883 (Div. 3) 链接&#xff1a;https://codeforces.com/contest/1846 A. Rudolph and Cut the Rope There are n n n nails driven into the wall, the i i i-th nail is driven a i a_i ai​ meters above the ground, one end of the b i b_i bi​ m…

Excel 合并单元格筛选时只出现首行

一、问题描述 如果对合并单元格直接筛选&#xff0c;只能筛选出第一个单元格的值 二、原因分析&#xff1a; Excel筛选单元格时&#xff0c;遇到不连续区域&#xff08;即中间有空白单元格&#xff09;会识别不到后续内容&#xff1b; 合并单元格后&#xff0c; 除首行外&…

十八、Jenkins(centos7)执行接口自动化测试脚本,飞书推送测试结果消息

十八、Jenkins&#xff08;centos7&#xff09;执行接口自动化测试脚本&#xff0c;飞书推送测试结果消息 1.创建 Freestyle project 项目 2. 输入git仓库地址 https://gitee.com/HP_mojin/pytest_allure_request_20220811 3. 增加构建步骤-Execute shell&#xff08;Jenkins…

Go 语言数组

Go 语言提供了数组类型的数据结构。 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列&#xff0c;这种类型可以是任意的原始类型例如整型、字符串或者自定义类型。 相对于去声明 number0, number1, ..., number99 的变量&#xff0c;使用数组形式 numbers[0], num…

Kotlin~Composite组合模式

概念 能够帮助实现树状结构的模式。 主要特点 递归组合树状结构统一处理所有对象 角色介绍 Component: 组合接口Leaf: 叶子节点&#xff0c;无子节点Composite&#xff1a;枝节点&#xff0c;用来存储子部件 UML 代码实现 interface Organ {fun personCount():Int } cla…

springboot dubbo seata nacos集成 分布式事务seata实现

文章目录 Seata介绍dubbo介绍目标版本说明和代码地址pom.xml验证模块microservice-boot-commonmicroservice-boot- plat 验证结果注意事项 Seata介绍 官网&#xff1a;http://seata.io/zh-cn/docs/overview/what-is-seata.html Seata 是一款开源的分布式事务解决方案&#xff…

python实现语音识别(讯飞开放平台)

文章目录 讯飞平台使用python实现讯飞接口的语音识别第一步&#xff1a;导入需要的依赖库第二步&#xff1a;声明全局变量第三步&#xff1a;初始化讯飞接口对象第四步&#xff1a;收到websocket建立连接后的处理函数第五步&#xff1a;收到websocket消息的处理函数第六步&…

scratch 角色追踪

scratch 角色追踪 本程序中一个角色移动到随机位置和方向后向前移动&#xff0c;碰到边缘反弹&#xff1b;另一个角色跟随前一个角色&#xff0c;两个角色接触后前者重新取随机位置。 程序内容如下

Spring Boot 缓存应用实践

缓存是最直接有效提升系统性能的手段之一。个人认为用好用对缓存是优秀程序员的必备基本素质。本文结合实际开发经验&#xff0c;从简单概念原理和代码入手&#xff0c;一步一步搭建一个简单的二级缓存系统。 一、通用缓存接口 1、缓存基础算法 FIFO&#xff08;First In Fir…

生产级Redis Cluster部署(4.0.10版本)

生产级Redis Cluster部署 环境准备 主机名 IP地址 端口 描述 redis-master 192.168.1.51 7000 redis-master01 7001 redis-master02 7002 redis-master03 redis-slave 192.168.1.52 8000 redis-slave01 8001 redis-slave02 8002 redis-slave03 初始化…