接口测试面试题

1、软件的接口是什么?

指程序中具体负责在不同模块之间传输或接受数据并做处理的类、方法、函数。

2、HTTP和HTTPS的区别?

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

HTTPS和HTTP的区别主要如下:

  1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

  2、HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。

  3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

       4、HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以, HTTPS 比 HTTP 要更耗费服务器资源。

  5、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

3、tcp/IP五层模型内容,且每层的协议

1.五层协议:应用层、传输层、网络层、数据链路层、物理层

2、应用层:为操作系统或应用程序提供访问网络服务的接口。例如:telnet-远程连接服务、FTP-件传输协议、HTTP/HTTS、DNS-域名服务解析器等。

    传输层:会话层负责决定建立连接和断开连接的时机,而传输层进行实际的建立和断开处理。常见:TCP、UDP、进程、端口。

    网络层:将数据传输到目标地址。目标地址可以是多个网络通过路由器连接而成的某个地址。因此这一层主要负责寻址和路由选择。常见:路由器、多                    层交换机、防火墙。

    数据链路层:负责物理层上的互联、节点之间的通信传输。常见:网卡、网桥、二层交换机。

    物理层:负责0、1比特流(0、1序列)与电压的高低、光的闪灭之间的互换。常见:中继器、集线器、网线

 

4.get和post的区别

POST和GET都是向服务器提交数据,并且都会从服务器获取数据。

区别:

(1)传送方式:get通过地址栏传输,post通过报文传输,故而post更相对来说私密性一点

(2)传送长度:get参数有长度限制(受限于url长度),而post无限制

(3)get请求参数会被完整保留在浏览历史记录里,而post中的参数不会被保留

(4)get方式大多用作查询接口,获取响应数据;而post方式更多做数据添加、修改或删除等操作

5.常见的post提交数据方式

主要有四种方式:application/x-www-form-urlencoded 表单传递、multipart/form-data主要用于上次文件、application/json  json字符串、text/xml等。

6.什么是HTTP协议无状态协议?怎么解决HTTP协议无状态

无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。即我们给服务器发送 HTTP 请求之后,服务器根据请求,会给我们发送数据过来,但是,发送完,不会记录任何信息。HTTP 是一个无状态协议,这意味着每个请求都是独立的,Keep-Alive 没能改变这个结果。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。HTTP 协议这种特性有优点也有缺点,优点在于解放了服务器,每一次请求“点到为止”不会造成不必要连接占用,缺点在于每次请求会传输大量重复的内容信息。客户端与服务器进行动态交互的 Web 应用程序出现之后,HTTP 无状态的特性严重阻碍了这些应用程序的实现,毕竟交互是需要承前启后的,简单的购物车程序也要知道用户到底在之前选择了什么商品。于是,两种用于保持 HTTP 连接状态的技术就应运而生了,一个是 Cookie,而另一个则是 Session。

7、cookie和session的区别

(1)作用范围不同cookie保存在客户端浏览器,session保存在服务端

(2)存取方式不同,cookie只能保存ASCII,session可以存任意数据类型,一般情况下我们可以在session中保存一些常用变量信息,比如UserId

(3)有效期不同,cookie可以设置为长时间保持,比如我们经常使用的默认登录功能,session一般失效时间较短,客户端关闭或者Session超时都会失效

(4)安全性不同,cookie存储在客户端,比较容易遭到不法获取,session存储在服务端,安全性要好一些

(5)存储大小不同,单个cookie保存的数据不能超过4K,session可存储数据远高于cookie。

(6)服务器性能。session 对服务器的压力会更大一些,而 Cookie 放在客户端,所以对服务器基本没影响

8、HTTP有哪些请求方法

HTTP共有7中请求方式,每种都可以发送Header和Body: get、post、put、delete、options、head、patch

9、请求接口中常见的返回状态码

1xx – 信息提示(表示临时的响应。客户端在收到常规响应之前,准备接收一个或多个1xx响应)

2xx – 成功(表明服务器成功地接受了客户端请求)

3xx – 重定向(客户端浏览器必须采取更多操作来实现请求,例如用户未登录就操作了修改的功能)

4xx – 客户端错误(发送错误,客户端有问题)

5xx – 服务器错误(服务器由于遇到错误而不能完成该请求)

常见的有:

200 OK:服务器成功返回用户请求的数据

201:用户新建或修改数据成功

202:表示一个请求已经进入后台排队(异步任务)

301:删除请求数据

302:在其他地址发现了请求数据

303:建议客户访问其他URL或访问方式

304:客户端已经执行了GET,但文件未变化

400 :用户发出的请求有错误,服务器没有进行新建或修改数据的操作

401:表示用户没有权限(令牌、用户名、密码错误)

403 :表示用户得到授权(与401错误相对),但是访问被禁止

404:用户发出的请求针对得到是不存在的记录,服务器没有进行操作,该操作是幂等的

500:服务器发生错误,用户将无法判断发出的请求是否成功。

502:服务器返回超时

