❤️【接口测试面试】精选50接口测试面试题目,或许能帮到金九银十面试浪潮中的你❤️

news2024/9/20 18:42:38

基本理论知识

1、什么是(软件)接口测试?
接口测试:是测试系统组件间接口的一种测试方法

接口测试的重点:检查数据的交换,数据传递的正确性,以及接口间的逻辑依赖关系

接口测试的意义:在较早期开展,在软件开发的同时实现并行测试,减少页面层测试的深入问题,降低开发成本,缩短整个项目的测试周期;脱离页面的限制,更全面的进行测试,发现更底层的问题。

2、为什么要做接口测试?
01、越底层越早期发现bug,它的修复成本是越低的。

02、测试时能够跨越前端UI的限制,做更充分的测试,检查系统的安全性、稳定性。

03、接口相对UI自动化也比较稳定,也相对容易实现自动化持续集成,且可以减少回归测试人力成本,缩短测试周期,支持后端快速发版需求。

3、解释API测试和单元测试之间的区别
API(Application Programming Interface,应用程序编程接口),指一个软件组件与外界进行的交互的接口。它是一组功能和过程,可用于创建访问应用程序或操作系统的功能或数据的应用程序。

API测试:属于黑盒测试;一般测试人员执行;单元测试完成再执行API测试;API测试可以检查系统的全部功能,以便最终用户可以完美地使用它。

单元测试:属于白盒测试;一般归开发人员执行;在每个模块准备就绪,则进行单元测试;执行单元测试以检查每个隔离单元是否按预期执行。
4、UI测试和API测试之间的关键区别?

UI(用户界面)是指测试图形界面,如用户如何与应用程序交互,测试应用程序元素,如字体,图像,布局等。UI测试基本上侧重于应用程序的外观和感觉。

API可以实现两个独立的软件系统之间的通信。实现API的软件系统包含可由另一软件系统执行的功能或子例程。

5、接口自动化测试的流程?
半自动化:了解接口—用例设计—选择工具、实现用例—问题分析

自动化:需求分析–>用例设计–>自动化工具或框架选择–>脚本开发–>测试执行–>结果分析–>维护—>持续集成。

6、接口测试的常用工具有哪些?

7、接口文档一般有哪些内容?

接口文档一般包括用户使用接口时必备信息:

接口说明、调用url、使用的方式、使用举例

请求参数列表、参数类型、请求参数说明

返回参数说明、错误码说明。

8、没有接口文档怎么办

抓包分析,或者源代码、日志,或者根据数据库设计,根据业务,沟通–梳理接口文档,不规范—找到必备信息—自己简要整理成文档—确认。

9、接口测试一般测试哪些内容
一般要考虑到功能、性能、安全性、稳定性几个不同的方面。

10、接口功能测试用例的编写要点?
首先是接口的基本功能测试:正常场景和异常场景,

请求参数:

参数基本校验:是否有默认值,类型要求、是否必填,合法性要求、边界值

各参数之间是否有逻辑关系

业务逻辑测试:正向,反向,

响应内容:

对结果码的覆盖

响应数据校验:格式和内容

11、对API执行哪些常见测试?
1通常根据请求响应验证返回值是否基于请求。

2当API更新数据时,我们应验证系统是否在验证结果。

3我们将验证API是触发其他事件还是请求其他API。

4当没有返回值时,我们将验证API的行为。

12、在API测试期间,面临哪些不同类型的挑战?
1参数选择、参数组合、调用顺序、输出验证和确认

2鉴权、身份认证、协议

13、接口调用的步骤?
用户:发送接口请求,然后接收响应内容;

Client发送请求<-------->Server处理并返回响应

14 、API测试会发现哪些Bug?
功能缺失或重复;没有友好处理错误情况;可靠性;安全性;性能;错误处理不一致;多线程问题;

15、接口测试的过程中,上下游接口有数据依赖如何处理?
可以用一个全局变量来处理依赖的数据

