网络知识 娱乐 2022年 接口测试高频面试题及答案

2022年 接口测试高频面试题及答案

题目目录

  • 什么是接口测试?
  • 为什么要做接口测试/接口测试有哪些优势?
  • 请问你们公司是如何做接口测试的?
  • 怎么设计接口测试用例?
  • 没有接口文档如何做接口测试?
  • 怎么区分bug是前端还是后端的bug?
  • 常用的接口测试工具?
  • 接口之间数据依赖如何处理?
  • 依赖于第三方数据的接口如何进行测试?
  • 你平常做接口测试的过程中发现过哪些bug?
  • 当接口出现异常时候,你是如何分析异常的?

什么是接口测试?

  • 接口测试就是通过测试不同情况下的入参与之相应的出参信息来判断接口是否符合或满足相应的功能性、安全性要求
  • 测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系

为什么要做接口测试/接口测试有哪些优势?

  • 可以发现UI页面上发现不了的bug
  • 检查系统的安全性、稳定性
  • 越底层发现bug,它的修复成本是越低的
  • 检测系统异常处理的能力
  • 提前介入测试,提升测试效率

请问你们公司是如何做接口测试的?

  • 需求分析
    • 对于产品的需求进行认识和理解,这一块主要了解接口 业务逻辑、业务关联
  • Api文档分析与评审
    • 主要分析:请求和响应
    • 请求:
      • 请求url是否合理
      • 请求信息头是否明确
      • 请求方法是否合理
      • 请求参数是否必填、含义、参数方式是否明确
    • 响应:
      • 响应状态码
      • 响应数据格式
      • 响应信息头
      • 异常返回信息和错误代码是否合理
  • 测试计划编写
    • 测什么、谁来测、怎么测、风险预测及进度控制
  • 用例设计与评审
    • 根据接口业务、接口信息编写接口用例
    • 与产品、开发一起评审用例
  • 测试环境准备
    • 例如测试工具:Postman、jmeter安装
    • 接口服务的环境(大部分开发进行部署)
  • 执行用例
    • 按照接口用例执行
  • 缺陷管理
    • 记录发现的缺陷,开发完成之后进行回归验证
  • 测试报告
    • 编写本次测试报告,发送给相关人员

重点说明:

  • 接口测试重点是:接口文档分析、用例设计
  • 回答问题时,需要有重点,例如 接口文档分析、用例设计使用了哪些些方法、遇见什么问题,如何解决的(接口数据存在关联,工具里面如何做的关联)

怎么设计接口测试用例?

参考下图:
在这里插入图片描述

  • 接口业务逻辑测试

    接口逻辑测试是指根据业务逻辑、输入参数、输出值的描述,对正常输入情况下所得的输出值
    是否正确的验证,需要覆盖到接口实现的所有业务场景。

  • 其他测试点

    • 例如需要登录状态(以token为例,token为空、错误的token、失效的token)。

    • 参数异常情况

      • 必填项验证
      • 参数的长度、类型、格式异常:
        常规参数:(数字、字符串、日期)
        参数长度:6-18位。或身份证、电话的长度。
        参数类型:数字(精度),字母,中文,带空格的参数,特殊字符、NULL。
        日期格式:年月日,年月日时分秒,日期格式(包括/,-,:等)。
    • 错误码异常覆盖

    • 其他的关注点补充

      • 接口有翻页时,页码与页数的异常值测试
      • 数据库的增删改查后,接口数据是否保持一致性
      • 类似文件地址接口,需要查看返回的地址是否可以打开下载
      • 所有列表页接口必须考虑排序值
      • 所有功能都要考虑兼容旧版本
  • 面试回答说明:需要逻辑清晰,建议按照图片分类回答,先回答大的分类,在具体到每个细节

没有接口文档如何做接口测试?

  • 首先去跟开发沟通,是否真正没有编写接口说明文档或者存在相关的设计文档,如果真是没有,可以推动一下是否可以进行补充(站在开发的角度进行沟通)
  • 如果存在前端界面,通过抓包工具进行抓包,整理出接口相关信息,与开发进行沟通是否存在遗漏
  • 不存在前端界面,有代码能力,直接去查看开发代码实现,获取接口信息
  • 将整理的接口信息,编写出对应的接口测试用例
  • 使用接口测试工具,执行测试用例,例如:Postman或Jmeter
  • 记录测试结果,存在问题及时与开发沟通
  • 提交缺陷,开发修改之后进行回归测试
  • 测试完成提交测试报告
  • 做接口测试项目复盘,主要推动开发对接口文档重要性

常用的接口测试工具?

  • Postman
  • Jmeter
  • Fiddler
  • Apifox
  • 通过代码进行,例如 python+request、java+httpclient

怎么区分bug是前端还是后端的bug?

一般我会使用抓包工具进行抓包,获取前端和后端的数据交互过程

  • 查看前端发送的请求数据是否正确(请求url、请求头、请求参数),如果前端参数存在问题,这个可以确定前端肯定存在问题(不能确定后端不存在问题,需要使用正确参数进行验证)
  • 前端请求参数没有问题,查看后端响应的数据是否有问题,如果后端数据存在问题,那就是后端问题
  • 最后一种,前端参数和后端请求都没有问题,这时候可以考虑前端是否做了数据转换(格式化),大概率是这里面处理出问题(曾经一个数值问题,由于前端在对数值转换处理出问题)

接口之间数据依赖如何处理?

  • 直接举例接口测试使用的工具里面实现
  • 参考(Posman):
    • 在前置接口中提取要传递的数据保存到全局变量或者环境变量
    • 在后续接口,直接使用保存在全局变量或环境变量中的参数值

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

  • 通过mock工具模拟第三方返回

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

  • 一般错误:接口没实现,没按约定返回结果,边界值处理问题等
  • 输入异常值(空值、特殊字符、超过约定长度等)
  • 输入错误的参数,多输入,少输入参数
  • 安全性问题,如明文传输、返回结果含有敏感信息,没对用户身份信息做校验,没有恶意请求拦截等
  • 性能问题,如接口并发插入多条相同操作,响应时间过长,接口压测出现瓶颈等
  • 例如:一个管理员删除操作,前端界面非管理员不显示删除按钮,通过接口可以使用非管理员进行删除

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

  • 一种方案使用工具(fiddler)抓包,查看请求报文和返回报文
  • 第二种:web端直接使用浏览器 F12界面的Network,查看请求报文和返回报文
  • 如果是后端问题,查看后端日志

可以参考前面一篇文章:接口调不通,如何排查问题?

以上内容纯属个人理解,如有不足,欢迎各位大神指正,转载请注明出处!

如果觉得文章不错,欢迎关注微信公众号,微信公众号定期推送相关测试技术文章
个人微信号