专栏文章 这 8 道接口测试面试题!你如果都答好,I want you!

程序员一凡 · 2020年12月25日 · 最后由 程序员一凡 回复于 2020年12月29日 · 6097 次阅读

接口测试常见的问题了。

大家乍一看!

接口测试面试题

这几个问题,能答出来几个?有没有 8 个都能够完美的答出来的?在留言区打出你的数字。(0~8)

这些问题你回答起来,不要吞吞吐吐只说几个关键字。你要从多方面去给面试官总结分析那些场景,如何去做的,遇到的问题……

接口测试的重要性,相信不用我多说了。接口测试是现在软件测试工程师一个加分项。因为很多朋友一开始做了几年的软件测试都是在做功能测试,做界面 UI 的测试,然而没有做过接口测试。(很正常很普遍)

那么接口测试它在企业中,能达到非常好的收益。后端、服务端的测试,特别是现在!像是前面几年,物联网公司没有做一个前后端分离,现在基本上都是微服务架构,前后端分离。接口非常重要,现在 2020 年了,未来几年你去做测试,很多都是接口。

一个接口它可以支持安卓、IOS、H5、Web 端。而且接口测试可以测很多你在界面上无法去测试的一些范围和类型。

我们来看一看这几个问题,从简单的来。

第一题,大家绝大部分都能够答得出来

1.目前市面上流行的接口大多有哪几种协议的接口?

大家可能就非常了解,Http、Https、RPC、Websocket、还有一个 Dubbo 接口,这些类型百度一下也都能够比较全面的得到答案。

所以我一直传输给大家一个观念就是说,假如面试官问你这个问题,你不仅要说有 Http、Https……说完这几种类型,你还可以多说几句,比如说我之前在项目中测试过 Http 的,怎么测试的,用什么测试工具测试的,这是我一直传输给大家的一个面试小技巧。因为我之前在企业中做为面试官的时候,当听到这种面试题回答的时候,会更加分。

因为如果我问你一个问题,你答 Http、Https 就没了,那么说明你这个人的积极性和你的一个综合能力、见识都不是非常的亮眼突出。理解我的意思吗?不管面试官问你什么问题,你都要非常全面的去解答。

比如说第二个问题

2.http 协议有什么特点,能说说这些特点体现在哪些方面吗?

可能会有朋友就说,安全。

Http 就安全了吗?(Https 才相对安全)

a.无状态

b.灵活

c.无连接

d.简单快速

那么我又来问大家,这些状态这些特点,具体体现在哪些方面?

可能问到这个问题的后面部分,有些朋友就要头皮发麻了。

它为什么叫做无状态,为什么灵活?可能像这种问题就又刷下去了一大批人。有很多朋友特点可能说了一个,但是这些特点具体体现在哪些方面。你如果没有答出来,那面试官就觉得你没有做过很多的接口测试,你对接口根本不是很了解,那你对接口既然不了解,做过的测试也不多,那你还说你做过接口测试,那都只是片面的。

那首先它无状态,灵活,说一个最简单的。灵活,大家都知道,像 Http 类型的接口我们用 Postman 来做测试,它为什么比较灵活?它支持的参数类型是任意类型

这个就是我之前搭建的接口项目

它来做测试的时候,这个参数类型,表单,文件上传类型,还有 JSON 类型,Text 文本,JS,XML,HTML

你的参数可以支持任意类型

你的参数可以支持任意类型,所以说它比较灵活。

那为什么说它简单快速?你只需要传一些接口的请求方法和请求路径,通信速度非常快,它就能给到你响应的数据。

比如说很简单,我之前写的一个 demo 接口

你只需要告诉我,这个地址和这个接口的路径,或者说接口的名称,我就能请求这个接口了,就能快速的拿到下面的值。那是不是说它非常的简单快速呢,不像 Dubbo 接口不像 Websocket,不像其他的接口,稍微你要去测试,去请求可能难一点。这就说明它简单快速。

