• 1
  • 1
分享

经典接口面试题与答案整理首先,非常感谢咱们松勤软件测试学员的面试题分享,最近小明老师把问题的答案整理了一下,分享出来给大家,希望能够帮助大家在面试过程中少踩坑,提高面试通过率。本文持续更新,后期有新的问题会同步分享给大家。有需要其他方面的知识资料的,可以私信我。大家如果对以下问题有什么更好的解答思路,也欢迎讨论区留言

1、什么是HTTP协议无状态协议?怎么解决HTTP协议无状态协议

是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。即我们给服务器发送 HTTP 请求之后,服务器根据请求,会给我们发送数据过来,但是,发送完,不会记录任何信息。

解决方案:通过cookie和session来保持状态。

2、HTTP协议学了哪几个版本

http协议目前有4个版本(0.9,1.0,1.1,2.0),其中1.0、1.1版本在互联网上被广泛使用,2.0版本目前应用很少,是下一代的http协议。

3、Session和Cookies区别

cookie数据存放在客户的浏览器上,session数据放在服务器上。

cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗

考虑到安全应当使用session。

session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能

考虑到减轻服务器性能方面,应当使用COOKIE。

单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

4、HTTPS在哪一层, 会话层在第几层

https工作在应用层.

会话层为7层协议的第五层,为表示层提供建立、维护和结束会话连接的功能,并提供会话管理服务。

5、你熟悉OSI协议吗?原理是什么

OSI是一个开放性的通信系统互连参考模型,它是一个定义得非常好的协议规范。OSI模型有7层结构,每层都可以有几个子层。OSI的7层从上到下分别是 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层 ;其中高层(即7、6、5、4层)定义了应用程序的功能,下面3层(即3、2、1层)主要面向通过网络的端到端,点到点的数据流。

6、从HTTP变化到HTTPS协议,测试点

注意一些配置是否同步修改

有些url是否是写死在代码的,需要同步修改

有些通过类cms配置的页面,需要更新检查是否更新域名

如果有存在和第三方接口联调的,需要检查是否彼此都更新了。

相关联业务系统之间互相调用是否存在问题,比如http调用https的情况。

7、购物车模块, 加入购物车接口测试点分析

接口入参校验:是否必填,临界值,默认值,枚举值,参数组合

业务逻辑校验:新增商品进购物车,当购物车达到最大值是否可以添加,重复添加单一商品验证最大添加次数,没有库存的商品是否可以添加到购物车,一次添加超过库存量的商品。

安全性:是否校验登录状态

异常:接口的异常返回结果是否有专有提示,如网络异常,接口超时,系统异常

性能:多用户并发操作购物车,同一商品被多用户同时操作到购物车

8、http://…?orderId=,**, 接口设计用例

接口入参长度是否满足get接口url的长度

不同的orderid是返回不同的订单信息

orderid不存在的情况,接口返回

orderid过长过短的情况,接口返回

删除一些非必填项入参,调用接口,返回什么

删除一些必填项入参,调用接口,返回什么

不同的入参组合,正常的组合异常的组合,返回什么

9、一个订单的几种状态如何全部测到,如:未处理,处理中,处理失败,处理成功

未处理和处理成功都好测试,正常流程就可以覆盖

处理中可以通过制造网络延迟来观测处理中的状态,或者用fiddler来打断点

处理失败可以通过网络超时来呈现处理失败的状态,或者抓包修改接口返回值为处理失败的状态。

10、你平常做接口测试的过程中发现过哪些Bug

权限未处理,导致一般用户可以通过接口获取管理员权限

可以输入一些前端限制过的值,比如提取积分接口,通过修改积分为负数,这个在前端无法测试,因为前端会限制你的输入值不能为负,而接口没做相关限制,导致你的积分越提取越多。

11、平常你是怎么测试接口的

根据接口文档设计接口测试用例,使用postman工具实现测试用例,根据不同的用例设置不同的断言,并且保存在集合中。可以通过执行集合的方式重复批量执行接口测试用例。

把接口的url设置为环境变量,当需要切换不同的环境的时候,只需要使用postman的切换环境功能就可以自由切换,在不同环境下测试接口。

设计接口与接口之间有关联的测试用例,通过postman在断言中设置环境变量的方式,保存上游接口的返回值,下游接口调用这个变量,完成接口与接口的关联场景的测试

12、平常用什么工具测接口的

postman SoapUI jmeter

13、不可逆的操作,如何处理,比如删除一个订单这种接口如何测试

关注接口的返回值是否正常

关注数据库中的订单表的数据是否被删除

关注是否有删除记录表存放相关删除的记录,方便日后可以追溯

14、测试的数据你放在哪

本地文件的形式存放

15、response怎么验证, 参数特别多

postman使用断言的方式进行判断

16、做接口测试如何分析是前端还是后端的问题