16、依赖于第三方数据的接口如何进行测试?
一般利用一些MOCK的工具来模拟第三方的数据返回,最大限度的降低对第三方数据接口的依赖。

17、接口测试中依赖登录状态的接口如何测试?

依赖登录状态的接口的本质上是在每次发送请求时需要带上Sessionid或者Cookie才能发送成功,在构建请求时添加必要的Sessionid或者Cookie即可。

18、当一个接口出现异常时候,你是如何分析异常的?
抓包分析,用fiddler、F12,app上的话,那就用fiddler设置代理,去看请求报文和返回报文了

第二 查看后端日志

19、有那些类型的接口?
如内部接口和外部接口;单一接口,组合接口

根据协议划分:http接口,soap接口,

http接口: get, post, put, delete;

Web service接口: soap,rmi, rpc

20、什么是Web Service?
Web Service是一个SOA(面向服务的编程)的架构,它是不依赖于语言和平台,可以实现不同的语言间的相互调用,通过Internet进行基于Http协议的网络应用间的交互;

Web Service = WSDL+SOAP+UDDI

21、什么是SOAP接口
SOAP简单对象访问协议,是一种基于 XML 的协议。SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议HTTP,简单邮件传输协议SMTP。

22、什么是REST/RESTFUL接口?
在REST API中,通过HTTP协议进行交互。

REST - 表述性状态转移,它不是协议和标准而是表示一种风格, 将Http协议的设计初衷作了诠释。它正快速成为API创建的标准。

HTTP协议

23、什么是HTTP协议
HyperText Transfer Protocol超文本传输协议,是因特网上应用最广泛的应用层协议,传输层基于TCP协议。

24、HTTP协议特点
1.支持客户/服务器模式;

2.简单快速,向服务器请求服务时,只传送请求方法和路径,因而通信速度很快;

  1. 灵活,HTTP允许传输任意类型的数据对象;

  2. 无状态,对于事务处理没有记忆能力, 每个请求都是独立的;

  3. 无连接,在1.1版本后默认保持连接;

25、Http请求的组成部分是什么?
请求报文包括三部分:

(1).请求行:包含请求方法,URI,HTTP版本协议

(2).请求首部字段,请求header

(3).请求内容实体,请求body

响应报文包含三部分:

(1).状态行:包含HTTP版本,状态码,状态码原因短语

(2).响应首部字段,响应header

(3).响应内容实体,响应body
26、Http协议工作的原理

整个处理流程步骤:

(0) 地址栏输入url地址后回车

(1) 域名解析,获取ip地址

(2) 建立TCP连接,三次握手

(3) 浏览器端发起Http请求

(4) Server接收,处理,返回Http响应,

(5) 浏览器端接收响应,得到HTML代码

(6) 浏览器解析HTML代码,渲染呈现给用户

(7) 浏览器端发起Http请求

(8) Server接收,处理,返回Http响应,

(9) 浏览器端接收响应,得到HTML代码

(10) 浏览器解析HTML代码,渲染呈现给用户

(11) 断开TCP连接,四次挥手

27、 HTTP协议的请求方式有哪些?
GET:GET用于从指定资源请求数据。
POST:POST用于将数据发送到服务器以创建或更新资源。
PUT:PUT用请求有效负载替换目标资源的当前表示。
DELETE:DELETE删除指定的资源。
OPTION:选项用于描述目标资源的通信选项,让客户端查看服务器的性能。
HEAD:HEAD请求与GET请求相同的响应,但没有响应主体,用于获取报头。
28、Http结果码
1xx–提示, 2xx–正常,3xx–重定向,4xx–客户端错误,5xx–服务端错误

