软件测试工程师面试汇总接口测试篇

本文详细介绍了HTTP请求的各种方法(GET、POST、HEAD、PUT、DELETE、PATCH、OPTIONS、CONNECT、TRACE)以及它们的特点。重点探讨接口测试中的逻辑测试、异常测试和路径测试,并比较了HTTP和HTTPS的差异。此外,还涵盖了HTTP状态码、常见的接口类型、HTTPHeader的作用和API测试相关协议,以及API文档模板如Swagger的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1.常见的 HTTP 请求方式有哪些?
GET:发送一个请求来获取服务器上的某一资源,多用于查询数据(如列表查询);
POST:将数据添加到服务器中的现有文件或资源(如提交表单或者上传文件), POST 请求可能会导致新
的资源的建立或已有资源的修改;
HEAD:响应与 GET 请求相同,但没有响应正文;
PUT:替换服务器中的现有文件或资源,多用于向指定资源位置上传最新内容(如修改评价或笔记);
DELETE:从服务器中删除数据(如取消收藏或删除评价);
PATCH:是对 PUT 方法的补充,用于对资源进行局部更新;
OPTIONS:用于描述目标资源的通信选项;
CONNECT:HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器;
TRACE:回显服务器收到的请求,主要用于测试或诊断;
如何设计接口测试用例
接口测试出发点是被测接口逻辑存在错误,参考这个为出发点,更容易发现问题。
设计接口测试用例,我们可简单的考虑两个基本要素,即:入参、出参,正确/错误的入参,逻辑判断后,
接口是否做出正确的处理,返回正确的出参。
接口测试用例有 3 类(逻辑测试,异常测试,路径测试):
1)逻辑测试:主要是根据开发提供的接口文档来设计测试用例,接口文档包含的要素(前提条件,输
入参数,参数类型,业务逻辑,返回输出描述等),此类主要测试在正常输入的情况下,是否能得出正确
的输出结果。主要使用的用例设计方法是等价类划分,边界值等。
2)异常测试:接口逻辑的测试中主要测试接口正常逻辑,即对外提供的接口服务是基本可用的,但仅
逻辑测试不能保证数据的安全及程序接口在异常情况下的逻辑处理的正确性。
(a) 空值,null;
(b) 参数属性(如:未赋值的参数):
(c) 异常业务参数(如:构造不满足业务异常业务参数):
(d) 参数个数、参数类型错误(如:接口文档中定义必填参数 2 个 int,输入参数仅 1 个,类型非 int);
3)路径测试:当被测接口的实现方法中,判断逻辑复杂分支多,且判断中又调用了其他的接口,此时
必须要进行路径覆盖测试。
接口规范文档接口文档至少包括: 1、接口说明 2、调用 url 3、请求方法(get\post) 4、请求
参数、参数类型、请求参数说明 5、返回参数说明
2.GET 请求与 POST 请求的区别?
1.提交数据的形式:
• GET 方法一般是指获取服务器上的数据,通过地址栏传输,请求参数( query string 查询字符串)直接跟
着 URL 后,以?分割 URL 和传输数据,参数之间以&相连(?name=coco&pwd=123)的形式,直接可以放
到浏览器地址栏里,如登录就是采用 GET 方法(name=coco&password=123&verify=%E4%BD%A0%E5
%A5%BD)。如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直
接把字符串用 BASE64 加密,得出如:%E4 %BD%A0%E5%A5%BD,其中%XX 中的 XX 为该符号以 16
进制表示的 ASCII。
• POST 方法是指客户端给服务器上提交表单数据,通过报文传输,会把数据放到请求数据字段中以 &分隔
各个字段,请求行不包含数据参数,地址栏也不会额外附带参数,所以 POST 是通过表单提交的,请求参
数放在 body 中,如网页上的新用户的注册、调查问卷和答题就是采用 POST 方法。
2.提交数据的大小/长度:
• GET 是直接在浏览器地址栏输入,直接影响到了 URL 的长度,但 HTTP 协议规范中其实是没有对 URL