抓包,查看接口的返回值,根据返回值和前端页面的展示作比较,判断是前端对这个值的处理有问题

还是后端返回的值是错误的。

17、在测试接口中怎么知道请求成功还是失败

根据接口文档查看具体入参应该返回什么值,和接口实际上返回的值做对比。

18、请详细阐述接口测试和UI测试在测试活动中是如何协同测试的?

有些ui测试无法实现的场景可以用接口进行辅助测试,比如前端ui会对某些输入框作出限制,

导致某些负值,超出最大长度限制的值无法测试,而通过接口就可以发送这样的值。

ui有时候还会对某一个功能重复点击作出限制,如果想测试用户在网络系统异常的情况下连续点击了2次这个按钮,那么通过前端点击可能测试不了,就要通过接口连续并发的方式测试

19、很多接口都需要登录怎么处理?

如果是postman工具的话,把登录的cookie值存储在环境变量中,需要登录状态的接口直接引用该环境变量去实现。

20、依赖于登录的接口如何处理 -token 和 session的管理

答案同19题

21、在手工接口测试或自动化接口测试的过程中,上下游接口有数据依赖如何处理?

postman工具,使用断言工具中的设定环境变量。对上游接口的返回值中的依赖数据进行变量化,然后在下游接口的入参中引用该变量,完成依赖。

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

答案同19题

23、下个接口请求参数依赖上个接口的返回数据

答案同21题

24、Web Service接口是如何测试的

开发人员要到接口的wsdl地址和接口设计说明书。

在soapui中新建工程,导入wsdl地址。

选择自己要测试的接口的方法,选择request。

根据接口设计说明书选择要测试方法的xml请求,并粘贴到soapui的请求栏,然后用自己的测试数据替换原有的xml请求中的参数。

点击运行,查看返回的xml响应,并参照接口设计说明书及自己的输入参数,确定接口返回的xml响应是否是预期结果,以判断接口是否是通的

25、TCP报头格式

(1)16位端口号:告诉主机该报文段是来自哪里,以及传给哪个上层协议或者应用程序(目的端口)的。

(2)32位序号:给发送的数据编号。(随机值+偏移量(偏移量决定序号的大小));32位序号能够指定数据传送过去的序号。

作用:A、保证发送的数据有序;B、保证重复的数据报被丢弃。

(3)32位确认号:对A端发送的数据进行确认并回馈的序号。(在32位序中的序号值加1返回回去)。

作用:保证数据能够有效地到达对端。

(4)4位头部长度:因为4位最大能表示15,所以最大为60个字节。

(5)6位标志位:

PSH:通知尽快读取数据;

RST:请求重新建立连接;

SYN:请求建立连接;

FIN:请求断开连接;

ACK:表示确认号是否有效;

URG:表示禁忌之阵是否有效。

(6)16位窗口大小:控制发送数据的速度或流量。

(7)16位校验和:由发送端填充,接收端对TCP报文段在传输过程中是否损坏。检验不仅包括头部部分,还包括数据部分。

(8)16位紧急指针:一个正的偏移量(相当于当前序号的偏移)。紧急指针是发送端向接收端发送紧急数据的方法。

TCP的特点的可靠性就体现在:32位序号,32位确认号16位校验和。面向连接体现在:URG、RST、SYN、FIN、ACK、PSH等六位标志。

26、 WEB服务器用该头部的内容告诉 Cache 服务器,在什么条件下才能用本响应所返回的对象响应后续的请求。

假如源WEB服务器在接到第一个请求消息时,其响应消息的头部为:Content- Encoding: gzip; Vary: Content-Encoding那么 Cache 服务器会分析后续请求消息的头部;

检查其 Accept-Encoding,是否跟先前响应的 Vary 头部值一致,即是否使用相同的内容编码方法,这样就可以防止 Cache 服务器用自己 Cache 里面压缩后的实体响应给不具备解压能力的浏览器。例如:Vary:Accept-Encoding

27、列出从客户端到 OCS 或者相反方向的响应经过了哪些代理服务器,他们用什么协议(和版本)发送的请求

当客户端请求到达第一个代理服务器时,该服务器会在自己发出的请求里面添 加 Via 头部,并填上自己的相关信息,当下一个代理服务器收到第一个代理服务器的请求时,会在自己发出的请求里面复制前一个代理服务器的请求的Via 头部,并把自己的相关信息加到后面,以此类推;

当 OCS 收到最后一个代理服务器的请求时,检查 Via 头部,就知道该请求所经过的路由。例如:Via:1.0 236.D0707195.sina.com.cn:80 (squid/2.6.STABLE13)

28、OSI协议、TCP/IP协议以及每层对应的协议

osi 七层协议:

应用层:针对特定应用的协议,为应用程序提供服务并规定应用程序中通信相关的细节。包括文件传输、电子邮件、远程登录等协议。