100:Continue,收到了请求的初始部分,请客户端继续
200:OK,请求被正常处理
301:Moved Permanently,永久性重定向
302:Found,临时重定向
304:Not Modified,发送附带条件的请求时,表示文件未变化
400:Bad Request,请求报文语法有误,服务器无法识别
401:Unauthorized,未授权,需要客户端对自己认证
403:Forbidden,禁止,请求被服务器拒绝
404:Not Found,服务器无法找到对应资源
500:Internal Server Error,服务器内部错误
29、Http协议首部字段
1、通用首部字段(请求报文与响应报文都会使用的首部字段)

Date:创建报文时间

Connection:连接的管理

Cache-Control:缓存的控制

2、请求首部字段

Host:请求资源所在服务器

Accept:可处理的媒体类型

Accept-Charset:可接收的字符集

Accept-Encoding:可接受的压缩方式

Accept-Language:可接受的自然语言

Authrization:认证信息

Referer:当前请求路径的获取渠道

User-Agent:客户端信息

3、响应首部字段

Set-Cookies:客户端应该保存的cookies

Location:令客户端重新定向到的URI

Server:HTTP服务器的安装信息

4、实体首部字段

Content-Type:实体主类的类型

Content-Encoding:实体主体适用的压缩方式

Content-Length:实体主体的的字节数

30、GET请求和POST请求区别是什么?
1 GET一般从服务器上获取资源,POST一般往服务器发送数据(不是绝对的)

2 GETGET方式主要是对数据库进行查询,GET是幂等和安全的,而POST主要用于让数据库增加数据或者删除,修改数据,所以会有一定的安全性问题;

3 GET请求数据是通过URL传送,POST请求数据通常在请求BODY中;

4 GET,因为受URL长度限制,数据量有限;POST可以传输大量数据,可用于文件上传

5 GET是不安全的,因为URL是可见的;POST较安全

6 GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留

31、Http与Https相比的不足?
1通信使用明文不加密,内容可能被窃听,也就是被抓包分析

2不验证通信方身份,可能遭到伪装

3无法验证报文完整性,可能被篡改

HTTPS=SSL+HTTP

32、http和https的比较
1 HTTP 的URL 以http:// 开头,而HTTPS 的URL 以https:// 开头

2 HTTP 是不安全的,而 HTTPS 是安全的

3 HTTP 标准端口是80 ,而 HTTPS 的标准端口是443

4在OSI 网络模型中,HTTP工作于应用层,而HTTPS 的安全传输机制工作在传输层

5 HTTP 无法加密,而HTTPS 对传输的数据进行加密

6 HTTP无需证书,而HTTPS 需要CA机构wosign的颁发的SSL证书

33、HTTP接口的请求参数类型有哪些?
查询字符串参数(Query String Parameters参数)一般用于GET请求,会以url string的形式进行传递。
请求体参数(Request Body)一般用于POST请求,可以使用Content-Type来指定不同参数类型。
34、常见的 POST 提交数据方式
请求body;请求url+请求body:

Content-type:

application/x-www-form-urlencoded: 表单提交–键值对, form

multipart/form-data:文件上传—文件 ,MIME

application/json,text/xml:

35、如何对请求数据加密?为什么要加密,常规加密方式
Jmeter–找它的对应组件或函数;如果没有写代码,
Requests–写代码,利用python自带的或第三方的模块
36、HTTP协议无状态?怎么解决Http协议无状态?
1、无状态指对于事务处理没有记忆能力,每个http请求都是完全独立的。

2、无状态协议解决办法:通过Cookie或Session。

A. client发送登录请求,server判断登录成功,生成cookie并返回响应

B. Client保存cookie,并在接下来的请求时,带上cookie

C. Server接收到请求,对请求中的cookie做验证。

37、Cookies机制和session机制的区别
cookies数据保存在客户端,session数据保存在服务器端;

cookies可以减轻服务器压力,但是不安全,容易进行cookies欺骗;

session较安全,但占用服务器资源;

Cookie实现方式:
登录成功,server返回cookie—响应的header的set-cookie字段