限制长度的,限制 URL 长度的是客户端或服务器的支持的不同所影响:比如 IE 对 URL 长度的限制是
2083 字节(2K+35)。对于其他浏览器,如 Netscape、FireFox 等,理论上没有长度限制,其限制取决于操作系
统的支持。由于浏览器有限制,一般整个 URL 的长度可以很长,但是不能超过 2049KB 的大小限制,而
POST 没有大小限制。
• POST 方式 HTTP 协议规范中也没有限定,起限制作用的是服务器的处理程序的处理能力。所以大小的限
制还是得受各个 web 服务器配置的不同而影响。
3.提交数据的安全性:
• 由于 GET 的参数是在浏览器地址栏 URL 直接拼接,用户名和密码将明文出现在 URL 上,暴露在互联网
中,安全性差,不能用来传递敏感信息。
• POST 请求参数放在 Body 里,是通过表单数据提交,POST 比 GET 方式的安全性要高;
4.编码方式:
• GET 的参数只能支持 ASCII;
• POST 没有限制,也允许二进制数据;
5.请求方式:
• GET 是获取指定的资源 ;
• POST 是向指定的资源提交要被处理的数据 ;
6.请求体:
• GET 没有请求体;
• POST 有请求体;
7.效率方面:
• GET 产生一个 TCP 数据包;
• POST 产生两个 TCP 数据包,POST 需要两步,时间上消耗要多一点,GET 比 POST 更有效;
8.请求过程:
• 对于 GET 方式的请求,浏览器会把 http header 和 data 一并发送出去,服务器响应 200(返回数据)
• POST 方式的请求,浏览器先发送 header,服务器响应 100 continue,浏览器再发送 data,服务器响应 200
ok;
3.HTTP 请求特点?
1.基于请求/响应,支持客户端/服务器模式:客户端发送请求,服务器端响应数据。客户端向服务器请求服
务时,只需要传送请求的方法和路径即可。常用的请求方法有 GET(查)、POST(增),除此之外还有
PUT(改)、DELETE(删)等,每种方法规定的客户端与服务器联系的方式不同,日常工作中见到的最
多的是 GET 和 POST 两种。
2.基于 TCP/IP 协议之上的应用层协议,简单灵活: HTTP 简单,服务器的程序规模小,通信速度快;
HTTP 使用 TCP 作为它的支撑运输协议,HTTP 客户机发起一个与服务器的 TCP 连接,一旦连接建立,浏
览器(客户机)和服务器进程就可以通过套接字接口访问 TCP,HTTP 运行传输任意类型的数据对象。
3.无状态:协议对于事务处理没有记忆能力,客户端第一次与服务器建立连接发送请求时需要进行一系列
的安全认证匹配等,因此增加页面等待时间,当客户端向服务器端发送请求,服务器端响应完毕后,两者
断开连接,也不保存连接状态(一刀两断,恩断义绝,从此路人),下一次客户端向同样的服务器发送请
求时,由于他们之前已经遗忘了彼此,所以需要重新建立连接。
4.无连接 :限制每次连接,使其只处理一个请求。服务器处理完客户端的请求并收到客户端的应答后,即
断开连接,这种方式可以节省传输时间。
4.Cookie 和 Session 的区别?
1.存储位置不同:Cookie 是将用户数据通过加密的方式保存在客户端,大多数情况 Cookie 存储在浏览器;
Session 是用于控制客户端和服务端的连接,Session 存储在服务器;
2.存储容量不同:单个 Cookie 保存的数据不得超过 4kb,一个站点最多 20 个 Cookie,Session 一般情况下

