热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

面试官的窒息逼问:2021最全的接口测试面试题及参考答案

一、前言点击领取学习资料接口测试最近几年被炒的火热了,越来越多的测试同行意识到接口测试的重要性。接口测试为什么会如此重要呢?主要是平常的功能点点点

一、前言

点击领取学习资料
  接口测试最近几年被炒的火热了,越来越多的测试同行意识到接口测试的重要性。接口测试为什么会如此重要呢? 主要是平常的功能点点点,大家水平都一样,是个人都能点,面试时候如果问你平常在公司怎么测试的,你除了说点点点,还能说什么呢,无非就是这个项目点完了点那个项目, 这就是为什么各行各业的只要手指能点得动的人都来转行软件测试了。面试的时候面试官希望你除了点点点,还能更深入一点的思考页面上看不到的功能,也就是接口测试了。接口是看不见的,但是可以访问!
在这里插入图片描述


二、2021非常全的接口测试面试题及参考答案

点击领取学习资料


1、你们公司的接口测试流程是怎样的?(有没有感觉熟悉,貌似在哪里听过)

接口测试我们是在XX项目做的,主要有XX接口,XX接口,XX接口等。
  首先是从开发那里拿到API接口文档,了解接口业务、包括接口地址、请求方式,入参、出参,token鉴权,返回格式等信息。
  然后使用Postman或Jmeter工具执行接口测试,一般使用Jmeter的步骤是这样的:
(1)新建一个线程组。
(2)然后就是新建一个HTTP请求默认值。(输入接口服务器IP和端口)
(3)再新建很多HTTP请求,一个请求一个用例。(输入接口路径,访问方式,参数等。)
(4)然后创建断言和查看结果树。
  最后调试并执行用例,最后编写接口测试报告。
  其实我们做接口的时候也碰到了蛮多的问题,都是自己独立解决的,比如返回值乱码(修改jmeter的配置文件为UTF-8编码方式),比如需要登录后才能取得token鉴权码并且这个鉴权码在下面的请求中需要用到(使用正则表达式提取器提取token的值等。


2、请简述一下COOKIE、session以及token的区别(有没有感觉整个是万年不变的面试题)

(1)COOKIE数据存放在客户的浏览器上,session数据放在服务器上。而token是接口测试时的鉴权码,一般情况下登陆后才可以获取到token,然后在每次请求接口时需要带上token参数。
(2)COOKIE不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session,session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面应当使用COOKIE
(3)可以将登陆信息等重要信息存放为session;其他信息需要保存,可以放在COOKIE
  
点击领取学习资料


3、接口测试如何设计测试用例?(必问,有没有感觉答得整个人都不好了?)

接口测试一般考虑入参形式的变化和接口的业务逻辑,一般设计接口测试用例采用等价类、边界值、场景法居多!
  接口测试设计测试用例的思路如下:
(1)接口业务逻辑测试?(正例)
  接口逻辑测试是指根据业务逻辑、输入参数、输出值的描述,对正常输入情况下所得的输出值
  是否正确的测试,也就是测试对外提供的接口服务是否正常工作。
(2)模块接口测试?(反例)
  模块接口测试是为了保证数据的安全及程序在异常情况下的逻辑的正确性而进行的测试。
  模块接口测试的主要包括以下几个方面:


  • 鉴权码token异常(鉴权码为空<没有鉴权码>,错误的鉴权码,过期的鉴权码)。
  • 其他参数异常。

(3)错误码异常覆盖。
(3)接口测试其他的关注点
  接口有翻页时,页码与页数的异常值测试


  • 数据库的增删改查,比如一个post接口操作完成后,通过列表页接口看下新的数据是否和刚才的post一致

  • 接口返回的图片地址能否打开,图片尺寸是否符合需求

  • 当输出参数有联动性时,需要校验返回两参数的实际结果是否都符合需求。

  • 所有列表页接口必须考虑排序值

  • 所有功能都要考虑兼容旧版本

点击领取学习资料


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说2-3个就可以了。 面试官出这个题,主要是想知道你是不是真的做过接口测试,毕竟现在很多小伙伴简历都是写的假的(你要不写估计面试机会都没有,没办法,为了生存,能理解) 比如,提现输入框,在页面上输入负数,肯定是无法提交过去(前端页面会判断金额),如果我不走前端,直接用接口工具发请求,输入一个负数过去。 (假设服务端没做提现金额数据判断) 余额=当前余额(100)-提现金额(-100),那么提现-100,余额就变成200了,也就是越提现,余额越大了。
  
点击领取学习资料


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

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


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

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


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

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


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

在这里插入图片描述

postman或jmeter(5.1)


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

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

点击领取学习资料


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

一种开发常用的数据报文格式,由键值对和数组两种格式构成。可以通过工具bejson网站等


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

(1)编写好用例
  (2)在postman先建好url环境变量
  (3)根据接口用例所属的模块新建集合管理
  (4)在集合中不同模块下录入测试用例
  (5)录入测试用例的时候根据预期结果在tests页签中增加断言
  (6)导出通过Newman去运行
  
点击领取学习资料


16、postman中设置环境变量有什么用?

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


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

关联就是把上一个接口返回值的部分截取出来,作为下一个接口的参数,能让接口串联运行
  在postman中设置关联的步骤如下:
(1)先通过正则表达式提取的方式或json取值的方式把下一个接口需要的信息从上一个接口截取出来
 (2) 使用设置全局变量的代码把取出来的值保存到全局变量
 (3)在下一个接口中,使用{{全局变量}}代替要替换的静态值


18、postman支持什么类型的协议测试?

http和https协议的


19、postman参数化有哪几种方式?

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


20、Newman如何执行postman脚本?

Newman run 脚本名称 也可以添加参数生成html报表等
 
点击领取学习资料


21、jmeter之前用的是什么版本?如何安装的?

在这里插入图片描述

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


22、在项目中如何用jmeter进行接口测试?

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


23、jmeter中如何设置断言?

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


24、jmeter中如何实现关联?

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


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

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


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

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


推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 移动端常用单位——rem的使用方法和注意事项
    本文介绍了移动端常用的单位rem的使用方法和注意事项,包括px、%、em、vw、vh等其他常用单位的比较。同时还介绍了如何通过JS获取视口宽度并动态调整rem的值,以适应不同设备的屏幕大小。此外,还提到了rem目前在移动端的主流地位。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 延迟注入工具(python)的SQL脚本
    本文介绍了一个延迟注入工具(python)的SQL脚本,包括使用urllib2、time、socket、threading、requests等模块实现延迟注入的方法。该工具可以通过构造特定的URL来进行注入测试,并通过延迟时间来判断注入是否成功。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有