文章目录
- 接口测试基础题
-
- 什么是接口
- 接口都有哪些类型?
- 什么是接口测试
- 接口的本质及其工作原理是什么?
- 接口组成
- 为什么要做接口测试
- 请详细阐述接口测试和UI测试在测试活动中是如何协同测试的?
- 在测试接口中怎么知道请求成功还是失败
- 做接口测试如何分析是前端还是后端的问题
- 接口测试要关注什么内容
- 怎样做接口测试
- 怎么测试接口/接口测试点是什么
- 平常你是怎么使用postman测试接口的
- 你平常做接口测试的过程中发现过哪些Bug
- 平常用什么工具测接口的
- 当一个接口出现异常时候,你是如何分析异常的?
- Web Service接口是如何测试的
- 公司有用到第三方服务,出了问题,打电话给第三方,第三方不承认,这时候日志又显示不到错误,应该怎么处理?
- 没有接口文档,如果做接口测试?
- 依赖于第三方数据的接口如何进行测试?
- 当一个接口出现异常时候,你是如何分析异常的?
- 如何模拟弱网测试
- 如何分析一个bug是前端还是后端的?
- 什么是RESTful API?
- 接口自动化面试题
-
- json 和 python字典 的区别?
- 网络传输需求格式为json,你在python中写的是字典,这时候怎么办呢?
- 清楚json.loads与json.dumps的区别吗?
- 什么是数据驱动?
- 测试的数据你放在哪?
- 你做接口自动化测试时,测试数据放哪里?
- excel中如何设计你的用例?
- excel中的数据怎么拿出来?
- 接口测试的垃圾数据如何清理?
- 不可逆操作,如何处理,比如删除一个订单这种接口如何测试?
- python如何连接数据库操作?
- 你做接口自动化,项目用的是什么数据库,用什么来操作的这个数据库?
- 有遇到过这种情况吗:在函数的内部引用了外部(非全局)作用域的变量。这种情况最著名的应用是什么?
- 如果有些接口做了鉴权(需要鉴定权限),怎么实现这些接口的自动化测试?
- 什么是会话?
- 什么是token?
- 某个接口请求,参数依赖上个接口的返回数据,怎么处理(接口关联)?
- 接口测试中依赖登录状态下的接口如何测试?
- 接口调用依赖第三方的接口b,而b接口还未提供给你,如何处理?
- 什么是mock测试?什么时候用它?
- 你是怎么做接口自动化的?
- 工具已经可以完成自动化测试了,为啥还要用到代码去完成?
- 能够大致讲一下你们接口自动化框架是怎么搭建的吗?
- 分层设计,你们的框架里面有些什么模块内容?
- 接口自动化的流程?
- 你的项目中接口用例有多少?每次大概执行多长时间?
- 在接口自动化中,如何让token不失效?
- 如何使你的接口自动化测试用例直接跳过前面几条,直接执行第 7 条?
- 如何使你的接口自动化脚本,对于同一个请求让同一个用户请求多次?
- requests模块发送请求有params和form data, json,它们的区别
- 为什么要对requests进行封装?
- 如何使用Seesion解决接口保持状态?
- 说说接口测试的流程,介绍一下request有哪些内容?
- .一个订单的几种状态如何全部测到,如:未处理,处理中,处理失败,处理成功
- 自动化测试怎么校验结果?
接口测试基础题
什么是接口
接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互。
接口都有哪些类型?
接口一般来说有两种,一种是程序内部的接口,一种是系统对外的接口。
系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,从而达到数据共享的目的,比如说咱们用的app、网址这些它在进行数据处理的时候都是通过接口来进行调用的。
程序内部的接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,比如bbs系统,有登录模块、发帖模块等等,那你要发帖就必须先登录,要发帖就得登录,那么这两个模块就得有交互,它就会抛出一个接口,供内部系统进行调用。
接口的分类:1.webservice接口 2.http api接口
webService接口:是走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都用通过工具才能进行调用,测试。可以使用的工具有SoapUI、jmeter、loadrunner等;
http api接口:是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是最常用的两种请求方式。可以使用的工具有postman、RESTClient、jmeter、loadrunner等;
什么是接口测试
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
即接口测试就是通过测试不同情况下的入参与之相应的出参信息来判断接口是否符合或满足相应的功能性、安全性要求。
简答的说就是通过URL像服务器或者其他模块等,传输我们想传输的数据,然后看看他们返回的是不是我们预期想要的。
接口的本质及其工作原理是什么?
通过测试程序或工具,模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理,然后再把应答报文发送给客户端,客户端接收应答报文这一个过程。
接口你可以简单的理解他就是URL,工作原理就会说URL通过get或者post请求像服务器发送一些东西,然后得到一些相应的返回值,本质就是数据的传输与接收。
接口组成
首先,接口文档应该包含以下内容:
1、接口说明
2、调用url
3、请求方法(get\post)
4、请求参数、参数类型、请求参数说明
5、返回参数说明
一个完整的具体的接口测试文档,它告诉接口的地址/或名称,要向接口传入什么参数,每个参数有什么约束条件,成功调用接口时的预期返回结果和调用接口失败时的预期返回结果。
为什么要做接口测试
大家都知道,接口其实就是前端页面或APP等调用与后端做交互用的,所以好多人都会问,我功能测试都测好了,为什么还要测接口呢?OK,在回答这个问题之前,先举个栗子:
比如测试用户注册功能,规定用户名为6~18个字符,包含字母(区分大小写)、数字、下划线。首先功能测试时肯定会对用户名规则进行测试时,比如输入20个字符、输入特殊字符等,但这些可能只是在前端做了校验,后端可能没做校验,如果有人通过抓包绕过前端校验直接发送到后端怎么办呢?试想一下,如果用户名和密码未在后端做校验,而有人又绕过前端校验的话,那用户名和密码不就可以随便输了吗?如果是登录可能会通过SQL注入等手段来随意登录,甚至可以获取管理员权限,那这样不是很恐怖?
所以,接口测试的必要性就体现出来了:
越底层发现bug,它的修复成本是越低的。
可以发现很多在页面上操作发现不了的bug
检查系统的异常处理能力
检查系统的安全性、稳定性
前端随便变,接口测好了,后端不用变, 前后端是两拨人开发的。
1.检查系统的安全性、稳定性,前端传参不可信,比如京东购物,前端价格不可能传入-1元,但是通过接口可以传入-1元。
2.如今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,接口测试可以提供这种情况下的解决方案。
3.接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。接口持续集成是为什么能低成本高收益的根源。
现在很多系统前后端架构是分离的,从安全层面来说:
(1)、只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前面实在太容易), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。
(2)、前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。
请详细阐述接口测试和UI测试在测试活动中是如何协同测试的?
有些ui测试无法实现的场景可以用接口进行辅助测试,比如前端ui会对某些输入框作出限制,
导致某些负值,超出最大长度限制的值无法测试,而通过接口就可以发送这样的值。
ui有时候还会对某一个功能重复点击作出限制,如果想测试用户在网络系统异常的情况下连续点击了2次这个按钮,那么通过前端点击可能测试不了,就要通过接口连续并发的方式测试
在测试接口中怎么知道请求成功还是失败
根据接口文档查看具体入参应该返回什么值,和接口实际上返回的值做对比。
如果是post请求可以去数据库对应的表中查看对应的结果是否是预期
做接口测试如何分析是前端还是后端的问题
平常提bug的时候,前端开发和后端开发总是扯皮,不承认是对方的bug
这种情况很容易判断,先抓包看请求报文,对着接口文档,看请求报文有没问题,有问题就是前端发的数据不对
请求报文没问题,那就看返回报文,返回的数据不对,那就是后端开发的问题咯
抓包,查看接口的返回值,根据返回值和前端页面的展示作比较,判断是前端对这个值的处理有问题还是后端返回的值是错误的。
接口测试要关注什么内容
发送给服务器的请求数据是否正确;
服务器返回给客户端的信息是否和预期结果一致;
进入数据库,检查接口是否实现的相应的功能;
接口的响应时间是否符合需求。
怎样做接口测试
–由于我们项目前后端调用主要是基于http协议的接口,所以测试接口时主要是通过工具或代码模拟http请求的发送与接收。工具有很多如:postman、jmeter、soupUI、java+httpclient、robotframework+httplibrary等。
–也可以用 接口自动化来实现,就是用代码实现,框架和UI自动化差不多,发送请求用断言来判断。
怎么测试接口/接口测试点是什么
通过性验证:
首先肯定要保证这个接口功能是好使的,也就是正常的通过性测试,按照接口文档上的参数,正常传入,是否可以返回正确的结果。
参数组合:
现在有一个操作商品的接口,有个字段type,传1的时候代表修改商品,商品id、商品名称、价格有一个是必传的,type传2的时候是删除商品,
商品id是必传的,这样的,就要测参数组合了,type传1的时候,只传商品名称能不能修改成功,id、名称、价格都传的时候能不能修改成功。
接口安全:
1、绕过验证,比如说购买了一个商品,它的价格是300