3.接口测试面试

七言 2025-8-1 11 8/1

[toc]

接口测试

接口测试面试题

1. 为什么要做接口测试?

  • 1.为了尽早进入测试,降低成本。现在很多系统都是前后端分离,前端后端的工作进度不一样,为了尽早的进入测试,尽早的发现更多问题,在前端页面没有开发好的情况下,只要后端的接口开发完毕,我们就可以提前去做接口测试,这也叫测试左移,再结合自动化测试技术,就可以极大提高我们测试的工作效率
  • 2.基于安全性的考虑,只依赖前端进行限制,已经完全不能满足系统的安全性要求了,毕竟绕过前端验证太容易了,所以我们还要做后端的验证。也就是说要从接口层面再验证一遍

2. 接口测试到底要怎么测?

  • 1.先考虑接口的正常调用,按照接口的定义传递正确的接口信息,包括地址、方法、参数。然后去看返回的响应结果是否是正确的,数据库数据是不是正确的。那么在这个地方需要注意以下几个点:
    • 1.传递的请求数据需要覆盖到有效类边界值
    • 2.返回的响应结果每个字段都需要检查,比如code、msg、status等信息
    • 3.验证数据存储,例如增删改查业务接口调动中,对数据的字段的正确性进行验证
  • 2.考虑请求参数的错误、异常情况。这里有以下几点:
    • 1.请求的数据输入的异常值,例如空值、长度类型异常等,接口能否正确处理,并且返回的响应是不是合理的
    • 2.考虑业务的约束,例如订单状态,必须确认收货后才能评价,我去调用一个非该状态的订单来进行评价
    • 3.输入一个错误的参数名,多一个参数或者少一个参数,接口是否能够正确处理,并且返回的响应是否合理
  • 3.关注接口的安全性测试
    • 1.敏感数据,例如密码是否加密传输的
    • 2.返回的数据,是否含有敏感信息,比如说你的身份证信息,一个用户银行的账号信息等
    • 3.接口是否对传入的数据去做了权限的校验,比如是否有权限调用该接口
  • 4.去关注接口的性能测试
    • 1.并发请求相同的接口,去查看服务器的处理情况,比如说插入了一个相同的记录,导致数据出错,引发系统的故障
    • 2.接口的响应时间,是不是在用户可接受的范围内
    • 3.对于业务操作频繁的接口,去进行压测,监控服务器的资源,来确定最大的瓶颈点是否满足当前的业务需要

3. 你是怎么测试接口的?

  • 先了解接口的业务功能、入参出参以及接口对应的数据存储,再依据接口测试用例设计方法完成接口测试的设计,用例设计业务场景再参数判断,比如参数的边界值、格式、组合等等,最后依据测试用例使用接口测试工具完成接口测试,并在测试过程中查看日志及数据以确保接口测试结果的正确性

4. 接口测试用例的设计和编写要点有哪些?

  • 必填字段:请求参数必填项、可选项
  • 合法性:输入输出合法、非法参数
  • 边界:请求参数边界值等
  • 容错能力:大容量数据、频繁请求、重复请求(如:订单)、异常网络等的处理
  • 响应数据校验:断言、数据提取传递到下一级接口...
  • 逻辑校验:如两个请求的接口有严格的先后顺序,需要测试调转顺序的情况
  • 性能:对接口模拟并发测试,逐步加压,分析瓶颈点
  • 安全性:构造恶意的字符请求,如:SQL注入、XSS、敏感信息、业务逻辑(如:跳过某些关键步骤,未经验证操纵敏感数据)

5. 如何判断这个接口是否有BUG?

  • 检查接口地址是否有问题
  • 检查接口参数,头信息、请求体信息是否有问题
  • 如果接口请求内容没问题,检查响应信息
  • 检查响应的码,响应的头,响应的数据信息是不是接口文档是一致的
  • 最后检查一下数据库里面的数据是否存储或者修改正确

