接⼝测试常见问题
前⾔
接⼝测试最近⼏年被炒的⽕热了,越来越多的测试同⾏意识到接⼝测试的重要性。接⼝测试为什么会如此重要呢?
主要是平常的功能点点点,⼤家⽔平都⼀样,是个⼈都能点,⾯试时候如果问你平常在公司怎么测试的,你除了说点点点,还能说什么呢,⽆⾮就是这个项⽬点完了点那个项⽬,
这就是为什么各⾏各业的只要⼿指能点得动的⼈都来转⾏软件测试了。⾯试的时候⾯试官希望你除了点点点,还能更深⼊⼀点的思考页⾯上看不到的功能,也就是接⼝测试了。
为什么要做接⼝测试?
到底什么是接⼝测试,我们为什么要做接⼝测试?这是很多初⼊⾏的⼩伙伴的⼀个疑问,讲理论的你可能看不进去,接下来讲个实际案例,如下图⼀个提现功能
⽐如这个输⼊框,平常拿到这个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页⾯,直接发请求提交了呢?
纳尼!!!不通过页⾯也能提交。。。这就是我们接下来要提到的接⼝测试了。
接⼝测试能发现哪些问题
⾯试题1:你平常做接⼝测试的过程中发现过哪些bug?
这个问题其实回到起来很简单,只要做过接⼝测试的,总能发现⼏个BUG吧,把你平常发现的bug说2-3个就可以了。
⾯试官出这个题,主要是想知道你是不是真的做过接⼝测试,毕竟现在很多⼩伙伴简历都是写的假的(你要不写估计⾯试机会都没有,没办法,为了⽣存,能理解)
⽐如上⾯说的,提现输⼊框,在页⾯上输⼊负数,肯定是⽆法提交过去(前端页⾯会判断⾦额),如果我不⾛前端,直接⽤接⼝⼯具发请求,输⼊⼀个负数过去。
app接口测试工具(假设服务端没做提现⾦额数据判断)
余额=当前余额(100)-提现⾦额(-100),那么提现-100,余额就变成200了,也就是越提现,余额越⼤了
可以⽤接⼝⼯具去直接请求接⼝,也可以fiddler抓包,抓到接⼝后修改⾦额为负数
所以,接⼝测试的必要性就体现出来了:
1.可以发现很多在页⾯上操作发现不了的bug
2.检查系统的异常处理能⼒
3.检查系统的安全性、稳定性
4.前端随便变,接⼝测好了,后端不⽤变
5.可以测试并发情况,⼀个账号,同时(⼤于2个请求)对最后⼀个商品下单,或不同账号,对最后⼀个商品下单
6.可以修改请求参数,突破前端页⾯输⼊限制(如⾦额)
接⼝测试怎么测
⾯试题2:平常你是怎么测试接⼝的?
通过性验证:⾸先肯定要保证这个接⼝功能是好使的,也就是正常的通过性测试,按照接⼝⽂档上的参数,正常传⼊,是否可以返回正确的结果。
参数组合:现在有⼀个操作商品的接⼝,有个字段type,传1的时候代表修改商品,商品id、商品名称、价格有⼀个是必传的,type传2的时候是删除商品,
商品id是必传的,这样的,就要测参数组合了,type传1的时候,只传商品名称能不能修改成功,id、名称、价格都传的时候能不能修改成功。
接⼝安全:
1、绕过验证,⽐如说购买了⼀个商品,它的价格是300元,那我在提交订单时候,我把这个商品的价格改成3元,后端有没有做验证,更狠点,我把
钱改成-3,是不是我的余额还要增加?
2、绕过⾝份授权,⽐如说修改商品信息接⼝,那必须得是卖家才能修改,那我传⼀个普通⽤户,能不能修改成功,我传⼀个其他的卖家能不能修改
成功
3、参数是否加密,⽐如说我登陆的接⼝,⽤户名和密码是不是加密,如果不加密的话,别⼈拦截到你的请求,就能获取到你的信息了,加密规则是
否容易破解。
4、密码安全规则,密码的复杂程度校验
异常验证:
所谓异常验证,也就是我不按照你接⼝⽂档上的要求输⼊参数,来验证接⼝对异常情况的校验。⽐如说必填的参数不填,输⼊整数类型的,传⼊字符串类型,长度是10的,传11,总之就是你说怎么来,我就不怎么来,其实也就这三种,必传⾮必传、参数类型、⼊参长度。
性能测试
接⼝并发情况,如上⾯提到的:⼀个账号,同时(⼤于2个请求)对最后⼀个商品下单,或不同账号,对最后⼀个商品下单
接⼝响应时间,响应时间太长了,肯定需要优化,⼀般都是毫秒级别
⽤什么⼯具测
⾯试题3:平常⽤什么⼯具测接⼝的接⼝测试⼯具很多,⾸先postman
其次⽤jmeter
webService接⼝
⾯试题4:webService接⼝是如何测试的
webService接⼝⽤SoapUI
没有接⼝⽂档如何做接⼝测试
⾯试题5:没有接⼝⽂档,如果做接⼝测试?(这是个送命题)
没有接⼝⽂档,那还能咋办,瞎测呗!⼀个公司的开发流程⾥⾯,如果接⼝⽂档都没有,是⽆法展开接⼝测试的,你都不知道这个接⼝⼲什么的,也不知
道具体每个字段代表什么意思,那还测啥呢?
--当然,你肯定不能回答⾯试官不测(⼼理mmp,脸上笑嘻嘻),接下来就是扯犊⼦时间
1.没有接⼝⽂档,那就需要先跟开发沟通,然后整理接⼝⽂档(本来是开发写的,没办法,为了唬住⾯试官,先说⾃⼰整理了)
2.没有接⼝⽂档,可以抓包看接⼝请求参数,然后不懂的跟开发沟通
本题主要靠情商,通俗来说就是忽悠能⼒,先唬住⾯试官了再说,进去了也是瞎测测,随时做好背锅的准备
数据依赖
⾯试题6:在⼿⼯接⼝测试或者⾃动化接⼝测试的过程中,上下游接⼝有数据依赖如何处理?
⽤⼀个全局变量来处理依赖的数据,⽐如登录后返回token,其它接⼝都需要这个token,那就⽤全局变量来传token参数
依赖第三⽅
⾯试题7:依赖于第三⽅数据的接⼝如何进⾏测试?
这个标准答案是:mock
接着⾯试官会问你,如果mock的,然后你就顺着坑继续挖,搭建mock服务,参考这篇
抓包
⾯试题8:当⼀个接⼝出现异常时候,你是如何分析异常的?
1.抓包,⽤fiddler⼯具抓包,或者浏览器上f12,app上的话,那就⽤fiddler设置代理,去看请求报⽂和返回报⽂了
2.查看后端⽇志,xhell连上服务器,查看⽇志
弱⽹
⾯试题9:如何模拟弱⽹测试
fiddler和charles都可以模拟弱⽹测试,平常说的模拟丢包,也是模拟弱⽹测试
分析bug是前端还是后端的
⾯试题10:如何分析⼀个bug是前端还是后端的?
平常提bug的时候,前端开发和后端开发总是扯⽪,不承认是对⽅的bug
这种情况很容易判断,先抓包看请求报⽂,对着接⼝⽂档,看请求报⽂有没问题,有问题就是前端发的数据不对
请求报⽂没问题,那就看返回报⽂,返回的数据不对,那就是后端开发的问题咯
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论