栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

基本理论知识

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.简单快速 向服务器请求服务时 只传送请求方法和路径 因而通信速度很快;

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

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

无连接 在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语句进行结果判断

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/267224.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号