下次请求,请求header中通过cookie字段带上需要的cookie session实现方式—cookie,Url回写

登录成功,server创建session并返回sessionid

下次请求时,请求报文中带上sessionid

JMeter接口测试

38、为什么选择用JMeter进行接口测试?
JMeter刚开始觉得难用,但是习惯了发现挺好用的,它功能很强大,满足基本功能测试和压力测试的需求。

39、什么是断言?断言的类型有哪些?
自动化测试中通过断言做结果判断,用于检查测试中的数据与预期是否一致。一致则结果为pass,否则为fail状态。

JMeter中一些常用的断言有:响应断言、Json断言

40、正则表达式中包括和匹配区别
包括:目标字符串包括正则表达式的内容

匹配:目标字符串包括与正则表达式的内容完全一致

41 、Json断言如何使用
首先响应内容应该是json格式;

然后添加json断言,通过json路径表达式,匹配到需要的内容,再把它与预期结果的比对

42、什么是参数化
是自动化过程中,将脚本中的输入数据使用参数来代替,在脚本运行时指定参数的取值

简化操作, 实现测试代码和测试数据的分离

jmeter实现方式有—用户参数User Parameters,函数csv_reader, 配置元件csv data set config。

43、如何保持登录状态
如果登录状态是通过cookie实现的,jmeter中可以通过cookie管理器实现登录状态保持,也可以以关联的方式解决这个问题。

44、什么是关联
多个请求/响应间的数据可能会有相互依赖的关系。

B需要A的数据-----Server返回的,动态变化,必须使用

关联:将服务器返回的数据包中满足条件的数据保存到一个参数中的过程。

45、正则表达式提取器的用途是什么?
主要用于关联的场景,一般从响应中获取我们需要的数据,存储到指定变量中,以备后续使用。

46、 Json提取器怎么使用?
对于json格式的响应数据,做数据提取时,可以用json路径表达式选取数据,并保存到变量中。47、如何通过接口上传一个文件?

通过接口上传文件,首先content_type值为multipart/form-data

需要确定文件的名称和路径,文件的类型,参数名称三个数据

48、需要重定向如何处理
JMeter会自动处理重定向,重新发送一个请求到指定url,我们一般勾选跟随重定向,以查看重定向的过程

49、接口数据需要加密怎么处理?
JMeter早期版本有加密功能,目前移除掉了,要加密我们得写代码实现了。Beanshell, groove

第四 Requests接口测试

50、为什么用requests做接口测试?
使用工具和写代码各自优劣。

如:我熟悉python语言,通过requests测试很灵活很方便。Jmeter能实现的python中我都能够实现。也可以借用很多现有的自动化相关工具实现自己响应的效果

51、如何保持登录状态
假设登录状态是通过cookie保持的:

1.手工做关联,获取到登录成功的cookie,保存到变量,后续请求时,带上cookie即可

2.requests的Session类自动进行cookie的处理。创建session对象,通过session.post(), session.get()发送连续多个请求。

52、如果返回json格式的数据怎么处理
通过response.json()方法,把json字符串转换为字典对象;

通过json模块的loads()方法,进行反序列化操作;

53、怎么判断响应是否正确
unittest框架,使用TestCase类的assertxx断言方法进行结果判断,把预期结果和实际结果进行比对即可。

pytest框架,使用常规的assert语句进行结果判断

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

iPhone官方商店软件下载---免费看各种剧第⑤弹【iOS版包括iPad】

①点击iPhone自带软件App Store ②点击搜索&#xff0c;输入“周末趣味活动” &#xff0c;点击下载到手机 ③进入软件页面后&#xff0c;我们需要激活页面&#xff0c;点击“feedback” &#xff0c;输入“周六日”&#xff0c;点击“summit” ④等软件闪退后&#xff0c;再点…

智能化清理C盘的方法 小白也可以轻松清理C盘了 不再担心误删文件

