面试题:没有接口文档,如果做接口测试?
没有接口文档,那还能咋办,瞎测呗!一个公司的开发流程里面,如果接口文档都没有,是无法展开接口测试的,你都不知道这个接口干什么的,也不知道具体每个字段代表什么意思,那还测啥呢?
当然,你肯定不能回答面试官不测(心理mmp,脸上笑嘻嘻),接下来就是扯犊子时间
1、没有接口文档,那就需要先跟开发沟通,然后整理接口文档(本来是开发写的,没办法,为了唬住面试官,先说自己整理了)
2、没有接口文档,可以抓包看接口请求参数,然后不懂的跟开发沟通
本题主要靠情商,通俗来说就是忽悠能力,先唬住面试官了再说,进去了也是瞎测测,随时做好背锅的准备
面试题:你平常做接口测试的过程中发现过哪些bug?
这个问题其实回到起来很简单,只要做过接口测试的,总能发现几个BUG吧,把你平常发现的bug说2-3个就可以了。
面试官出这个题,主要是想知道你是不是真的做过接口测试,毕竟现在很多小伙伴简历都是写的假的(你要不写估计面试机会都没有,没办法,为了生存,能理解)
比如一个体现功能,提现输入框,在页面上输入负数,肯定是无法提交过去(前端页面会判断金额),如果我不走前端,直接用接口工具发请求,输入一个负数过去。
(假设服务端没做提现金额数据判断)
余额=当前余额(100)-提现金额(-100),那么提现-100,余额就变成200了,也就是越提现,余额越大了
可以用接口工具去直接请求接口,也可以fiddler抓包,抓到接口后修改金额为负数
所以,接口测试的必要性就体现出来了:
1、可以发现很多在页面上操作发现不了的bug
2、检查系统的异常处理能力
3、检查系统的安全性、稳定性
4、前端随便变,接口测好了,后端不用变
5、可以测试并发情况,一个账号,同时(大于2个请求)对最后一个商品下单,或不同账号,对最后一个商品下单
6、可以修改请求参数,突破前端页面输入限制(如金额)
面试题:平常你是怎么测试接口的?
通过性验证:
首先肯定要保证这个接口功能是好使的,也就是正常的通过性测试,按照接口文档上的参数,正常传入,是否可以返回正确的结果。
参数组合:
现在有一个操作商品的接口,有个字段type,传1的时候代表修改商品,商品id、商品名称、价格有一个是必传的,type传2的时候是删除商品,商品id是必传的,这样的,就要测参数组合了,type传1的时候,只传商品名称能不能修改成功,id、名称、价格都传的时候能不能修改成功。
接口安全:
绕过验证,比如说购买了一个商品,它的价格是300元,那我在提交订单时候,我把这个商品的价格改成3元,后端有没有做验证,更狠点,我把钱改成-3,是不是我的余额还要增加?
绕过身份授权,比如说修改商品信息接口,那必须得是卖家才能修改,那我传一个普通用户,能不能修改成功,我传一个其他的卖家能不能修改成功
参数是否加密,比如说我登陆的接口,用户名和密码是不是加密,如果不加密的话,别人拦截到你的请求,就能获取到你的信息了,加密规则是否容易破解。
密码安全规则,密码的复杂程度校验。
异常验证:
所谓异常验证,也就是我不按照你接口文档上的要求输入参数,来验证接口对异常情况的校验。比如说必填的参数不填,输入整数类型的,传入字符串类型,长度是10的,传11,总之就是你说怎么来,我就不怎么来,其实也就这三种,必传非必传、参数类型、入参长度。
性能测试
接口并发情况,如上面提到的:一个账号,同时(大于2个请求)对最后一个商品下单,或不同账号,对最后一个商品下单接口响应时间,响应时间太长了,肯定需要优化,一般都是毫秒级别
面试题:如何分析一个bug是前端还是后端的?
平常提bug的时候,前端开发和后端开发总是扯皮,不承认是对方的bug
这种情况很容易判断,先抓包看请求报文,对着接口文档,看请求报文有没问题,有问题就是前端发的数据不对
请求报文没问题,那就看返回报文,返回的数据不对,那就是后端开发的问题咯
面试题:在手工接口测试或者自动化接口测试的过程中,上下游接口有数据依赖如何处理?
1、手工测试中,用postman使用Tests中的set a global variable生成全局变量或者set an environment variable生成系统变量,后续直接引用这个变量值;用jmeter则使用后置处理器的正则表达式提取器、边界值提取器、json提取器提取,后续引用该变量值。
2、自动化测试中,通常会把接口响应的数据提取出来赋值给一个变量,后续直接调取该变量的值就可以使用。
用一个全局变量来处理依赖的数据,比如登录后返回token,其它接口都需要这个token,那就用全局变量来传token参数
面试题:当一个接口出现异常时候,你是如何分析异常的?
抓包,用fiddler工具抓包,或者浏览器上f12,app上的话,那就用fiddler设置代理,去看请求报文和返回报文了
查看后端日志,xhell连上服务器,查看日志
面试题:说说接口测试的流程和接口自动化流程,介绍一下request有哪些内容?
流程:获取接口文档,依据文档设计接口参数,获取响应,解析响应,校验结果,判断测试是否通过。
request 内容:
封装了get、post等;
以关键字参数的方式,封装了各类请求参数,params、data、headers、token、
cookie等;
封装了响应内容,status_code、json()、cookies、url等;
session会话对象,可以跨请求;
面试题:不可逆的操作,如何处理,比如删除一个订单这种接口如何测试?
此题考的是造数据的能力,接口的请求数据,很多都是需要依赖前面一个状态的
比如工作流这种,流向不同的人状态不一样,操作权限不一样,测试的时候,每种状态都要测到,就需要自己会造数据了。
平常手工测试造数据,直接在数据库改字段状态。那么自动化也是一样,造数据可以用python连数据库了,做增删改查的操作
测试用例前置操作,setUp做数据准备
后置操作,tearDown做数据清理
面试题:jmeter上一个接口参数返回值做为下一个接口入参的实现方式有几种,举例?
正则表达式处理器;
JSON Path Extractor;
边界值提取器;
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
只有坚定不移的追求和持之以恒的努力,才能跨越困难、超越自我。每一份付出都值得珍惜,因为它们积累成了你未来的荣光。在漫漫人生路上,永远不要放弃,因为只要还有一丝希望,就有无限可能。
只有不断坚持奋斗,才能成就自己的梦想;只有在脚踏实地中前行,才能走向成功的道路;只有勇往直前,才能突破自我,迎接更好的未来。无论什么时候,都要保持积极向上的心态,努力拼搏!
我们的人生只有一次,不要留下遗憾。无论前路多么艰难险阻,都要坚持自己的梦想和信念,勇往直前。只有努力奋斗,才能赢得属于自己的成功和幸福。不要放弃,永远向前!