无状态。比如说你现在要去支付一笔订单,你要点一个外卖,那么你支付订单的时候,那么我怎么知道你的购物车里面加了哪些东西呢?其实你加购物车、下订单、登录其实都是相应的接口,他们之间其实是没有一个实物处理记忆能力的,Http 协议它请求成功之后没有记忆了。所以说你每次去请求新的接口,它都有一个新的请求,那么为什么现在这种下单、登录加购物车能够非常灵活的应用起来呢?这就还有它中间的一些机制,会用到一些 Session、Cookie、和一些 Token,所以这就是它的一个原理。

那么无连接。怎么理解?

那我自己的一个项目来说吧!这是之前搭建的一个测试项目管理平台

那么每次我们去请求的时候,Network 刷新一下,它可能去请求了很多个接口,所以说每次连接它只处理一个请求。服务端当处理其中一个接口的时候,它只请求这一个,请求完之后,它就马上断开连接,节省这个传输的时间,所以这是一个无连接。

所以这些特点体现在哪些方面,你能说一说的话,说明你对这个接口你比较有心得了。有收获记得点赞支持一下!

3.postman 中如何实现接口之间的关联?

我想这个可能还不是最难的问题,可能大家用过,像第二个问题比较综合性的往往是大家比较薄弱的东西。

比如说这是一个正规的接口文档,有哪些接口就用 Postman 全部写一遍,然后如何接口之间的关联,这里会用到这些东西。

怎么设置关联,将数据解析成 Json 格式,获取 topic_id 的值,设置成环境变量,等等。这就能实现接口之间的关联。

然后你在这里会发现,这里有很多环境变量或者全局变量,这就是接口之间的关联。

5.若请求的接口需要先登录后方可请求,如何进行接口测试?

比如说有些接口需要先登录才请求,那如何来进行接口测试?先登录,比如我问你这个问题你怎么来回答?

因为很多需要请求的接口它需要先认证才能去请求。

Token?

这个回答不对,Token 从哪里来?你需要去请求什么样的接口,你的登录接口或者去哪里去拿到,这个问题还是比较简单的,大家可以做为作业区用心学习一下。

7.dubbo 接口如何测试?

那我们来看看像这种 Dubbo 如何去进行测试?这个有了解过吗?因为现在越来越多的公司可能不仅用 Http 他还会用到 Dubbo 接口。dubbo 接口是我们(用的阿里云服务器)阿里巴巴开源的一个高性能的服务框架,Dubbo 是经历过双十一的一个摧残优秀的 RPC 框架,很多公司都在用了,但是你又没有听说过,额,怎么还会有这个接口啊?你听都没有听说过,那么你在面试官那里……因为面试的公司很有可能就是做的 Dubbo 接口,那你来做接口测试,你连 Dubbo 都不知道,那我是不是又要培养你一个月?告诉你什么是 Dubbo,怎么测试 Dubbo,还说让你来做 Dubbo 接口自动化,那更加。就算招你进去了,你也是一个新手,菜鸟的身份进去的,你的工资是很难提上去的。

比如他工资本来开的是 15K-20K,那么就算你能面试进去了,你最多最多拿到 15K。那还要看你的运气,看你其他方面的一个加分项,来抵消这个暂时的短板。

面试官:什么是 Dubbo?

我:我、我、我抓一抓后脑勺,摸摸手臂,扣一扣指甲。

然后就是说……吞吞吐吐答不出来(内心独白:到底什么时候结束这个面试,你赶快把简历还给我吧,QAQ)

我还准备去下一家公司去 “吹牛皮” 也许下一家公司面试官不会问到我不会的问题。

大家不要抱着这样的心态,我发现做测试真的这样一个现状,很多朋友就觉得能混,我现在做功能测试不用任何的技术,能拿个 7.8K,一万的工资,也可以。至少要比其他的行业的底薪是要高一些。

所以就存在这个现象,他不会很多的技术,没有很多的技能他也能混,或者运气好,在一线城市需求多。为什么很多测试在一线城市能够拿到 10-15K,他不会任何的技术,因为一线城市的需求多很多。