6. 做接口测试时,经常遇到的7种BUG,你都了解吗?

  • 1.特殊值处理不当,导致程序异常退出或者崩溃
  • 2.类型边界溢出,导致数据读取和写入不一致
  • 3.取值在边界外,返回错误的出参信息
  • 4.权限未处理的情况,导致可以访问其他的用户数据信息
  • 5.逻辑校验不完善,可以利用漏洞,获取不正当的利益
  • 6.业务状态字段处理不当,导致后续逻辑出现错误
  • 7.数组类型item个数为0,或者item重复时,程序异常退出

7. 接口测试有没有测试出什么问题?

  • 接口测试出现BUG大多数都是参数校验、代码逻辑、边界条件、数据错误方面的问题。
    • 比如新增促销活动接口,满减金额为空也能保存成功,原因是后端代码没有对满减金额参数做空值判断
    • 再比如活动列表接口,查询出来的活动数据少了第一条,原因是SQL中limit条件起始的序号是1而不是0
    • 再比如更新活动的接口,接口提示更新成功,但是数据库中的update_time字段没有更新成最新时间,原因是开发忘记更新这个字段了

8. 项目里的接口是怎么测试的?

  • 其实就是一个接口测试的流程
    • 制定一些测试计划,进行一些任务分配,对需求进行一个分析,然后从我们的API文档中,去提取我们的一个接口的清单,进行测试用例的设计,编写测试脚本或者运用接口测试工具,导入测试数据,运行脚本生成测试报告。实际过程中可能存在接口不全,则需要去找开发进行沟通,或者使用抓包工具去整理这些接口

9. 一个接口请求不同(或页面无法访问)该如何排查?

  • 请求不通的话,可能的原因有以下几个:
  • 1.ip或者端口号或者url写错
  • 2.客户端和服务端网络不通
  • 3.服务端项目没有部署起来
  • 4.服务器的防火墙拦截了
  • 5.服务器程序内部发生了错误
  • 6.没有访问权限,比如说缺乏token、cookie之类的
  • 7.客户端设置了网络代理
  • 8.如果是浏览器访问,是不是绑定了错误的hosts

10. 接口测试中的加密参数如何处理呢?

  • 首先了解参数的加密方式,常见的有md5、aes、rsa等等
  • 如果是aes的需要找开发要私钥,如果是rsa需要找开发要公钥和私钥,然后在接口测试工具中引用加解密的代码实现参数的加解密过程,实现参数加解密的处理;
  • 如果公司有自定义的加密算法则需要找开发要加解密的代码实现,然后在测试工具中使用

11. 接口测试中,依赖登录状态的接口如何测试?

  • 依赖登录状态的接口的本质上是在每次发送请求时需要带上session或者cookie才能发送成功,那么可以在构建post请求时添加必要的session或者cookie

12. 当一个接口出现异常的时候,你是如何分析异常的?

  • 先抓包,用fiddler(charles)工具抓包,或者浏览器上F12调试工具,APP上的话,那就用fiddler做代理,通过手机设置代理去看请求和返回报文;查看后端日志,如linux系统通过xshell连接上服务器,查看接口日志,查看是否有报错信息(命令:tail -f 日志文件)

13. jmeter怎么做接口测试?如何测试接口的关联?

  • 首先我们做接口测试的流程是根据开发提供的接口文档,来编写接口测试用例,然后根据用例使用jmeter来进行测试
  • jmeter做接口测试:需要添加线程组、http请求,然后在http请求当中,去设置好地址、参数以及要添加的请求头信息,之后再添加查看结果树,用来查看响应结果,对比接口测试用例当中的预期结果是不是一致的,同步去检查数据库,来确认接口测试是否是通过的。涉及到的批量测试会使用csv配置元件来读取数据,进行批量测试。
  • 至于这个接口关联:我们是用Jmeter的后置处理器,主要是json提取器,和正则表达式提取器,比如说我们这个token,会把提取到的token值赋值给一个变量,然后在下一个接口调用变量就可以了