智能化清理C盘的方法 小白用户也可以轻松清理C盘了 不再担心误删文件。对于电脑小白来说&#xff0c;C盘清理是一个大大的问题&#xff0c;因为大家都不知道C盘里有哪些文件可以删除&#xff0c;哪些不能删除&#xff0c;所以就直接的导致大家不可能去清理c盘垃圾。 就算是C盘…

一次sql请求,返回分页数据和总条数

日常搬砖&#xff0c;总少不了需要获取分页数据和总行数。 一直以来的实践是编码两次sql请求&#xff0c;分别拉分页数据和totalCount。 最近我在思考&#xff1a; 常规实践为什么不是 在一次sql请求中中执行多次sql查询或多次更新&#xff0c;显而易见的优势&#xff1a; ① 能…

opencv 控制鼠标键盘实现功能setMouseCallback

鼠标事件类型 OpenCV 支持多种鼠标事件类型&#xff0c;常见的包括&#xff1a; cv2.EVENT_LBUTTONDOWN&#xff1a;左键按下 cv2.EVENT_RBUTTONDOWN&#xff1a;右键按下 cv2.EVENT_MBUTTONDOWN&#xff1a;中键按下 cv2.EVENT_LBUTTONUP&#xff1a;左键释放 cv2.EVENT_RBUTT…

Vue3从零开始——带你轻松掌握组件的基本操作

文章目录 1. Vue 组件的基础概念1.1 什么是组件&#xff1f;1.2 组件的作用1.3 组件的分类&#xff08;全局组件 vs 局部组件&#xff09; 2. 创建和注册组件2.1 单文件组件&#xff08;SFC&#xff09;2.2 全局组件注册2.3 局部组件注册 3. 组件命名格式4. ref获取DOM元素4.1 …

CSC7225、CSC7224 双绕组24瓦芯片

CSC7225、CSC7224为高性能电流模式 PWM 开关电源控制器&#xff0c;满足绿色环保标准&#xff1b;CSC7225、CSC7224广泛适用于经济型开关电源&#xff0c;如 DVD、机顶盒、传真机、打印机、LCD 显示器等。CSC7225、CSC7224采用 DIP-8 封装。应用原理如下图&#xff1a; CSC7225…

目前最流行的前端构建工具,你知道几个?

现在的市面上有很多不同的前端构建工具&#xff0c;我们很难对它们一一进行关注。在本文中&#xff0c;我们将重点介绍最受欢迎的几种&#xff0c;并探讨开发人员喜欢或不喜欢它们的原因。 Webpack Webpack 是一个模块打包器&#xff0c;主要用于处理 Web 应用程序的资源的优化…

Kali 2024 逆向调试 GDB 13.2 安装插件 Peda 不兼容报错解决方案

发现问题 如果你尝试直接进行$ apt install gdb安装后应该是最新版的gdb 13.2。并且尝试安装peda后将会出现from six.moves import range报错 2024版的kali的python3是python3.11版本&#xff0c;而peda中的six库支持的是3.11之前的。而gdb13是支持python3.12的。 有趣的一点…

EDAS(企业级应用服务)

1 :介绍 1&#xff1a;edas 提供了应用&#xff0c;开发&#xff0c;部署&#xff0c;监控&#xff0c;运维。同时支持 spring cloud, dubbo ,HSF 2:Ali-Tomcat 基于tomcat改造的Servlet容器。支持原有功能&#xff0c;它在启动时会自动加载Pandora&#xff08;潘多拉&#x…

Java面试八股之简述消息队列P2P模型

简述消息队列P2P模型 P2P模型组件 生产者(Producer)&#xff1a;生产者是创建并发送消息的实体。它可以是一个应用程序、服务或任何产生数据的系统组件。 队列(Queue)&#xff1a;队列是存储消息的数据结构。在P2P模型中&#xff0c;队列扮演着中间存储的角色&#xff0c;负…

