依据网络材料,总结了以下一些常见的接口测验面试题:
为什么要做接口测验?接口测验能发现哪些问题?接口测验怎样测?用什么东西测接口?WebService接口是怎样测验的?没有接口文档怎样做接口测验?在接口测验过程中,上下游接口有数据依靠怎样处理?依靠第三方数据的接口怎样进行测验?当一个接口出现反常时,你是怎样剖析反常的?怎样模仿弱网测验?怎样剖析一个bug是前端的仍是后端的?为什么要做接口测验在评论为什么要做接口测验之前,咱们先略微了解下接口是什么?
接口能够很不精确地了解成是与资源打交道,这个资源可能是本体系的,也可能是其他体系的。
举个比方,假定咱们在开发1个bug办理体系,该体系需求拿到公司的全部开发和测验人员的信息,这样开发和测验人员不必注册都能够登录进去了,这应该很好了解。
那么这些人员的信息贮存在哪里呢?一般存储在hr体系里。现在的需求愈加清晰了,咱们要到hr体系中去拿到人员信息,获取hr体系中的人员资源。
怎样拿呢?许多种方法,能够直接把hr体系的数据库复制一份放到bug办理体系里,不过这样欠好,由于数据的同步会有点费事;还能够直连续hr体系的数据库去查,这样也不太好,这样咱们就需求了解hr体系的数据存储结构和逻辑,一旦hr体系的数据字段产生改动,bug办理体系也要去该,以便同步。
比较好的做法是,hr体系露出一些接口,经过这些接口去获取人员信息资源,这样bug体系就不需求关怀hr体系的数据存储完成了。
这些接口可能是这样的:
登录的接口,供给人员的用户名和暗码,去hr体系中判别该人员是否存在,假如存在验证用户名和暗码,假如验证经过就回来1个token,该token便是这个人员的通行证,经过token能够登录到bug办理体系中去;获取人员信息的接口,回来该人员的职位:测验仍是开发,以及用户名,昵称等信息;综上:接口能够了解成是不同体系或模块之间资源交流方法。
接口测验实际上是黑盒测验,根本的测验思路是依据输入和输出判别被测体系或目标的逻辑。获取人员的信息,我需求把人员的用户名传给hr体系接口,这样hr体系的接口会回来给我用户的一些愈加详细的信息。这儿的输入是用户名,输出是用户的详细信息。
既然是接口获取和操作资源的方法,而大部分体系和产品中,资源一般都是产品的中心,比方微信中心资源便是通讯录关系链和聊天记录等,因而资源是必测的。
别的接口中大部分的内容是数据,经过数据的比照咱们能推测到体系和产品的逻辑,测接口便是测逻辑。
最终接口中的回来相对单纯,不像web页面,html代码中有太多ui的东西,ui最不安稳,改变太快,接口相对安稳一点点,可是里边的搅扰信息更少,断语相对简略许多。
请看以下一个事例,如下图一个提现功用
比方这个输入框,往常拿到这个web页面,会对输入框做用例规划:
输入一个负数(如:-100),点提交输入金额为0(如:0),点提交输入金额为0-100的数(如:20),点提交输入金额为100(如:100),点提交输入金额大于100(如:108),点提交输入1位小数(如:10.1),点提交输入2位小数(如:10.12),点提交输入3位小数(如:10.123),点提交依照这个等价类,鸿沟值用例测完,页面上不能输入负数和大于3位数小数点,然后就能够上线了。但是,忽然有一天数据库里边插入了一个提现金额为负数(-100),所以整个部分炸锅了,首要找到测验(背锅)去复现问题,测验在页面上重复输入负数,无法提交,以为没问题啊!
首要前端开发对输入框是做了约束的,前端的web开发必定没问题,这个锅前端开发MM不背。那么假如他人用户不经过你的web页面,直接发恳求提交了呢?纳尼!!!不经过页面也能提交。。。这便是咱们接下来要说到的接口测验了。
接口测验能发现哪些问题这个问题其实答复起来很简略,只需做过接口测验的,总能发现几个BUG吧,把你往常发现的bug说2-3个就能够了。
面试官出这个题,主要是想知道你是不是真的做过接口测验,究竟现在许多小伙伴简历都是写的假的(你要不写估量面试时机都没有,没办法,为了生计,能了解)
比方上面说的,提现输入框,在页面上输入负数,必定是无法提交曩昔(前端页面会判别金额),假如我不走前端,直接用接口东西发恳求,输入一个负数曩昔。
(假定服务端没做提现金额数据判别)余额=当时余额(100)-提现金额(-100),那么提现-100,余额就变成200了,也便是越提现,余额越大了
能够用接口东西去直接恳求接口,也能够fiddler抓包,抓到接口后修正金额为负数
所以,接口测验的必要性就体现出来了:1.能够发现许多在页面上操作发现不了的bug2.检查体系的反常处理才干3.检查体系的安全性、安稳性4.前端随意变,接口测好了,后端不必变5.能够测验并发状况,一个账号,一起(大于2个恳求)对最终一个产品下单,或不同账号,对最终一个产品下单6.能够修正恳求参数,打破前端页面输入约束(如金额)
接口测验怎样测经过性验证:首要必定要确保这个接口功用是好使的,也便是正常的经过性测验,依照接口文档上的参数,正常传入,是否能够回来正确的成果。参数组合:现在有一个操作产品的接口,有个字段type,传1的时分代表修正产品,产品id、产品称号、价格有一个是必传的,type传2的时分是删去产品,产品id是必传的,这样的,就要测参数组合了,type传1的时分,只传产品称号能不能修正成功,id、称号、价格都传的时分能不能修正成功。接口安全:1、绕过验证,比方说购买了一个产品,它的价格是300元,那我在提交订单时分,我把这个产品的价格改成3元,后端有没有做验证,更狠点,我把钱改成-3,是不是我的余额还要添加?2、绕过身份授权,比方说修正产品信息接口,那必须得是卖家才干修正,那我传一个普通用户,能不能修正成功,我传一个其他的卖家能不能修正成功3、参数是否加密,比方说我登陆的接口,用户名和暗码是不是加密,假如不加密的话,他人阻拦到你的恳求,就能获取到你的信息了,加密规矩是否简略破解。4、暗码安全规矩,暗码的杂乱程度校验反常验证:所谓反常验证,也便是我不依照你接口文档上的要求输入参数,来验证接口对反常状况的校验。比方说必填的参数不填,输入整数类型的,传入字符串类型,长度是10的,传11,总归便是你说怎样来,我就不怎样来,其实也就这三种,必传非必传、参数类型、入参长度。功能测验接口并发状况,如上面说到的:一个账号,一起(大于2个恳求)对最终一个产品下单,或不同账号,对最终一个产品下单接口呼应时刻,呼应时刻太长了,必定需求优化,一般都是毫秒等级用什么东西测接口postman: 引荐。根本功用免费。最简略的根据http接口的调试和测验东西;jmeter:后置处理器合作断语根本上能够满意接口测验需求,便是测验报告要做二次开发自己撸代码:引荐。合作相似xunit测验结构,根本能够满意全部需求soapui: 收费的;insomnia:postman的弱化版,根本功用免费,重要的是东西代码开源,能够自己改;paw:mac上最强,淘宝买个授权如同就百把块钱; WebService接口是怎样测验的webService接口用SoapUI
没有接口文档怎样做接口测验没有接口文档,那还能咋办,瞎测呗!一个公司的开发流程里边,假如接口文档都没有,是无法打开接口测验的,你都不知道这个接口干什么的,也不知道详细每个字段代表什么意思,那还测啥呢?--当然,你必定不能答复面试官意外(心思mmp,脸上笑嘻嘻),接下来便是扯犊子时刻1.没有接口文档,那就需求先跟开发交流,然后收拾接口文档(本来是开发写的,没办法,为了唬住面试官,先说自己收拾了)2.没有接口文档,能够抓包看接口恳求参数,然后不明白的跟开发交流
本题主要靠情商,浅显来说便是忽悠才干,先唬住面试官了再说,进去了也是瞎测测,随时做好背锅的预备
在接口测验过程中,上下游接口有数据依靠怎样处理用一个全局变量来处理依靠的数据,比方登录后回来token,其它接口都需求这个token,那就用全局变量来传token参数
依靠第三方数据的接口怎样进行测验这个标准答案是:mock
接着面试官会问你,假如mock的,然后你就顺着坑持续挖,建立mock服务。
当一个接口出现反常时,你是怎样剖析反常的1.抓包,用fiddler东西抓包,或许浏览器上f12,app上的话,那就用fiddler设置署理,去看恳求报文和回来报文了2.检查后端日志,xhell连上服务器,检查日志
怎样模仿弱网测验fiddler和charles都能够模仿弱网测验,往常说的模仿丢包,也是模仿弱网测验
怎样剖析一个bug是前端仍是后端的往常提bug的时分,前端开发和后端开发总是扯皮,不承认是对方的bug。这种状况很简略判别,先抓包看恳求报文,对着接口文档,看恳求报文有没问题,有问题便是前端发的数据不对。恳求报文没问题,那就看回来报文,回来的数据不对,那便是后端开发的问题。