表示层:将来自下一层的数据转换为上层能够处理的格式。负责数据转换、格式化、文本压缩等。

会话层:负责建立和断开通信连接(数据流动的逻辑通路),以及数据的分割等数据传输相关的管理。

传输层:管理两个节点之间的数据传输。

网络层:地址管理和路由选择。

数据链路层:互联设备之间传送和识别帧。

物理层:以二进制形式在在物理媒体上传输数据。

TCP/IP:

数据链路层:ARP,RARP

网络层:IP,ICMP,IGMP

传输层:TCP ,UDP,UGP

应用层:Telnet,FTP,SMTP,SNMP.

29、Session机制、Cookie机制

具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。

同时我们也看到,由于在服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的,但实际上还有其他选择。

30、http和https区别,https在请求时额外的过程,https是如何保证数据安全的数据加密传输,是HTTP和HTTPS之间的本质性区别。

传统的HTTP协议通信:传统的HTTP报文是直接将报文信息传输到TCP然后TCP再通过TCP套接字发送给目的主机上。

HTTPS协议通信:HTTPS是HTTP报文直接将报文信息传输给SSL套接字进行加密,SSL加密后将加密后的报文发送给TCP套接字,然后TCP套接字再将加密后的报文发送给目的主机,目的主机将通过TCP套接字获取加密后的报文给SSL套接字,SSL解密后交给对应进程。

31、POST和GET区别

GET后退按钮/刷新无害,POST数据会被重新提交(浏览器应该告知用户数据会被重新提交)。

GET书签可收藏,POST为书签不可收藏。

GET能被缓存,POST不能缓存 。

GET编码类型application/x-www-form-url,POST编码类型encodedapplication/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。

GET历史参数保留在浏览器历史中。POST参数不会保存在浏览器历史中。

GET对数据长度有限制,当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。POST无限制。

GET只允许 ASCII 字符。POST没有限制。也允许二进制数据。

与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。在发送密码或其他敏感信息时绝不要使用 GET !POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。

GET的数据在 URL 中对所有人都是可见的。POST的数据不会显示在 URL 中。

32、DNS解析过程

①用户主机上运行着DNS的客户端,就是我们的PC机或者手机客户端运行着DNS客户端了

②浏览器将接收到的url中抽取出域名字段,就是访问的主机名,比如www.baidu.com并将这个主机名传送给DNS应用的客户端

③DNS客户机端向DNS服务器端发送一份查询报文,报文中包含着要访问的主机名字段(中间包括一些列缓存查询以及分布式DNS集群的工作)

④该DNS客户机最终会收到一份回答报文,其中包含有该主机名对应的IP地址

⑤一旦该浏览器收到来自DNS的IP地址,就可以向该IP地址定位的HTTP服务器发起TCP连接

33、你怎么理解http协议

http协议是超文本传输协议的简写,用用于从万维网服务器传输超文本到本地浏览器的传送协议。

HTTP是一个基于TCP/IP通信协议来传递数据。

他有以下几个特点

  1. 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

  2. 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

  3. 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

  4. 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

  5. 支持B/S及C/S模式。

34、说说http协议的工作流程

  1. 地址解析HTTP协议通过标准URL来请求指定的服务器中指定服务;

  2. 封装HTTP 请求,这一步把上面写的 URL 以及本机的一些信息封装成一个 HTTP 请求数据包;

  3. 封装 TCP 包, 建立 TCP 连接 , 也就是常说的"三次握手" . 由于HTTP位于最上层的应用层 , 所以HTTP在工作之前要由 TCP 和 IP 协议建立网络连接 , 这就是TCP/IP协议族 , 因此互联网又称为 TCP/IP 网络;

  4. 第四步就是在连接建立之后 , 客户端发送 HTTP 请求到服务端与请求相关的信息都会包含在请求头和请求体中发送给服务器端;

  5. 服务器端在收到请求之后 , 根据客户端的请求发送给客户端相应的信息 , 相关的响应信息都会放在响应头和响应体中;

  6. 服务器端在发送完响应之后 , 就会关闭连接 , 如果过客户端的请求的头部信息中有 Connection-alive , 那么客户端在响应完这个请求之后不会关闭连接 , 知道客户端的所有请求都响应完毕 , 才会关闭连接 , 这样大大节省了带宽和 IO 资源。

35、你怎么理解cookie和session,有哪些不同点

参考31题

36、什么是https,说说https的工作原理

HTTPS还是度一种安全协议,在访问HTTPS网站数据会加密传输。

问是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认答证保证了传输过程的安全性 。

HTTPS 在HTTP 的基础下加入SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)

第一步:浏览器访问HTTPS网站,要求与Web服务器建立SSL连接。

第二步:Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。