10、TCP和UDP的的区别,

 TCP是可靠的、面向连接、面向字节流、全双工、传输效率低且传输速度慢

UDP是不可靠的、无连接、面向报文、传输效率高且传输速度快

12.怎么设计接口测试用例

设计接口测试用例需要考虑以下几个方面:

①是否满足前提条件

     有些接口需要满足前置条件,才可成功获取数据。常见的,需要登陆Token。

     逆向用例:

     针对是否满足前置条件(假设为n个条件),设计0~n条用例

②是否携带默认值参数

     带默认值的参数都不填写、不传参,必填参数都填写正确且存在的“常规”值,其它不填写,设计1条用例;

③业务规则、功能需求

     这里根据实际情况,结合接口参数说明,可能需要设计n条正向用例和逆向用例

④参数是否必填

     逆向用例:

     针对每个必填参数,都设计1条参数值为空的逆向用例

⑤参数之间是否存在关联

     有些参数彼此之间存在相互制约的关系

     逆向用例:  根据实际情况,可能需要设计0~n条用例

⑥参数数据类型限制

     逆向用例:针对每个参数都设计1条参数值类型不符的逆向用例

⑦参数数据类型自身的数据范围值限制

     正向用例: 针对所有参数,设计1条每个参数的参数值在数据范围内为最大值的正向用例

     逆向用例:

        针对每个参数(假设n个),设计n条每个参数的参数值都超出数据范围最大值的逆向用例

        针对每个参数(假设n个),设计n条每个参数的参数值都小于数据范围最小值的逆向用例

13、你做接口测试,测什么

①可用性测试-根据约定的协议、方法、格式内容,传输数据到接口经处理返回期望的接口

      接口功能是否正确实现;

     返回值测试-返回值除了内容要正确,类型也要正确,保证调用方能够正确的解析;

      参数值边界值、等价类测试

②错误和异常处理测试

    输入异常值(空值、特殊字符、超过约定长度等),接口能正确处理,且按预期响应

    输入错误的参数,接口能正确处理,并按预期响应

    多输入、少输入参数,接口能正确处理,且按预期响应

    错误传递数据格式(如json格式写成form格式)测试

③安全性测试,主要指传输数据的安全性

    敏感数据等是否加密传输

    返回数据是否含有敏感数据,如用户密码、完整的用户银行账户信息等

    接口是否防止恶意请求(如大量伪造请求接口致使服务器崩溃)

④性能测试,如接口的响应时间、并发处理能力、压测处理情况:

     接口响应时长在用户可忍受的范围内;

    并发请求相同的接口(特别为post请求),接口的处理情况(如插入了相同的记录导致数据出错,引发系统故障)

     对于请求量大的接口做压测,确定最大的瓶颈点是否满足当前业务需要;

14.平常用什么工具测接口

常用http协议接口测试工具,如:postman、fiddler、jmeter;webService接口用SoapUI、jmeter等。

15、如果没有接口文档,如果做接口测试?

1.没有接口文档,那就需要先跟开发沟通,然后整理接口文档(本来是开发写的,没办法,为了唬住面试官,先说自己整理了)

2.没有接口文档,可以抓包看接口请求参数,然后不懂的跟开发沟通

3.还有一些接口请求会保存在数据库中,可以找开发要到

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

用一个全局变量来处理依赖的数据,比如登录后返回token,其它接口都需要这个token,那就用全局变量来传token参数。

17、依赖于第三方数据的接口如果进行测试?

mock

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

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

19、如何模拟弱网做测试?

fiddler和charles都可以模拟弱网测试,平常说的模拟丢包,也是模拟弱网测试

 用Fiddler实现弱网测试:
在规则菜单选择Performance项,设置为Simulate Modem Speeds即为弱网模式。如果页面能够在弱网模式下正常打开,则说明弱网测试通过,否则前端需要对页面进行压缩。

20、你平常做接口测试的过程中发现过哪些bug?

1.常规错误:接口功能没有实现,没按约定返回结果,边界值处理出错等

2.输入异常值(空值、特殊字符、超过约定长度等),接口抛错,没做封装处理;

3、输入错误的参数、多输入、少输入参数,接口可能出现的错误;

4、安全性错误,如明文传输、返回结果含有敏感信息,没对用户身份信息做校验,没做恶意请求拦截等;

21、当一个接口出现异常的时候,你是如何分析异常的?

先抓包,用fiddler(charles)工具抓包,或者浏览器上F12调试工具;APP上的话,使用fiddler做代理,通过手机设置代理去请求和返回报文。

查看后端日志,如linux系统通过xshell连上服务器,查看接口日志,查看是否有报错信息

22、如何分析一个bug是前端还是后端的?

先抓包看请求报文,对着接口文档,看请求报文有没有问题,有问题就是前端发的数据不对,请求报文没问题,那就看返回报文,返回的数据不对,那就是后端开发的问题

23、接口(API)文档包含哪些部分

1. 包含请求方法、请求地址

2. 请求参数(主要在请求体中,有的参数在URL中)

3.返回结果说明(预期结果)
 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值