没有上限,不过建议不要存放太多东西,否则影响性能;
3.存取方式不同:Cookie 只能用 ASCII 字符串,通过编码方式获取 Unicode 字符或者二进制数据,不好存
储复杂的信息,而 Session 能存储任何类型的数据;
4.隐私策略/安全性不同:Cookie 放在客户端,可以进行 Cookie 欺骗,所以不安全,Session 放在服务端,
更加安全;
5. 有 效期 不同 : Cookie 可 以 设置 属性 达 到 长期 有效 , Session 依赖 于 JSESSIONID 的 Cookie , Cookie
JSESSIONID 的过期时间默认为-1,只需要关闭窗口 Session 就会失效,就算不依赖 Cookie,用 UrL 重写
也不能完成,如果 Session 超时时间过长,容易导致内存溢出;
6.服务器压力不同:Cookie 保存在本地,不存在服务端压力,Session 保存在服务端,每个用户产生一个
Session,当访问增多,会比较占用服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用
Cookie;
7.浏览器支持不同:如果浏览器禁用 Cookie,那么 Cookie 直接失效,Session 比较好点,可以用 URL 重写;
8.Cookie 和 Session 应用的场景:Cookie 一般用于记住用户的登录状态,如记录用户的习惯,购物车;而
Session 用于登录验证。
5.HTTP 和 HTTPS 的区别?
HTTP 协议传输的数据是未加密的,也就是明文的,因此使用 HTTP 协议传输隐私信息非常不安全,为了
保证这些隐私数据能加密传输,SSL(SecureSocketsLayer)协议用于对 HTTP 协议传输的数据进行加密,
从而就诞生了 HTTPS。简单来说,HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网
络协议,要比 http 协议安全。
HTTPS 和 HTTP 的区别主要如下:
* HTTPS 协议需要到 ca 申请证书,一般免费证书较少,因而需要一定费用。
* HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 ssl 加密传输协议。
* HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。
* HTTP 的连接很简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证
的网络协议,比 HTTP 协议安全。
6.你所知道的 HTTP 状态码?
• 1xx :指示信息/参考信息(Info)——表示服务器收到请求,需要请求者继续执行操作;
• 2xx :成功(Successful)——表示请求已被成功接收、理解、接受;
• 3xx :重定向(Redirection)——要完成请求必须进行更进一步的操作;
• 4xx:客户端错误(Client Error)——表示请求可能有语法错误或请求无法实现,妨碍了服务器的处理;
• 5xx :服务器端错误(Server Error)——表示服务器在处理请求的过程中发生了内部错误,未能实现合法的
请求;
常见状态码:
• 200:成功(OK ——) 服务器已成功处理了请求;
• 301:永久移动(Moved Permanently ——) 请求永久重定向,请求的页面已永久移动到新位置;
• 302:临时移动(Found ——) 请求临时重定向, 服务器目前从不同位置的网页响应请求,资源只是临
时被移动,但请求者应继续使用原有 URL 来进行以后的请求;
• 304 :未修改(Not Modified ——) 文件未修改,可以直接使用缓存的文件;
• 400 :错误请求(Bad Request ——) 由于客户端请求有语法错误,不能被服务器所理解;
• 401 :未授权(Unauthorized ——) 请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起
使用;
• 403:禁止(Forbidden ——) 服务器收到请求,但是拒绝提供服务。服务器通常会在响应正文中给出不提
供服务的原因;
• 404:未找到(Not Found ——) 请求的资源不存在,例如,输入了错误的 URL;

• 500 :服务器内部错误( Internal Server Error ——) 服务器发生不可预期的错误,导致无法完成客户端
的请求;
• 503 : 服务不可用(Service Unavailable ——) 服务器当前不能够处理客户端的请求,在一段时间之后,
服务器可能会恢复正常;
7.你所知道的常见接口类型有哪些?
* HTTP 接口:基于超文本传输协议(HyperText Transfer Protocol HTTP)开发的接口,是应用最广泛的网
络协议之一,但并不排除没有使用其他协议。基于浏览器/服务器(Brower/Server)的软件系统大多数为
HTTP 接口;
* Web Service 接口:系统对外的接口,根据提供的方法引用提供的接口,从而获取数据;
* RESTful 接口:简称 REST,描述了一个架构式的网络系统;
8.常见的 HTTP Header 及其作用?
* Accept:用于告诉服务器,客户机支持的数据类型 (例如:Accept:text/html,image/、image/webp,/*);
* Accept-Encoding:用于告诉服务器,客户机支持的数据压缩格式;
* Accept-Language:客户机语言环境;
* Accept-Charset:用于告诉服务器,客户机采用的编码格式;
* Connection:告诉服务器,请求完成后,是否保持连接;
* Cookie:客户机通过这个头,将 Cookie 信息带给服务器;
* Host:客户机通过这个服务器,想访问的主机名;
* Referer:客户机通过这个头告诉服务器,它(客户端)是从哪个资源来访问服务器的(防盗链);
* If-Modified-Since:客户机通过这个头告诉服务器,资源的缓存时间;
* User-Agent:客户机通过这个头告诉服务器,客户机的软件环境(操作系统,浏览器型号和版本等);
* Date:告诉服务器,当前请求的时间;
9.列举 API 测试中使用的一些常用协议?
* Thrift
* HTTP
* REST
* SOAP
* JMS
* UDDI
* Dubbo
10.你所知道的较常用的 API 文档模板?
* Swagger
* FlatDoc
* RestDoc
* API blueprint
* Slate
* Miredot

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值