第三步:客户浏览器验证服务器送过来的证书,是否是由自己信赖的 CA 中心所签发的。如果是,就继续执行协议;如果不是,客户浏览器就给客户一个警告消息:警告客户这个证书不是可以信赖的,询问客户是否需要继续。接着客户浏览器比较证书里的消息,例如域名和公钥,与服务器刚刚发送的相关消息是否一致,如果是一致的,客户浏览器认可这个服务器的合法身份。

第四步:客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。

第五步:Web服务器利用自己的私钥解密出会话密钥。

第六步:Web服务器利用会话密钥加密与客户端之间的通信。

37、什么是http代理服务器,有什么用

我们使用网络浏览器直接链接其他Internet站点并取得网络信息时,需送出Request信号来得到回答,然后对方再把信息传送回来。

代理服务器是介于浏览器和Web服务器之间的一台服务器,有了它之后,浏览器不是直接到Web服务器去取回网页而是向代理服务器发出请求,Request信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你。


作者:晓明童鞋

原文链接:https://blog.csdn.net/songqinxiaoming/article/details/106230498

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 1.渲染引擎(所谓的内核)(1)Chrome--开源的Webkit,听说自主从Webkit中衍生了Blink(2)Safari--开源的Webkit(3)Firefox--Gecko,Mozilla自家的渲染引擎(4)IE--Trident内核(5)360极速版--Webkit+Trident(6)Opera--自家的Presto内核,然后这位兄弟也跟着Chrome用Blink(7)其他国内的基本都是Trident内核2.浏览器兼容性测试2.1为什么要做浏览器兼容性测试第一点也说了浏览器渲染引擎有区别,就算是同一渲染引擎,在做个性化修改后显示也会有差别,用过国内浏览器的你最明白的啦。而前端页面...
            0 0 1362
            分享
          • 在以往的面试记录里,我又看到了一个多次被问到的知识点,那就是 cookie、session、token 的区别有哪些?如果现在来问你,不知道你能否说清楚呢?今天不仅仅是整理出这三者的区别,更重要的是能够真正去理解这三者之间的作用和联系。cookie、session、token三者联系在互联网里,一样事物的诞生往往是为了解决某种问题,这句话同样适用于此。其实说到底,cookie、session、token 都围绕了一个点:身份认证。为什么要认证很简单,比如电商购物网站需要登录。在输入账号密码点击登录之后,对服务器就产生了一次会话 session,就像你我之...
            0 1 553
            分享
          •   摘要:随着金融行业信息化程度的不断提高,银行业务系统面临着前所未有的复杂性和安全性挑战。为了确保系统稳定运行,银行必须在软件开发生命周期中实施严格的测试流程。本文将探讨如何基于Jacoco框架进行二次开发,从而实现银行交易的精准测试工作。通过这种方式,不仅可以提高测试可信度和测试充分性、还能协助定位缺陷、识别冗余代码,进而保证金融服务的质量与安全。  一、背景介绍  在银行业务核心系统中,程序类型分为两类,联机交易和批量交易。联机交易一般都是供其他系统或者柜面前台调用的接口,批量交易则往往是日间或者日终银行跑批用的,用来集中处理账务加工、计提结息、账务核对、监管报送等内容。银行系统对于测试...
            0 0 257
            分享
          • 1、软件测试的目的是发现软件中存在的错误,提高软件质量,降低软件项目的风险。2、软件测试只能证明软件存在错误,而不能证明软件没有错误。测试的目的只是把软件的错误控制在一个可以进行产品交付/发布的程度上,可以交付/发布产品并不是没有错误的产品。3、软件测试不可能无休止的进行下去。随着测试时间的延伸,发现错误的成本会越来越大,这就需要测试有度,而这个度并不能由项目计划实际判断,而是要根据测试发现错误的概率来判断。4、第三方测试指独立于软件公司自身测试的测试,所谓第三方是指在软件公司和软件用户之间的一方,是一个中介的服务机构,第三方测试除了发现软件问题之外,还要对软件进行科学、公正的评价的职能。5、...
            12 14 5366
            分享
          •   单元测试(Unit Testing)又称为模块测试, 是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。 程序单元是应用的最小可测试部件。简单来说,就是测试数据的稳定性是否达到程序的预期。谈到测试,我们为什么要对程序进行测试呢?测试会为程序带来什么好处呢?  我们日常开发时可能在不经意间写错,如果等到最后阶段去检验项目成果时,发现有错误,这时候我们很难找到Bug的源头在哪里。我们都知道,有可能一处出错会导致步步错的情况。  测试就在我们的上述说法中,显得尤为重要,当我们做完项目的一个小模块,先去测试一下这个小模块是否正确或达到预期,如果错误或者没有达到预期就需要反复修改,直到...
            2 3 2503
            分享
      • 51testing软件测试圈微信