14. 依赖于第三方数据的接口如何测试?

  • 使用mock技术:利用mock服务模拟接口返回数据,支持手动构造依赖接口的返回值
  • 可通过postman或者fiddler来创建mock服务
  • 使用场景:
    • 1.需求提测后,后端未提测但是前端已完成。使用mock验证前端
    • 2.业务的自动化项目中,有个别接口不稳定。使用mock代替

15. 用requests库做接口测试的流程(requests怎么做接口测试)?

  • 首先安装requests库,安装完之后进行导入。导入后就可以使用requests库了
  • 根据我们接口里面的一些请求的方法:
    • post方法就用requests库.post
    • get方法就用requests库.get
  • 然后再去把接口地址传给url的一些参数:
    • 参数是json格式的就传json
    • 参数是form表单格式的就传data
  • 之后获得的是它的响应消息,如果响应消息是json格式的,我们可以通过reponse.json获取它那个json格式的结果
  • 最后我们要跟接口文档里的数据进行对比

16. 接口文档不详细的时候,怎么开展接口测试?

  • 接口文档不详细的话,肯定是因为里面那些参数和它的响应消息没有写的很清楚
  • 这个时候我们写用例的话,就没有什么依据,这个时候就可以通过一些抓包工具来捕获
  • 可以抓包看一下前后端交互的信息是什么样子的,补充一下接口文档不是很详细的地方

17. 什么是幂等性?

  • 简单来说,幂等测试就是验证数据一致性和事务完整性
  • 可能出现幂等问题的场景:
    • 1.用户重复提交——非常容易发生,前端、后端均需要控制
    • 2.网络重发
    • 3.消息重发
    • 4.系统间重试
  • 所以说保证接口的幂等性是非常重要的
  • 测试幂等的手段:前端幂等测试,注意按钮的多次快速点击
  • 后端接口的幂等测试,使用postman或jmeter多次发送同一参数的请求,查看服务端响应

18. 接口测试时碰到接口重定向如何去测试?

  • 接口测试方式不同则处理方式不同
  • 如果用jmeter则无需特殊处理,jmeter默认会自动处理重定向接口,自动发起对重定向的接口地址的访问并返回结果
  • 如果是采用代码框架的方式则需要特殊处理,拿到第一个接口响应header中的location字段对应的接口地址,发起对该地址的请求

19. restful标准接口中,有哪几种请求方式,他们分别代表什么含义?

  • restful规范的接口中,通常是一个Url就代表一种资源,对于资源的操作是通过http请求方法实现的,其中有get、post、put、delete四种方式
  • get表示获取数据、post表示新增数据、put表示修改数据、delete表示删除数据

20. 同步和异步的区别?

  • 同步和异步是一种通讯方法
  • 同步:执行一个操作时,需要等待其处理完成,然后再进行下一个操作
  • 异步:执行一个操作时,不需要等待返回,就进行下一个操作,一般需要消息中间件
  • 举例:
    • 下单接口中,需要调用库存接口做库存判断,所以必须等待库存接口返回数据才能进行下一步操作,这就是同步
    • 下单接口中,下单成功后需要调用邮件通知接口,不用等待接口返回成功,就可以直接进行下一步操作,这是异步

21. 接口测试能发现哪些问题?

  • 可以发现很多在页面上操作发现不了的 bug;
  • 检查系统的异常处理能力;
  • 检查系统的安全性、稳定性;
  • 前端随便变,接口测好了,后端不用变;
  • 可以测试并发情况,一个账号,同时(大于2个请求)对最后一个商品下单,或不同账号,对最后一个商品下单;
  • 可以修改请求参数,突破前端页面输入限制(如金额);
- THE END -

七言

8月01日16:36

最后修改:2025年8月1日
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论