但是你想要突破,想突破 15K,突破 18K 那就难上加难了,而且如果你从大城市工作三到五年,你再回去到二线城市去做测试,那么你还想来混,那么你的工资就可能只有 5-6K 了,而且你没有任何的技术,你说你从大城市回来的,都觉得有点不好意思说。

你从大城市回来的,你带回来了什么先进的概念,带来了什么先进的技术,是不是?

说远了,回归正题。

文章首发于公众号:程序员一凡

转载请注明出处!

Dubbo 的一个测试关键,搭建消费者,你需要去理解的 Dubbo 接口的基础架构基础服务到底是一个什么样的原理。(有一个接口测试训练营有讲到这个原理以及如何去测试,需要视频教程可以免费领取)

我在这个服务器上搭建了一个 Dubbo 服务

最简单的方式用,Telnet,我的 IP 地址,然后加一个端口,其实测试起来和 Http 原理都一样。

开启服务之后,进去之后就是一个 Dubbo

我们还可以用代码来写

这里封装了一个 Dubbo 的方法,类。需要完整视频版教学可以公众号主页点击领取资料即可。

8.接口测试断言从哪些方面去设计?

如果我把这个接口测试改成功能测试,功能测试断言从哪些方面去设计?

你要怎么去校验一个测试用例,我觉得这个是很多做测试的朋友最擅长的东西,那么我问接口测试呢?

其实接口测试也属于功能测试,也是黑盒测试。

比如说这个接口,我去发送一个请求,你怎么去校验这个接口,我怎么去判断我这个用例到底是不是对的,我这个用例到底是验证了什么东西

到底什么是 401,什么情况下会 401,或者是 403 Forbidden 到底是什么情况。

1.状态码

它会不会返回 200,会不会返回 401,403,返回 500 等等

2.返回值

返回值比如我拿一个正确的吧,状态码 200,返回了一大堆的值,那么这个返回值里面就有很多东西需要去校验了,怎么去校验这个返回值?

3.而且返回值里面很多数据是动态的,这个时候要怎么去设置?要考虑数据库校验吧,很多字段的值来源于数据库

非关系型数据库(Mongo)

4.空校验,异常校验,

5.幂等性

幂等性的校验在接口测试是一个常见的校验,比如说你一个接口我调用一次正常了,你能保证它之后调用都是正常的吗?这些数据、参数几百个不同类型的参数,我调用一百次,会是一个什么样的情况?

幂等性,我重复执行一百次,它会返回什么。

或者我去买一个外卖,下单,但是我不支付,是不是我点击下单一百次,它会不会产生很多垃圾数据在我们数据库里面。

其实还有很多需要你去测试的,为什么接口测试这么重要,要测试的东西和功能测试一样方方面面都是需要考虑到的。

6.流程节点限制

举一个异常例子吧,比如说你在支付的时候,我只下单没有付钱,那么像这个接口的返回值。我先调用下单的接口,我拿到一些数据再去调用别人正常支付后的接口。会是一个什么样的场景,有没有做一些限制。

接口测试很容易做一个数据驱动,做一些自动化,我们都要去尽可能的全面的覆盖做一个接口自动化,那么你的效益是非常高的。而且你把这一套全部做成自动化,不管是后端开发人员还是前端开发人员还是测试,你在企业中本人价值也是非常高的。

如果面试官觉得你答对了,再深入一点,什么是异常校验?就是来评判你能不能达到一个高级测试工程师。

异常校验

数据异常,环境异常,前置条件异常,大家都知道做过接口测试的朋友都知道接口有很多的前置条件,前置条件连接数据库或者数据的预制,那么这些前置条件有没有异常导致我们接口异常。

所以像这种问题,你如果没有真实的项目经验,你绝对总结不出来也回答不出来。

…………文章首发于公众号:程序员一凡…………

转载请注明出处!

愿你我相遇,皆有所获!

共收到 2 条回复 时间 点赞

非常好 ,顶一个 ,学到了

锤锤 回复

希望对你有帮助,感谢支持!

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册