精选接口测试面试题

精选接口测试面试题

1、接口测试基础

1、公司接口测试流程是什么?

从开发那边获取接口设计文档、分析接口并进行用例设计、并提前录入到接口测试工具Jmeter,等开发那边进行调试的时候(集成测试),执行接口测试用例,把发现的缺陷提给开发。

2、从开发那获取接口设计文档之后,你如何进行分析?

  • 单个接口的相关信息(接口功能、请求类型、请求地址、请求参数、返回值)。
  • 接口组合形成的业务。

3、接口测试用例设计主要使用哪些用例设计方法?

接口测试一般只需要考虑入参形式的变化和接口的业务逻辑,一般设计接口测试用例采用等价类、边界值、场景法居多。

4、接口测试执行中比对数据库吗?

需要进行,因为接口的返回值类似于提示信息,而接口对数据的操作还要进行深层次的检查。

5、谈谈你对 HTTP 协议的了解?

  • 超文本传输协议,端口为 80
  • 特点(无记忆功能、快速)是由请求和响应两部分组成。
  • 请求由请求头、请求行、请求正文组成,响应是由响应头、响应行、响应正文组成。
  • 之前我们公司的接口是采用 https 协议的。https 是 http+ssl 协议 端口 443 面向安全的超文本传输协议。

6、get 和 post 请求有什么区别?

  • get 和 post 请求都是客户端向服务器提交的一种请求方式。
  • get 是明文传输参数、倾向于请求服务器资源。比如打开网站。
  • post 传输数据不可见,安全性高,倾向于向服务器提交数据,比如注册等。

7、响应状态码有哪些?

  • 1xx:指示信息--表示请求已接受,继续处理。
  • 2xx:成功--表示请求已被成功接收、理解、接受。
  • 3xx:重定向--要完成请求必须进行更进一步的操作。
  • 4xx:客户端错误--请求有语法错误或请求无法实现。
  • 5xx:服务器端错误--服务器未能实现合法的请求。

8、在接口测试过程中发现的 bug 多不多?

在联调阶段执行接口测试发现的 bug 会很多,在冒烟测试、回归测试阶段执行接口测试的时候,bug 就很少。

9、详细描述之前测过的一个接口如何设计用例?

该题目考察你是否做过真正的接口测试。需要根据简历中的项目去预先人为的造一些接口,然后进行讲解。

比如:在上一个项目中,我做过一个获取手机验证码的接口,该接口需要使用 post 方式传递一个手机号参数,传送成功,返回状态码为 0 的接口信息,并能收到验证码;手机号错误,返回状态码为-10001 和提示信息;已注册的手机号返回状态码为-10003 和提示信息;我在进行该接口用例设计的过程中,考虑这三种业务情况,分别设计一个测试用例。

10、描述之前发现过的接口缺陷?

该题目和上题类似,根据简历中的项目去造一些接口缺陷,回答思路可以先向上题一样。先讲一个接口业务逻辑,然后再讲,比如我之前使用已注册手机号去调用该注册接口返回状态码为 0,注册成功,实际应该返回-10003 才对。

11、接口测试中有哪些要注意的测试点?

  • 接口中返回了图片地址,要手工去进行图片的测试(大小、内容)。
  • 接口完成查询功能的时候,数据返回的排序显示。
  • 接口测试的时候,关注参数的默认值、必填项。

12、接口执行测试后返回结果做对比,一般比对哪部分内容?

之前必须要对比的就是返回状态码,其次再去对比返回其它关键内容。

13、为什么开展接口测试?

  • 接口测试属于集成测试、测试介入越早、就越能在项目早期发现问题,其修复问题的成本越低。
  • 接口测试非常快速、UI 自动化执行一个测试用例 10S 左右、接口测试用例执行的话, 需要的时间是毫秒级的。

2、接口测试工具

1、之前在接口测试过程中,使用的工具是什么?

Postman 和 Jmeter

2、之前用过抓包工具没有?如何使用的?

之前在项目中用过 Fiddler 抓包工具进行 HTTP 协议请求的抓取。 打开 Fiddler 之后,默认浏览器配置了 127.0.0.1 8888 端口的代理,在 Fiddler 设置好过滤策略后,打开需要进行抓包的网站进行操作,就可以进行抓包。

3、json 数据是什么,你平时如何解析 json 数据?

一种开发常用的数据报文格式,由键值对和数组两种格式构成。

可以通过工具 bejson 网站等。

4、Postman 你在工作中使用流程是什么样的?

  • 编写好用例。
  • 在 Postman 先建好 url 环境变量。
  • 根据接口用例所属的模块新建集合管理。
  • 在集合中不同模块下录入测试用例。
  • 录入测试用例的时候根据预期结果在 tests 页签中增加断言。
  • 导出通过 Newman 去运行。

5、Postman 中设置环境变量有什么用?

在之前项目中,接口测试测试的环境有开发环境,测试环境等,为了测试的时候方便,就在 Postman 设置环境变量,到时所有接口都引用该环境变量,这样就不用为了切换环境导致每次都去修改被测系统接口的主机地址;点击右上角环境变量管理按钮-新建环境变量,在脚本中使用{{变量名}}去调用。

6、在接口测试中关联是什么含义?如何用 Postman 设置关联?

关联就是把上一个接口返回值的部分截取出来,作为下一个接口的参数,能让接口串联运行。

在 Postman 中设置关联的步骤如下:

  • 先通过正则表达式提取的方式或 json 取值的方式把下一个接口需要的信息从上一个接口截取出来。
  • 使用设置全局变量的代码把取出来的值保存到全局变量。
  • 在下一个接口中,使用{{全局变量}}代替要替换的静态值。

7、Postman 支持什么类型的协议测试?

http 和 https 协议的

8、Postman 参数化有哪几种方式?

内建变量、pre-scripts 编写 js 脚本、批量运行时导入 csv 或 json 格式的文件。

9、Newman 如何执行 Postman 脚本?

Newman run 脚本名称 也可以添加参数生成 html 报表等。

10、Jmeter 之前用的是什么版本?如何安装的?

Jmeter 用的是 5.1.1 版本

安装如下: 先在电脑上安装 jdk1.8 或以上的版本,然后从官网下载最新的安装包,解压后,进行环境 变量的配置,配置好后即安装完成。

11、在项目中如何用 Jmeter 进行接口测试?

  • 把线程组数量设置为 1,循环次数设置为 1。
  • 配置好全局变量 URL 通过配置元件---用户自定义的变量添加。
  • 增加配置元件 http 请求默认值,放置在用户定义的变量之后。
  • 添加事务控制器管理和组织测试用例。
  • 在事务控制中添加 http 请求添加测试用例中的接口请求信息。
  • 添加对应的断言元件进行断言。

12、Jmeter 中如何设置断言?

右击请求---断言---响应断言---响应断言界面输入要检查比对的项,设置好断言后,执行接口测试如果是通过的,查看结果树不会有任何提示,如果断言失败,就会有红色报错。如果接口返回的数据是 json 数据,也可以添加 json 断言。

13、Jmeter 中如何实现关联?

先从上一个接口中通过正则表达式提取器或 jsonpath 解析器截取下一个接口需要的参数值保存到变量,然后在写一个接口中通过${变量名}去获取。

14、Jmeter 添加 http 请求默认值元件有什么作用?

添加并设置好后,相当于给所有的 http 请求取样器都设置了默认值,既不用填写取样器中的比如主机地址、端口、代理等,都可以使用 http 请求默认值设置的。

15、Jmeter 参数化的方式有哪几种可以实现?

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