[二次元]个人主页搭建

文章目录 域名买一个免费的 框架HexoHexo-Theme-ParticleX Halo 参考 域名 买一个 有钱人玩这个 免费的 github.io 教程在github官方文档有&#xff1b; 框架 Hexo 静态的 Hexo-Theme-ParticleX Argvchsの小窝 Halo 动态的 halo 参考 基于Hexo框架的GitHub个人主页…

推荐一个优秀的 .NET MAUI 组件库

目录 前言 组件介绍 组件展示 布局 按钮 复选框 进度条 导航栏 组件地址 最后 前言 .NET MAUI 的发布&#xff0c;项目中可以使用这个新的跨平台 UI 框架来轻松搭建的移动和桌面应用。 为了帮助大家更快地构建美观且功能丰富的应用&#xff0c;本文将推荐一款优秀…

C语言典型例题39

《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 例题3.7 求axbxc0方程的解。要求能处理任何情况下a、b、c的组合。 数学知识&#xff1a; ①当a0时&#xff0c;为一次方程bxc0&#xff1b;x-c/b&#xff1b; ②当a≠0时&#xff0c;为二次函数axbxc0。b-4c≥0时…

LeetCode 热题100-22

相交链表 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个链式结构中不存在环。 注意&#xff0c;函数返…

电池常用,但电芯热电耦合难?科学仿真技术轻松解决

SimLab 电池热电耦合模型 SimLab 的Battery模块&#xff0c;用于模拟电荷守恒与电池模块中的能量方程耦合。在这种方法中&#xff0c;电芯被建模为一个均匀的介质&#xff0c;可以模拟电压-电流的响应和相关热量的产生。该解决方案具有单电位&#xff08;single potential &…

创客匠人对话(上):北京惢众教育创办人揭秘如何引爆大事件发售

老蒋创客圈第63期对话标杆直播连麦&#xff0c;本期我们邀请到【惢众身心成长家园平台】王辉老师。为我们“揭秘心理疗愈赛道&#xff0c;首发GMV突破百万的方法论&#xff01;”&#xff0c;深度分享自己通过原有客源造流量&#xff0c;引爆大事件发售的核心秘籍&#xff0c;拆…

统计绘图:基于networkD3包绘制交互式桑基图

本文介绍通过R包 networkD3 绘制交互式桑基图。 桑基图&#xff08;Sankey Diagram&#xff09;&#xff0c;由节点&#xff08;Node&#xff09;和边&#xff08;分支&#xff0c;Edge&#xff09;组成&#xff0c;常用于展示数据的流动和分布情况&#xff1b;其中边的宽度与…

TypeScript 之 JavaScript文件类型检查

启用对 JavaScript 文件的类型检查 在 TypeScript 编译选项 compilerOptions 全部配置项 中&#xff0c;可以通过以下2个属性配置 JavaScript Support&#xff1a; allowJs 是否允许编译 JavaScript 文件。默认值是 false。在默认情况下&#xff0c;TypeScript 编译器只处理 .…

从0开始搭建vue + flask 旅游景点数据分析系统(十二)【完结篇】:用户管理之增删改查、用户信息更新

这一期继续完成用户管理的增删改查和登录用户修改自己信息的功能&#xff0c;首先完成后端接口的功能。 1 后端接口 这边有查询列表接口、查询单个接口、新增接口、修改接口、删除接口这5个接口&#xff1a; #** 用户信息的增删改查 *** # 用户列表 main.route(/users, meth…

离线安装prometheus与Grafana实现可视化监控

简介 prometheus 是一个专为云环境设计的开源系统监控和警报工具&#xff0c;它收集并存储多维度的时间序列数据&#xff0c;通过PromQL查询语言提供强大的数据检索能力&#xff0c;并支持可视化及警报功能。而 Grafana 则是一个开源的数据可视化平台&#xff0c;能够与包括Pr…