接口测试常见的问题了。
大家乍一看!
这几个问题,能答出来几个?有没有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.流程节点限制
举一个异常例子吧,比如说你在支付的时候,我只下单没有付钱,那么像这个接口的返回值。我先调用下单的接口,我拿到一些数据再去调用别人正常支付后的接口。会是一个什么样的场景,有没有做一些限制。
接口测试很容易做一个数据驱动,做一些自动化,我们都要去尽可能的全面的覆盖做一个接口自动化,那么你的效益是非常高的。而且你把这一套全部做成自动化,不管是后端开发人员还是前端开发人员还是测试,你在企业中本人价值也是非常高的。
如果面试官觉得你答对了,再深入一点,什么是异常校验?就是来评判你能不能达到一个高级测试工程师。
异常校验
数据异常,环境异常,前置条件异常,大家都知道做过接口测试的朋友都知道接口有很多的前置条件,前置条件连接数据库或者数据的预制,那么这些前置条件有没有异常导致我们接口异常。
所以像这种问题,你如果没有真实的项目经验,你绝对总结不出来也回答不出来。
文章首发于公众号:程序员一凡
转载请注明出处!