(收藏)22个常见接⼝测试⾯试题
1、按你的理解,软件接⼝是什么?
答:
就是指程序中具体负责在不同模块之间传输或接受数据的并做处理的类或者函数。
2、HTTP和HTTPS协议区别?
答:
https协议需要到CA(Certificate Authority,证书颁发机构)申请证书,⼀般免费证书较少,因⽽需要⼀定费⽤;
http是超⽂本传输协议,信息是明⽂传输,Https协议是由SSL+Http协议构建的可进⾏加密传输、⾝份认证的⽹络协议,⽐http协议安全;
http和https使⽤的是完全不同的连接⽅式,⽤的端⼝也不⼀样,前者是80,后者是443;
3、HTTPS在哪⼀层?
以前我⾯试很喜欢提⽹络协议的问题,有朋友说我装X,不实⽤。稍有点研究⽹络知识,实际就不难回答
答:HTTPS在应⽤层。
4、get和post区别是什么?
答:POST和GET都是向服务器提交数据,并且都会从服务器获取数据。
区别:
1)传送⽅式:get通过地址栏传输,post通过报⽂传输
2)传送长度:get参数有长度限制(受限于url长度),⽽post⽆限制
3)GET产⽣⼀个TCP数据包(对于GET⽅式的请求,浏览器会把http header和data⼀并发送出去,服务器响应200返回数据),POST产⽣两个TCP数据包(对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok返回数据)
4)get请求参数会被完整保留在浏览历史记录⾥,⽽post中的参数不会被保留
5)在做数据查询时,建议⽤GET⽅式;⽽在做数据添加、修改或删除时,建议⽤post⽅式
5、常见的POST提交数据⽅式
答:
主要有四种⽅式:application/x-www-form-urlencoded、multipart/form-data、
application/json、text/xml等。
6、什么是Http协议⽆状态协议?怎么解决HTTP协议⽆状态协议
答:
⽆状态是指协议对于事务处理没有记忆能⼒,服务器不知道客户端是什么状态。即我们给服务器发送 H
TTP 请求之后,服务器根据请求,会给我们发送数据过来,但是,发送完,不会记录任何信息。HTTP 是⼀个⽆状态协议,这意味着每个请求都是独⽴的,Keep-Alive 没能改变这个结果。缺少状态意味着如果后续处理需要前⾯的信息,则它必须重传,这样可能导致每次连接传送的数据量增⼤。另⼀⽅⾯,在服务器不需要先前信息时它的应答就较快。HTTP 协议这种特性有优点也有缺点,优点在于解放了服务器,每⼀次请求“点到为⽌”不会造成不必要连接占⽤,缺点在于每次请求会传输⼤量重复的内容信息。客户端与服务器进⾏动态交互的 Web 应⽤程序出现之后,HTTP ⽆状态的特性严重阻碍了这些应⽤程序的实现,毕竟交互是需要承前启后的,简单的购物车程序也要知道⽤户到底在之前选择了什么商品。于是,两种⽤于保持HTTP 连接状态的技术就应运⽽⽣了,⼀个是 Cookie,⽽另⼀个则是 Session。
7、cookie和session的区别?
答:
cookie数据存放在客户的浏览器上,session数据放在服务器上
cookie不是很安全,别⼈可以分析存放在本地的cookie并进⾏cookie欺骗,考虑到安全应当使⽤session
session会在⼀定时间内保存在服务器上。
当访问增多,会⽐较占⽤你服务器的性能,考虑到减轻服务器性能⽅⾯应当使⽤cookie
单个cookie保存的数据不能超过4K,很多浏览器都限制⼀个站点最多保存20个cookie
可以将登陆信息等重要信息存放为session;
其他信息需要保存,可以放在cookie
8、请求接⼝中常见的返回状态码
答:
1xx -- 信息提⽰(表⽰临时的响应。客户端在收到常规响应之前,准备接收⼀个或多个1xx响应)
2xx -- 成功(表明服务器成功地接受了客户端请求)
3xx -- 重定向(客户端浏览器必须采取更多操作来实现请求。例如,浏览器可能不得不请求服务器上的不同的页⾯,或通过代理服务器重复该请求)
4xx -- 客户端错误(发送错误,客户端有问题。例如,客户端请求不存在的页⾯,客户端未提供有效的⾝份证验证信息)
5xx -- 服务器错误(服务器由于遇到错误⽽不能完成该请求)
常见的返回码有:
200 OK - [GET]:
服务器成功返回⽤户请求的数据
201 CREATED - [POST/PUT/PATCH]:
⽤户新建或修改数据成功
202 Aceepted - [*]:
前端测试和后端测试的区别表⽰⼀个请求已经进⼊后台排队(异步任务)
204 NO CONTENT - [DELETE]:
⽤户删除数据成功
400 INVALID REQUEST - [POST/PUT/PATCH]:
⽤户发出的请求有错误,服务器没有进⾏新建或修改数据的操作
401 Unauthorized -[*] :
表⽰⽤户没有权限(令牌、⽤户名、密码错误)
403 Forbidden -[*] :
表⽰⽤户得到授权(与401错误相对),但是访问被禁⽌
404 NOT FOUND -[*]:
⽤户发出的请求针对得到是不存在的记录,服务器没有进⾏操作,该操作是幂等的
406 Not Acceptable - [GET]:
⽤户请求的格式不可得(⽐如⽤户请求JSON格式,但是只有XML格式)
500 INTERNAL SERVER ERROR - [*]:
服务器发⽣错误,⽤户将⽆法判断发出的请求是否成功
9、什么是DNS?
答:
DNS 是域名系统 (Domain Name System),DNS是⽤来做域名解析的,它会在你上⽹输⼊⽹址后,把它转换成IP,然后去访问对⽅服务器;没有它,你想上百度就要记住百度的IP,但有了DNS的处理,你只需要记住对应⽹站的域名,即⽹址就可以了。
(下⾯是关于实际测试中的问题,适当休息下再继续)
10、请问你们公司是如何做接⼝测试的?
答:
接⼝测试实际跟⼀般测试不同就是测试⽤例的设计部分。
①获取接⼝规范。
②设计接⼝测试功能⽤例(主要从⽤户⾓度出发看接⼝能否实现业务需求,⽤例设计就是⿊盒⽤例那⼀套)。
③各种⼊参验证(正常情况,异常情况包括输⼊参数个数不对,类型不对,可选/必选,还有考虑参数有互斥或关联的情况)。
④接⼝返回值各种验证(符合接⼝⽂档需求)
⑤了解接⼝实现逻辑,实现逻辑覆盖(语句/条件/分⽀/判定/…)
⑥接⼝能并发执⾏吗、安全吗,性能满⾜要求吗?
⑦采⽤⼯具或者⾃写代码来验证。
⑧发现问题跟功能测试⼀样,该报bug报bug,该跟踪状态的跟踪状态。
11、怎么设计接⼝测试⽤例?
通常,设计接⼝测试⽤例需要考虑以下⼏个⽅⾯:
①是否满⾜前提条件
有些接⼝需要满⾜前提,才可成功获取数据。常见的,需要登录Token
逆向⽤例:针对是否满⾜前置条件(假设为n个条件),设计0~n条⽤例
②是否携带默认值参数
正向⽤例:带默认值的参数都不填写、不传参,必填参数都填写正确且存在的“常规”值,其他不填写,设计1条⽤例
③业务规则、功能需求
这⾥根据时间情况,结合接⼝参数说明,可能需要设计N条正向⽤例和逆向⽤例
④参数是否必填
逆向⽤例:针对每个必填参数,都设计1条参数值为空的逆向⽤例
⑤参数之间是否存在关联
有些参数彼此之间存在相互制约的关系
⑥参数数据类型限制
逆向⽤例:针对每个参数都设计1条参数值类型不符的逆向⽤例
⑦参数数据类型⾃⾝的数据范围值限制
正向⽤例:针对所有参数,设计1条每个参数的参数值在数据范围内为最⼤值的正向⽤例
12、你做接⼝测试,测什么?
答:
①可⽤性测试
根据约定的协议、⽅法、格式内容,传输数据到接⼝经处理后返回期望的结果:
接⼝功能是否正确实现;
返回值测试 - 返回值除了内容要正确,类型也要正确,保证调⽤⽅能够正确地解析;
参数值边界值、等价类测试;
②错误和异常处理测试
输⼊异常值(空值、特殊字符、超过约定长度等),接⼝能正确处理,且按预期响应;
输⼊错误的参数,接⼝能正确处理,并按预期响应;
多输⼊、少输⼊参数,接⼝能正确处理,且按预期响应;
错误传输数据格式(如json格式写成form格式)测试;
③安全性测试,主要指传输数据的安全性:
敏感数据(如密码、秘钥)等是否加密传输;
返回数据是否含有敏感数据,如⽤户密码、完整的⽤户银⾏账号信息等;
接⼝是否对传⼊的数据做安全校验,如⾝份ID加token类似校验;
接⼝是否防⽌恶意请求(如⼤量伪造请求接⼝致使服务器崩溃);
④性能测试,如接⼝的响应时间、并发处理能⼒、压测处理情况:
并发请求相同的接⼝(特别为POST请求),接⼝的处理情况(如插⼊了相同的记录导致数据出错,引发系统故障);
接⼝响应时长在⽤户可忍受的范围内;
对于请求量⼤的接⼝做压测,确定最⼤的瓶颈点是否满⾜当前业务需要;
13、平常⽤什么⼯具测接⼝的?
答:常⽤http协议接⼝测试⼯具,如:postman、fiddler、jmeter;webService接⼝⽤SoapUI、答:
jmeter等。
14、没有接⼝⽂档,如果做接⼝测试?
本题主要考情商,通俗来说就是忽悠能⼒,先唬住⾯试官了再说,进去了也是瞎测测,随时做好背锅的准备,当然,你肯定不能回答⾯试官不测(⼼理mmp,脸上笑嘻嘻),接下来就是扯犊⼦时间
中寻求开发解答。(常⽤抓包⼯具Fiddler、Charles等)
15、在⼿⼯接⼝测试或者⾃动化接⼝测试的过程中,上下游接⼝有数据依赖如何处理?答:⽤⼀个全局变量来处理依赖的数据,⽐如登录后返回token,其它接⼝都需要这个token,答:
那就⽤全局变量来传token参数。
16、依赖于第三⽅数据的接⼝如何进⾏测试?
答:mock
接着⾯试官会问你,如果mock的,然后你就顺着坑继续挖,搭建mock服务,参考这篇
www.51ste/share/det-485.html
17、接⼝测试中,依赖登录状态的接⼝如何测试?
答:依赖登录状态的接⼝的本质上是在每次发送请求时需要带上session或者cookie才能发送成答:
功,在构建POST请求时添加必要的session或者cookie
18、如何模拟弱⽹做测试?
答:Fiddler和charles都可以模拟弱⽹测试,平常说的模拟丢包,也是模拟弱⽹测试。具体可以看《⼏种弱⽹模拟⽅法,总有⼀种适合你》
19、你平常做接⼝测试的过程中发现过哪些bug?
⾯试官出这个题,主要是想知道你是不是真的做过接⼝测试,毕竟现在很多⼩伙伴简历经过包装(不包装连⾯试机会都没有,没办法,为了⽣存)
答:
常规错误,接⼝没实现,没按约定返回结果,边界值处理出错等。
输⼊异常值(空值、特殊字符、超过约定长度等),接⼝抛错,没做封装处理;
输⼊错误的参数、多输⼊、少输⼊参数,接⼝可能出现的错误;
安全性问题,如明⽂传输、返回结果含有敏感信息,没对⽤户⾝份信息做校验,没做恶意请求拦截等;
性能问题,如接⼝并发插⼊多条相同操作,响应时间过长,接⼝压测出现瓶颈等;
20、当⼀个接⼝出现异常时候,你是如何分析异常的?
答:
先抓包,⽤fiddler(charles)⼯具抓包,或者浏览器上F12调试⼯具;APP上的话,那就⽤Fiddler做代理,通过⼿机设置代理去看请求和返回报⽂;
查看后端⽇志,如Linux系统通过xhell连上服务器,查看接⼝⽇志,查看是否有报错信息(命令:tail -f ⽇志⽂件);
21、如何分析⼀个bug是前端还是后端的?
答:
平常提bug的时候,前端开发和后端开发总是扯⽪,不承认是对⽅的bug。
这种情况很容易判断,先抓包看请求报⽂,对着接⼝⽂档,看请求报⽂有没问题,有问题就是前端发的数据不对;
请求报⽂没问题,那就看返回报⽂,返回的数据不对,那就是后端开发的问题咯。
22、你们做接⼝测试⾃动化吗?
答:现在针对⼤量应⽤,普遍推崇做接⼝测试⾃动化,维护成本低、收益⾼。常⽤的⼯具有许答:
多,如Jmeter、Robot Framework、pytest等。
:⼈⽣不如意之事⼗有⼋九。常想⼀⼆,不思⼋九,事事如意。
⽂末寄语
⽂末寄语:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论