接口面试问题汇总
题1、接口测试能发现哪些问题呢?
1、可以发现很多页面上操作发现不了的bug
2、检查系统的异常处理能力
3、检查系统的安全性和稳定性
4、后端接口做好规范,前端不管怎么改动,都不会被影响(除非自己不按文档瞎搞)
5、可以测试一些并发的情况,比如一个账号对某个商品的最后一件同时下单,或者不同账号对商品最后一件同时下单
6、可以突破前端限制,做一些前端无法实现的操作
题2、接口测试怎么测?
1、通过性验证:首先保证接口功能是有用的,对照接口文档正常传入参数,查看返回结果是否正确
2、参数组合验证:有些接口参数根据type值的不同来配合其它不同参数完成不同操作时,比如 type=1时,其它值只传入一个或者多个是否有效
3、接口安全验证:
绕过校验,例如:当修改name,字数限制8个字,修改name时,传入9个字,是否成功修改
绕过身份授权验证:例如 修改个人信息是需要登录之后拿到自己的用户id才能修改,那我登录之后拿别人的用户id是否能修改成功
参数是否加密验证:例如 登录接口密码,一般都是会进行加密处理的
4、异常验证:对一些参数的必填校验,长度,字符类型等进行验证,以及对异常情况是否返回正确提示
5、接口性能验证:
检查接口响应时间以及并发情况,例如一个接口多方同时请求是否能正常处理
题3、平常用什么工具测试接口?
1、Postman
2、Jmeter
3、Python+Request 撸代码
题4、webservice接口如何测试?
1、SoapUI测试工具
2、python
题5、没有接口文档如何做接口测试?
1、通过抓包获取接口以及对应参数,通过询问开发了解参数信息之后,自己整理一份文档
题6、在手动接口测试和自动接口测试时,怎么处理上下游数据依赖?
比如token,登录之后的后续接口都需要token,可以登录之后把token提取出来做全局变量,后续接口引用即可
题7、依赖第三方数据的接口该怎么处理?
mock,搭建mock服务
题8、当一个接口出现异常时,如何分析异常?
1、通过抓包工具抓取接口,查看请求参数和返回参数是否异常
2、查看后端日志
题9、如何进行弱网测试?
fiddler可以模拟弱网测试,Ctrl+R打开配置文件,可以修改上传速度和下载速度
题10、分析bug是前端还是后端?
抓取接口,请求参数有问题就是前端问题,返回结果有问题就是后端问题
题11、session和cookie的区别?
session是存放在服务器中,cookie存放在客户浏览器中
session的运行依赖session id,session id又存在cookie中,如果cookie被禁用,session也是会失效
session存在服务器中,没有啥限制,但是访问增多时,存储就会越多,从而影响服务性能
cookie存在浏览器中,但是单个cookie保存的数据有限制,很多浏览器也是对cookie做了限制
题12、Get和Post的区别?
Get请求常作用于查询方面,因为Get请求的参数都是Url后面,
Post请求常作用与增删改或者是涉及个人信息,Post请求参数放在Body中
安全方面Post比Get安全
题13、自动化框架的理解?
为解决一些问题,配套了一些解决问题的组件工具
解决哪些问题:Pytest+request接口自动化测试、pytest+seleniumUI自动化测试
解决办法:脚本语言+模块
构成框架:接口:api接口、testcaes用例、data数据、log日志、report报告、email通知
特点:可扩展性,灵活性强
题14、为什么要进行自动化测试?
手动测试回归时效率低
手动测试回归率不足,往往都会有遗漏
系统越复杂问题越多
交付的产品有数据支持
题15、自动化测试能解决什么问题?
降低人工回归成本
提高测试覆盖率
提高回归效率
提高发现问题后的响应速度
提高发下问题的速度,人休息脚本不会休息
题16、自动化测试的不足?
自动化适用于回归测试和冒烟测试
实施自动化不是所有的系统都合适
成本投入无法减少,但能提交测试质量
题17、pytest.ini的作用?
能更改pytets的一些默认操作,例如pytest脚本执行时,命令 pytest -v -s --pytest-html=./reports/report.html 时
每次输入pytest后面的命令都很麻烦,将后面这些执行写进pyetst.ini配置文件中后,命令只需要输入pytest即可,执行时会默认去查找配置文件中的信息
题18、pytest前后置操作的作用?
前后置操作可以做一些接口之外的数据处理,例如:签名、加密、数据清理等
案例:比如注册时,一个账号注册之后不能再重复注册,再次注册会提示账号已注册,两种方案
一、将注册的用户名跟随机值拼接,使其每次注册的都是不同的账号(问题就是,注册的数据会越来越多)
二、再注册之前或者注册之后,执行前置、后置操作将注册的数据清除,如果注销接口可执行注销接口,如能删除数据库数据,则删除数据库数据(删除数据库谨慎处理)
自动化测试框架本身并不能完成一套自动化执行过程,它是管理工具。能够管理用例,导出日志,自动生成测试报告,而关键的执行部分是通过一个个组件来完成的,例如需要测试“微信”应用,那么它应该分为两个部分,一部分为基础业务逻辑,也就是我们所说的功能,一部分为应用性能,及内存泄漏常驻等代码层面的性能。
自动化测试框架定义:为了解决某些特定问题约束测试边界,找到解决问题方案,从而开发解决问题的组件
我们为什么要自动化,为什么需要搭建自动化测试框架?
1、目前业务大部分为客户在我们的定制基础上再定制,虽然版本分支众多,但核心功能没有改变,仍然是我们的定制系统加上客户的一些小定制,验收反复,测试人员技术无根本上的增长,同时也增加公司成本
2、对于测试中产生的随机性BUG(非用例集、非必现、测试手法冷门)没有有效反馈
3、搭建自动化测试框架管理测试用例集,保存测试日志及报告,使用组件分模块跑通主要测试业务,使测试更加高效专业